:root{--background:#1f2937;--foreground:#fff8e7;--panel:#fff3d6;--panel-ink:#3d2b1f;--line:#5b4633;--accent:#df6f72;--accent-dark:#9f3d4b;--gold:#e0b85a;--grass:#8abf69;--sky:#99d9ee}*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%;overflow-x:hidden}body{background:var(--background);color:var(--foreground);font-family:Geist,ui-sans-serif,system-ui,sans-serif}button{cursor:pointer}a{color:inherit;text-decoration:none}.quest-shell{min-height:100svh;color:var(--foreground);background:linear-gradient(#1f29372e,#1f2937b8),linear-gradient(#88d7f2 0%,#c7eaa2 48%,#315638 100%)}.quest-header{justify-content:space-between;align-items:center;gap:16px;padding:18px clamp(16px,4vw,42px);display:flex}.brand-kicker{color:#fee7a3;font-family:var(--font-geist-mono), monospace;letter-spacing:0;text-transform:uppercase;font-size:.75rem}.brand-title{color:#fff8e7;font-size:clamp(1.35rem,3vw,2.4rem);line-height:1.05}.mode-badge{border:3px solid var(--line);background:var(--panel);box-shadow:4px 4px 0 var(--line);color:var(--panel-ink);font-family:var(--font-geist-mono), monospace;padding:8px 12px;font-size:.8rem}.mode-switcher{border:3px solid var(--line);background:var(--panel);box-shadow:4px 4px 0 var(--line);grid-template-columns:1fr 1fr;padding:4px;display:inline-grid}.mode-switcher button{color:var(--panel-ink);font-family:var(--font-geist-mono), monospace;background:0 0;border:0;min-height:44px;padding:7px 12px;font-weight:800}.mode-switcher button[aria-pressed=true]{background:var(--accent);color:#fffaf0}.quest-main{gap:22px;padding:0 clamp(16px,4vw,42px) 42px;display:grid}.start-card,.game-card,.static-card{border:4px solid var(--line);color:var(--panel-ink);background:#fff3d6f0;box-shadow:8px 8px #271d15d9}.start-card{text-align:center;gap:16px;max-width:720px;margin:8vh auto 0;padding:clamp(22px,5vw,46px);display:grid}.pixel-heart{color:var(--accent-dark);place-items:center;display:grid}.couple-hero,.static-hero{width:min(280px,100%);height:auto;image-rendering:pixelated;justify-self:center}.couple-hero{object-fit:contain;width:min(206px,100%)}.static-hero{margin-block:12px}.start-card h1{font-size:clamp(2rem,10vw,5.5rem);line-height:.95}.start-card p{font-size:1rem;line-height:1.7}.start-card .brand-kicker,.game-card .brand-kicker,.classic-invitation .brand-kicker,.modal-panel .brand-kicker{color:var(--accent-dark)}.event-strip{color:var(--panel-ink);border-block:3px solid #5b463347;gap:8px;padding:14px 0;font-weight:800;display:grid}.event-strip span{line-height:1.35}.countdown-pill{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);color:var(--accent-dark);font-family:var(--font-geist-mono), monospace;background:#fffaf0;justify-self:center;width:fit-content;padding:7px 12px}.start-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.primary-actions{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:10px;display:grid}.primary-action{width:100%}.experience-options{text-align:left;grid-template-columns:1fr 1fr;gap:14px;display:grid}.experience-choice{border:3px solid var(--line);min-height:210px;box-shadow:5px 5px 0 var(--line);color:var(--panel-ink);text-align:left;align-content:start;gap:9px;padding:18px;transition:transform .14s,box-shadow .14s;display:grid}.experience-choice:hover{box-shadow:3px 3px 0 var(--line);transform:translate(2px,2px)}.experience-choice.classic-choice{background:#fffaf0}.experience-choice.game-choice{background:#dfe8cf}.experience-choice strong{font-size:1.1rem}.experience-choice span:not(.experience-icon){line-height:1.55}.experience-choice em{color:var(--accent-dark);font-family:var(--font-geist-mono), monospace;align-self:end;align-items:center;gap:6px;font-style:normal;font-weight:900;display:inline-flex}.experience-icon{border:3px solid var(--line);background:var(--gold);width:42px;height:42px;color:var(--accent-dark);place-items:center;font-size:1.15rem;display:grid}.share-button{justify-self:center}.pixel-button{border:3px solid var(--line);background:var(--accent);box-shadow:4px 4px 0 var(--line);color:#fff9ed;min-height:44px;padding:10px 16px;font-weight:800;transition:transform .12s,box-shadow .12s,background .12s}.pixel-button:hover{background:var(--accent-dark);box-shadow:2px 2px 0 var(--line);transform:translate(2px,2px)}.pixel-button:disabled,.pixel-button[aria-disabled=true]{cursor:not-allowed;opacity:.58;transform:none}.pixel-button.secondary{background:var(--gold);color:var(--panel-ink)}.game-card{overflow:hidden}.game-toolbar{border-bottom:4px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.game-toolbar p{line-height:1.5}.game-toolbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.quest-progress{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);background:#fffaf0;grid-template-columns:auto auto;align-items:center;gap:8px;padding:7px 10px;display:grid}.quest-progress span{font-family:var(--font-geist-mono), monospace;text-transform:uppercase;font-size:.75rem;font-weight:800}.quest-progress strong{color:var(--accent-dark);font-size:1.1rem}.game-wrap{background:#7ad0f0;min-height:640px;position:relative}.game-canvas{min-height:640px}.game-fallback{text-align:center;place-items:center;min-height:640px;padding:28px;display:grid}.mobile-controls{pointer-events:none;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid;position:absolute;inset:auto 14px 14px}.mobile-controls button{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none}.status-toast{z-index:60;border:3px solid var(--line);max-width:min(360px,100vw - 32px);box-shadow:4px 4px 0 var(--line);color:var(--panel-ink);background:#fff8e7;padding:12px 14px;position:fixed;bottom:16px;right:16px}.modal-backdrop{z-index:50;background:#14100ca3;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal-panel{border:4px solid var(--line);background:var(--panel);width:min(560px,100%);max-height:min(720px,92svh);color:var(--panel-ink);padding:18px;overflow-y:auto;box-shadow:8px 8px #14100ccc}.dialogue-backdrop{padding:18px 18px calc(18px + env(safe-area-inset-bottom));background:#0e1e16c7;place-items:end center}.dialogue-panel{background:#fff8e7;border-color:#2a2119;width:min(960px,100%);max-height:min(430px,72svh);padding:0;overflow:hidden auto;box-shadow:0 10px #2a2119,0 22px 46px #08171070}.dialogue-panel .modal-header{color:#fffaf0;background:#234c36;border-bottom:4px solid #2a2119;align-items:center;margin:0;padding:10px 12px 10px 18px}.dialogue-panel .modal-header h2{font-family:var(--font-geist-mono), monospace;letter-spacing:.05em;font-size:clamp(1.05rem,3vw,1.45rem)}.dialogue-panel .close-button{background:var(--gold);color:#2a2119;flex:none}.modal-header{justify-content:space-between;align-items:start;gap:12px;margin-bottom:16px;display:flex}.modal-panel h2{font-size:1.4rem}.close-button{border:3px solid var(--line);box-shadow:3px 3px 0 var(--line);color:var(--panel-ink);background:#ffe6e6;width:44px;height:44px;font-weight:900}.form-grid{gap:12px;display:grid}.field{gap:6px;display:grid}.field span{font-weight:800}.field input,.field select,.field textarea{border:3px solid var(--line);color:var(--panel-ink);background:#fffaf0;min-height:42px;padding:8px 10px}.form-hint{border-left:3px solid var(--gold);color:var(--panel-ink);padding-left:10px;line-height:1.5}.field textarea{resize:vertical;min-height:120px}.gift-list,.schedule-list,.static-grid{gap:12px;display:grid}.modal-actions{flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.gift-item,.schedule-item,.static-section{border:3px solid var(--line);background:#fffaf0;padding:12px}.qris-placeholder{border:3px dashed var(--line);min-height:160px;color:var(--panel-ink);font-family:var(--font-geist-mono), monospace;text-align:center;background:#fffaf0;place-items:center;display:grid}.qris-image{width:min(220px,100%);height:auto;image-rendering:pixelated}.static-card{gap:18px;padding:clamp(18px,4vw,32px);display:grid}.static-card h2{font-size:clamp(1.45rem,4vw,2rem)}.classic-invitation{border:4px solid var(--line);width:min(1040px,100%);color:var(--panel-ink);background:#fffaf0;margin-inline:auto;display:grid;overflow:clip;box-shadow:8px 8px #271d15d9}.classic-hero{text-align:center;background:radial-gradient(circle at 20% 18%,#e0b85a3d 0 2px,#0000 3px) 0 0/34px 34px,radial-gradient(circle at 82% 26%,#df6f7233 0 3px,#0000 4px) 0 0/46px 46px,linear-gradient(#fffaf0,#f6e9c9);align-content:center;justify-items:center;gap:14px;min-height:min(760px,100svh - 116px);padding:clamp(30px,7vw,82px) clamp(20px,6vw,72px);display:grid}.classic-hero-image{border:4px solid var(--line);background:var(--panel);width:min(420px,100%);height:auto;box-shadow:6px 6px 0 var(--line);image-rendering:pixelated;object-fit:contain}.classic-eyebrow{color:var(--accent-dark);font-family:var(--font-geist-mono), monospace;letter-spacing:.08em;text-transform:uppercase;font-size:.8rem;font-weight:900}.classic-hero h1{font-size:clamp(2.7rem,10vw,6.6rem);line-height:.9}.classic-hero h1 span{color:var(--accent-dark)}.classic-guest{border-block:2px solid #5b46333d;padding-block:8px}.classic-opening{max-width:680px;font-size:clamp(1rem,2.4vw,1.2rem);line-height:1.75}.personal-guest-message{white-space:pre-wrap;background:#fffaf2d1;border:2px solid #915f4647;border-radius:14px;width:min(100%,680px);margin-inline:auto;padding:14px 16px;line-height:1.7}.classic-event-summary{gap:7px;font-weight:800;display:grid}.classic-event-summary strong{border:3px solid var(--line);background:var(--panel);box-shadow:3px 3px 0 var(--line);color:var(--accent-dark);justify-self:center;padding:7px 11px}.classic-hero-actions,.section-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.classic-nav{z-index:20;border-block:3px solid var(--line);background:#fff3d6;justify-content:center;gap:clamp(12px,4vw,34px);padding:12px 16px;display:flex;position:sticky;top:0;overflow-x:auto}.classic-nav a{color:var(--panel-ink);font-family:var(--font-geist-mono), monospace;text-transform:uppercase;flex:none;font-size:.78rem;font-weight:900}.classic-section{gap:26px;padding:clamp(42px,8vw,88px) clamp(22px,7vw,84px);scroll-margin-top:70px;display:grid}.classic-section:nth-of-type(2n){background:#f6e9c9}.classic-section-heading,.classic-letter{text-align:center;justify-items:center}.classic-section-heading{gap:10px;display:grid}.classic-section h2,.classic-footer h2{font-size:clamp(1.8rem,5vw,3.2rem)}.classic-section p{line-height:1.75}.classic-letter{max-width:800px;margin-inline:auto}.classic-ornament{color:var(--accent-dark);justify-content:center;gap:10px;display:flex}.ceremony-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.ceremony-card{border:3px solid var(--line);min-height:210px;box-shadow:5px 5px 0 var(--line);text-align:center;background:#fffaf0;align-content:center;justify-items:center;gap:12px;padding:24px;display:grid}.ceremony-card>span{color:var(--accent-dark);font-size:1.7rem}.classic-location{grid-template-columns:minmax(180px,.75fr) minmax(0,1.25fr);align-items:center}.location-illustration{aspect-ratio:1;border:4px solid var(--line);background-color:var(--grass);box-shadow:6px 6px 0 var(--line);background-image:url(/assets/final/wedding-garden-map.png);background-position:50%;background-size:cover;place-items:center;display:grid}.location-illustration span{border:4px solid var(--line);background:var(--accent);color:#fffaf0;place-items:center;width:78px;height:78px;font-size:2.8rem;display:grid}.classic-action-grid{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.classic-action-grid button{border:3px solid var(--line);min-height:190px;box-shadow:5px 5px 0 var(--line);color:var(--panel-ink);text-align:left;background:#fffaf0;justify-items:start;gap:10px;padding:22px;display:grid}.classic-action-grid button:hover{box-shadow:3px 3px 0 var(--line);background:#fff3d6;transform:translate(2px,2px)}.classic-action-grid button>span{background:var(--accent);color:#fffaf0;place-items:center;width:38px;height:38px;display:grid}.classic-action-grid strong{font-size:1.08rem}.classic-action-grid small{line-height:1.55}.quest-teaser{grid-template-columns:1fr auto;align-items:center;background:var(--grass)!important}.npc-avatar-row{flex-wrap:wrap;gap:8px;margin-top:16px;display:flex}.npc-avatar-row span{border:3px solid var(--line);background:var(--panel);width:42px;height:42px;box-shadow:2px 2px 0 var(--line);place-items:center;display:grid}.classic-footer{border-top:4px solid var(--line);background:var(--panel-ink);color:var(--panel);text-align:center;justify-items:center;gap:14px;padding:clamp(42px,8vw,80px) 22px;display:grid}.classic-footer p{max-width:720px;line-height:1.75}.npc-progress-panel{border-top:4px solid var(--line);background:var(--panel);grid-template-columns:minmax(180px,.65fr) minmax(0,1.35fr);gap:18px;padding:18px;display:grid}.npc-progress-panel p{line-height:1.55}.npc-checklist{grid-template-columns:repeat(3,1fr);gap:8px;list-style:none;display:grid}.npc-checklist li{background:#fffaf0;border:2px solid #5b463366;grid-template-columns:auto 1fr;align-items:center;gap:8px;padding:8px;display:grid}.npc-checklist li[data-visited=true]{background:#e4f2d6;border-color:#315638}.npc-checklist li>span:first-child{background:var(--gold);place-items:center;width:30px;height:30px;display:grid}.npc-checklist li[data-visited=true]>span:first-child{color:#fffaf0;background:#315638}.npc-checklist li>span:last-child{gap:2px;display:grid}.npc-checklist small{font-size:.72rem}.npc-dialog-card{grid-template-columns:minmax(112px,150px) minmax(0,1fr);align-items:stretch;line-height:1.7;display:grid}.npc-dialog-portrait-wrap{border:4px solid var(--line);background:#dfe8cf;min-height:150px;margin:16px;position:relative;overflow:hidden;box-shadow:4px 4px #2a2119b3}.npc-dialog-portrait{object-fit:contain;width:100%;height:100%;image-rendering:pixelated}.npc-dialog-portrait--bride{object-fit:cover}.npc-dialog-avatar{border:3px solid var(--line);background:var(--gold);width:42px;height:42px;box-shadow:2px 2px 0 var(--line);place-items:center;font-size:1.25rem;display:grid;position:absolute;bottom:6px;right:6px}.npc-dialog-copy{align-content:center;gap:8px;padding:20px 24px 20px 0;display:grid}.npc-dialog-copy>p:last-child{font-size:clamp(1rem,2.2vw,1.18rem)}.npc-role{color:var(--accent-dark);font-family:var(--font-geist-mono), monospace;text-transform:uppercase;font-size:.78rem;font-weight:900}.npc-dialog-action{margin:0 20px 18px auto;display:block}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:3px;outline:4px solid #1f5ea8}@media (width<=720px){.quest-header{flex-direction:column;align-items:flex-start;gap:8px;padding:12px 16px}.brand-title{font-size:1.35rem}.mode-badge{box-shadow:3px 3px 0 var(--line);padding:6px 10px}.quest-main{padding-inline:16px}.start-card{gap:10px;margin-top:18px;padding:18px}.pixel-heart{font-size:1.2rem}.couple-hero{width:min(137px,100%)}.start-card h1{font-size:clamp(2rem,12vw,2.75rem)}.start-card p{font-size:.96rem;line-height:1.45}.event-strip{gap:6px;padding:8px 0}.countdown-pill{padding:5px 10px}.pixel-button{min-height:44px;padding:8px 12px}.game-wrap,.game-canvas,.game-fallback{min-height:560px}.mobile-controls{z-index:35;inset:auto 8px calc(8px + env(safe-area-inset-bottom));border:3px solid var(--line);box-shadow:4px 4px 0 var(--line);background:#fffaf0f0;grid-template-columns:repeat(4,minmax(44px,1fr)) minmax(72px,1.15fr);gap:7px;padding:7px;position:fixed}.mobile-controls .interact{grid-column:auto}.game-card{padding-bottom:76px}.start-actions{grid-template-columns:1fr 1fr}.experience-options,.ceremony-grid,.classic-location,.classic-action-grid,.quest-teaser,.npc-progress-panel{grid-template-columns:1fr}.experience-choice{min-height:0}.classic-hero{min-height:auto}.classic-hero-image{width:min(285px,100%)}.classic-nav{justify-content:flex-start}.classic-section{padding:42px 18px}.location-illustration{justify-self:center;width:min(240px,100%)}.npc-checklist{grid-template-columns:1fr 1fr}.game-toolbar-actions{justify-content:space-between;width:100%}.dialogue-backdrop{padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.dialogue-panel{max-height:78svh}.npc-dialog-card{grid-template-columns:96px minmax(0,1fr)}.npc-dialog-portrait-wrap{border-width:3px;min-height:104px;margin:10px}.npc-dialog-copy{padding:12px 12px 12px 0}.npc-dialog-copy>p:last-child{font-size:.96rem;line-height:1.55}}@media (width<=440px){.npc-checklist{grid-template-columns:1fr}.classic-hero-actions,.section-actions{width:100%;display:grid}.dialogue-panel .modal-header{padding-left:12px}.npc-dialog-card{grid-template-columns:82px minmax(0,1fr)}.npc-dialog-portrait-wrap{min-height:88px;margin:8px}.npc-dialog-avatar{width:34px;height:34px;font-size:1rem;bottom:3px;right:3px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}.experience-choice:hover,.pixel-button:hover,.classic-action-grid button:hover{transform:none}}@font-face{font-family:Geist;src:url(/fonts/GeistVF.woff)format("woff");font-display:swap;font-style:normal;font-weight:100 900}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMonoVF.woff)format("woff");font-display:swap;font-style:normal;font-weight:100 900}:root{color:#2f2118;font-synthesis:none;text-rendering:optimizelegibility;background:#f7efe5;font-family:Geist,system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px;min-height:100%}body{min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}.route-loading{color:#5b4633;place-items:center;min-height:100vh;padding:2rem;display:grid}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
