@font-face{font-family:Fredoka;src:url(/fonts/fredoka.woff2) format("woff2");font-weight:300 700;font-display:swap}:root{--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--game-bg: #2b3a78;--ink: #fff;--ink-soft: #c4cdf0;--panel: #3a4a9c;--panel-deep: #27346f;--line: #5a69b8;--primary: #f5a524;--primary-deep: #b9740d;--go: #3fbf4a;--go-deep: #27842f;--danger: #e8452f;--radius: 16px;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--game-bg);color:var(--ink);font-family:Fredoka,ui-rounded,SF Pro Rounded,system-ui,sans-serif;font-weight:500;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}#stage{position:fixed;inset:0}#stage canvas{display:block}#hud{position:fixed;inset:0;pointer-events:none;text-shadow:0 2px 3px rgb(0 0 0 / .28)}#hud[hidden]{display:none}.hud-bar{position:absolute;top:calc(var(--sat) + 8px);left:0;right:0;max-width:620px;margin:0 auto;padding:0 14px;display:flex;justify-content:space-between;align-items:center}.hud-best{display:flex;align-items:center;gap:6px;color:#ffc93c;font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.hud-menu{pointer-events:auto;width:44px;height:44px;border:0;border-radius:12px;display:grid;place-items:center;color:#fff;background:#ffffff24;cursor:pointer}.hud-score{position:absolute;top:calc(var(--sat) + 56px);left:0;right:0;text-align:center;font-size:46px;line-height:56px;font-weight:600;font-variant-numeric:tabular-nums}.hud-score span{position:relative;display:inline-block}.hud-badge{position:absolute;left:50%;top:50%;width:62px;height:62px;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s}.hud-badge[data-tier="1"]{opacity:1;background:linear-gradient(135deg,#5ea2ff,#2e5fe0);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.hud-badge[data-tier="2"]{opacity:1;width:70px;height:70px;background:linear-gradient(135deg,#7df3ff,#18b6d8);clip-path:polygon(50% 0,96% 25%,96% 75%,50% 100%,4% 75%,4% 25%)}.hud-badge[data-tier="3"]{opacity:1;width:72px;height:66px;background:linear-gradient(135deg,#ffb347,#f06a3a);clip-path:path("M36 66 C14 48 0 36 0 19 C0 8 8 0 19 0 C26 0 32 3 36 10 C40 3 46 0 53 0 C64 0 72 8 72 19 C72 36 58 48 36 66 Z")}.hud-badge[data-tier="4"]{opacity:1;width:82px;height:80px;background:linear-gradient(135deg,#ff8ad8,#d23bb1);clip-path:polygon(50% 0,63% 35%,100% 38%,71% 61%,81% 98%,50% 77%,19% 98%,29% 61%,0 38%,37% 35%)}.hud-partner{position:absolute;left:50%;width:min(100vw - 24px,596px);transform:translate(-50%);display:flex;align-items:center;gap:7px;height:52px;padding-left:4px;font-size:16px;font-weight:600}.hud-partner .dot{width:10px;height:10px;border-radius:50%;background:#8a93b8}.hud-partner .dot.on{background:#62e070;box-shadow:0 0 8px #62e070}.hud-status{position:absolute;left:50%;transform:translate(-50%);white-space:nowrap;max-width:calc(100vw - 24px);padding:6px 14px;border-radius:999px;background:#0a0e289e;font-size:15px}#ui:empty{display:none}.screen{position:fixed;inset:0;overflow-y:auto;padding:calc(var(--sat) + 22px) 18px calc(var(--sab) + 26px);display:flex;flex-direction:column;align-items:center;background:linear-gradient(180deg,#2b3a78,#4a3f9c)}.screen.over{background:#0e1230b8;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);justify-content:center}.column{width:100%;max-width:420px;display:flex;flex-direction:column;gap:14px}.logo{margin:8vh 0 6px;display:grid;grid-template-columns:repeat(3,26px);grid-auto-rows:26px;gap:3px;justify-content:center}.logo i{border-radius:5px;box-shadow:inset 0 3px #ffffff59,inset 0 -3px #00000038}h1{margin:8px 0 18px;font-size:46px;font-weight:700;text-align:center;line-height:1}h2{margin:0;font-size:28px;font-weight:600}h3{margin:10px 0 0;font-size:17px;font-weight:600;color:var(--ink-soft)}p{margin:0;color:var(--ink-soft);font-weight:400;line-height:1.4}.btn{appearance:none;border:0;width:100%;min-height:56px;padding:10px 18px;border-radius:var(--radius);font:inherit;font-size:20px;font-weight:600;color:#fff;background:var(--panel);box-shadow:0 5px 0 var(--panel-deep);cursor:pointer;transition:transform .06s,box-shadow .06s}.btn:active{transform:translateY(4px);box-shadow:0 1px 0 var(--panel-deep)}.btn.primary{background:var(--primary);box-shadow:0 5px 0 var(--primary-deep)}.btn.primary:active{box-shadow:0 1px 0 var(--primary-deep)}.btn.go{background:var(--go);box-shadow:0 5px 0 var(--go-deep)}.btn.go:active{box-shadow:0 1px 0 var(--go-deep)}.btn.small{min-height:44px;width:auto;font-size:16px;padding:6px 14px;border-radius:12px;box-shadow:0 3px 0 var(--panel-deep)}.btn.small.go{box-shadow:0 3px 0 var(--go-deep)}.btn:disabled{opacity:.45;pointer-events:none}.back{align-self:flex-start;background:none;border:0;color:var(--ink-soft);font:inherit;font-size:18px;min-height:44px;padding:0 8px 0 0;cursor:pointer}.card{background:#ffffff14;border-radius:var(--radius);padding:16px;display:flex;flex-direction:column;gap:12px}input.field{width:100%;min-height:54px;padding:0 16px;border-radius:14px;border:2px solid var(--line);background:var(--panel-deep);color:#fff;font:inherit;font-size:20px;-webkit-user-select:text;user-select:text}input.field:focus{outline:none;border-color:var(--primary)}.row{display:flex;gap:10px;align-items:center}.row>.grow{flex:1;min-width:0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.code{font-size:40px;font-weight:700;letter-spacing:.12em;text-align:center;font-variant-numeric:tabular-nums}.qr{align-self:center;width:min(62vw,230px);aspect-ratio:1;background:#fff;border-radius:14px;padding:10px}.qr svg{display:block;width:100%;height:100%}.friend{display:flex;align-items:center;gap:10px;min-height:48px}.friend .dot{width:11px;height:11px;border-radius:50%;background:#8a93b8;flex:none}.friend .dot.on{background:#62e070}.friend .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:18px}.friend small{display:block;color:var(--ink-soft);font-weight:400;font-size:13px}.choice{appearance:none;border:3px solid transparent;border-radius:14px;background:#ffffff14;color:#fff;font:inherit;padding:10px;display:flex;flex-direction:column;align-items:center;gap:8px;cursor:pointer}.choice[aria-pressed=true]{border-color:var(--primary);background:#f5a52429}.toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;font-size:18px}.toggle input{width:26px;height:26px;accent-color:var(--go)}.crown{color:#ffc93c;align-self:center}.final{font-size:66px;line-height:1.05;font-weight:700;text-align:center;background:linear-gradient(90deg,#7df3ff,#7dffb3,#ffe27a,#ff9ad8);-webkit-background-clip:text;background-clip:text;color:transparent}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}.stats b{display:block;font-size:24px;font-weight:600}.stats span{font-size:13px;color:var(--ink-soft)}video.scanner{width:100%;aspect-ratio:1;object-fit:cover;border-radius:14px;background:#000}#toasts{position:fixed;top:calc(var(--sat) + 12px);left:12px;right:12px;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;z-index:10}.toast{pointer-events:auto;max-width:420px;width:100%;padding:13px 16px;border-radius:14px;background:#fff;color:#1d2348;font-size:17px;box-shadow:0 8px 24px #0000004d;animation:toast-in .26s cubic-bezier(.3,1.5,.5,1)}.toast .row{margin-top:10px;justify-content:flex-end}.toast .btn.small{color:#fff}.toast .btn.small.quiet{background:#dfe3f2;color:#1d2348;box-shadow:0 3px #b8bedb}@keyframes toast-in{0%{transform:translateY(-16px) scale(.92);opacity:0}}.note{font-size:14px;color:var(--ink-soft);font-weight:400}.btn[hidden]{display:none}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.choice.tab{min-height:48px;justify-content:center;font-size:15px;padding:6px}.code.long{font-size:clamp(22px,7vw,30px);letter-spacing:.04em}.ranks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.rank{display:flex;align-items:center;gap:12px;min-height:52px;padding:8px 14px;border-radius:14px;background:#ffffff14;font-size:17px}.rank.mine{background:#f5a52438;outline:2px solid var(--primary)}.rank b{width:24px;color:#ffc93c;font-weight:700}.rank .name{flex:1;min-width:0;overflow-wrap:anywhere}.rank strong{font-weight:600;font-variant-numeric:tabular-nums}.coin{position:relative;display:inline-block;flex:none;width:1em;height:1em;border-radius:50%;background:radial-gradient(circle at 36% 30%,#fff3b0 0 10%,#ffd84d 34%,#f5a524 76%,#c97a10);box-shadow:inset 0 0 0 .06em #b9740d,0 .05em .12em #00000059;vertical-align:-.12em}.coin:after{content:"";position:absolute;inset:29%;border-radius:20%;background:#d98c14;box-shadow:0 .04em #ffffff73}.coin-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px 0 7px;border-radius:999px;background:#0a0e2880;box-shadow:inset 0 0 0 1.5px #ffd84d66;color:#ffe27a;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums;text-shadow:none}.coin-chip[hidden]{display:none}.coin-chip .coin{font-size:23px}.coin-flights{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:40}.coin-flights .coin{position:absolute;left:-13px;top:-13px;font-size:26px;will-change:transform}.coin-amount{display:inline-flex;align-items:center;gap:5px;flex:none;color:#ffe27a;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}.coin-amount.earned{color:#a4efae}.coin-amount.earned .coin{opacity:.7}.coin-amount.tiny{font-size:14px;gap:4px}.coin-tally{align-self:center;display:inline-flex;align-items:center;gap:8px;color:#ffe27a;font-size:19px;font-weight:600}.coin-tally[hidden]{display:none}.coin-tally .coin{font-size:24px}.coin-reasons{text-align:center}.coin-reasons:empty{display:none}.over-chip{position:absolute;top:calc(var(--sat) + 12px);left:0;right:0;max-width:620px;margin:0 auto;padding:0 66px 0 14px;display:flex;justify-content:flex-end;pointer-events:none}.over-chip .coin-chip{background:#1d2348}.hud-right{display:flex;align-items:center;gap:8px}.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:41}.topbar{display:flex;align-items:center;justify-content:space-between;min-height:44px}.topbar+.logo{margin-top:3vh}.topbar .back{align-self:center}.icon-btn{width:44px;height:44px;flex:none;display:grid;place-items:center;border:0;border-radius:12px;color:var(--ink-soft);background:#ffffff1a;cursor:pointer}.icon-btn:active{transform:scale(.92)}.icon,.icon svg{display:block}.btn.has-badge{position:relative}.count-badge{position:absolute;top:-7px;right:-5px;min-width:26px;height:26px;padding:0 7px;border-radius:999px;display:grid;place-items:center;background:var(--danger);box-shadow:0 2px #a52c1b,0 0 0 2px #3a4a9c;color:#fff;font-size:15px;font-weight:700}.count-badge[hidden]{display:none}.link{appearance:none;border:0;background:none;padding:0;min-height:44px;color:#ffe27a;font:inherit;font-size:15px;text-align:left;cursor:pointer}.link[hidden]{display:none}.bar{height:10px;flex:1;min-width:0;border-radius:999px;background:#0a0e2873;overflow:hidden}.bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#f5a524,#ffd84d);transition:width .7s cubic-bezier(.25,1,.4,1)}.streak{flex-direction:row;align-items:center;gap:14px;background:linear-gradient(120deg,#e8452f52,#f5a52433)}.flame{width:60px;flex:none;transform-origin:50% 90%;animation:flicker 1.5s ease-in-out infinite}.flame.out{filter:grayscale(1) brightness(.8);animation:none}@keyframes flicker{0%,to{transform:scale(1) rotate(-1deg)}35%{transform:scale(1.05,.97) rotate(1.5deg)}70%{transform:scale(.97,1.05) rotate(-2deg)}}.streak-body{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}.streak-number{font-size:19px;font-weight:600}.streak-number b{font-size:38px;line-height:1;font-weight:700;color:#ffe27a}.streak-week{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.streak-week i{height:8px;border-radius:999px;background:#0a0e2866}.streak-week i.lit{background:linear-gradient(90deg,#f07a22,#ffd84d)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-top:6px}.section-head h3{margin:0}.section-head small{color:var(--ink-soft);font-size:13px;font-weight:400}.quest{display:flex;align-items:center;gap:12px;min-height:72px;padding:12px 14px;border-radius:var(--radius);background:#ffffff14}.quest.close{box-shadow:inset 0 0 0 2px #ffd84d80}.quest.done{background:#3fbf4a33}.quest.just-done{animation:quest-pop .5s cubic-bezier(.3,1.6,.5,1)}@keyframes quest-pop{0%{transform:scale(.92)}50%{transform:scale(1.04)}}.quest-mark{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 0 3px #fff3}.quest.done .quest-mark{background:var(--go);box-shadow:0 2px 0 var(--go-deep);color:#fff}.quest-mark svg{width:20px;height:20px}.quest-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:7px}.quest-name{font-size:17px;line-height:1.2}.quest-progress{display:flex;align-items:center;gap:8px}.quest-progress span{flex:none;color:var(--ink-soft);font-size:13px;font-weight:400;font-variant-numeric:tabular-nums}.quest.done .bar i{background:linear-gradient(90deg,#3fbf4a,#7dffb3)}.all-done{text-align:center}.screen.shop{padding-top:0}.screen.shop>.column{padding-top:calc(var(--sat) + 22px)}.status-cover{position:fixed;top:0;left:0;right:0;height:var(--sat);background:#2b3a78;z-index:3}.look{display:flex;flex-direction:column;border-radius:var(--radius);background:#ffffff14;overflow:hidden}.look-stage{padding:14px;display:flex;justify-content:center}.look-board{padding:5px;border-radius:10px;display:flex;gap:2px}.look-board canvas{display:block;width:50px;height:50px}.look-text{padding:10px 14px 2px}.look-name{font-size:20px;font-weight:600;overflow-wrap:anywhere}.look-detail{color:var(--ink-soft);font-size:14px;font-weight:400}.collected{display:flex;align-items:center;gap:10px}.collected-text{flex:none;color:var(--ink-soft);font-size:14px;font-weight:400}.shop-bar{position:sticky;top:var(--sat);z-index:2;display:flex;flex-direction:column;gap:8px;margin:2px -18px 0;padding:8px 18px;background:#33408a;box-shadow:0 6px 10px -6px #0006}.filters{display:flex;gap:8px;margin:0 -18px;padding:0 18px 2px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}.filters::-webkit-scrollbar{display:none}.filter{flex:none;min-height:44px;padding:0 15px;border:0;border-radius:999px;background:#ffffff1a;color:var(--ink-soft);font:inherit;font-size:15px;cursor:pointer}.filter[aria-pressed=true]{background:#ffe27a;color:#33295c;font-weight:600}.tile-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.tile-grid>.note{grid-column:1 / -1}.tile{grid-column:span 2;position:relative;appearance:none;min-width:0;min-height:118px;padding:9px 6px 8px;border:3px solid transparent;border-radius:14px;background:#ffffff17;color:#fff;font:inherit;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer;animation:tile-in .22s ease-out backwards}.tile.wide{grid-column:span 3}.no-entry .tile{animation:none}.tile:nth-child(3n+2){animation-delay:30ms}.tile:nth-child(3n){animation-delay:60ms}@keyframes tile-in{0%{opacity:0;transform:translateY(8px) scale(.96)}}.tile:active{transform:scale(.95)}.tile[aria-pressed=true]{border-color:var(--primary);background:#f5a5242e}.tile-art{width:62px;height:62px;flex:none;display:grid;place-items:center}.tile-art canvas{display:block;width:62px;height:62px}.tile-art.theme{width:100%}.tile.locked .tile-art{opacity:.82}.tile.locked{background:#0a0e283d}.tile.affordable{box-shadow:inset 0 0 0 1.5px #ffd84d8c}.tile-name{font-size:14px;line-height:1.15;text-align:center;overflow-wrap:anywhere}.tile-foot{display:flex;flex-direction:column;align-items:center;gap:2px}.tile-foot:empty{display:none}.tile-foot small{color:var(--ink-soft);font-size:11px;font-weight:400;line-height:1.15;text-align:center}.tile:not(.affordable) .coin-amount.tiny{color:#d9c489}.tile-badge{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:4px;border-radius:50%;background:#0a0e28a6;color:#fff}.tile-badge.on{padding:3px;background:var(--primary);animation:quest-pop .3s cubic-bezier(.3,1.6,.5,1)}.tile-badge svg{width:100%;height:100%}.swatch{width:100%;height:100%;border-radius:10px;display:flex;align-items:center;justify-content:center}.swatch-board{width:42px;height:42px;border-radius:6px;outline:2px solid transparent;display:grid;grid-template-columns:1fr 1fr;padding:3px;gap:1px}.swatch-board canvas{display:block;width:100%;height:100%}.screen.sheet-open{overflow:hidden}.sheet-backdrop{position:fixed;inset:0;z-index:5;display:flex;align-items:flex-end;justify-content:center;background:#0a0c2499;animation:fade-in .16s ease-out}.sheet-backdrop.leaving{opacity:0;transition:opacity .16s}.sheet-backdrop.leaving .sheet{transform:translateY(40px);transition:transform .16s ease-in}@keyframes fade-in{0%{opacity:0}}.sheet{width:100%;max-width:460px;max-height:calc(100% - var(--sat) - 12px);overflow-y:auto;padding:12px 18px calc(var(--sab) + 18px);border-radius:22px 22px 0 0;background:linear-gradient(180deg,#3e4ca6,#2f3a86);box-shadow:0 -10px 40px #0006;display:flex;flex-direction:column;gap:10px;animation:sheet-up .3s cubic-bezier(.25,1.3,.5,1)}@keyframes sheet-up{0%{transform:translateY(100%)}}.sheet-top{display:flex;align-items:center;justify-content:space-between}.sheet-close{width:44px;height:44px;margin-left:-8px;border:0;background:none;color:var(--ink-soft);font:inherit;font-size:30px;line-height:1;cursor:pointer}.sheet-kicker{color:var(--ink-soft);font-size:14px;font-weight:400}.sheet h2{margin-top:-6px}.sheet-preview{border-radius:16px;background:#0a0e2859;overflow:hidden}.skin-preview{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 10px 14px}.mock-hero{width:112px;height:112px;animation:hero-in .42s cubic-bezier(.3,1.6,.5,1) backwards}@keyframes hero-in{0%{transform:scale(.5) rotate(-8deg)}}.mock-row{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;width:100%;max-width:340px}.mock-row canvas{display:block;width:100%;aspect-ratio:1;animation:tile-in .28s ease-out backwards}.mock-row canvas:nth-child(2){animation-delay:30ms}.mock-row canvas:nth-child(3){animation-delay:60ms}.mock-row canvas:nth-child(4){animation-delay:90ms}.mock-row canvas:nth-child(5){animation-delay:.12s}.mock-row canvas:nth-child(6){animation-delay:.15s}.mock-row canvas:nth-child(7){animation-delay:.18s}.theme-preview{position:relative;height:190px}.theme-preview .swatch{border-radius:0}.theme-preview .swatch-board{width:130px;height:130px;padding:8px;gap:3px;outline-width:3px;border-radius:10px}.theme-steps{position:absolute;right:10px;bottom:10px;display:flex;gap:5px}.theme-steps i{width:20px;height:20px;border-radius:50%;box-shadow:0 0 0 2px #ffffffa6}.effect-stage{display:block;width:100%;height:160px}.sheet-actions{display:flex;flex-direction:column;gap:10px}.btn.buy{display:flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap}.btn.buy .coin{font-size:24px}.btn.buy:disabled{opacity:1;background:#0a0e2866;box-shadow:none;color:#ffe27a}.sheet-earn{display:flex;flex-direction:column;gap:6px}.sheet-earn:empty{display:none}.sheet-earn h3{margin:6px 0 0;font-size:15px}.earn-line{display:flex;justify-content:space-between;gap:10px;font-size:16px}.earn-line small{flex:none;color:var(--ink-soft);font-size:14px;font-weight:400;font-variant-numeric:tabular-nums}.sheet-earn .bar{flex:none}.calm .flame,.calm .tile,.calm .tile-badge.on,.calm .quest.just-done,.calm .mock-hero,.calm .mock-row canvas{animation:none}.calm .sheet{animation-duration:.12s;animation-timing-function:ease-out}
