:root{--bg: #fff4e6;--card: #ffffff;--ink: #2b2118;--muted: #8a7a6b;--line: #f1e3cf;--accent: #ff8f5e;--accent-ink: #ffffff;--coin: #ffc53d;--good: #3fae7a;--warn: #e6a23c;--bad: #e35d5d;--radius: 20px;--shadow: 0 6px 18px rgba(90, 60, 20, .1);--font: ui-rounded, "SF Pro Rounded", "Nunito", "Segoe UI Variable", system-ui, -apple-system, sans-serif;--nav-h: 68px}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.4;overscroll-behavior:none;-webkit-user-select:none;user-select:none;touch-action:manipulation}button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}button:disabled{opacity:.45;cursor:default}#app{max-width:480px;margin:0 auto;min-height:100%;position:relative}.screen{padding:calc(16px + env(safe-area-inset-top)) 16px calc(var(--nav-h) + 24px + env(safe-area-inset-bottom))}h1{font-size:26px;font-weight:800;letter-spacing:-.01em}h2{font-size:18px;font-weight:800;margin:22px 0 10px}h3{font-size:16px;font-weight:800}p.muted,.muted{color:var(--muted)}.small{font-size:13px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.coins{display:inline-flex;align-items:center;gap:6px;background:var(--card);border-radius:999px;padding:6px 12px 6px 8px;font-weight:800;box-shadow:var(--shadow)}.coins .dot{width:20px;height:20px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#ffe08a,var(--coin) 60%,#d99a00);display:inline-block}.coins.bump{animation:bump .4s ease}@keyframes bump{30%{transform:scale(1.18)}}.card{background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:16px;font-weight:800;font-size:16px;background:var(--accent);color:var(--accent-ink);box-shadow:0 4px #0000001f;transition:transform .08s ease}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 2px #0000001f}.btn.secondary{background:#f7ece0;color:var(--ink)}.btn.ghost{background:transparent;box-shadow:none;color:var(--muted)}.btn.block{width:100%}.btn.sm{min-height:38px;padding:0 14px;font-size:14px;border-radius:12px}.btn.good{background:var(--good)}.btn.bad{background:var(--bad)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800;color:#fff;letter-spacing:.02em}.pill{display:inline-block;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:700;background:#f7ece0}.box-card .emoji{font-size:44px;line-height:1;width:64px;text-align:center}.odds{display:grid;grid-template-columns:auto 1fr auto auto;gap:4px 10px;margin-top:12px;font-size:13px;align-items:center}.odds .swatch{width:10px;height:10px;border-radius:50%}.odds .bar{height:6px;background:#f3ebe0;border-radius:3px;overflow:hidden}.odds .bar>i{display:block;height:100%;border-radius:3px}.odds .pct{font-weight:800;text-align:right}.odds .onein{color:var(--muted);text-align:right;min-width:56px}.dumpling{display:inline-block;cursor:pointer}.dumpling-inner{width:100%;height:100%;transform-origin:50% 92%}.dumpling-inner.idle{animation:idle 3.2s ease-in-out infinite}@keyframes idle{50%{transform:scale(1.03,.97) translateY(1px)}}.dumpling svg{display:block;width:100%;height:100%;pointer-events:none}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tile{background:var(--card);border-radius:18px;padding:10px 8px 8px;text-align:center;box-shadow:var(--shadow);position:relative;border:2px solid transparent}.tile .name{font-weight:800;font-size:13px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .count{position:absolute;top:6px;right:6px;background:var(--ink);color:#fff;font-size:11px;font-weight:800;border-radius:999px;padding:2px 7px}.tile.locked{opacity:.55}.tile.locked .dumpling{filter:grayscale(1) contrast(.6) brightness(1.15)}.tile.selected{border-color:var(--accent)}.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;padding:7px 14px;border-radius:999px;background:var(--card);font-weight:800;font-size:13px;box-shadow:var(--shadow)}.chip.on{background:var(--ink);color:#fff}.nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:#ffffffeb;backdrop-filter:blur(10px);border-top:1px solid var(--line);display:flex;justify-content:center;z-index:10}.nav-inner{display:flex;width:100%;max-width:480px}.nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;font-weight:800;color:var(--muted)}.nav button .ico{font-size:22px;line-height:1}.nav button.on{color:var(--accent)}.overlay{position:fixed;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px;background:#2b21188c;backdrop-filter:blur(4px);animation:fade .2s ease}@keyframes fade{0%{opacity:0}}.sheet{width:100%;max-width:440px;max-height:92vh;overflow:auto;background:var(--card);border-radius:28px;padding:22px 20px;text-align:center;box-shadow:0 20px 60px #0000004d;animation:pop .35s cubic-bezier(.34,1.56,.64,1)}@keyframes pop{0%{transform:scale(.8);opacity:0}}.reveal-stage{position:relative;height:240px;display:flex;align-items:center;justify-content:center;touch-action:manipulation}.tappable{cursor:pointer;touch-action:manipulation}.tappable:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:14px}.reveal-stage .glow{position:absolute;inset:0;border-radius:50%;filter:blur(30px);opacity:0;transition:opacity .5s}.reveal-stage .glow.on{opacity:.9}.mystery{font-size:120px;line-height:1;cursor:pointer;animation:wobble 1.6s ease-in-out infinite;transform-origin:50% 90%;touch-action:manipulation;-webkit-touch-callout:none}@keyframes wobble{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.mystery.hit{animation:hit .3s ease}@keyframes hit{40%{transform:scale(1.25,.8)}}.reveal-in{animation:reveal .7s cubic-bezier(.34,1.56,.64,1)}@keyframes reveal{0%{transform:scale(0) rotate(-20deg);opacity:0}to{transform:none;opacity:1}}.taps{display:flex;gap:8px;justify-content:center;margin-top:8px}.taps i{width:12px;height:12px;border-radius:50%;background:#eadfce}.taps i.on{background:var(--accent)}.newtag{display:inline-block;background:var(--good);color:#fff;font-weight:900;padding:4px 10px;border-radius:999px;font-size:12px;margin-left:6px;animation:pop .4s cubic-bezier(.34,1.56,.64,1)}.confetti{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}.confetti i{position:absolute;top:-12px;width:10px;height:14px;border-radius:3px;animation:fall linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(720deg);opacity:.6}}.trade-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}.trade-col{background:#fbf6ee;border-radius:16px;padding:10px;min-height:120px}.trade-col h3{font-size:13px;color:var(--muted);margin-bottom:8px}.trade-items{display:flex;flex-wrap:wrap;gap:6px}.trade-item{width:56px;text-align:center;position:relative}.trade-item .rm{position:absolute;top:-4px;right:-2px;width:20px;height:20px;border-radius:50%;background:var(--bad);color:#fff;font-size:12px;font-weight:900;line-height:20px}.fair{border-radius:14px;padding:10px 12px;font-weight:800;font-size:14px;margin-top:12px}.fair.great{background:#e2f6ec;color:#1f7a50}.fair.fair{background:#eef3ff;color:#2b5cb8}.fair.poor{background:#fff3e0;color:#a3600a}.fair.bad{background:#ffe5e5;color:#b02a2a}.picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;max-height:40vh;overflow:auto}.neighbor{display:flex;align-items:center;gap:12px}.neighbor .face{font-size:34px;width:52px;height:52px;border-radius:50%;background:#fbf6ee;display:grid;place-items:center}.log{list-style:none;font-size:13px}.log li{padding:8px 0;border-bottom:1px solid var(--line);display:flex;gap:10px}.log li time{color:var(--muted);flex:0 0 auto}input[type=password],input[type=text],select{font:inherit;padding:12px 14px;border-radius:14px;border:2px solid var(--line);background:#fff;width:100%;font-weight:700}input:focus,select:focus{outline:none;border-color:var(--accent)}.toggle{width:52px;height:30px;border-radius:999px;background:#e8dccb;position:relative;transition:background .2s;flex:0 0 auto}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px #0003}.toggle.on{background:var(--good)}.toggle.on:after{transform:translate(22px)}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stat{background:#fbf6ee;border-radius:14px;padding:12px}.stat b{display:block;font-size:22px}.stat span{font-size:12px;color:var(--muted)}.toast{position:fixed;left:50%;bottom:calc(var(--nav-h) + 16px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;font-weight:800;font-size:14px;z-index:40;animation:fade .2s ease;white-space:nowrap}.shop-grid{display:grid;grid-template-columns:1fr;gap:12px}.shop-grid .card+.card{margin-top:0}.neighbors{display:grid;grid-template-columns:1fr;gap:12px}.neighbors .card+.card{margin-top:0}@media(min-width:700px){body{font-size:17px}#app,.nav-inner{max-width:960px}.screen{padding-left:28px;padding-right:28px;padding-top:calc(24px + env(safe-area-inset-top))}h1{font-size:32px}h2{font-size:21px}.shop-grid{grid-template-columns:repeat(3,1fr);gap:16px;align-items:stretch}.box-card{display:flex;flex-direction:column}.box-card .odds{flex:1;align-content:start}.box-card .emoji{font-size:52px}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}.tile>.dumpling{width:116px!important;height:116px!important}.tile .name{font-size:15px}.neighbors{grid-template-columns:repeat(2,1fr);gap:14px}.picker{grid-template-columns:repeat(6,1fr)}.sheet{max-width:520px}.reveal-stage{height:300px}.trade-item{width:72px}.nav button{font-size:13px}.nav button .ico{font-size:26px}.stats{grid-template-columns:repeat(4,1fr)}}@media(min-width:700px)and (max-width:899px){.shop-grid{grid-template-columns:repeat(2,1fr)}}.iconbtn{width:40px;height:40px;border-radius:50%;background:var(--card);box-shadow:var(--shadow);font-size:18px;display:grid;place-items:center}.btn.lucky{background:linear-gradient(90deg,#f2a900,#ff8f5e);animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{50%{filter:brightness(1.15)}}.meter{display:flex;gap:4px;margin-top:10px}.meter i{flex:1;height:10px;border-radius:5px;background:#f3ebe0}.meter i.on{background:linear-gradient(90deg,#ffc53d,#ff8f5e)}.meter.full i.on{animation:shimmer 1s ease-in-out infinite}.progress-grid{display:grid;grid-template-columns:1fr;gap:12px}.progress-grid .card+.card{margin-top:0}.reward{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line)}.reward .bar{height:6px;background:#f3ebe0;border-radius:3px;overflow:hidden;margin-top:4px}.reward .bar>i{display:block;height:100%;background:var(--good);border-radius:3px;transition:width .4s}.reward.claimed{opacity:.55}.reward.claimed .bar>i{background:#b9c6bf}.steam{position:absolute;inset:0;pointer-events:none;overflow:hidden}.steam i{position:absolute;bottom:40%;width:18px;height:18px;border-radius:50%;background:#ffffffd9;filter:blur(2px);animation:rise 1.3s ease-out forwards}@keyframes rise{to{transform:translate(var(--dx, 0),-120px) scale(2.2);opacity:0}}.mystery.hit1{animation:hit .3s ease}.mystery.hit2{animation:hit2 .35s ease}.mystery.hit3{animation:hit3 .3s ease}@keyframes hit2{30%{transform:scale(1.32,.72) rotate(-6deg)}70%{transform:scale(.94,1.1) rotate(4deg)}}@keyframes hit3{20%{transform:scale(1.45,.62)}60%{transform:scale(.8,1.25)}to{transform:scale(1.1,.95)}}.reveal-stage .glow.tease{opacity:.45;animation:pulse .8s ease-in-out infinite}@keyframes pulse{50%{opacity:.75;transform:scale(1.06)}}.overlay.flash{animation:flash .9s ease-out}@keyframes flash{0%{background:#ffe08af2}to{background:#2b21188c}}.sheet.legendary{box-shadow:0 0 0 4px #ffd23f,0 20px 60px #f2a90073}@media(min-width:700px){.progress-grid{grid-template-columns:1fr 1fr;gap:16px;align-items:start}}.teaser .silhouette .dumpling{filter:grayscale(1) contrast(.5) brightness(1.2);opacity:.7}.shelf{position:relative;padding:8px 8px 0}.shelf.empty{background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.shelf-row{display:flex;justify-content:space-around;align-items:flex-end;gap:4px;padding:0 6px;position:relative;z-index:1}.shelf-item{text-align:center;flex:1;min-width:0}.shelf-item .small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plank{height:14px;margin-top:-6px;border-radius:4px;background:linear-gradient(180deg,#d9a26b,#b9814d);box-shadow:0 6px 10px #5a3c142e}.plank:after{content:"";display:block;height:6px;margin:14px 10px 0;border-radius:3px;background:#5a3c1414}.tile .star{position:absolute;top:6px;left:6px;font-size:14px}.grid.locked-series .tile{opacity:.55}.grid.locked-series .tile .dumpling{filter:grayscale(1) contrast(.6) brightness(1.15)}.milestones{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.milestones li{display:flex;gap:8px;align-items:baseline;font-size:15px}.milestones li span:first-child{color:var(--good);font-weight:800}.room{position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.room-wall{position:relative;height:168px;background:linear-gradient(180deg,#f9ecd9,#f0dabc)}.window{position:absolute;left:26px;top:26px;width:112px;height:88px;border-radius:12px;overflow:hidden;background:linear-gradient(180deg,#bfe4f5,#e3f2fb);border:5px solid #e6d0ae}.window .sun{position:absolute;right:12px;top:10px;width:24px;height:24px;border-radius:50%;background:#ffd23f;box-shadow:0 0 16px #ffd23fd9}.window .cloud{position:absolute;left:10px;top:40px;width:46px;height:13px;border-radius:999px;background:#ffffffeb}.window:after{content:"";position:absolute;inset:0;border-radius:4px;background:linear-gradient(120deg,rgba(255,255,255,.5) 0 12%,transparent 12% 22%,rgba(255,255,255,.35) 22% 30%,transparent 30%)}.room-shelf{position:absolute;right:16px;top:40px;display:flex;gap:10px;padding:6px 10px 9px;background:linear-gradient(180deg,#d9a26b,#b9814d);border-radius:4px;box-shadow:0 5px 9px #5a3c1433}.decor{font-size:22px;line-height:1}.room-floor{position:relative;height:148px;background:linear-gradient(180deg,#d9a26b,#c3894f)}.cushion{position:absolute;left:50%;bottom:16px;transform:translate(-50%);width:190px;height:46px;border-radius:50%;background:radial-gradient(ellipse at 50% 50%,#f3b6cd 0 40%,#e58cae 40% 70%,#d97ba1 70%);opacity:.9;box-shadow:0 3px 8px #5a3c1426}.buddy-stage{position:absolute;left:50%;bottom:28px;width:150px;height:150px;margin-left:-75px;cursor:pointer;touch-action:manipulation}.buddy-actor{width:100%;height:100%;transform-origin:50% 92%}.bowl{position:absolute;left:46px;bottom:26px;font-size:30px}.cup{position:absolute;right:46px;bottom:26px;font-size:28px}.treat{position:absolute;bottom:34px;font-size:30px;pointer-events:none;opacity:0}.treat.from-left{left:-46px;animation:treat-l 1.1s ease-in-out forwards}.treat.from-right{right:-46px;animation:treat-r 1.1s ease-in-out forwards}@keyframes treat-l{0%{opacity:0;transform:translate(0) scale(.6)}20%{opacity:1}60%{transform:translate(74px,-34px) scale(1)}to{opacity:0;transform:translate(80px,-6px) scale(.4)}}@keyframes treat-r{0%{opacity:0;transform:translate(0) scale(.6)}20%{opacity:1}60%{transform:translate(-74px,-34px) scale(1)}to{opacity:0;transform:translate(-80px,-6px) scale(.4)}}.act-wiggle,.act-settle{animation:b-wiggle .65s ease-in-out}@keyframes b-wiggle{0%,to{transform:rotate(0) scale(1)}25%{transform:rotate(-7deg) scale(1.05,.95)}75%{transform:rotate(7deg) scale(.97,1.03)}}.act-eat{animation:b-eat 1.1s ease-in-out}@keyframes b-eat{0%,45%,to{transform:scale(1)}58%{transform:scale(1.12,.88)}70%{transform:scale(.94,1.08)}84%{transform:scale(1.05,.96)}}.act-drink{animation:b-drink 1.1s ease-in-out}@keyframes b-drink{0%,40%,to{transform:rotate(0)}60%{transform:rotate(-11deg)}80%{transform:rotate(5deg)}}.act-bounce{animation:b-bounce .7s ease-in-out}@keyframes b-bounce{0%,to{transform:translateY(0) scale(1)}20%{transform:translateY(0) scale(1.16,.84)}50%{transform:translateY(-46px) scale(.92,1.1)}80%{transform:translateY(0) scale(1.12,.88)}}.act-somersault{animation:b-somersault .9s ease-in-out}@keyframes b-somersault{0%{transform:translateY(0) rotate(0)}25%{transform:translateY(-42px) rotate(120deg)}60%{transform:translateY(-54px) rotate(280deg)}to{transform:translateY(0) rotate(360deg)}}.act-wobble{animation:b-wobble 1.2s ease-in-out}@keyframes b-wobble{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(34px,-10px) rotate(13deg)}50%{transform:translateY(-16px) rotate(0)}75%{transform:translate(-34px,-10px) rotate(-13deg)}}.act-backflip{animation:b-backflip 1s ease-in-out}@keyframes b-backflip{0%{transform:translateY(0) rotate(0) scale(1)}15%{transform:translateY(0) rotate(0) scale(1.2,.8)}45%{transform:translateY(-72px) rotate(-200deg) scale(1)}75%{transform:translateY(-30px) rotate(-330deg) scale(1)}to{transform:translateY(0) rotate(-360deg) scale(1)}}.trick-row{display:flex;flex-wrap:wrap;gap:8px}.chip.trick{background:var(--card);box-shadow:var(--shadow);font-weight:800}.hearts{position:fixed;inset:0;pointer-events:none;z-index:30;overflow:hidden}.hearts i{position:absolute;font-style:normal;opacity:0;animation:heart-up 1.4s ease-out forwards}@keyframes heart-up{0%{opacity:0;transform:translate(-50%,-50%) scale(.5)}18%{opacity:1;transform:translate(-50%,-62%) scale(1)}to{opacity:0;transform:translate(calc(-50% + var(--dx, 0px)),-240px) scale(.85) rotate(var(--r, 0deg))}}@media(max-height:560px){.sheet{padding:14px 16px}.reveal-stage{height:150px}.reveal-stage .dumpling{width:128px!important;height:128px!important}.mystery{font-size:76px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.dumpling-inner.idle,.mystery{animation:none!important}.btn:active:not(:disabled){transform:none}}.screen{padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}.nav{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.trade-item .rm:after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;transform:translate(-50%,-50%)}.btn.sm{min-height:44px}.chip{padding:11px 14px}.iconbtn{min-width:44px;min-height:44px}.toast{white-space:normal;max-width:min(90vw,420px);width:max-content;text-align:center;line-height:1.35}.overlay,.sheet{overscroll-behavior:contain}.buddy-card{border:2px solid var(--accent)}.buddy-card h3{font-size:18px}.sparkles path{animation:twinkle 2.4s ease-in-out infinite;transform-origin:center}@keyframes twinkle{0%,to{opacity:.15}50%{opacity:.95}}.finish-gold .dumpling-inner{filter:drop-shadow(0 0 6px rgba(255,210,63,.55))}.finish-rainbow .dumpling-inner{filter:drop-shadow(0 0 6px rgba(255,154,220,.5))}.finish-glitter .dumpling-inner{filter:drop-shadow(0 0 5px rgba(231,217,255,.6))}.finish-tag{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.02em}.finish-tag.gold{background:linear-gradient(135deg,#fff3c4,#f5c542);color:#6b4a00}.finish-tag.rainbow{background:linear-gradient(135deg,#ff9aa2,#ffd66b,#a8e6a1,#8fd3ff,#d3a4ff);color:#4a2a52}.finish-tag.glitter{background:linear-gradient(135deg,#f4ecff,#e7d9ff);color:#4b3a6b}.mystery.opening{animation:lid-off .6s cubic-bezier(.34,1.2,.64,1) forwards}@keyframes lid-off{0%{transform:translateY(0) rotate(0);opacity:1}35%{transform:translateY(-14px) rotate(-8deg) scale(1.05);opacity:1}to{transform:translateY(-46px) rotate(-18deg) scale(.82);opacity:0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.sheet h1:focus,.sheet h2:focus{outline:none}
