:root{--cream:#fff4e0;--mint:#b8e8c8;--butter:#ffd97d;--berry:#ff8fa3;--sky:#aee3f5;--ink:#4a3f35;--ink-soft:#7d6f61;--card:#fffcf4eb;--shadow:0 4px 16px #4a3f352e;--radius:16px;--font:ui-rounded, "SF Pro Rounded", "Hiragino Maru Gothic ProN", "Comic Sans MS", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;margin:0;overflow:hidden}body{font-family:var(--font);color:var(--ink);-webkit-user-select:none;user-select:none}#app{position:fixed;inset:0}#app canvas{display:block}button{font-family:var(--font);cursor:pointer;color:var(--ink);border:none}button:disabled{cursor:default}#goal-banner{background:var(--card);box-shadow:var(--shadow);text-align:center;cursor:pointer;z-index:20;border-radius:999px;min-width:300px;max-width:min(480px,92vw);padding:8px 20px 10px;transition:transform .15s;position:fixed;top:12px;left:50%;transform:translate(-50%)}#goal-banner:hover{transform:translate(-50%)scale(1.02)}#goal-banner .goal-label{font-size:14px;font-weight:700}#goal-banner .goal-detail{color:var(--ink-soft);font-size:11.5px}#goal-banner .goal-bar{background:#eadfce;border-radius:3px;height:6px;margin-top:5px;overflow:hidden}#goal-banner .goal-bar>div{background:linear-gradient(90deg, var(--mint), #7ccf9d);border-radius:3px;height:100%;transition:width .3s}#meters{z-index:20;scrollbar-width:none;flex-direction:column;gap:8px;width:190px;max-height:calc(100vh - 230px);padding:2px;display:flex;position:fixed;top:12px;left:12px;overflow:hidden auto}.meter{background:var(--card);box-shadow:var(--shadow);border-radius:12px;padding:8px 12px}.meter .m-label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);font-size:10.5px}.meter .m-value{font-size:17px;font-weight:800;line-height:1.2}.meter .m-sub{color:var(--ink-soft);font-size:10.5px}.meter .m-bar{background:#eadfce;border-radius:3px;height:5px;margin-top:4px;overflow:hidden}.meter .m-bar>div{background:var(--butter);border-radius:3px;height:100%;transition:width .3s}#meter-mortgage .m-bar>div{background:var(--berry)}#meter-mortgage.mystery{opacity:.65}#shelf{z-index:20;scrollbar-width:thin;-webkit-overflow-scrolling:touch;gap:10px;padding:10px 14px 12px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.tier-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border:2px solid #0000;flex:0 0 168px;padding:10px 12px;transition:border-color .2s;position:relative}.tier-card.affordable{border-color:#7ccf9d}.tier-card.locked{opacity:.85}.tier-card .t-name{align-items:center;gap:6px;font-size:12.5px;font-weight:800;display:flex}.tier-card .t-name .t-emoji{font-size:18px}.tier-card .t-owned{color:var(--ink-soft);font-size:11px;font-weight:700;position:absolute;top:8px;right:10px}.tier-card .t-rate{color:var(--ink-soft);margin:2px 0 6px;font-size:10.5px}.tier-card .t-pips{gap:3px;margin-bottom:6px;display:flex}.tier-card .t-pips span{background:#eadfce;border-radius:3px;width:14px;height:5px}.tier-card .t-pips span.on{background:var(--butter)}.tier-card .t-pips span.next{background:linear-gradient(90deg, var(--butter) var(--pct,0%), #eadfce var(--pct,0%))}.tier-card .t-mastery{background:#eadfce;border-radius:2px;height:4px;margin:-2px 0 6px;position:relative}.tier-card .t-mastery>div{background:#b18ae0;border-radius:2px;max-width:100%;height:100%;transition:width .4s}.tier-card .t-mastery[data-level]:not([data-level="0"]):after{content:"M" attr(data-level);color:#8d5bb0;font-size:8.5px;font-weight:800;position:absolute;top:-11px;right:2px}.tier-card.market .t-mastery{display:none!important}.tier-card .t-buy{background:var(--mint);border-radius:10px;width:100%;padding:7px 8px;font-size:12px;font-weight:800;transition:transform .1s,background .2s}.tier-card .t-buy:not(:disabled):hover{background:#a1e0b7;transform:scale(1.04)}.tier-card .t-buy:not(:disabled):active{transform:scale(.97)}.tier-card .t-buy:disabled{color:var(--ink-soft);background:#eee4d4}.tier-card .t-flavor{color:var(--ink-soft);min-height:24px;margin-top:5px;font-size:9.5px;line-height:1.3}.tier-card.locked .t-silhouette{filter:brightness(0)opacity(.35);text-align:center;margin:4px 0;font-size:26px}#buy-toggle{z-index:21;background:var(--card);box-shadow:var(--shadow);border-radius:999px;gap:2px;padding:3px;display:flex;position:fixed;bottom:196px;right:14px}#buy-toggle button{background:0 0;border-radius:999px;padding:5px 12px;font-size:12px;font-weight:800}#buy-toggle button.on{background:var(--butter)}#rail{z-index:20;scrollbar-width:none;flex-direction:column;align-items:flex-end;gap:8px;max-height:calc(100vh - 230px);padding:2px;display:flex;position:fixed;top:12px;right:12px;overflow:hidden auto}.rail-btn{background:var(--card);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:6px;padding:8px 12px;font-size:12.5px;font-weight:800;transition:transform .12s;display:flex}.rail-btn:hover{transform:scale(1.05)}.rail-btn .dot{background:var(--berry);border-radius:50%;width:8px;height:8px;display:none}.rail-btn.attention .dot{animation:1.2s infinite pulse;display:block}@keyframes pulse{50%{opacity:.3}}#timer-tray{flex-direction:column;gap:6px;margin-top:4px;display:flex}.timer-chip{background:var(--card);box-shadow:var(--shadow);text-align:right;cursor:pointer;border-radius:12px;padding:6px 12px;font-size:12px;font-weight:700;transition:transform .12s}.timer-chip:hover{transform:scale(1.04)}.timer-chip .tc-time{color:var(--ink-soft);font-size:10.5px;font-weight:600}.timer-chip.ready{background:var(--butter);animation:1.6s infinite wiggle}@keyframes wiggle{0%,to{transform:rotate(0)}8%{transform:rotate(2deg)}16%{transform:rotate(-2deg)}24%{transform:rotate(0)}}#panel-overlay{z-index:40;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#4a3f3559;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}#panel-overlay.open{display:flex}#panel{background:var(--cream);box-shadow:var(--shadow);border-radius:22px;width:min(560px,94vw);max-height:min(78vh,640px);padding:22px 24px;overflow-y:auto}#panel h2{margin:0 0 4px;font-size:20px}#panel .p-sub{color:var(--ink-soft);margin:0 0 14px;font-size:12.5px}#panel .close-x{float:right;background:var(--butter);border-radius:50%;width:30px;height:30px;font-weight:800;position:sticky;top:0}.p-item{background:#fffdf7;border:1px solid #4a3f3514;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;padding:10px 14px;display:flex}.p-item .pi-info{flex:1}.p-item .pi-name{font-size:13.5px;font-weight:800}.p-item .pi-desc{color:var(--ink-soft);font-size:11px;line-height:1.35}.p-item button{background:var(--mint);white-space:nowrap;border-radius:10px;padding:7px 12px;font-size:12px;font-weight:800}.p-item button:disabled{color:var(--ink-soft);background:#eee4d4}.p-item.done{opacity:.6}.p-item.done button{background:var(--butter)}.formula-block{white-space:pre-wrap;background:#fffdf7;border:1px solid #4a3f3514;border-radius:12px;margin:8px 0;padding:10px 14px;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;line-height:1.5}.ach-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ach{background:#fffdf7;border:1px solid #4a3f3514;border-radius:12px;padding:8px 12px;font-size:11px}.ach.locked{opacity:.5}.ach .a-name{font-size:12px;font-weight:800}.ach .a-bonus{color:#2e7d4f;font-weight:700}.tier-card.market{background:#3c3c5ceb}.tier-card.market .t-name,.tier-card.market .t-owned{color:#fff4e0}.tier-card.market .t-rate,.tier-card.market .t-flavor{color:#b8b8d4}.tier-card.market .t-buy{color:#fff;background:#8d8dc9}.tier-card.market .t-buy:disabled{color:#9a9ab0;background:#4a4a68}.tier-card.market .t-pips span{background:#4a4a68}.tier-card.market .t-pips span.on{background:var(--butter)}.tier-card.market .t-pips span.next{background:linear-gradient(90deg, var(--butter) var(--pct,0%), #4a4a68 var(--pct,0%))}#meter-sky{cursor:pointer;transition:box-shadow .3s}#meter-sky.matched{box-shadow:0 0 0 2px var(--butter), var(--shadow)}#meter-sky:hover{transform:scale(1.02)}.focus-row{flex-wrap:wrap;justify-content:center;gap:8px;margin:10px 0 4px;display:flex}.focus-btn{background:#fffdf7;border:2px solid #eadfce;border-radius:12px;padding:8px 10px;font-size:12px;font-weight:800;line-height:1.3;transition:transform .12s,border-color .2s,background .2s}.focus-btn small{color:var(--ink-soft);font-weight:600}.focus-btn:hover{transform:scale(1.05)}.focus-btn.on{background:var(--mint);border-color:#7ccf9d}#toasts{z-index:30;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;bottom:170px;left:50%;transform:translate(-50%)}.toast{background:var(--card);box-shadow:var(--shadow);text-align:center;border-radius:999px;max-width:90vw;padding:9px 18px;font-size:13px;font-weight:700;animation:.25s toast-in,.4s 3.6s forwards toast-out}.toast.big{background:var(--butter);font-size:15px}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}}@keyframes toast-out{to{opacity:0;transform:translateY(-8px)}}.float-label{z-index:25;pointer-events:none;font-family:var(--font);color:#2e7d4f;text-shadow:0 1px #fff;font-size:15px;font-weight:800;animation:1.4s forwards float-up;position:fixed;transform:translate(-50%,-50%)}.float-label.gold{color:#b8860b;font-size:18px}.float-label.pink{color:var(--berry)}@keyframes float-up{to{opacity:0;transform:translate(-50%,-180%)}}#moment{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#4a3f3580;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}#moment.open{display:flex}#moment .m-card{background:var(--cream);box-shadow:var(--shadow);text-align:center;border-radius:24px;width:min(440px,94vw);padding:26px 28px;animation:.35s cubic-bezier(.34,1.56,.64,1) pop-in}@keyframes pop-in{0%{opacity:0;transform:scale(.7)}}#moment h2{margin:0 0 6px;font-size:22px}#moment .m-sub{color:var(--ink-soft);margin-bottom:14px;font-size:13px}#moment .m-lines{text-align:left;max-width:320px;margin:0 auto 14px;font-size:13px}#moment .m-lines div{border-bottom:1px dashed #eadfce;justify-content:space-between;padding:3px 0;display:flex}#moment .m-big{color:#2e7d4f;margin:10px 0 14px;font-size:30px;font-weight:800}#moment .m-close{background:var(--butter);border-radius:999px;padding:12px 34px;font-size:16px;font-weight:800;transition:transform .12s}#moment .m-close:hover{transform:scale(1.05)}#duchess-alert{z-index:35;text-align:center;cursor:pointer;display:none;position:fixed;bottom:220px;left:50%;transform:translate(-50%)}#duchess-alert.open{animation:.3s pop-in;display:block}#duchess-alert .d-bubble{background:var(--butter);box-shadow:var(--shadow);border-radius:18px;padding:12px 20px;font-size:14px;font-weight:800}#duchess-alert .d-timer{background:#fff;border-radius:3px;height:5px;margin-top:8px;overflow:hidden}#duchess-alert .d-timer>div{background:var(--berry);height:100%}#frenzy{z-index:20;box-shadow:var(--shadow);background:linear-gradient(90deg,#ffd97d,#ff8fa3);border-radius:999px;padding:6px 18px;font-size:13px;font-weight:800;display:none;position:fixed;top:74px;left:50%;transform:translate(-50%)}#frenzy.open{animation:.8s infinite pulse;display:block}body.photo-mode #goal-banner,body.photo-mode #meters,body.photo-mode #rail,body.photo-mode #shelf,body.photo-mode #buy-toggle,body.photo-mode #toasts,body.photo-mode #frenzy,body.photo-mode #duchess-alert{display:none!important}#photo-bar{z-index:45;background:var(--card);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:10px;padding:8px 12px;display:flex;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}#photo-bar .pb-hint{color:var(--ink-soft);padding:0 6px;font-size:12px}#photo-bar button{border-radius:999px;padding:9px 18px;font-size:13px;font-weight:800}#photo-bar #photo-exit{background:#eee4d4}#photo-preview{z-index:46;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#4a3f3580;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}#photo-preview .pp-card{background:var(--cream);box-shadow:var(--shadow);text-align:center;border-radius:20px;max-width:min(680px,92vw);padding:16px;animation:.3s cubic-bezier(.34,1.56,.64,1) pop-in}#photo-preview img{border-radius:12px;max-width:100%;max-height:62vh}#photo-preview .pp-row{justify-content:center;gap:10px;margin-top:12px;display:flex}#photo-preview .pp-row a,#photo-preview .pp-row button{color:var(--ink);background:#eee4d4;border-radius:999px;padding:10px 18px;font-size:13px;font-weight:800;text-decoration:none;display:inline-block}#photo-preview .pp-row a{background:var(--butter)}#credits{z-index:60;color:#fff;text-align:center;background:#2c2c54;justify-content:center;align-items:center;display:none;position:fixed;inset:0;overflow:hidden}#credits.open{display:flex}#credits .c-scroll{font-size:16px;line-height:2;animation:36s linear forwards credits-roll}#credits h1{font-size:34px}#credits .c-role{color:var(--butter);text-transform:uppercase;letter-spacing:.1em;font-size:12px}@keyframes credits-roll{0%{transform:translateY(60vh)}to{transform:translateY(-160%)}}#credits .c-choice{justify-content:center;gap:12px;display:none;position:absolute;bottom:30px;left:0;right:0}#credits .c-choice.open{display:flex}#credits .c-choice button{background:var(--butter);border-radius:999px;padding:12px 24px;font-size:14px;font-weight:800}#aisle-veil{z-index:55;color:#9a9ab8;letter-spacing:.2em;text-transform:uppercase;background:#0a0a12;justify-content:center;align-items:center;font-size:13px;display:none;position:fixed;inset:0}#aisle-veil.open{animation:4s infinite flicker;display:flex}@keyframes flicker{0%,to{opacity:1}92%{opacity:1}94%{opacity:.7}96%{opacity:1}}@media (max-width:780px){#meters{width:132px}.meter .m-value{font-size:14px}.tier-card{flex-basis:150px}#rail .rail-btn{padding:6px 10px;font-size:11px}#goal-banner{z-index:22;min-width:0;max-width:94vw;padding:6px 16px 8px;top:auto;bottom:240px}#frenzy{top:12px;left:auto;right:50%;transform:translate(50%)}#toasts{bottom:300px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:10ms!important}}
