:root{--tay-paper:#fff1bf;--tay-paper-soft:#fffaf0;--tay-ink:#3d2518;--tay-muted:#704221;--tay-wood:#78442e;--tay-berry:#a33250;--tay-leaf:#719f55;--tay-admin-bg:#fbf3e9;--tay-line:#c7ab8c;--tay-touch:48px;--tay-focus:#fff1bd;--tay-shadow-soft:0 8px 20px rgba(61,37,24,.16)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#10131e;color:#4f302d;font-family:Microsoft YaHei,PingFang SC,sans-serif}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:4px solid #fff1bd;outline-offset:3px}::selection{background:#b94d60;color:#fff5c9}.invitation{max-width:720px;margin:auto;background:#8fc56a;min-height:100vh;overflow:hidden}.hero{position:relative;min-height:100svh;background:#ef9fb5}.hero>img:first-child{display:block;width:100%;min-height:100svh;object-fit:cover;object-position:top center;image-rendering:pixelated}.sprite{position:absolute;image-rendering:pixelated}.junimo{left:4%;top:56%;width:11%}.chicken{left:9%;top:68%;width:8%}.name-board{position:absolute;top:43%;left:50%;width:min(82%,480px);padding:12px 20px;transform:translate(-50%);border:4px solid #4f2f22;background:#704221f0;color:#fff1bf;text-align:center;box-shadow:0 7px #3d2518;text-shadow:2px 2px #3d2518}.name-board span,.name-board small{display:block;font-weight:800}.name-board strong{display:block;margin:8px 0;font-size:clamp(1.6rem,7vw,3rem)}.scroll-cue,.music{border:4px solid #3d2518;border-radius:5px;background:#704221;color:#fff5c9;font-weight:900;box-shadow:0 6px #2f1e17}.scroll-cue{position:absolute;bottom:max(34px,env(safe-area-inset-bottom));left:50%;padding:13px 22px;transform:translate(-50%)}.music{position:fixed;z-index:10;top:max(16px,env(safe-area-inset-top));right:max(16px,calc((100vw - 720px)/2 + 16px));width:52px;height:52px;font-size:1.5rem}.notice{padding:72px 24px;background:#8fc56a}.wood-board{padding:30px 22px;border:7px solid #78442e;outline:4px solid #bd7640;background:#f3ca7b;box-shadow:8px 9px #527942;text-align:center}.wood-board h1{margin:0 0 14px;color:#9c4a4f;font-size:clamp(1.8rem,7vw,2.8rem)}.wood-board>p{line-height:1.8}.wood-board dl{margin:28px 0;text-align:left}.wood-board dl div{display:grid;grid-template-columns:62px 1fr;padding:13px 0;border-top:2px dashed #bd824c}.wood-board dt{font-weight:900;color:#9d4054}.wood-board dd{margin:0;line-height:1.55;white-space:pre-line}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.actions button,.choice-row button{min-height:48px;border:4px solid #78442e;background:#ffeab0;color:#6f3d35;font-weight:900;box-shadow:3px 4px #a47a50}.harvest{min-height:640px;padding:72px 24px;text-align:center;color:#fff0c7;background:linear-gradient(#2a1b40,#4a2b61)}.harvest h2{font-size:2rem;color:#fff1bd;text-shadow:3px 3px #713b71}.star{display:block;width:190px;height:190px;margin:46px auto 30px;border:0;background:transparent}.star img{width:100%;image-rendering:pixelated;filter:drop-shadow(0 0 18px #ffe56d);animation:float 2s steps(4) infinite}.harvest-copy{min-height:72px;font-size:1.15rem;line-height:1.7;color:#ffe893}.dots{display:flex;justify-content:center;gap:12px;margin-top:24px}.dots i{width:14px;height:14px;border:2px solid #ffe893}.dots i.on{background:#ffe893}.rsvp{padding:72px 24px;background:#e6c984}.rsvp-form{padding:30px 22px;border:7px solid #78442e;outline:4px solid #bd7640;background:#f3ca7b;box-shadow:8px 9px #8d6d42}.rsvp-form h2{margin:0;color:#8d3f4d;text-align:center}.form-note{text-align:center;line-height:1.6}.rsvp-form label,.rsvp-form fieldset{display:block;margin:18px 0;font-weight:800}.rsvp-form fieldset{padding:0;border:0}.rsvp-form legend{margin-bottom:8px}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{display:block;width:100%;margin-top:7px;padding:14px;border:4px solid #7b4935;border-radius:0;background:#fff1bd;color:#4f302d}.choice-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice-row button.selected{background:#b64b60;color:#fff4c5}.primary{width:100%;min-height:52px;border:5px solid #6e2f42;background:#b94d60;color:#fff5c9;font-weight:900;box-shadow:4px 5px #563247}.primary:disabled{opacity:.55}footer{padding:36px;text-align:center;background:#352148;color:#ffe893}.toast{position:fixed;z-index:20;left:50%;bottom:32px;max-width:calc(100vw - 40px);padding:13px 20px;transform:translate(-50%);border:3px solid #3d2518;background:#fff1bd;box-shadow:0 6px #3d2518;font-weight:800}.toast.error,.inline-error{color:#922d3f}.loading,.admin-login{display:grid;place-items:center;min-height:100vh;background:#f3ca7b}.admin-login form{width:min(420px,calc(100% - 32px));padding:32px;border:1px solid #c3a26a;background:#fff8df;box-shadow:0 16px 40px #3d25182e}.admin-login h1{margin-top:0}.admin-login label{display:block;margin:18px 0;font-weight:700}.admin-login input{display:block;width:100%;margin-top:8px;padding:13px;border:1px solid #8d6d42;background:#fff}.admin-page{min-height:100vh;padding:40px max(20px,calc((100vw - 1100px)/2));background:#fbf3e9;color:#272522}.admin-page header{display:flex;justify-content:space-between;align-items:end;gap:24px}.admin-page h1{margin:0}.admin-page header p{margin-bottom:0;color:#795a48}.admin-page nav{display:flex;gap:16px}.admin-page a{color:#8d3f4d;text-underline-offset:4px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);margin:32px 0;border-block:1px solid #c7ab8c}.metrics div{padding:24px 12px;text-align:center;border-right:1px solid #c7ab8c}.metrics div:last-child{border:0}.metrics strong,.metrics span{display:block}.metrics strong{font-size:2rem;color:#8d3f4d}.metrics span{margin-top:5px;color:#795a48}.rsvp-list{border-top:1px solid #c7ab8c}.rsvp-list article{position:relative;padding:24px 100px 24px 0;border-bottom:1px solid #c7ab8c}.rsvp-head{display:flex;align-items:center;gap:14px}.rsvp-head strong{font-size:1.2rem}.rsvp-head span{padding:4px 8px;background:#e8ddc6;font-size:.85rem}.rsvp-head span.attending{background:#d8e8ca;color:#345a2c}.rsvp-list dl{margin:14px 0}.rsvp-list dl div{display:flex;gap:16px;margin:6px 0}.rsvp-list dt{width:40px;color:#795a48}.rsvp-list dd{margin:0}.rsvp-list time{color:#795a48;font-size:.85rem}.delete{position:absolute;right:0;top:24px;border:1px solid #9e2b25;background:transparent;color:#9e2b25;padding:8px 14px}.empty{padding:80px 0;text-align:center;color:#795a48}@keyframes float{50%{transform:translateY(-10px) rotate(5deg)}}@media(max-width:640px){.admin-page{padding:24px 18px}.admin-page header{display:block}.admin-page nav{margin-top:18px}.metrics{grid-template-columns:1fr 1fr}.metrics div:nth-child(2){border-right:0}.metrics div:nth-child(-n+2){border-bottom:1px solid #c7ab8c}.rsvp-list article{padding-right:72px}.actions{grid-template-columns:1fr}.music{right:16px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.star img{animation:none}}.text-action{margin-top:12px;border:0;background:transparent;color:var(--tay-berry);text-decoration:underline;text-underline-offset:4px}.token-panel{max-width:680px;margin:40px auto}.token-panel output{display:flex;align-items:center;gap:16px;margin-top:24px;padding:20px;background:var(--tay-paper);border:2px solid var(--tay-line)}.token-panel output strong{font-size:clamp(1.25rem,4vw,2rem);letter-spacing:.08em}.invitation-editor{max-width:980px;margin:28px auto;padding:clamp(20px,4vw,42px);background:var(--tay-paper-soft);border:1px solid var(--tay-line);box-shadow:var(--tay-shadow-soft)}.invitation-editor h2{margin:0 0 28px;color:var(--tay-ink)}.editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.invitation-editor label{display:grid;gap:7px;color:var(--tay-muted);font-weight:700}.invitation-editor input,.invitation-editor textarea{width:100%;min-height:48px;padding:12px;border:1px solid var(--tay-line);background:#fff;color:var(--tay-ink)}.invitation-editor textarea{min-height:92px;resize:vertical}.invitation-editor .wide{grid-column:1/-1}.invitation-editor fieldset{display:grid;gap:14px;margin:30px 0 0;padding:20px;border:1px solid var(--tay-line)}.invitation-editor legend{padding:0 10px;color:var(--tay-ink);font-size:1.1rem;font-weight:900}.memory-editor{display:grid;grid-template-columns:160px 1fr 2fr;gap:12px;padding:16px 0;border-bottom:1px solid var(--tay-line)}.memory-editor:last-child{border-bottom:0}.editor-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:28px}.editor-actions button,.token-panel button,.manage-page-header button{min-height:48px;padding:10px 18px}.primary{background:var(--tay-berry)!important;color:#fff!important;border-color:var(--tay-berry)!important}@media(max-width:680px){.editor-grid,.memory-editor{grid-template-columns:1fr}.invitation-editor{margin:16px 0}.manage-jump{overflow-x:auto;justify-content:flex-start}.manage-jump>*{white-space:nowrap}}.token-dates{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.token-dates label{display:grid;gap:7px;font-weight:700}.token-dates input{min-height:48px;padding:10px;border:1px solid var(--tay-line)}.token-table-wrap{overflow-x:auto;margin-top:28px}.token-table{width:100%;border-collapse:collapse;white-space:nowrap}.token-table th,.token-table td{padding:12px;border-bottom:1px solid var(--tay-line);text-align:left}.code-copy{border:0;background:transparent;color:var(--tay-berry);text-decoration:underline;text-underline-offset:3px}@media(max-width:680px){.token-dates{grid-template-columns:1fr}}.manage-shell{min-height:100vh;padding:0 max(20px,calc((100vw - 980px)/2)) 56px;background:#f7f7f5;color:#242424;font-size:14px}.compact-header{display:flex;align-items:center;justify-content:space-between;min-height:72px;border-bottom:1px solid #deded9}.compact-header h1{margin:0;font-size:20px;color:#242424}.compact-header p{margin:3px 0 0;color:#73736e}.quiet-button,.summary-actions button,.summary-actions a,.content-tabs a{display:inline-flex;min-height:40px;align-items:center;justify-content:center;padding:8px 13px;border:1px solid #d3d3cd;border-radius:7px;background:#fff;color:#333;text-decoration:none}.solid-button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;padding:8px 16px;border:1px solid #242424;border-radius:7px;background:#242424;color:#fff;font-weight:700}.section-tabs{display:flex;gap:24px;margin:18px 0 28px;border-bottom:1px solid #deded9}.section-tabs button{min-height:42px;padding:0 2px;border:0;border-bottom:2px solid transparent;background:transparent;color:#73736e}.section-tabs button.active{border-color:#242424;color:#242424;font-weight:700}.section-tabs span{margin-left:5px;color:#999}.compact-message{margin:16px 0;padding:10px 12px;border-radius:6px;background:#eef5ec;color:#315b31}.compact-message.error{background:#f9eaea;color:#8a2c2c}.section-heading{display:flex;align-items:start;justify-content:space-between;gap:20px;margin-bottom:20px}.section-heading h2,.invitation-summary h2{margin:0;font-size:18px;color:#242424}.section-heading p,.invitation-summary p{margin:5px 0 0;color:#73736e}.accounts-view,.compact-editor{max-width:900px}.token-create{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:12px;padding:16px;border:1px solid #deded9;border-radius:9px;background:#fff}.token-create label,.compact-editor label{display:grid;min-width:0;gap:6px;color:#555;font-weight:600}.token-create input,.compact-editor input,.compact-editor textarea{display:block;width:100%;min-width:0;max-width:100%;min-height:40px;padding:8px 10px;border:1px solid #cecec8;border-radius:6px;background:#fff;color:#242424}.compact-editor textarea{min-height:72px;resize:vertical}.latest-token{display:flex;align-items:center;justify-content:space-between;margin:12px 0;padding:12px 14px;border-radius:8px;background:#242424;color:#fff}.latest-token small,.latest-token strong{display:block}.latest-token strong{margin-top:3px;letter-spacing:.06em}.account-list{margin-top:20px;border-top:1px solid #deded9}.account-row{display:grid;grid-template-columns:150px 150px 1fr 90px;align-items:center;gap:16px;padding:14px 4px;border-bottom:1px solid #deded9}.account-primary{display:flex;align-items:center;gap:8px}.account-primary strong{overflow:hidden;text-overflow:ellipsis}.status-dot{padding:3px 6px;border-radius:99px;background:#eee;color:#666;font-size:11px;white-space:nowrap}.status-dot.已注册{background:#e4f1e1;color:#376435}.status-dot.已过期{background:#f5e7e7;color:#8a3939}.token-value{overflow:hidden;border:0;background:transparent;color:#555;text-align:left;text-decoration:underline;text-overflow:ellipsis;white-space:nowrap}.token-value:disabled{color:#999;text-decoration:none}.account-row dl{display:flex;gap:24px;margin:0}.account-row dl div{display:grid;gap:2px}.account-row dt{color:#92928c;font-size:11px}.account-row dd{margin:0}.account-row>a{color:#333}.muted,.empty-line{color:#92928c}.invitation-summary{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px;padding:18px 0;border-bottom:1px solid #deded9}.summary-actions{display:flex;gap:8px}.compact-editor details{border-top:1px solid #deded9}.compact-editor summary{display:flex;min-height:48px;align-items:center;justify-content:space-between;cursor:pointer;font-weight:700}.compact-editor summary span{color:#92928c;font-size:12px;font-weight:400}.editor-field-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;padding:6px 0 20px}.editor-full-field{grid-column:1/-1}.stack-fields,.memory-fields{display:grid;gap:12px;padding:6px 0 20px}.memory-fields{grid-template-columns:repeat(3,minmax(0,1fr))}.memory-fields section{display:grid;min-width:0;gap:10px;padding:12px;border:1px solid #deded9;border-radius:8px;background:#fff}.sticky-save{display:flex;justify-content:flex-end;padding-top:18px}.content-tabs{display:flex;gap:10px;margin:20px 0}.embedded-module{margin-top:16px;border-top:1px solid #deded9}.manage-shell .gallery-manage,.manage-shell .rsvp-admin{min-height:0;padding:24px 0;background:transparent}.manage-shell .manage-module{padding:0;border:0;background:transparent;box-shadow:none}@media(max-width:700px){.manage-shell{padding:0 14px calc(84px + env(safe-area-inset-bottom));font-size:14px}.compact-header{position:sticky;z-index:20;top:0;min-height:60px;background:#f7f7f5f5}.compact-header h1{font-size:18px}.compact-header p{max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.section-tabs{gap:18px;margin:12px 0 20px;overflow-x:auto}.token-create{grid-template-columns:1fr;padding:14px}.token-create .solid-button{width:100%}.latest-token{align-items:flex-start;gap:10px}.latest-token strong{font-size:13px;word-break:break-all}.account-list{display:grid;gap:10px;border:0}.account-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:14px;border:1px solid #deded9;border-radius:8px;background:#fff}.account-primary,.token-value{grid-column:1/-1}.account-row dl{grid-column:1/-1;justify-content:space-between;gap:10px}.invitation-summary{display:block;padding:14px 0}.summary-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:14px}.summary-actions>*{min-width:0;padding-inline:6px}.section-heading{margin-bottom:14px}.editor-field-grid,.memory-fields{grid-template-columns:minmax(0,1fr)}.editor-full-field{grid-column:auto}.compact-editor summary{min-height:52px}.compact-editor input[type=datetime-local]{font-size:16px}.sticky-save{position:fixed;z-index:30;right:0;bottom:0;left:0;padding:10px 14px max(10px,env(safe-area-inset-bottom));border-top:1px solid #deded9;background:#fff}.sticky-save .solid-button{width:100%;min-height:46px}.content-tabs{position:sticky;z-index:10;top:60px;padding:10px 0;background:#f7f7f5}.content-tabs a{flex:1}.manage-shell .gallery-manage,.manage-shell .rsvp-admin{padding:18px 0}.manage-shell .admin-metrics{grid-template-columns:1fr 1fr}.manage-shell .admin-filters{padding:12px;background:#fff}}.admin-login{padding:20px;background:#f7f7f5;color:#242424}.admin-login form{width:min(360px,100%);padding:24px;border:1px solid #deded9;border-radius:10px;background:#fff;box-shadow:0 10px 30px #0000000f}.admin-login h1{margin:0 0 6px;font-size:21px;color:#242424}.admin-login form>p{margin:0 0 20px;color:#73736e;line-height:1.6}.admin-login label{margin:14px 0;color:#444;font-size:13px}.admin-login input{min-height:42px;margin-top:6px;padding:8px 10px;border:1px solid #cecec8;border-radius:6px;color:#242424}.admin-login .primary{min-height:42px;border:0!important;border-radius:7px;box-shadow:none}.admin-login .text-action{min-height:40px;margin:8px 0 0;padding:6px;color:#555;font-size:13px}.admin-login .inline-error{margin:12px 0;padding:9px 10px;border-radius:6px;background:#f9eaea;color:#8a2c2c}@media(max-width:480px){.admin-login{align-items:start;padding:calc(72px + env(safe-area-inset-top)) 16px 20px}.admin-login form{padding:20px}.admin-login h1{font-size:20px}}
