:root{--lavender:#e6e1f7;--butter:#f9e3a1;--butter-edge:#e6c25e;--butter-ink:#2b2410;--mint:#c8ebd5;--mint-edge:#93cfaa;--mint-ink:#12391f;--sky:#dce6f7;--sky-edge:#b7c8e8;--ink:#121212;--paper:#fff;--muted:#55535f;--line:#e4e1ec;--tile-edge:#cdc9dc;--placed-edge:#77748a;--backdrop:#1e1a2e59;--shadow:0 10px 30px #281e5024;--shadow-soft:0 2px 8px #281e5014;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--radius:.5rem;--radius-lg:1rem;--tile:clamp(2.5rem, 11vw, 3.25rem);--page:32rem;--font-body:"Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--font-display:Georgia, "Times New Roman", Times, serif;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--dur-1:.12s;--dur-2:.2s;--dur-3:.32s;--dur-4:.48s;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--lavender:#29243d;--butter:#e3c46c;--butter-edge:#c9a845;--butter-ink:#1c1708;--mint:#1e3a2b;--mint-edge:#2f5c43;--mint-ink:#d4f1df;--sky:#233049;--sky-edge:#34466a;--ink:#f3f1fa;--paper:#15141b;--muted:#aeabbd;--line:#34313f;--tile-edge:#444155;--placed-edge:#9d9ab0;--backdrop:#0009;--shadow:0 10px 30px #00000080;--shadow-soft:0 2px 8px #0006}}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}h1,h2,h3{margin:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.main{max-width:var(--page);padding:var(--space-4) var(--space-4) var(--space-8);outline:none;margin:0 auto}.main--welcome{background:var(--lavender);max-width:none;min-height:100dvh;padding:0;display:grid}.welcome{padding:var(--space-8) var(--space-4);place-items:center;display:grid}.welcome__inner{align-items:center;gap:var(--space-4);text-align:center;width:min(100%,22rem);animation:screen-in var(--dur-4) var(--ease-out);flex-direction:column;display:flex}.welcome__title{font-family:var(--font-display);font-size:clamp(2.5rem,12vw,3.25rem);line-height:1}.welcome__pitch{margin:0 0 var(--space-2);font-size:1.25rem;line-height:1.35}.welcome__date{margin:var(--space-2) 0 0;font-weight:700}.welcome__status{color:var(--muted);margin:0}.welcome__status p{margin:0 0 var(--space-1)}.mark{flex-direction:column;align-items:center;gap:.2rem;display:flex}.mark__row{gap:.2rem;display:flex}.mark__tile{border:2px solid var(--sky-edge);background:var(--sky);width:1.1rem;height:1.1rem;animation:pop var(--dur-3) var(--ease-spring) both;border-radius:.2rem}.mark__tile.is-new{border-color:var(--butter-edge);background:var(--butter)}.mark__row:first-child .mark__tile{animation-delay:.24s}.mark__row:nth-child(2) .mark__tile{animation-delay:.12s}.masthead{border-bottom:1px solid var(--line)}.masthead__inner{max-width:var(--page);height:3.5rem;padding:0 var(--space-4);justify-content:center;align-items:center;margin:0 auto;display:flex;position:relative}.masthead__title{font-family:var(--font-display);letter-spacing:.01em;font-size:1.75rem;font-weight:700}.masthead__start{left:var(--space-4);position:absolute}.masthead__actions{right:var(--space-4);position:absolute}.icon-button{border:2px solid var(--ink);width:2.25rem;height:2.25rem;color:var(--ink);font:700 1.125rem/1 var(--font-body);cursor:pointer;transition:transform var(--dur-1) var(--ease-out);background:0 0;border-radius:50%;place-items:center;display:grid}.icon-button:active{transform:scale(.94)}.footer{max-width:var(--page);padding:var(--space-4);border-top:1px solid var(--line);color:var(--muted);text-align:center;margin:0 auto;font-size:.8125rem}.screen{gap:var(--space-4);animation:screen-in var(--dur-3) var(--ease-out);flex-direction:column;display:flex}.screen__header{text-align:center}.screen__title{font-family:var(--font-display);text-align:center;font-size:2rem;line-height:1.15}.screen__date,.screen__lead{margin:var(--space-1) 0 0;color:var(--muted);text-align:center;font-size:1.0625rem}.screen__note{color:var(--muted);margin:0;font-size:.9375rem}.screen__bar{text-align:center}.screen__eyebrow{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.8125rem;font-weight:700}.screen__hint{color:var(--muted);margin:0;font-size:.9375rem}.stack-actions{gap:var(--space-3);flex-direction:column;width:100%;display:flex}.card{gap:var(--space-2);padding:var(--space-4);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);box-shadow:var(--shadow-soft);animation:rise-in var(--dur-4) var(--ease-out) both;flex-direction:column;display:flex}.card__title{font-size:1.125rem;font-weight:700}.card__subtitle{margin-top:var(--space-2);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.8125rem}.card__text{color:var(--muted);margin:0}.notice{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--sky);text-align:center;margin:0}.board{align-items:center;gap:var(--space-4);flex-direction:column;display:flex;position:relative}.tile{width:var(--tile);height:var(--tile);border:2px solid var(--tile-edge);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-size:calc(var(--tile) * .48);text-transform:uppercase;-webkit-user-select:none;user-select:none;place-items:center;font-weight:700;line-height:1;display:grid;position:relative}.tile--floor{border-color:var(--placed-edge)}.tile--placed{border-color:var(--placed-edge);animation:float-in var(--dur-2) var(--ease-spring)}.tile--bag{border-color:var(--butter-edge);background:var(--butter);color:var(--butter-ink)}.tile--tower,.tile--base{border-color:var(--sky-edge);background:var(--sky)}.tile--base{border-style:dashed}.tile--gone{opacity:.5;background:0 0;border-style:dashed}.tile__value{font-size:calc(var(--tile) * .22);font-weight:600;position:absolute;bottom:.1rem;right:.2rem}.tile-button{border-radius:var(--radius);cursor:grab;touch-action:none;transition:transform var(--dur-1) var(--ease-out);background:0 0;border:0;padding:0}.tile-button:hover:not(:disabled){transform:translateY(-2px)}.tile-button:active{cursor:grabbing;transform:scale(.95)}.tile-button:disabled{cursor:default;opacity:.6}.tower-wrap{width:100%}.tower{align-items:center;gap:var(--space-1);--tile:clamp(1.75rem, 8vw, 2.25rem);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.floor{gap:var(--space-1);display:flex}.floor--fresh{animation:drop-in var(--dur-4) var(--ease-spring)}.score{margin:0;font-size:1rem}.score__label,.score__floors{color:var(--muted)}.slots{gap:var(--space-1);margin:0;padding:0;list-style:none;display:flex}.slots--shake{animation:shake .4s var(--ease-in-out)}.slot__empty{width:var(--tile);height:var(--tile);border:2px solid var(--tile-edge);border-radius:var(--radius);transition:border-color var(--dur-1);display:block}.hint{color:var(--muted);text-align:center;margin:0;font-size:.9375rem}.pool{gap:var(--space-3);width:100%;padding:var(--space-4) var(--space-3);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--lavender) 45%, var(--paper));flex-direction:column;display:flex}.pool__label{margin-bottom:var(--space-2);color:var(--muted);letter-spacing:.08em;text-align:center;text-transform:uppercase;font-size:.75rem;font-weight:700}.pool__tiles{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.pool__empty{color:var(--muted);margin:0}.panel{align-items:center;gap:var(--space-3);width:100%;padding:var(--space-4);border-radius:var(--radius-lg);text-align:center;animation:rise-in var(--dur-3) var(--ease-out);flex-direction:column;margin:0;display:flex}.panel__title{font-family:var(--font-display);font-size:1.5rem}.panel__text{margin:0}.stuck{background:var(--lavender)}.perfect{border:2px solid var(--mint-edge);background:var(--mint);color:var(--mint-ink);font-weight:700}.actions{justify-content:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.button{min-height:3rem;padding:0 var(--space-6);border:1px solid var(--ink);background:var(--ink);color:var(--paper);font:600 1rem var(--font-body);cursor:pointer;transition:transform var(--dur-1) var(--ease-out), background-color var(--dur-2) var(--ease-out), opacity var(--dur-2);border-radius:999px}.button:active:not(:disabled){transform:scale(.97)}.button--secondary{color:var(--ink);background:0 0}.button--secondary:hover:not(:disabled){background:color-mix(in srgb, var(--ink) 6%, transparent)}.button--stack{width:min(100%,20rem);font-size:1.0625rem}.button--small{min-height:2.25rem;padding:0 var(--space-4);font-size:.875rem}.button--wide{width:100%}.button:disabled{cursor:not-allowed;opacity:.4}.link-button{padding:var(--space-2);color:var(--muted);font:.9375rem var(--font-body);text-underline-offset:.2em;cursor:pointer;background:0 0;border:0;text-decoration:underline}:is(.button,.tile-button,.icon-button,.link-button,.modal__close,.input):focus-visible{outline:3px solid var(--ink);outline-offset:2px}.score-row{place-items:center;width:100%;min-height:2.5rem;display:grid;position:relative}.toast-region{z-index:5;pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.toast{padding:var(--space-2) var(--space-4);background:var(--ink);color:var(--paper);white-space:nowrap;box-shadow:var(--shadow-soft);animation:toast-in var(--dur-2) var(--ease-spring);border-radius:999px;margin:0;font-weight:700}.toast--good{border:1px solid var(--mint-edge);background:var(--mint);color:var(--mint-ink)}.modal-backdrop{z-index:20;padding:var(--space-4);background:var(--backdrop);animation:fade-in var(--dur-2) var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.modal{width:min(100%,30rem);max-height:calc(100vh - 2rem);padding:var(--space-6);border-radius:var(--radius-lg);background:var(--paper);box-shadow:var(--shadow);animation:slide-up var(--dur-3) var(--ease-spring);position:relative;overflow-y:auto}.modal__close{top:var(--space-2);right:var(--space-2);width:2.5rem;height:2.5rem;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:50%;font-size:1.75rem;line-height:1;position:absolute}.modal__title{padding-right:var(--space-8);font-family:var(--font-display);font-size:1.75rem}.modal__lead{font-size:1.125rem}.modal__note{color:var(--muted);font-size:.875rem}.modal__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.rules{margin:0;padding-left:1.25rem}.rules li+li{margin-top:var(--space-2)}.example{align-items:center;gap:var(--space-1);margin:var(--space-3) 0;--tile:2.25rem;flex-direction:column;display:flex}.word-tiles{gap:var(--space-1);display:flex}.demo{align-items:center;gap:var(--space-3);padding:var(--space-4);border-radius:var(--radius-lg);background:var(--lavender);flex-direction:column;margin:0;display:flex}.demo__stage{align-items:center;gap:var(--space-3);--tile:2.25rem;flex-direction:column;justify-content:flex-end;min-height:15rem;display:flex}.demo__tower{--tile:2rem}.demo__row{min-height:2.25rem}.demo__row .tile{animation:float-in var(--dur-3) var(--ease-spring)}.demo__caption{min-height:1.5em;margin:0;font-weight:600}.hero-score{align-items:center;gap:var(--space-1);padding:var(--space-6) var(--space-4);border-radius:var(--radius-lg);background:var(--lavender);text-align:center;animation:rise-in var(--dur-4) var(--ease-out);flex-direction:column;display:flex}.hero-score__value{font-family:var(--font-display);font-variant-numeric:tabular-nums;margin:0;font-size:4rem;font-weight:700;line-height:1}.hero-score__label{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.875rem}.hero-score__standing{margin:var(--space-2) 0 0;font-weight:600}.stats{justify-content:center;gap:var(--space-8);margin:var(--space-4) 0 0;display:flex}.stats__item{text-align:center}.stats dt{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem}.stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.5rem;font-weight:700}.par{animation-delay:.12s}.par__tower{margin-top:var(--space-2);--tile:clamp(1.5rem, 7vw, 2rem)}.par__floor{animation:drop-in var(--dur-4) var(--ease-spring) both;flex-direction:column;align-items:center;gap:.125rem;display:flex}.par__also{color:var(--muted);font-size:.75rem}.share{text-align:center}.share h3{font-size:1.125rem}.share__text{margin:var(--space-3) 0;font-family:var(--font-body);white-space:pre-wrap;-webkit-user-select:all;user-select:all;font-size:1rem;line-height:1.3}.share__note{min-height:1.5em;margin:var(--space-2) 0 0;color:var(--mint-ink);font-weight:600}.name-form__row{gap:var(--space-2);display:flex}.input{min-width:0;min-height:3rem;padding:0 var(--space-4);border:2px solid var(--tile-edge);background:var(--paper);color:var(--ink);font:1rem var(--font-body);border-radius:999px;flex:1}.input[aria-invalid=true]{border-color:#b3261e}.name-form__note,.name-form__error{min-height:1.5em;margin:0;font-size:.9375rem}.name-form__error{color:#b3261e}@media (prefers-color-scheme:dark){.name-form__error{color:#ffb4ab}.input[aria-invalid=true]{border-color:#ffb4ab}}.leaderboard{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.leaderboard th,.leaderboard td{padding:var(--space-2) var(--space-1);border-bottom:1px solid var(--line);text-align:right}.leaderboard th:nth-child(2),.leaderboard td:nth-child(2){overflow-wrap:anywhere;text-align:left}.leaderboard th{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:.75rem;font-weight:700}.leaderboard .is-you td{background:var(--mint);color:var(--mint-ink);font-weight:700}.next-puzzle{margin:var(--space-2) 0 0;text-align:center}.next-puzzle__label{color:var(--muted)}.next-puzzle__time{font-variant-numeric:tabular-nums;font-weight:700}.turnstile:empty{display:none}.drag-ghost{z-index:30;filter:drop-shadow(var(--shadow-soft));pointer-events:none;position:fixed;transform:translate(-50%,-60%)scale(1.1)rotate(-3deg)}@keyframes pop{0%{opacity:0;transform:scale(.6)}}@keyframes float-in{0%{opacity:0;transform:translateY(.5rem)scale(.85)}}@keyframes drop-in{0%{opacity:0;transform:translateY(-1.25rem)}}@keyframes rise-in{0%{opacity:0;transform:translateY(.75rem)}}@keyframes screen-in{0%{opacity:0;transform:translateY(.5rem)}}@keyframes toast-in{0%{opacity:0;transform:translateY(-.5rem)scale(.96)}}@keyframes shake{20%,60%{transform:translate(-.4rem)}40%,80%{transform:translate(.4rem)}}@keyframes fade-in{0%{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(1rem)scale(.98)}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
