@font-face{font-family:"Press Start 2P";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/press-start-2p-latin-400-normal-_wFEWmAB.woff2)format("woff2"),url(/assets/press-start-2p-latin-400-normal-KLytu4cr.woff)format("woff")}:root{color:#482a35;font-synthesis:none;--cream:#faf3df;--paper:#fffaf0;--wine:#602441;--tan:#dcc2a8;--mint:#aad9c5;--ink:#482a35;--muted:#7c5962;--line:#d8beae;--pixel:"Press Start 2P",monospace;background:#faf3df;font-family:PingFang HK,Noto Sans TC,Microsoft JhengHei,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--wine);outline-offset:4px}h1,h2,h3{text-wrap:balance;margin:0 0 10px;line-height:1.4}h1{letter-spacing:.01em;font-size:29px}h2{font-size:20px}h3{font-size:18px}p{text-wrap:pretty;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 14px;line-height:1.75}small,.tiny{color:var(--muted);font-size:12px;line-height:1.7}.center{text-align:center}.muted{color:var(--muted)}.full{width:100%}.pixel-label{font:9px/1.8 var(--pixel);letter-spacing:.03em;color:var(--wine);display:block}.pixel-icon{vertical-align:middle;background:currentColor;flex-shrink:0;display:inline-block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.app-shell{background:var(--cream);border-inline:1px solid var(--line);width:min(100%,560px);min-height:100dvh;margin:auto}.app-header{border-bottom:2px solid var(--wine);align-items:center;gap:14px;height:68px;padding:10px 20px;display:flex}.wordmark{color:var(--wine);font:8px/1.8 var(--pixel);text-align:left;background:0 0;border:0;align-items:center;gap:10px;min-height:44px;padding:0;display:flex}.player-status{align-items:center;gap:7px;margin-left:auto;font-size:12px;display:flex}.status-dot{background:#557664;width:6px;height:6px}.icon-button{background:0 0;border:0;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:8px;display:inline-flex}main{padding:26px 24px 116px}.screen-title{margin-bottom:24px}.screen-title .pixel-label{margin-bottom:12px}.screen-title p{color:var(--muted);margin:0;font-size:14px}.panel{border:2px solid var(--wine);background:var(--paper);box-shadow:4px 4px 0 var(--tan);margin-bottom:22px;padding:22px}.button{border:2px solid var(--wine);justify-content:center;align-items:center;gap:9px;min-height:48px;padding:12px 16px;font-size:15px;font-weight:600;transition:transform .12s,box-shadow .12s;display:inline-flex}.button.primary{color:var(--cream);background:var(--wine);box-shadow:3px 3px 0 var(--tan)}.button.secondary{background:var(--cream);color:var(--wine);box-shadow:3px 3px 0 var(--tan)}.button.quiet{box-shadow:none;text-underline-offset:4px;background:0 0;border-color:#0000;font-size:14px;text-decoration:underline}.button:not(:disabled):active{box-shadow:0 0 0 var(--tan);transform:translate(2px,2px)}.button:not(:disabled):hover{filter:brightness(.97)}.bottom-nav{width:min(100%,560px);padding:8px 8px max(10px,env(safe-area-inset-bottom));background:var(--paper);border-top:2px solid var(--wine);z-index:20;grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{min-height:62px;color:var(--muted);background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:5px;font-size:12px;display:flex;position:relative}.bottom-nav button.selected{color:var(--wine);background:var(--mint)}.bottom-nav button.selected:before{content:"";background:var(--wine);width:22px;height:4px;position:absolute;top:-10px}.duo-strip{justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;display:flex}.duo-players{gap:20px;display:flex;position:relative}.duo-players>div{align-items:center;gap:7px;font-size:12px;display:flex}.avatar{color:var(--wine);background:var(--tan);padding:5px;display:flex}.avatar-1{background:var(--mint)}.duo-heart{color:var(--wine);position:absolute;top:2px;left:50%;transform:translate(-50%,-50%)}.save-badge{border:1px dashed var(--wine);white-space:nowrap;padding:6px 8px;font-size:10px}.adventure-machine{background:var(--tan);box-shadow:5px 5px 0 var(--wine);padding:19px 18px 10px}.machine-top{justify-content:space-between;align-items:center;gap:8px;margin:0 0 13px;display:flex}.machine-top .pixel-label{font-size:8px}.machine-light{background:var(--wine);width:6px;height:6px}.quest-screen{background:var(--mint);border:3px solid var(--wine);min-height:232px;padding:24px 20px;box-shadow:inset 4px 4px #8cbba8}.quest-screen h2{margin:14px 0;font-size:25px}.quest-screen p{font-size:16px}.category-label{border-bottom:1px solid var(--wine);color:var(--wine);padding-bottom:4px;font-size:11px;display:inline-block}.quest-foot{border-top:1px dashed var(--wine);justify-content:space-between;gap:10px;margin-top:22px;padding-top:14px;font-size:11px;display:flex}.quest-empty{text-align:center;color:var(--wine);padding:8px 0}.quest-empty h2{font-size:23px}.quest-empty p{margin-bottom:0;font-size:13px}.machine-controls{padding:20px 0 8px}.quest-secondary{justify-content:space-between;align-items:center;gap:8px;margin-top:10px;display:flex}.quest-secondary .button{font-size:12px}.machine-footer{border-top:1px solid #b5958f;justify-content:space-between;align-items:center;padding:12px 0 0;display:flex}.machine-footer>span:first-child{font:6px/2 var(--pixel)}.speaker-slits{letter-spacing:1px;color:var(--wine);font-size:18px;transform:rotate(-12deg)}.coin{width:88px;height:88px;color:var(--wine);border:5px solid var(--wine);box-shadow:5px 5px 0 var(--tan);clip-path:polygon(20% 0,80% 0,80% 7%,93% 7%,93% 20%,100% 20%,100% 80%,93% 80%,93% 93%,80% 93%,80% 100%,20% 100%,20% 93%,7% 93%,7% 80%,0 80%,0 20%,7% 20%,7% 7%,20% 7%);background:#edc979;place-items:center;display:grid}.coin span{font-size:34px;font-weight:700}.coin.flipping{animation:.85s ease-out coinflip}.page-note{text-align:center;color:var(--muted);margin:26px 0 0;font-size:12px}.notice{background:var(--mint);gap:14px;padding:16px;font-size:14px;display:flex}.notice p{margin:5px 0 0;font-size:12px}.privacy-strip{color:var(--muted);align-items:center;gap:8px;margin-bottom:20px;font-size:12px;display:flex}.secret-card{background:var(--wine);color:var(--cream)}.secret-card .pixel-label,.secret-card .category-label{color:var(--tan);border-color:var(--tan)}.secret-card .category-label{margin:16px 0}.secret-card h2{font-size:25px}.secret-card .button.primary{background:var(--mint);color:var(--wine)}.secret-card .button.quiet{color:var(--cream)}.stack-actions{flex-direction:column;gap:10px;margin-top:20px;display:flex}.section-row{justify-content:space-between;align-items:center;gap:12px;margin:26px 0 16px;display:flex}.section-row h2{margin:0;font-size:17px}.section-row>span{color:var(--muted);font-size:12px}.secret-history{border:0;border-bottom:1px solid var(--line);text-align:left;background:0 0;align-items:center;gap:13px;width:100%;padding:16px 0;display:flex}.secret-history>span:nth-child(2){flex:1}.secret-history strong{font-size:14px}.secret-history small{display:block}.stamp{border:2px solid var(--wine);background:var(--mint);justify-content:center;align-items:center;width:32px;height:32px;display:inline-flex;transform:rotate(-8deg)}.empty{text-align:center;padding:30px 5px}.empty h2,.empty h3{margin-top:15px}.empty p{color:var(--muted);margin-bottom:0;font-size:14px}.empty .button{margin-top:20px}.gift-inventory{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px;display:grid}.gift-slot{border:2px solid var(--wine);background:var(--tan);min-height:235px;box-shadow:4px 4px 0 var(--wine);flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:20px 10px;display:flex}.gift-slot.small{background:var(--mint)}.gift-slot .pixel-label{text-align:center;font-size:6px}.gift-slot strong{font-size:18px}.gift-slot>span:not(.pixel-label){font-size:13px}.gift-slot b{font-size:22px}.gift-slot small{text-align:center;font-size:11px}.letter-heading{align-items:center;gap:10px;margin-bottom:16px;display:flex}.letter-heading h2{margin:0;font-size:18px}.letter-heading>div{flex:1}.tag{background:var(--mint);color:var(--wine);white-space:nowrap;padding:5px 7px;font-size:11px;display:inline-block}.surprise-letter.draft{border-style:dashed}.hints{margin:0}.hints>div{grid-template-columns:48px 1fr;gap:12px;padding:7px 0;font-size:14px;line-height:1.65;display:grid}.hints dt{color:var(--muted);font-size:12px}.hints dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.private-note{background:color-mix(in srgb,var(--tan) 24%,transparent);white-space:pre-wrap;border:1px dashed;margin-top:18px;padding:15px}.private-note p{margin:5px 0 0}.bingo-summary{justify-content:space-between;align-items:center;margin-bottom:16px;font-size:13px;display:flex}.bingo-summary>span:last-child{align-items:center;gap:6px;display:flex}.bingo-summary b{font-size:24px}.bingo-board{margin-bottom:22px}.bingo-top{justify-content:space-between;align-items:center;padding:4px 0 14px;display:flex}.bingo-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:0 3px 3px 0;display:grid}.wish-cell{border:1px solid var(--wine);background:var(--paper);min-width:0;min-height:96px;box-shadow:2px 2px 0 var(--wine);place-items:center;padding:20px 5px 22px;font-size:12px;line-height:1.5;display:grid;position:relative}.wish-title{white-space:normal;overflow-wrap:anywhere;text-align:center;width:100%;min-width:0;display:block}.wish-cell.done{background:var(--mint)}.wish-cell.linked{box-shadow:2px 2px 0 var(--wine),inset 0 0 0 2px var(--wine)}.wish-number{font:6px/1 var(--pixel);color:var(--muted);position:absolute;top:8px;left:6px}.wish-check{display:flex;position:absolute;bottom:4px;right:4px}.wish-detail-title{padding:20px 0;font-size:24px}.bingo-celebration{background:var(--mint);border:2px solid var(--wine);align-items:center;gap:12px;padding:16px;font-size:14px;animation:.25s ease-out stampin;display:flex}.journey-score{background:var(--mint);justify-content:space-between;align-items:center;padding-bottom:32px;display:flex;position:relative}.journey-score strong{font:38px/1.7 var(--pixel);margin:6px 0;display:block}.journey-score strong small{color:var(--wine);font-family:inherit;font-size:13px}.journey-score p{margin-bottom:0;font-size:12px}.score-progress{background:var(--cream);border:1px solid var(--wine);height:6px;position:absolute;bottom:12px;left:22px;right:22px}.score-progress span{background:var(--wine);height:100%;display:block}.journey-stats{justify-content:space-between;gap:12px;margin:28px 0;font-size:11px;display:flex}.journey-stats b{font-size:18px}.segment-control{border-bottom:2px solid var(--wine);grid-template-columns:1fr 1fr;margin:20px 0;display:grid}.segment-control button{background:0 0;border:0;min-height:46px;font-size:14px}.segment-control button.selected{background:var(--wine);color:var(--cream)}.timeline{border-left:2px solid var(--wine);margin-left:5px;padding:0 0 0 22px}.memory-entry{border-bottom:1px solid var(--line);margin:0 0 24px;padding:0 0 26px;position:relative}.memory-entry:before{content:"";background:var(--mint);border:2px solid var(--wine);width:10px;height:10px;position:absolute;top:7px;left:-28px}.memory-date{color:var(--muted);gap:12px;margin-bottom:12px;font-size:11px;display:flex}.memory-entry p{font-size:14px}.memory-author{color:var(--muted);justify-content:space-between;align-items:center;font-size:11px;display:flex}.text-button{min-height:44px;color:var(--wine);background:0 0;border:0;padding:4px 8px;font-size:12px;text-decoration:underline}.reward-row{align-items:center;gap:14px;padding:16px;display:flex}.reward-threshold{font:18px var(--pixel);text-align:center;flex-direction:column;gap:8px;display:flex}.reward-threshold small{font-family:inherit;font-size:8px}.reward-row>div{flex:1}.reward-row h2{font-size:16px}.reward-row p{margin:0;font-size:11px}.reward-row .button{min-height:44px;padding:8px;font-size:11px}.reward-row.locked{background:var(--cream);box-shadow:none;border-style:dashed}.finale-panel{background:var(--tan);margin-top:34px}.finale-panel h2{margin-top:15px}.finale-panel p{font-size:14px}.finale-answer{border-top:1px dashed var(--wine);margin-top:20px;padding-top:20px}.reveal-card{text-align:center;animation:.25s ease-out stampin}.reveal-card h3{margin-top:16px;font-size:24px}.reveal-card p{margin-top:12px}.reveal-card .tag{margin:0 0 22px}.reveal-card blockquote{text-align:left;border-top:1px dashed var(--wine);white-space:pre-wrap;margin:16px 0;padding-top:16px;font-size:14px;line-height:1.8}.modal{border:3px solid var(--wine);background:var(--paper);width:min(480px,100% - 32px);max-height:calc(100dvh - 48px);color:var(--ink);box-shadow:6px 6px 0 var(--tan);padding:0;overflow-y:auto}.modal::backdrop{background:#482a3580}.modal-body{padding:22px}.modal-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.modal-header h2{margin:0}.field{margin:18px 0;display:block}.field>span{margin-bottom:8px;font-size:13px;display:block}.field input,.field textarea{border:1px solid var(--wine);background:var(--cream);width:100%;color:var(--ink);resize:vertical;border-radius:0;min-height:46px;padding:12px;font-size:16px}.field textarea{line-height:1.7}.two-fields{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal form .button+.button{margin-top:12px}.settings-players{border-top:1px dashed var(--wine);margin-top:24px;padding-top:18px}.settings-players p{font-size:13px}.error-banner,.connection-banner{border-bottom:2px solid var(--wine);background:#f0d9ce;padding:12px 22px;font-size:13px}.error-banner p{margin-bottom:3px}.error-banner button,.connection-banner button{color:var(--wine);background:0 0;border:0;min-height:44px;padding:4px 12px;text-decoration:underline}.error-text{color:var(--wine);font-size:13px}.loading-page{flex-direction:column;justify-content:center;align-items:center;gap:28px;min-height:100dvh;display:flex}.login-page{width:min(100%,460px);min-height:100dvh;margin:auto;padding:50px 24px 30px}.login-decoration{color:var(--wine);flex-direction:column;align-items:center;gap:24px;margin-bottom:28px;display:flex}.login-page>h1{text-align:center;font-size:32px}.login-tagline{text-align:center;color:var(--muted);margin:16px 0 30px;font-size:16px}.login-page .panel{background:var(--tan);padding:25px}.login-page .panel h2{margin-top:12px}.login-page input{background:var(--paper)}@keyframes coinflip{0%{transform:translateY(0)rotateY(0)}35%{transform:translateY(-30px)rotateY(540deg)}to{transform:translateY(0)rotateY(1080deg)}}@keyframes stampin{0%{opacity:0;transform:translateY(8px)scale(.97)}to{opacity:1;transform:none}}@media (width>=720px){body{background:var(--tan)}.app-shell{box-shadow:10px 0 #c9ac9b,-10px 0 #c9ac9b}.login-page{padding-top:70px}.login-page .panel{background:var(--paper)}}@media (width<=380px){main,.app-header{padding-inline:16px}.duo-strip{gap:5px}.duo-players{gap:10px}.duo-players>div{gap:4px;font-size:10px}.save-badge{padding:5px;font-size:9px}.quest-screen{padding:20px 15px}.wish-cell{min-height:92px;font-size:11px}.bingo-grid{gap:6px}.gift-slot{padding-inline:7px}.reward-row{gap:9px;padding:12px}.journey-stats{gap:6px;font-size:10px}.two-fields{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.modal-error{border:1px dashed var(--wine);background:#f0d9ce;margin-bottom:18px;padding:14px;font-size:13px}.modal-error p{margin-bottom:10px}.surprise-hints p{margin:6px 0 0;font-size:15px}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.nav-icon{display:inline-flex;position:relative}.nav-unread{width:7px;height:7px;box-shadow:0 0 0 2px var(--paper);background:#b63e3e;position:absolute;top:-2px;right:-4px}.letter-heading>.letter-tags{flex-direction:column;flex:none;align-items:flex-end;gap:6px;display:flex}.unread-tag{color:var(--wine);align-items:center;gap:5px;font-size:11px;display:inline-flex}.unread-tag i{background:#b63e3e;width:6px;height:6px}.bingo-celebration{bottom:calc(94px + env(safe-area-inset-bottom));z-index:30;width:min(512px,100% - 32px);animation:.25s ease-out toastin;position:fixed;left:50%;transform:translate(-50%)}@keyframes toastin{0%{opacity:0}to{opacity:1}}.adventure-hero{grid-template-columns:minmax(0,1fr) 64px;grid-template-areas:"heading tools""players tools";align-items:center;gap:6px 12px;margin-bottom:16px;display:grid}.adventure-heading{grid-area:heading;align-self:start}.random-tools{flex-direction:column;grid-area:tools;align-self:start;align-items:center;gap:12px;display:flex}.adventure-heading .screen-title{min-width:0;margin:0}.adventure-heading h1{font-size:28px}.adventure-intro{color:var(--muted);grid-area:intro;margin:0;font-size:14px}.coin-button{color:var(--wine);cursor:pointer;touch-action:manipulation;background:0 0;border:0;flex-direction:column;flex:none;align-items:center;gap:4px;padding:0;display:flex}.coin-button .coin{width:64px;height:64px;box-shadow:none;border-width:4px}.coin-button .coin span{font-size:28px}.coin-caption{font-size:11px;line-height:1.5}.coin-button:focus-visible{outline:2px dashed var(--wine);outline-offset:5px}.coin-button:disabled{cursor:default}.coin-button:disabled .coin-caption{color:var(--muted)}.coin-button:not(:disabled):active .coin{transform:translateY(2px)}.coin-announcement,.dice-announcement{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.dice-button{min-width:64px;color:var(--wine);touch-action:manipulation;background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;padding:0;display:flex}.dice-button:focus-visible{outline:2px dashed var(--wine);outline-offset:5px}.dice-button:not(:disabled):active .die{transform:translateY(2px)}.die{background:var(--paper);border:3px solid var(--wine);width:52px;height:52px;box-shadow:3px 3px 0 var(--tan);clip-path:polygon(6px 0,calc(100% - 6px) 0,calc(100% - 6px) 3px,calc(100% - 3px) 3px,calc(100% - 3px) 6px,100% 6px,100% calc(100% - 6px),calc(100% - 3px) calc(100% - 6px),calc(100% - 3px) calc(100% - 3px),calc(100% - 6px) calc(100% - 3px),calc(100% - 6px) 100%,6px 100%,6px calc(100% - 3px),3px calc(100% - 3px),3px calc(100% - 6px),0 calc(100% - 6px),0 6px,3px 6px,3px 3px,6px 3px);place-items:center;display:grid}.dice-placeholder{font-size:25px;font-weight:700}.dice-pips{grid-template-rows:repeat(3,6px);grid-template-columns:repeat(3,6px);gap:5px;display:grid}.pip{background:var(--wine);visibility:hidden}.pip.visible{visibility:visible}.die.rolling{animation:.85s ease-out diceroll}@keyframes diceroll{0%{transform:translateY(0)rotate(0)}35%{transform:translateY(-12px)rotate(155deg)}70%{transform:translateY(-4px)rotate(300deg)}to{transform:translateY(0)rotate(360deg)}}.quest-shuffle{min-height:174px;color:var(--wine);flex-direction:column;justify-content:center;align-items:center;gap:10px;animation:1.1s linear questdraw;display:flex}.quest-shuffle .pixel-label{font-size:7px}.adventure-page .quest-shuffle p{margin:0;font-size:13px}.quest-tickets{width:168px;height:92px;position:relative}.quest-ticket{--card-x:-28px;--spread-x:-42px;--card-turn:-12deg;border:3px solid var(--wine);background:var(--tan);width:56px;height:74px;box-shadow:3px 3px 0 var(--wine);transform:translateX(calc(-50% + var(--card-x))) rotate(var(--card-turn));place-items:center;font-size:30px;font-weight:700;animation:1.1s ease-in-out questticket;display:grid;position:absolute;top:8px;left:50%}.quest-ticket:nth-child(2){--card-x:28px;--spread-x:42px;--card-turn:12deg;background:var(--mint)}.quest-ticket:nth-child(3){--card-x:0px;--spread-x:0px;--card-turn:0deg;background:var(--paper);z-index:1}.quest-meter{border:1px solid var(--wine);background:var(--paper);width:116px;height:6px;overflow:hidden}.quest-meter:before{content:"";background:var(--wine);transform-origin:0;height:100%;animation:1.1s steps(6,end) forwards questprogress;display:block}@keyframes questdraw{0%{opacity:.75}to{opacity:1}}@keyframes questticket{0%,to{transform:translateX(calc(-50% + var(--card-x))) rotate(var(--card-turn))}35%{transform:translateX(calc(-50% + var(--spread-x))) translateY(-7px) rotate(var(--card-turn))}70%{transform:translateX(calc(-50% + var(--card-x))) translateY(3px) rotate(0deg)}}@keyframes questprogress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}main:has(.adventure-page){padding-top:16px;padding-bottom:86px}.adventure-page .duo-strip{grid-area:players;margin-bottom:0}.adventure-page .machine-top .pixel-label{font-size:7px}.adventure-page .adventure-machine{margin-bottom:0}.adventure-page .quest-screen{min-height:212px;padding:16px 18px}.adventure-page .quest-screen h2{margin:12px 0;font-size:24px}.adventure-page .quest-foot{margin-top:16px;padding-top:10px}.adventure-page .machine-controls{padding-top:16px}.adventure-page .machine-footer{padding-top:8px}@media (width<=380px){.adventure-heading h1{font-size:26px}.adventure-intro{font-size:13px}.adventure-page .quest-screen{padding:12px 14px}.adventure-page .quest-screen p{font-size:15px}.adventure-page .quest-foot{margin-top:12px}.adventure-page .machine-controls{padding-top:12px}}:root{--motion-quick:.14s;--motion-enter:.22s;--motion-reward:.6s;--motion-ease:cubic-bezier(.2,.8,.2,1)}.screen-stage,.journey-section{animation:screenenter var(--motion-enter) var(--motion-ease)}.quest-result,.quest-empty,.secret-card{animation:detailenter .2s var(--motion-ease)}.player-summary{flex-direction:column;align-items:flex-end;gap:2px;margin-left:auto;display:flex}.header-score{min-height:24px;color:var(--wine);font-variant-numeric:tabular-nums;background:0 0;border:0;align-items:center;gap:5px;padding:2px 0;font-size:11px;display:flex}.header-score .animated-number{text-align:right;min-width:1.2em}.score-progress span{transition:width var(--motion-reward) var(--motion-ease)}.bottom-nav button,.icon-button,.text-button,.gift-slot,.wish-cell,.segment-control button,.header-score{transition:transform var(--motion-quick),background-color var(--motion-quick)}.bottom-nav button:active,.icon-button:not(:disabled):active,.text-button:active,.gift-slot:not(:disabled):active,.segment-control button:active,.header-score:active{transform:translateY(2px)}.bottom-nav button.selected:before{animation:navmark var(--motion-enter) var(--motion-ease)}.modal{animation:modalenter .2s var(--motion-ease)}.modal::backdrop{animation:.18s ease-out backdropenter}.modal.is-closing{pointer-events:none;animation:.14s ease-in both modalexit}.modal.is-closing::backdrop{animation:.14s ease-in both backdropexit}.button.is-pending{position:relative}.pending-marker{gap:3px;display:flex;position:absolute;top:50%;left:9px;transform:translateY(-50%)}.pending-marker i{background:currentColor;width:3px;height:3px;animation:.9s ease-in-out infinite pendingpulse}.pending-marker i:nth-child(2){animation-delay:.15s}.pending-marker i:nth-child(3){animation-delay:.3s}.wish-check,.stamp{animation:sealenter .32s var(--motion-ease)}.wish-cell{transition:background-color .18s,box-shadow .22s,transform .14s}.wish-cell:active{box-shadow:1px 1px 0 var(--wine);transform:translate(1px,1px)}.wish-cell.linked:active{box-shadow:1px 1px 0 var(--wine),inset 0 0 0 2px var(--wine)}.wish-cell.new-linked{animation:.65s ease-out bingocell}.surprise-letter{animation:letterenter .28s var(--motion-ease)}.surprise-letter .tag{animation:sealenter .28s var(--motion-ease)}.surprise-letter .private-note{animation:.22s ease-out detailenter}.memory-entry{animation:entryenter .26s var(--motion-ease)}.reward-row.unlocked{animation:rewardenter .45s var(--motion-ease)}.reward-row.claimed{background:var(--mint);animation:sealenter .3s var(--motion-ease)}.ready-players{flex-wrap:wrap;gap:8px;margin:18px 0;display:flex}.ready-chip{border:1px dashed var(--wine);color:var(--muted);align-items:center;gap:5px;padding:8px;font-size:11px;display:flex}.ready-chip.is-ready{background:var(--mint);color:var(--wine);animation:sealenter .3s var(--motion-ease);border-style:solid}.reveal-card{transform-origin:50%;animation:revealturn .32s var(--motion-ease)}.error-banner,.connection-banner,.modal-error{animation:.16s ease-out noticeenter}.feedback-toast{top:calc(96px + env(safe-area-inset-top));z-index:40;background:var(--paper);border:2px solid var(--wine);width:min(512px,100% - 32px);box-shadow:4px 4px 0 var(--tan);color:var(--wine);pointer-events:none;animation:feedbackenter .22s var(--motion-ease);padding:16px;position:fixed;left:50%;transform:translate(-50%)}.feedback-heading{align-items:center;gap:13px;padding-right:24px;display:flex;position:relative}.feedback-seal{border:2px solid var(--wine);background:var(--mint);width:44px;height:44px;animation:sealenter .38s var(--motion-ease);flex:none;place-items:center;display:grid;position:relative;transform:rotate(-7deg)}.feedback-copy{flex:1;min-width:0}.feedback-copy .pixel-label{margin-bottom:5px;font-size:6px;line-height:1.8}.feedback-copy h2{text-wrap:pretty;margin:0 0 4px;font-size:16px;line-height:1.5}.feedback-copy p{color:var(--muted);margin:0;font-size:12px;line-height:1.65}.feedback-close{pointer-events:auto;width:44px;height:44px;color:var(--wine);background:0 0;border:0;place-items:center;display:grid;position:absolute;top:-12px;right:-12px}.feedback-points{font:20px/1.6 var(--pixel);animation:pointenter .6s var(--motion-ease);flex-direction:column;flex:none;align-items:center;display:flex}.feedback-points small{color:var(--wine);font-family:inherit;font-size:8px}.feedback-total{border-top:1px dashed var(--wine);grid-template-columns:1fr auto;gap:6px;margin-top:14px;padding-top:10px;font-size:11px;display:grid}.feedback-score-meter{background:var(--tan);grid-column:1/-1;height:5px;overflow:hidden}.feedback-score-meter i{background:var(--wine);transform-origin:0;height:100%;animation:meterfill .6s var(--motion-ease);display:block}.feedback-unlock{background:var(--mint);animation:unlockenter .38s .12s var(--motion-ease) both;align-items:center;gap:8px;margin-top:12px;padding:9px;font-size:12px;display:flex}.feedback-quiet .feedback-seal,.feedback-saved .feedback-seal{background:var(--cream);border-width:1px;width:36px;height:36px;transform:none}.feedback-sparks{pointer-events:none;position:absolute;top:50%;left:50%}.feedback-sparks i{background:var(--wine);width:4px;height:4px;animation:.65s ease-out both sparkburst;position:absolute}.feedback-sparks i:nth-child(2n){background:var(--mint)}@keyframes screenenter{0%{opacity:0;transform:translate(7px)}to{opacity:1;transform:none}}@keyframes navmark{0%{transform:scaleX(.3)}to{transform:scaleX(1)}}@keyframes modalenter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes modalexit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}@keyframes backdropenter{0%{background:0 0}to{background:#482a3580}}@keyframes backdropexit{to{background:0 0}}@keyframes pendingpulse{0%,to{opacity:.3}50%{opacity:1}}@keyframes sealenter{0%{opacity:0;scale:.65}65%{opacity:1;scale:1.08}to{opacity:1;scale:1}}@keyframes bingocell{0%{box-shadow:2px 2px 0 var(--wine),inset 0 0 0 2px var(--wine)}45%{box-shadow:2px 2px 0 var(--wine),inset 0 0 0 4px var(--wine)}to{box-shadow:2px 2px 0 var(--wine),inset 0 0 0 2px var(--wine)}}@keyframes letterenter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes detailenter{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes entryenter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes rewardenter{0%{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}@keyframes revealturn{0%{opacity:0;transform:perspective(600px)rotateY(-14deg)translateY(5px)}to{opacity:1;transform:none}}@keyframes noticeenter{0%{opacity:0}to{opacity:1}}@keyframes feedbackenter{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.feedback-toast.is-leaving{animation:.16s ease-in both feedbackexit}@keyframes feedbackexit{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-12px)}}@keyframes pointenter{0%{opacity:0;transform:translateY(9px)scale(.85)}60%{opacity:1;transform:translateY(-2px)scale(1.05)}to{opacity:1;transform:none}}@keyframes meterfill{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes unlockenter{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes sparkburst{0%{opacity:0;transform:translate(0)scale(.5)}30%{opacity:1}to{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(.7)}}@media (width<=380px){.feedback-toast{padding:12px}.feedback-heading{gap:9px}.feedback-copy h2{font-size:14px}.feedback-points{font-size:17px}.feedback-seal{width:36px;height:36px}.app-header{gap:10px}}@media (prefers-reduced-motion:reduce){.feedback-sparks,.pending-marker{display:none}.feedback-seal{transform:none}.feedback-toast{animation:none}.screen-stage,.journey-section,.modal,.reveal-card{transform:none}}
