:root{--c-bg: #fafaf6;--c-bg-soft: #f0eee3;--c-bg-card: #ffffff;--c-ink: #1f2310;--c-ink-soft: #4a4f3a;--c-ink-faint: #8a8f7a;--c-tile-empty: #d3e36b;--c-tile-empty-hover: #b9cc55;--c-tile-wall: #6e7434;--c-tile-wall-day: #8a9046;--c-tile-active: #f0eba8;--c-cat: #14160a;--c-cat-shadow: rgba(20, 22, 10, .18);--c-accent: #1f2310;--c-accent-bg: #e9e6cf;--c-danger: #b8463a;--c-success: #4a7a3a;--c-tile-cluster: #c5663a;--c-tile-cluster-deep: #8a3f1f;--c-tile-line: #b08628;--c-tile-line-deep: #6e521b;--c-tile-catnip: #4f8d3e;--c-tile-catnip-deep: #2e5a24;--c-badge-fastest: #c98a1a;--c-badge-fastest-deep: #7a510b;--c-badge-fastest-soft: #faecc7;--c-badge-slowest: #4a6a8e;--c-badge-slowest-deep: #2c4661;--c-badge-slowest-soft: #dde5ee;--shadow-sm: 0 1px 2px rgba(31, 35, 16, .05);--shadow-md: 0 4px 14px rgba(31, 35, 16, .08);--shadow-lg: 0 12px 36px rgba(31, 35, 16, .18);--c-modal-scrim: rgba(20, 22, 10, .55);--c-modal-scrim-strong: rgba(20, 22, 10, .6);--c-bg-glow-1: rgba(211, 227, 107, .18);--c-bg-glow-2: rgba(110, 116, 52, .1);--c-histogram-bar: var(--c-tile-wall);--r-sm: 6px;--r-md: 10px;--r-lg: 18px;--r-pill: 999px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--font-display: "Fraunces", "Iowan Old Style", "Palatino Linotype", "Georgia", serif;--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;font-size:16px}[data-theme=dark]{--c-bg: #14180c;--c-bg-soft: #2a3019;--c-bg-card: #232a18;--c-ink: #f5f3e6;--c-ink-soft: #c2c0a8;--c-ink-faint: #888a76;--c-tile-empty: #4a5a26;--c-tile-empty-hover: #5a6b30;--c-tile-wall: #1d2213;--c-tile-wall-day: #2a3018;--c-tile-active: #6e7a32;--c-cat: #f5f3e6;--c-cat-shadow: rgba(0, 0, 0, .55);--c-accent: #f5f3e6;--c-accent-bg: #2a3018;--c-danger: #e07868;--c-success: #8ab472;--c-tile-cluster: #d68258;--c-tile-cluster-deep: #f5b08c;--c-tile-line: #d4a946;--c-tile-line-deep: #f5d77c;--c-tile-catnip: #74b85f;--c-tile-catnip-deep: #a7e092;--c-badge-fastest: #e0a444;--c-badge-fastest-deep: #f5d077;--c-badge-fastest-soft: #3e2f13;--c-badge-slowest: #7a9bc2;--c-badge-slowest-deep: #b6cce5;--c-badge-slowest-soft: #1c2837;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 14px rgba(0, 0, 0, .45);--shadow-lg: 0 12px 36px rgba(0, 0, 0, .6);--c-modal-scrim: rgba(0, 0, 0, .7);--c-modal-scrim-strong: rgba(0, 0, 0, .78);--c-bg-glow-1: rgba(74, 90, 38, .32);--c-bg-glow-2: rgba(40, 60, 90, .18);--c-histogram-bar: #6e7434}@media(min-width:768px){:root{font-size:17px}}@media(min-width:1280px){:root{font-size:18px}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--c-bg);color:var(--c-ink);font-family:var(--font-body);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;background-image:radial-gradient(circle at 20% 0%,var(--c-bg-glow-1),transparent 45%),radial-gradient(circle at 80% 90%,var(--c-bg-glow-2),transparent 50%);transition:background-color .24s ease,color .24s ease}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:-.01em;margin:0}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:2px solid var(--c-ink);outline-offset:2px}#root{min-height:100vh;display:flex}.app-shell{flex:1;display:flex;flex-direction:column;min-height:100vh}.app__header{padding:var(--space-5) var(--space-4) var(--space-3);text-align:center}.app__header h1{font-size:1.6rem}.app__main{flex:1;padding:var(--space-4);display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.game{width:100%;max-width:36rem;display:flex;flex-direction:column;align-items:stretch;gap:var(--space-3);position:relative}.game__status-row{display:flex;justify-content:space-between;align-items:baseline;padding:0 var(--space-1);color:var(--c-ink-soft);font-size:.95rem}.game__date{margin:0;letter-spacing:.02em;font-variant-caps:all-small-caps}.game__turns{margin:0}.game__turns strong{font-family:var(--font-display);font-size:1.2rem;color:var(--c-ink)}.game__turns-value{display:inline-block;animation:turn-counter-pop .28s cubic-bezier(.34,1.56,.64,1);transform-origin:center}@keyframes turn-counter-pop{0%{transform:scale(.85)}60%{transform:scale(1.15)}to{transform:scale(1)}}.game__instructions{margin:0;text-align:center;color:var(--c-ink-faint);font-size:.9rem}.game__status{margin:var(--space-6) auto;color:var(--c-ink-soft);font-size:1rem;text-align:center}.game__status--error{color:var(--c-danger)}.hex-board{width:100%;height:auto;background:var(--c-bg-card);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:var(--space-3);overflow:visible}.hex-cell{stroke:var(--c-bg);stroke-width:.05;transition:fill .14s ease,transform .14s ease;transform-origin:center;transform-box:fill-box}.hex-cell--empty{fill:var(--c-tile-empty)}.hex-cell--clickable{cursor:pointer}.hex-cell--clickable:hover{fill:var(--c-tile-empty-hover)}.hex-cell:focus{outline:none}.hex-cell--clickable:focus-visible{stroke:var(--c-ink);stroke-width:.14}.hex-cell--wall{fill:var(--c-tile-wall);cursor:default}.hex-cell--clickable:active{transform:scale(.92)}.hex-cell[data-just-placed=true]{animation:hex-wall-pop .46s cubic-bezier(.34,1.56,.64,1);animation-delay:var(--pop-delay, 0ms);animation-fill-mode:backwards}@keyframes hex-wall-pop{0%{transform:scale(.4);opacity:.6}60%{transform:scale(1.18);opacity:1}to{transform:scale(1);opacity:1}}.dust-puff-group{pointer-events:none}.dust-puff{fill:var(--c-ink);opacity:0;transform-origin:center;transform-box:fill-box;animation:dust-puff-puff .48s ease-out forwards}.dust-puff--cat{fill:var(--c-ink-faint)}.dust-puff--wall{fill:var(--c-tile-wall)}.dust-puff--catnip{fill:var(--c-tile-catnip)}.dust-puff--offset{animation-delay:60ms}.dust-puff--offset-late{animation-delay:.11s}@keyframes dust-puff-puff{0%{opacity:0;transform:scale(.2)}20%{opacity:.45}to{opacity:0;transform:scale(1.6)}}.hex-cat{pointer-events:none;transition:transform .32s cubic-bezier(.32,.72,.4,1);filter:drop-shadow(0 .05px .08px var(--c-cat-shadow))}.hex-cat-inner{transform-origin:center;transform-box:fill-box}.hex-board[data-status=won] .hex-cat-inner{animation:cat-trapped-jiggle 1.6s .22s ease-in-out 2}@keyframes cat-trapped-jiggle{0%,to{transform:rotate(0)}20%{transform:rotate(-8deg)}40%{transform:rotate(7deg)}60%{transform:rotate(-5deg)}80%{transform:rotate(3deg)}}.hex-ghost{pointer-events:none;filter:none;transition:transform .14s ease;animation:hex-ghost-breathe 1.6s ease-in-out infinite}.cat-direction{pointer-events:none;stroke:var(--c-ink);fill:none;stroke-linecap:round;stroke-linejoin:round;animation:cat-direction-breathe 1.6s ease-in-out infinite}.cat-direction__shaft{stroke-width:.08}.cat-direction__head{stroke-width:.1}.cat-direction--edge{animation-name:cat-direction-breathe-edge}@keyframes cat-direction-breathe{0%,to{opacity:.55}50%{opacity:.4}}@keyframes cat-direction-breathe-edge{0%,to{opacity:.85}50%{opacity:.65}}.hex-ghost--edge{animation-name:hex-ghost-breathe-edge}@keyframes hex-ghost-breathe{0%,to{opacity:.34}50%{opacity:.22}}@keyframes hex-ghost-breathe-edge{0%,to{opacity:.6}50%{opacity:.42}}.hex-board[data-escaping=true] .hex-cat{transition:transform .9s cubic-bezier(.34,0,.66,1)}.hex-board[data-escaping=true] .hex-cat-inner{animation:cat-escape-fade 1s .2s ease-out forwards}@keyframes cat-escape-fade{0%{opacity:1}to{opacity:0}}.hex-board[data-escaping=true]{animation:hex-board-shake .38s cubic-bezier(.36,.07,.19,.97)}@keyframes hex-board-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-3px,1px)}40%,60%{transform:translate(3px,-1px)}}.confetti{pointer-events:none}.confetti__particle{--dx: 0;--dy: 0;--rot: 0deg;--delay: 0ms;transform-origin:center;transform-box:fill-box;opacity:0;animation:confetti-fly 1.1s cubic-bezier(.16,.92,.5,1) var(--delay) forwards}.confetti__particle--streak{animation-duration:1.3s}@keyframes confetti-fly{0%{transform:translate(0) rotate(0) scale(.4);opacity:0}12%{opacity:1}60%{transform:translate(calc(var(--dx) * .7),calc(var(--dy) * .7)) rotate(calc(var(--rot) * .6)) scale(1);opacity:1}to{transform:translate(var(--dx),calc(var(--dy) + .9)) rotate(var(--rot)) scale(.95);opacity:0}}.hex-cell{animation:hex-cell-enter .36s ease-out backwards;animation-delay:calc(var(--row, 0) * 28ms)}@keyframes hex-cell-enter{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.hex-cell[data-just-placed=true]{animation-delay:0ms}.cat-sprite__breath{transform-origin:center .2px;transform-box:fill-box;animation:cat-breathe 4.4s ease-in-out infinite}.cat-sprite__eyes{transform-origin:center;transform-box:fill-box;animation:cat-blink 5.7s ease-in-out infinite;animation-delay:1.2s}.hex-board[data-status=won] .cat-sprite__breath,.hex-board[data-status=won] .cat-sprite__eyes,.hex-board[data-escaping=true] .cat-sprite__breath,.hex-board[data-escaping=true] .cat-sprite__eyes,.hex-ghost .cat-sprite__breath,.hex-ghost .cat-sprite__eyes{animation:none}@keyframes cat-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.025,1.04)}}@keyframes cat-blink{0%,92%,to{transform:scaleY(1)}95%,97%{transform:scaleY(.06)}}.cat-body,.cat-ear{fill:var(--c-cat)}.cat-ear-inner,.cat-eye{fill:var(--c-tile-empty)}.cat-pupil{fill:var(--c-cat)}.cat-nose{fill:var(--c-tile-empty)}.cat-mouth{stroke:var(--c-tile-empty);stroke-width:.025;stroke-linecap:round}.cat-whisker{stroke:var(--c-tile-empty);stroke-width:.018;stroke-linecap:round;opacity:.65}.special-glyph{pointer-events:none;transform-origin:center;transform-box:fill-box;animation:special-glyph-arrive .36s cubic-bezier(.34,1.56,.64,1) backwards}@keyframes special-glyph-arrive{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.special-glyph--cluster .cluster-glyph__core{fill:var(--c-tile-cluster-deep);transform-origin:center;transform-box:fill-box;animation:cluster-core-pulse 2.4s ease-in-out infinite}.special-glyph--cluster .cluster-glyph__ring{fill:var(--c-tile-cluster);transform-origin:center;transform-box:fill-box;animation:cluster-ring-breathe 2.4s ease-in-out infinite;animation-delay:calc(var(--idx, 0) * -.12s)}@keyframes cluster-core-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}@keyframes cluster-ring-breathe{0%,to{opacity:.55;transform:scale(.95)}50%{opacity:1;transform:scale(1.1)}}.special-glyph--line .line-glyph__shaft{stroke:var(--c-tile-line);stroke-width:.13;fill:none;stroke-linecap:round}.special-glyph--line .line-glyph__head{stroke:var(--c-tile-line-deep);stroke-width:.07;fill:none;stroke-linecap:round;stroke-linejoin:round}.special-glyph--line{animation:special-glyph-arrive .36s cubic-bezier(.34,1.56,.64,1) backwards,line-glyph-shimmer 3.2s ease-in-out .36s infinite}@keyframes line-glyph-shimmer{0%,to{opacity:.85}50%{opacity:1}}.special-glyph--catnip .catnip-glyph__leaf{fill:var(--c-tile-catnip);transform-origin:center;transform-box:fill-box;animation:catnip-leaf-sway 3.6s ease-in-out infinite;animation-delay:calc(var(--leaf-idx, 0) * -1.2s)}.special-glyph--catnip .catnip-glyph__stem{fill:var(--c-tile-catnip-deep)}@keyframes catnip-leaf-sway{0%,to{transform:scale(1) rotate(0)}50%{transform:scale(1.05) rotate(6deg)}}.hex-board[data-cat-asleep=true] .cat-sprite__eyes{animation:none;transform:scaleY(.08)}.hex-board[data-cat-asleep=true] .cat-sprite__breath{animation:cat-sleep-breath 2.8s ease-in-out infinite}@keyframes cat-sleep-breath{0%,to{transform:scale(1)}50%{transform:scale(1.06,1.08)}}.cat-zzz{pointer-events:none}.cat-zzz__char{opacity:0;animation:cat-zzz-float 2.4s ease-out infinite;transform-origin:center;transform-box:fill-box}.cat-zzz__char--1{animation-delay:0s}.cat-zzz__char--2{animation-delay:.5s}.cat-zzz__char--3{animation-delay:1s}.cat-zzz__glyph{font-family:var(--font-display);font-size:.3px;fill:var(--c-ink);text-anchor:middle;font-weight:700}.cat-zzz__glyph--medium{font-size:.36px}.cat-zzz__glyph--large{font-size:.42px}@keyframes cat-zzz-float{0%{opacity:0;transform:translateY(.1px)}20%{opacity:1}60%{opacity:1;transform:translate(.06px,-.18px)}to{opacity:0;transform:translate(.14px,-.4px)}}.specials-legend{width:100%;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);background:var(--c-bg-soft);border-radius:var(--r-md);margin-top:var(--space-2)}.specials-legend__title{font-size:.85rem;letter-spacing:.04em;font-variant-caps:all-small-caps;color:var(--c-ink-soft);text-align:center;margin:0}.specials-legend__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:var(--space-2)}@media(min-width:540px){.specials-legend__list{grid-template-columns:repeat(3,1fr)}}.specials-legend__item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--c-bg-card);border-radius:var(--r-sm);box-shadow:var(--shadow-sm)}.specials-legend__hex{width:3rem;height:3rem;flex:0 0 auto}.specials-legend__hex-cell{fill:var(--c-tile-empty);stroke:var(--c-bg);stroke-width:.05}.specials-legend__copy{display:flex;flex-direction:column;gap:2px;min-width:0}.specials-legend__name{margin:0;font-weight:700;font-size:.95rem;color:var(--c-ink)}.specials-legend__body{margin:0;font-size:.85rem;color:var(--c-ink-soft);line-height:1.4}.twist-card{position:fixed;inset:0;background:var(--c-modal-scrim-strong);display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:60;animation:end-overlay-fade .22s ease}.twist-card__panel{background:var(--c-bg-card);border-radius:var(--r-lg);padding:var(--space-5);box-shadow:var(--shadow-lg);width:min(28rem,100%);display:flex;flex-direction:column;gap:var(--space-4);animation:end-overlay-card-rise .36s cubic-bezier(.16,1,.3,1)}.twist-card__title{font-size:1.5rem;text-align:center;margin:0}.twist-card__lead{margin:0;text-align:center;font-size:.95rem;color:var(--c-ink-soft)}.twist-card__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-3)}.twist-card__item{display:flex;align-items:flex-start;gap:var(--space-3)}.twist-card__hex{width:3.25rem;height:3.25rem;flex:0 0 auto}.twist-card__hex-cell{fill:var(--c-tile-empty);stroke:var(--c-bg);stroke-width:.05}.twist-card__copy{display:flex;flex-direction:column;gap:2px}.twist-card__name{margin:0;font-weight:700;font-size:1rem;color:var(--c-ink);display:flex;align-items:center;gap:var(--space-2)}.twist-card__count{font-size:.75rem;font-weight:600;color:var(--c-ink-faint);background:var(--c-bg-soft);padding:0 .4rem;border-radius:var(--r-pill);letter-spacing:.04em}.twist-card__body{margin:0;font-size:.9rem;color:var(--c-ink-soft);line-height:1.4}.twist-card__cta{background:var(--c-ink);color:var(--c-bg);border:none;border-radius:var(--r-pill);padding:var(--space-3) var(--space-5);font-size:1rem;font-weight:600;align-self:center;transition:background .12s ease}.twist-card__cta:hover{background:var(--c-ink-soft)}.end-overlay{position:fixed;inset:0;background:var(--c-modal-scrim);display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:50;animation:end-overlay-fade .2s ease}@keyframes end-overlay-fade{0%{opacity:0}to{opacity:1}}.end-overlay__card{background:var(--c-bg-card);border-radius:var(--r-lg);padding:var(--space-5);box-shadow:var(--shadow-lg);width:min(28rem,100%);max-height:100%;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4);animation:end-overlay-card-rise .32s cubic-bezier(.16,1,.3,1)}.end-overlay__card>*{flex-shrink:0}.end-overlay__card>.histogram{flex-shrink:1;min-height:0}@keyframes end-overlay-card-rise{0%{transform:translateY(1rem);opacity:0}to{transform:translateY(0);opacity:1}}.end-overlay__title{font-size:1.5rem;text-align:center;margin:0}.end-overlay--lose .end-overlay__title{color:var(--c-danger)}.end-overlay--win .end-overlay__title{color:var(--c-success)}.end-overlay__best-note{margin:0;text-align:center;font-size:.9rem;color:var(--c-ink-soft)}.end-overlay__daily{display:flex;flex-direction:column;align-items:center;gap:var(--space-1)}.end-overlay__streak{display:flex;align-items:baseline;justify-content:center;gap:var(--space-2);color:var(--c-ink)}.end-overlay__streak-value{font-family:var(--font-display);font-size:2.4rem;font-weight:700;line-height:1;display:inline-block;animation:end-overlay-streak-pop .32s cubic-bezier(.34,1.56,.64,1);transform-origin:center}@keyframes end-overlay-streak-pop{0%{transform:scale(.7)}60%{transform:scale(1.18)}to{transform:scale(1)}}.end-overlay__streak-label{font-size:.9rem;color:var(--c-ink-soft)}.end-overlay__streak-longest{font-size:.8rem;color:var(--c-ink-faint)}.end-overlay__loading,.end-overlay__error{margin:0;text-align:center;font-size:.95rem;color:var(--c-ink-soft)}.end-overlay__error{color:var(--c-danger)}.end-overlay__countdown{text-align:center;font-size:.9rem;color:var(--c-ink-soft)}.end-overlay__countdown strong{font-family:var(--font-display);color:var(--c-ink)}.end-overlay__actions{display:flex;justify-content:center;gap:var(--space-3)}.end-overlay__actions button{padding:var(--space-2) var(--space-4);border-radius:var(--r-pill);border:1px solid var(--c-ink);background:var(--c-ink);color:var(--c-bg);font-weight:600;font-size:.95rem;transition:background .12s ease,color .12s ease,transform .12s ease}.end-overlay__actions button:hover{background:var(--c-bg);color:var(--c-ink)}.end-overlay__actions button:active{transform:translateY(1px)}.end-overlay__share-confirm{margin:0;text-align:center;font-size:.85rem;color:var(--c-ink-soft)}.end-overlay__nudge{border-top:1px dashed var(--c-ink-faint);padding-top:var(--space-3);display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.end-overlay__nudge-text{margin:0;text-align:center;font-size:.9rem;color:var(--c-ink-soft);max-width:22rem}.end-overlay__nudge-button{background:var(--c-bg);color:var(--c-ink);border:1px solid var(--c-ink);border-radius:var(--r-pill);padding:var(--space-2) var(--space-4);font-size:.9rem;font-weight:600;transition:background .12s ease,color .12s ease}.end-overlay__nudge-button:hover:not(:disabled){background:var(--c-ink);color:var(--c-bg)}.end-overlay__nudge-button:disabled{opacity:.6;cursor:not-allowed}.end-overlay__nudge-error{margin:0;text-align:center;font-size:.85rem;color:var(--c-danger)}.end-overlay__nudge-success{margin:0;text-align:center;font-size:.9rem;color:var(--c-success);font-weight:600}.histogram{margin:0;display:flex;flex-direction:column;gap:var(--space-2);min-height:0}.histogram__caption{font-size:.8rem;color:var(--c-ink-soft);text-align:center;letter-spacing:.02em;font-variant-caps:all-small-caps;flex-shrink:0}.histogram__percentile{margin:0;text-align:center;font-size:.95rem;color:var(--c-success);font-weight:600;flex-shrink:0}.histogram__chart{width:100%;background:var(--c-bg-soft);border-radius:var(--r-md);padding:var(--space-2);display:flex;flex-direction:column;gap:4px;box-sizing:border-box;min-height:0;max-height:min(50vh,22rem);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--c-ink-faint) transparent}.histogram__row{display:flex;align-items:center;gap:.5rem;font-size:.85rem;line-height:1}.histogram__row-label{flex:0 0 2.25rem;text-align:right;color:var(--c-ink-faint);font-variant-numeric:tabular-nums}.histogram__row-track{flex:1 1 auto;display:flex;align-items:center;gap:.4rem;min-width:0}.histogram__bar{height:1rem;min-width:2px;background:var(--c-histogram-bar);border-radius:3px;transition:background .16s ease}.histogram__bar--you{background:var(--c-success)}.histogram__bar--stub{opacity:.7}.histogram__count{color:var(--c-ink);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.histogram__count--you{color:var(--c-success)}.histogram__count-suffix{font-weight:500;margin-left:.15rem}.histogram--empty{text-align:center;padding:var(--space-4);color:var(--c-ink-faint);background:var(--c-bg-soft);border-radius:var(--r-md);font-size:.95rem}.app__header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);max-width:36rem;margin:0 auto}.app__header-actions{display:flex;align-items:center;gap:var(--space-2)}.discord-invite,.sound-toggle,.theme-toggle{width:2.25rem;height:2.25rem;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:transparent;color:var(--c-ink);border:1px solid transparent;padding:0;cursor:pointer;transition:background .14s ease,color .14s ease,transform .12s ease,border-color .14s ease}.discord-invite{text-decoration:none}.discord-invite:hover,.sound-toggle:hover,.theme-toggle:hover{background:var(--c-bg-soft);border-color:var(--c-ink-faint)}.discord-invite:active,.sound-toggle:active,.theme-toggle:active{transform:scale(.92)}.discord-invite:focus-visible,.sound-toggle:focus-visible,.theme-toggle:focus-visible{outline:2px solid var(--c-ink);outline-offset:2px}.sound-toggle--muted{color:var(--c-ink-faint)}.theme-toggle svg{transition:transform .32s cubic-bezier(.34,1.56,.64,1)}.theme-toggle--dark svg{transform:rotate(-20deg)}@media(prefers-reduced-motion:reduce){.theme-toggle svg{transition:none}}.app__tagline{margin:var(--space-2) 0 0;text-align:center;color:var(--c-ink-faint);font-size:.95rem}.app__footer{text-align:center;padding:var(--space-3);font-size:.8rem;color:var(--c-ink-faint)}.signin{position:relative;display:flex;align-items:center;gap:var(--space-2)}.signin__button{background:var(--c-ink);color:var(--c-bg);border:none;padding:var(--space-2) var(--space-3);border-radius:var(--r-pill);font-size:.85rem;font-weight:600;transition:background .12s ease}.signin__button:hover{background:var(--c-ink-soft)}.signin__button:disabled{opacity:.6;cursor:not-allowed}.signin__button--secondary{background:transparent;color:var(--c-ink);border:1px solid var(--c-ink)}.signin__user{font-size:.9rem;color:var(--c-ink-soft);font-weight:500}.signin__toast{position:absolute;top:calc(100% + var(--space-2));right:0;background:var(--c-bg-card);border:1px solid var(--c-ink-faint);border-radius:var(--r-md);padding:var(--space-3);box-shadow:var(--shadow-md);font-size:.85rem;color:var(--c-ink);width:min(20rem,80vw);z-index:30;display:flex;flex-direction:column;gap:var(--space-2)}.signin__toast-close{align-self:flex-end;background:transparent;border:none;color:var(--c-ink);text-decoration:underline;font-size:.8rem;padding:0}.primer{position:fixed;inset:0;background:var(--c-modal-scrim-strong);display:flex;align-items:center;justify-content:center;padding:var(--space-4);z-index:70;animation:end-overlay-fade .22s ease}.primer__card{background:var(--c-bg-card);border-radius:var(--r-lg);padding:var(--space-5);box-shadow:var(--shadow-lg);width:min(28rem,100%);display:flex;flex-direction:column;gap:var(--space-4);animation:end-overlay-card-rise .36s cubic-bezier(.16,1,.3,1)}.primer__title{font-size:1.5rem;text-align:center;margin:0}.primer__steps{margin:0;padding:0 0 0 var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);color:var(--c-ink);font-size:.95rem;line-height:1.5}.primer__steps li::marker{color:var(--c-success);font-weight:700}.primer__demo{background:var(--c-bg-soft);border-radius:var(--r-md);padding:var(--space-2)}.primer__demo .hex-board{background:transparent;box-shadow:none;padding:0}.primer__tip{margin:0;text-align:center;font-size:.85rem;color:var(--c-ink-soft)}.primer__cta{background:var(--c-ink);color:var(--c-bg);border:none;border-radius:var(--r-pill);padding:var(--space-3) var(--space-5);font-size:1rem;font-weight:600;align-self:center;transition:background .12s ease}.primer__cta:hover{background:var(--c-ink-soft)}@media(max-width:480px){.app__header{padding:var(--space-3) var(--space-3) var(--space-2)}.app__header h1{font-size:1.35rem}.end-overlay__card,.primer__card{padding:var(--space-4);border-radius:var(--r-md)}}@media(max-height:750px){.end-overlay{padding:var(--space-2)}.end-overlay__card{padding:var(--space-3) var(--space-4);gap:var(--space-2)}.end-overlay__title{font-size:1.25rem}.end-overlay__streak-value{font-size:1.8rem}.histogram{gap:var(--space-1)}.histogram__chart{gap:3px;min-height:6rem}.histogram__bar{height:.8rem}}@media(orientation:landscape)and (max-height:560px)and (max-width:1024px){.app__footer,.game__instructions,.specials-legend,.new-badges-banner,.app__header h1,.app__tagline,.app__header .badge-tray,.app__header .signin,.app__header .discord-invite,.app__header .theme-toggle{display:none}body{background-image:none;overflow:hidden}#root,.app-shell{height:100dvh;min-height:0}.app__header{position:fixed;top:var(--space-2);right:var(--space-2);padding:0;z-index:20;background:transparent}.app__header-inner{max-width:none;margin:0;justify-content:flex-end}.app__header-actions{gap:var(--space-1)}.app__main{flex:1;min-height:0;padding:var(--space-2);gap:0}.game{max-width:none;flex:1;min-height:0;gap:var(--space-1)}.game__status-row{font-size:.8rem;padding:0;padding-right:2.75rem}.game__turns strong{font-size:1rem}.hex-board{flex:1;min-height:0;width:100%;height:100%;padding:var(--space-1)}.twist-card__panel,.primer__card{max-height:100%;overflow-y:auto}}@media(prefers-reduced-motion:reduce){html,body{transition:none}.hex-board[data-escaping=true],.cat-sprite__breath,.cat-sprite__eyes,.hex-ghost,.cat-direction{animation:none}.hex-ghost{opacity:.35}.cat-direction{opacity:.5}.hex-ghost--edge{opacity:.55}.cat-direction--edge{opacity:.8}.hex-board[data-status=won] .hex-cat-inner{animation-duration:.6s;animation-iteration-count:1}.hex-cell{animation-duration:.001ms;animation-delay:0ms}.hex-cell[data-just-placed=true]{animation-delay:0ms}.confetti__particle{animation-duration:.6s}.game__turns-value,.end-overlay__streak-value{animation-duration:1ms}.hex-cell--clickable:active{transform:none}.special-glyph,.special-glyph--cluster .cluster-glyph__core,.special-glyph--cluster .cluster-glyph__ring,.special-glyph--line,.special-glyph--catnip .catnip-glyph__leaf,.hex-board[data-cat-asleep=true] .cat-sprite__breath{animation:none}.cat-zzz__char{animation-duration:1ms;animation-iteration-count:1;opacity:.6}.dust-puff{animation:dust-puff-flash .2s linear forwards;transform:none}}@keyframes dust-puff-flash{0%{opacity:0}30%{opacity:.55}to{opacity:0}}.badge-tray{width:100%;max-width:36rem;margin:var(--space-3) auto 0;display:flex;flex-direction:column;align-items:center;gap:var(--space-2)}.badge-tray--compact{margin-top:0;gap:0}.badge-tray__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2)}.badge-tray__hint{margin:0;text-align:center;font-size:.8rem;color:var(--c-ink-faint);line-height:1.4;max-width:28rem;padding:0 var(--space-3)}.badge-chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--r-pill);background:var(--c-bg-card);border:1px solid var(--c-ink-faint);box-shadow:var(--shadow-sm);font-size:.9rem;color:var(--c-ink);white-space:nowrap;transition:background .16s ease,border-color .16s ease}.badge-chip[data-empty=false][data-kind=fastest]{background:var(--c-badge-fastest-soft);border-color:var(--c-badge-fastest)}.badge-chip[data-empty=false][data-kind=slowest]{background:var(--c-badge-slowest-soft);border-color:var(--c-badge-slowest)}.badge-chip[data-empty=true]{opacity:.78}.badge-chip__icon{width:1.15rem;height:1.15rem;display:inline-flex;align-items:center;justify-content:center}.badge-chip__icon svg{width:100%;height:100%;display:block}.badge-icon--fastest{fill:var(--c-badge-fastest-deep)}.badge-icon--slowest{fill:var(--c-badge-slowest-deep)}.badge-chip[data-empty=true] .badge-icon--fastest,.badge-chip[data-empty=true] .badge-icon--slowest{fill:var(--c-ink-faint)}.badge-chip__label{font-weight:600;letter-spacing:.01em}.badge-chip__count{font-family:var(--font-display);font-weight:700;font-variant-numeric:tabular-nums;font-size:1rem;color:var(--c-ink)}.badge-chip[data-empty=true] .badge-chip__count{color:var(--c-ink-faint)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.new-badges-banner{width:100%;max-width:36rem;margin:0 auto;display:flex;flex-direction:column;align-items:stretch;gap:var(--space-3);padding:var(--space-4);border-radius:var(--r-lg);background:linear-gradient(135deg,var(--c-badge-fastest-soft) 0%,var(--c-bg-card) 50%,var(--c-badge-slowest-soft) 100%);box-shadow:var(--shadow-md);border:1px solid var(--c-ink-faint);animation:new-badges-banner-rise .36s cubic-bezier(.16,1,.3,1)}@keyframes new-badges-banner-rise{0%{transform:translateY(-.5rem);opacity:0}to{transform:translateY(0);opacity:1}}.new-badges-banner__content{display:flex;flex-direction:column;gap:var(--space-2);flex:1 1 auto;min-width:0}.new-badges-banner__headline{margin:0;font-family:var(--font-display);font-size:1.15rem;font-weight:700;color:var(--c-ink);line-height:1.25}.new-badges-banner__earned{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4)}.new-badges-banner__earned-item{display:inline-flex;align-items:center;gap:var(--space-2);font-size:.95rem}.new-badges-banner__earned-item strong{font-weight:700}.new-badges-banner__icon{width:1.4rem;height:1.4rem;display:inline-flex;align-items:center;justify-content:center}.new-badges-banner__icon svg{width:100%;height:100%}.new-badges-banner__detail{margin:0;font-size:.85rem;color:var(--c-ink-soft)}.new-badges-banner__dismiss{align-self:flex-end;background:var(--c-ink);color:var(--c-bg);border:none;border-radius:var(--r-pill);padding:var(--space-2) var(--space-4);font-size:.9rem;font-weight:600;transition:background .12s ease,transform .12s ease}.new-badges-banner__dismiss:hover{background:var(--c-ink-soft)}.new-badges-banner__dismiss:active{transform:translateY(1px)}.histogram__bar--fastest{background:var(--c-badge-fastest)}.histogram__bar--slowest{background:var(--c-badge-slowest)}.histogram__bar--both{background:linear-gradient(90deg,var(--c-badge-fastest) 0%,var(--c-badge-fastest) 50%,var(--c-badge-slowest) 50%,var(--c-badge-slowest) 100%)}.histogram__bar--just-played{background:var(--c-success)}@media(max-width:480px){.badge-tray{margin-top:var(--space-2)}.badge-tray__hint{font-size:.75rem;padding:0 var(--space-2)}.badge-chip{padding:var(--space-1) var(--space-2);font-size:.85rem;gap:var(--space-1)}.new-badges-banner{padding:var(--space-3);border-radius:var(--r-md)}.new-badges-banner__headline{font-size:1rem}}@media(prefers-reduced-motion:reduce){.new-badges-banner{animation:none}}
