.fanfare-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:16px;background:var(--scrim);cursor:pointer;animation:fanfare-fade .25s ease-out both}.fanfare{position:relative;display:grid;justify-items:center;gap:6px;min-width:220px;max-width:min(88vw,360px);padding:18px 22px 12px;border:2px solid var(--ink);border-radius:18px;background:var(--paper);color:var(--ink);box-shadow:0 8px 28px var(--shadow);font-family:system-ui,sans-serif;text-align:center;animation:fanfare-in .45s cubic-bezier(.2,1.4,.4,1) both}.fanfare-title{margin:0;font-size:1.3rem;font-weight:800}.fanfare-gains{margin:0;font-size:1.15rem;font-weight:800;color:var(--reward);font-variant-numeric:tabular-nums;animation:fanfare-pop .4s ease-out .75s both}.fanfare-find,.fanfare-box{display:grid;justify-items:center;gap:4px}.fanfare-find p,.fanfare-box p{margin:0}.fanfare-tap{margin:4px 0 0;font-size:.8rem;opacity:.6}.fanfare-lead{margin:0;font-size:1rem;font-weight:700}.fanfare-detail{margin:0;font-size:.95rem;opacity:.8}.fanfare.big .fanfare-title{font-size:2.2rem;line-height:1.1}.sealed-box.opening{animation:fanfare-shake .5s ease-in-out both}.sealed-box.opening .sealed-lid{animation:fanfare-lid .45s ease-in .55s both;transform-box:fill-box;transform-origin:50% 100%}@keyframes fanfare-shake{0%,to{rotate:0deg}20%{rotate:-9deg}40%{rotate:9deg}60%{rotate:-6deg}80%{rotate:6deg}}@keyframes fanfare-lid{to{transform:translate(18px,-60px) rotate(30deg);opacity:0}}.sealed-box{animation:fanfare-wiggle 1.6s ease-in-out .5s infinite;transform-origin:50% 90%}.fanfare.big{animation:fanfare-in .45s cubic-bezier(.2,1.4,.4,1) both,fanfare-pulse 1.4s ease-in-out .5s infinite}.fanfare-sparks{position:absolute;left:50%;top:50%;pointer-events:none}.fanfare-sparks i{position:absolute;width:8px;height:8px;margin:-4px;border-radius:2px;background:var(--gold);transform:rotate(var(--a)) translateY(0) scale(0);animation:fanfare-spark .9s ease-out var(--d) both}.fanfare-sparks i:nth-child(3n){background:var(--roof-1)}.fanfare-sparks i:nth-child(3n+1){background:var(--roof-2)}.fanfare.big .fanfare-sparks i{width:11px;height:11px;animation-duration:1.3s}@keyframes fanfare-fade{0%{opacity:0}to{opacity:1}}@keyframes fanfare-in{0%{opacity:0;transform:translateY(-24px) scale(.85)}to{opacity:1;transform:none}}@keyframes fanfare-pop{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes fanfare-pulse{0%,to{scale:1}50%{scale:1.03}}@keyframes fanfare-wiggle{0%,60%,to{rotate:0deg}70%{rotate:-6deg}80%{rotate:6deg}90%{rotate:-3deg}}@keyframes fanfare-spark{0%{transform:rotate(var(--a)) translateY(0) scale(0);opacity:1}70%{opacity:1}to{transform:rotate(var(--a)) translateY(-150px) scale(1);opacity:0}}@media(prefers-reduced-motion:reduce){.fanfare,.fanfare.big,.fanfare-gains,.sealed-box,.fanfare-layer{animation:none}.fanfare-sparks{display:none}}.toast-layer{position:fixed;left:0;right:0;bottom:calc(40px + env(safe-area-inset-bottom));z-index:900;display:grid;justify-items:center;gap:6px;pointer-events:none}.toast-item{max-width:min(88vw,360px);padding:8px 16px;border:2px solid var(--ink);border-radius:999px;background:var(--paper);color:var(--ink);box-shadow:0 4px 14px var(--shadow);font-family:system-ui,sans-serif;font-weight:700;animation:toast-life 3.5s ease-in-out both}@keyframes toast-life{0%{opacity:0;transform:translateY(12px)}10%,85%{opacity:1;transform:none}to{opacity:0}}@media(prefers-reduced-motion:reduce){.toast-item{animation:none}}:root,.fanfare-layer,.toast-layer,.frame-back{--reward: #3f6b3a;--shadow: rgba(42, 36, 31, .25);--scrim: rgba(42, 36, 31, .35);--paper: #f5f0e6;--ink: #2a241f;--ink-quiet: #6b6258;--gap: 16px;--grass: #86c95a;--grass-tuft: #79bc4f;--path: #e3c48a;--path-edge: #cfae72;--plaza: #eadcbb;--plaza-inner: #f2e8cf;--sun-shadow: rgba(42, 60, 30, .18);--lamp: #ffe08a;--sky-night: #1d2a5a;--sky-dusk: #f08a3c;--sky-rain: #5c7287;--sky-storm: #3a4656;--sky-snow: #ffffff;--rain-drop: rgba(225, 238, 250, .75);--fog: rgba(245, 245, 240, .55);--smoke: rgba(245, 242, 235, .85);--cloud-shadow: rgba(30, 50, 40, .09);--rain-tile: url("data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="120" height="160"%3E%3Cg stroke="%23e1eefa" stroke-opacity=".75" stroke-width="2" stroke-linecap="round"%3E%3Cpath d="M10 5v16M46 40v16M82 12v16M110 70v16M28 96v16M64 120v16M96 140v16M18 150v8"/%3E%3C/g%3E%3C/svg%3E");--snow-tile: url("data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="200" height="200"%3E%3Cg fill="%23fff" fill-opacity=".9"%3E%3Ccircle cx="20" cy="30" r="3"/%3E%3Ccircle cx="90" cy="10" r="2.5"/%3E%3Ccircle cx="160" cy="50" r="3.2"/%3E%3Ccircle cx="60" cy="90" r="2.4"/%3E%3Ccircle cx="130" cy="120" r="3"/%3E%3Ccircle cx="30" cy="160" r="2.6"/%3E%3Ccircle cx="180" cy="180" r="2.2"/%3E%3Ccircle cx="100" cy="190" r="3"/%3E%3C/g%3E%3C/svg%3E");--lot: #d8c79c;--river: #6fb7e8;--river-glint: #9ad2f3;--river-bank: #4f9fd4;--grass-light: #9bd46d;--lot-grass: #a3d97c;--mow: #6aa847;--plaza-edge: #d2bf94;--leaf-edge: #2e7a3c;--water-shadow: rgba(30, 70, 110, .22);--flower-1: #f07a95;--flower-2: #fff4d6;--flower-3: #f2b34c;--leaf: #4aa35a;--leaf-dark: #3d8b4c;--trunk: #7a5230;--wood: #b77b4f;--wood-light: #d39a6a;--box-green: #5e9b4a;--pot: #c9774a;--stake: #7a5230;--wall: #fff2cc;--wall-stone: #f2ece0;--column: #fbf8f1;--door: #6b4428;--window: #bfe3f5;--roof-1: #d96a5c;--roof-2: #6f98c9;--roof-3: #7fae6a;--roof-4: #d9b25a;--roof-5: #9b84c4;--roof-slate: #7a8aa8;--awning-a: #d96a5c;--awning-b: #fbf8f1;--card-face: #fffdf7;--card-red: #d0453b;--metal: #c9ccd3;--metal-dark: #8d939e;--concrete: #cfc8b8;--water: #6fb7e8;--wall-1: #fff2cc;--wall-2: #f6dcc8;--wall-3: #dfeccb;--wall-4: #dbe6f2;--door-1: #6b4428;--door-2: #8f3b33;--door-3: #2f5d7c;--door-4: #3f6b3a;--rock: #8a7a66;--rock-dark: #6e604f;--moon: #c3c4cc;--moon-dark: #9d9ea8;--mars: #c7633f;--mars-dark: #9c4a2c;--tektite: #3e6b4f;--glass: #d8eef7;--dust: #b9a6e0;--solar: #2f4f8a;--solar-line: #6f8fc9;--paper-old: #efe1bf;--ice: #cfeefe;--ice-dark: #9fd4ee;--crystal: #b26fe0;--crystal-light: #d9b4f5;--gold: #d9b25a;--gold-dark: #b08a32;--brass: #c9a24a;--tin: #b8bcc4;--stone-green: #7d9a8a;--cream: #fff4d6;--pink: #f2a6b8;--chocolate: #7a4a2a;--silver: #d5d8de;--jade: #4fae8f;--ruby: #c8324a;--sapphire: #3a6fd6;--alien: #8bd16a;--silhouette: #d6d0c4;--frame-common: #d9cfbd;--frame-uncommon: #8fb6d9;--frame-rare: #c3a0e0;--glint: #fffbe8;--person-1: #e8473c;--person-2: #2f7fe0;--person-3: #f2a52b;--person-4: #7a3fd1;--person-5: #1fa36a;--person-6: #e0459c;--person-7: #12a3b8;--person-8: #ff7a1a;--made: var(--person-2);--made-soft: #8fb8ee;--skin: #f3c9a0;--skin-1: #f6d4b4;--skin-2: #e8b58c;--skin-3: #c98d5f;--skin-4: #9b6440;--skin-5: #6b4227;--hair-1: #2b2420;--hair-2: #6b4428;--hair-3: #b0532c;--hair-4: #e2b54f;--hair-5: #a9a39b}.pen-p,.pen-b,.pen-s{stroke:var(--ink);stroke-linejoin:round;vector-effect:non-scaling-stroke}.pen-p{stroke-width:var(--pen-p)}.pen-b{stroke-width:var(--pen-b)}.pen-s{stroke-width:var(--pen-s)}.edge-s{stroke-width:var(--pen-e);vector-effect:non-scaling-stroke;stroke-linejoin:round}.inked-s .edge-s{stroke:var(--ink)}.edge-g{stroke-width:1.5px;vector-effect:non-scaling-stroke}.kcell{position:relative;margin:0;padding:4px;box-sizing:border-box;background:var(--card-face);border:2px solid var(--frame-common);border-radius:12px;text-align:center}.kcell svg{display:block;margin:0 auto}.kcell figcaption{font-size:.75rem;line-height:1.2}.kcell.tier-uncommon,.kcell.tier-rare{border-color:var(--frame-uncommon)}.kcell.tier-rare{border-color:var(--frame-rare);box-shadow:inset 0 0 0 3px var(--card-face),inset 0 0 0 4px var(--frame-rare)}.kcell.tier-uncommon:before,.kcell.tier-rare:before{content:"";position:absolute;top:-2px;left:50%;width:14px;height:5px;margin-left:-7px;border-radius:0 0 4px 4px;background:var(--frame-uncommon)}.kcell.tier-rare:before{background:var(--frame-rare)}.glints{animation:glint-shimmer 2.6s ease-in-out infinite}.glints path{transform-box:fill-box;transform-origin:center;animation:glint-twinkle 1.8s ease-in-out infinite}.glints path:nth-child(2){animation-delay:.6s}.glints path:nth-child(3){animation-delay:1.2s}@keyframes glint-twinkle{0%,to{transform:scale(.6) rotate(0);opacity:.5}50%{transform:scale(1.15) rotate(20deg);opacity:1}}@keyframes glint-shimmer{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){.glints,.glints path{animation:none}}.d2{opacity:0}.d2.on{opacity:1}.town .d2{transition:opacity .35s ease-out}.town .pen-s,.town .pen-b,.town .pen-p{transition:stroke-width .25s ease-out}.town.entering{animation:town-enter .34s ease-in both}@keyframes town-enter{to{opacity:0}}@media(prefers-reduced-motion:reduce){.town .d2{transition:none}.town.entering{animation:none}.town .pen-s,.town .pen-b,.town .pen-p{transition:none}}.zoom-buttons{position:absolute;right:12px;bottom:120px;display:grid;gap:8px}.zoom-buttons button{width:48px;height:48px;padding:0;font-size:1.6rem;line-height:1;box-shadow:0 2px 8px var(--shadow)}.sky{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.sky-tint,.sky-fog,.sky-flash{position:absolute;top:0;right:0;bottom:0;left:0}.sky-fog{background:linear-gradient(180deg,var(--fog),transparent 70%,var(--fog));animation:fog-drift 18s ease-in-out infinite alternate}.sky-flash{background:var(--sky-snow);opacity:0;animation:storm-flash 11s linear infinite}.sky .fall{position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;transform:rotate(12deg)}.sky .fall-snow{transform:none}.sky .fall-layer{position:absolute;left:0;right:0;top:-200px;bottom:0;background-repeat:repeat;will-change:transform}.sky .fall-rain .fall-layer{background-image:var(--rain-tile);animation:rain-fall .45s linear infinite}.sky .fall-rain .fall-layer.far{background-size:80px 107px;opacity:.6;animation-duration:.7s}.sky .fall-snow .fall-layer{background-image:var(--snow-tile);animation:snow-fall 9s linear infinite}.sky .fall-snow .fall-layer.far{background-size:130px 130px;opacity:.7;animation-duration:14s}.sky .drift{position:absolute;top:-20px;animation:leaf-fall 14s linear infinite}.sky .leaves{width:12px;height:8px;border-radius:8px 0}.sky .leaves.tone-0{background:var(--flower-3)}.sky .leaves.tone-1{background:var(--roof-1)}.sky .leaves.tone-2{background:var(--wood)}.sky .petals{width:8px;height:6px;border-radius:6px 1px;background:var(--pink);opacity:.85}.sky .motes{width:4px;height:4px;border-radius:50%;background:var(--sky-snow);opacity:.6;animation-name:mote-drift}.sky .butterflies{width:10px;height:8px;background:radial-gradient(circle at 25% 50%,var(--flower-3) 45%,transparent 47%),radial-gradient(circle at 75% 50%,var(--flower-3) 45%,transparent 47%);animation-name:butterfly}.sky .butterflies.tone-1{background:radial-gradient(circle at 25% 50%,var(--card-face) 45%,transparent 47%),radial-gradient(circle at 75% 50%,var(--card-face) 45%,transparent 47%)}.sky .fireflies{width:5px;height:5px;border-radius:50%;background:var(--lamp);box-shadow:0 0 6px 2px var(--lamp);animation-name:firefly}@keyframes mote-drift{0%{transform:translate(0);opacity:0}20%{opacity:.6}to{transform:translate(-40px,110vh);opacity:0}}@keyframes butterfly{0%{transform:translate(0) scaleX(1)}25%{transform:translate(30px,-20px) scaleX(.3)}50%{transform:translate(60px,5px) scaleX(1)}75%{transform:translate(30px,25px) scaleX(.3)}to{transform:translate(0) scaleX(1)}}@keyframes firefly{0%,to{transform:translate(0);opacity:0}30%{opacity:1}50%{transform:translate(14px,-10px);opacity:.2}70%{opacity:.9}}@keyframes rain-fall{0%{transform:translateY(0)}to{transform:translateY(160px)}}@keyframes snow-fall{0%{transform:translate(0)}to{transform:translate(20px,200px)}}@keyframes leaf-fall{0%{transform:translate(0) rotate(0)}25%{transform:translate(40px,27vh) rotate(120deg)}50%{transform:translate(-20px,55vh) rotate(220deg)}75%{transform:translate(30px,82vh) rotate(320deg)}to{transform:translate(-10px,110vh) rotate(420deg)}}@keyframes fog-drift{to{transform:translate(4%)}}@keyframes storm-flash{0%,91%,94%,to{opacity:0}92%{opacity:.35}93%{opacity:.1}}@media(prefers-reduced-motion:reduce){.sky .fall-layer,.sky .drift,.sky-flash,.sky-fog{animation:none}.sky .fall,.sky .drift,.sky-flash{display:none}}.anim .sway{transform-box:fill-box;transform-origin:50% 100%;animation:sway 5s ease-in-out infinite alternate}@keyframes sway{0%{transform:rotate(-2.5deg)}to{transform:rotate(2.5deg)}}.anim .ripple{animation:ripple-flow 14s linear infinite}@keyframes ripple-flow{to{stroke-dashoffset:-400}}.anim .jet{transform-box:fill-box;transform-origin:50% 100%;animation:jet 1.6s ease-in-out infinite alternate}@keyframes jet{0%{transform:scaleY(.75)}to{transform:scaleY(1.1)}}.anim .spray{animation:spray 1.6s ease-in-out infinite alternate}@keyframes spray{0%{opacity:.35}to{opacity:.9}}.anim .smoke{transform-box:fill-box;transform-origin:center;animation:smoke 3.6s ease-out infinite}@keyframes smoke{0%{transform:translate(0) scale(.6);opacity:.8}to{transform:translate(10px,-36px) scale(1.7);opacity:0}}.anim .flutter{transform-box:fill-box;transform-origin:0% 50%;animation:flutter .9s ease-in-out infinite alternate}@keyframes flutter{0%{transform:skewY(-6deg) scaleX(.94)}to{transform:skewY(5deg) scaleX(1)}}.cloud-move{animation:cloud-drift 140s linear infinite}@keyframes cloud-drift{0%{transform:translate(-500px)}to{transform:translate(1900px)}}.birds{animation:birds 46s linear infinite}@keyframes birds{0%{transform:translate(-200px,420px)}32%{transform:translate(1600px,180px)}to{transform:translate(1600px,180px)}}.anim .bird{animation:flap .5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes flap{to{transform:scaleY(.4)}}.anim .flame{transform-box:fill-box;transform-origin:50% 0%;animation:flame .18s ease-in-out infinite alternate}@keyframes flame{0%{transform:scaleY(.8)}to{transform:scaleY(1.15)}}@media(prefers-reduced-motion:reduce){.anim .sway,.anim .ripple,.anim .jet,.anim .spray,.anim .smoke,.anim .flutter,.cloud-move,.birds,.anim .bird,.anim .flame{animation:none}.birds{display:none}}.town.moving .sway,.town.moving .ripple,.town.moving .jet,.town.moving .spray,.town.moving .smoke,.town.moving .flutter,.town.moving .cloud-move,.town.moving .birds,.town.moving .bird,.town.moving .water-glint,.town.moving .breathe,.town.moving .rock,.town.moving .beacon,.town.moving .flag-up,.town.moving .walking,.town.moving .paper,.town.moving .steam{animation-play-state:paused}.anim .water-glint{transform-box:fill-box;transform-origin:center;animation:glint-twinkle 2.4s ease-in-out infinite}.anim .breathe{transform-box:fill-box;transform-origin:50% 100%;animation:breathe 3.2s ease-in-out infinite alternate}@keyframes breathe{0%{transform:scaleY(1)}to{transform:scaleY(1.025)}}.anim .rock{transform-box:fill-box;transform-origin:50% 100%;animation:rock 4s ease-in-out infinite alternate}@keyframes rock{0%{transform:rotate(-2deg)}to{transform:rotate(2deg)}}.anim .beacon{animation:beacon 1.6s steps(1) infinite}@keyframes beacon{0%{opacity:1}50%{opacity:.15}}.anim .flag-up{transform-box:fill-box;transform-origin:50% 100%;animation:flag-wave 1.2s ease-in-out infinite alternate}@keyframes flag-wave{0%{transform:rotate(-6deg)}to{transform:rotate(4deg)}}.anim .win,.anim .lamp{transition:fill 1.5s ease}.halo{opacity:0;transition:opacity 1.5s ease}.anim.night .win{fill:var(--lamp)}.anim.night .halo{opacity:.35}@media(prefers-reduced-motion:reduce){.anim .water-glint,.anim .breathe,.anim .rock,.anim .beacon,.anim .flag-up{animation:none}}.anim .walking{animation:walk-bob .32s ease-in-out infinite alternate}@keyframes walk-bob{0%{transform:translateY(0)}to{transform:translateY(-3px)}}.anim .paper{transform-box:fill-box;transform-origin:50% 0%;animation:paper-stir 3.4s ease-in-out infinite alternate}@keyframes paper-stir{0%{transform:rotate(-3deg)}to{transform:rotate(2deg)}}.anim .steam{transform-box:fill-box;transform-origin:center;opacity:0;animation:steam 7s ease-out infinite}@keyframes steam{0%,70%{transform:translate(0) scale(.4);opacity:0}75%{opacity:.8}to{transform:translateY(-18px) scale(1.6);opacity:0}}.town-label{animation:label-in .3s ease-out both}@keyframes label-in{0%{opacity:0}to{opacity:1}}.sky-tint{transition:opacity 2s ease,background-color 2s ease}@media(prefers-reduced-motion:reduce){.anim .walking,.anim .paper,.anim .steam,.town-label{animation:none}}
