:root{color-scheme:light;--paper: #faf8f1;--paper-soft: #f1ede1;--ink: #0f1218;--ink-soft: #2a2f3a;--rule: #14202e;--rule-faint: #d8d2c2;--muted: #6b6f7a;--meter: #1a3a8a;--meter-glow: #3858d4;--accent: #b8323f;--accent-soft: #f5dada;--gold: #b8841f;--gold-soft: #f4ead0;--green: #2a8f4b;--green-soft: #dcefe1;--backdrop: rgba(15, 18, 24, .94);--font-display: "Space Grotesk", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--text-eyebrow: .6875rem;--text-meta: .875rem;--text-body: 1rem;--text-h3: 1.375rem;--text-h2: 2rem;--text-h1: clamp(1.375rem, 2.75vw, 1.75rem);--text-display: clamp(1.625rem, 3.25vw, 2.125rem);--text-countdown: clamp(9rem, 32vw, 18rem);--gutter: clamp(1.25rem, 3vw, 2.25rem);--rhythm-1: .25rem;--rhythm-2: .5rem;--rhythm-3: 1rem;--rhythm-4: 1.5rem;--rhythm-5: 2.25rem;--rhythm-6: 3.5rem;--rhythm-7: 5rem;--rule-width: 1.5px;--rule-heavy: 4px;--tnum: "tnum" 1, "lnum" 1}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;padding:0}body{font-family:var(--font-display);font-size:var(--text-body);line-height:1.55;color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}header{background-color:var(--paper);border-bottom:var(--rule-width) solid var(--rule);padding:.875rem var(--gutter)}header nav{max-width:880px;margin:0 auto;display:flex;align-items:center;gap:var(--rhythm-4)}header nav .brand{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);text-decoration:none;margin-right:auto;padding:.25rem 0;border-bottom:2px solid transparent;transition:color .12s ease,border-color .12s ease}header nav .brand:hover{color:var(--accent)}header nav a{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);text-decoration:none;padding:.25rem 0;border-bottom:2px solid transparent;transition:color .12s ease,border-color .12s ease}header nav a:hover{color:var(--ink)}header nav a.active{color:var(--ink);border-bottom-color:var(--accent)}#app{max-width:880px;margin:0 auto;padding:var(--rhythm-6) var(--gutter) var(--rhythm-7)}h1,h2,h3{margin:0 0 var(--rhythm-3);font-weight:700;letter-spacing:-.015em;line-height:1.1}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2);font-weight:600}h3{font-size:var(--text-h3);font-weight:500}p{margin:0 0 var(--rhythm-3)}a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}a:hover{color:var(--accent)}.eyebrow{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--rhythm-3)}.eyebrow--accent{color:var(--accent)}.eyebrow--gold{color:var(--gold)}.eyebrow--green{color:var(--green)}.display-heading{font-size:var(--text-display);font-weight:700;letter-spacing:-.02em;line-height:1.1;margin:0 0 var(--rhythm-4)}.tabular{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums}label{display:block;font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 var(--rhythm-2)}input,textarea{font:inherit;color:var(--ink);width:100%;background-color:transparent;border:none;border-bottom:var(--rule-width) solid var(--ink);border-radius:0;padding:.5rem 0;transition:border-color .12s ease}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,textarea:focus{outline:none;border-bottom-color:var(--accent)}input:disabled,textarea:disabled{color:var(--muted);border-bottom-color:var(--rule-faint);cursor:not-allowed}button{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;padding:.875rem 1.5rem;border:var(--rule-width) solid var(--ink);background-color:var(--ink);color:var(--paper);border-radius:0;cursor:pointer;transition:background-color .12s ease,color .12s ease,border-color .12s ease}button:hover{background-color:var(--accent);border-color:var(--accent);color:var(--paper)}button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}button:disabled,button.primary:disabled,button.danger:disabled,button.ghost:disabled,.lobby-actions .start-button:disabled{background-color:transparent;color:var(--muted);border-color:var(--rule-faint);cursor:not-allowed}button.primary{background-color:var(--accent);border-color:var(--accent)}button.primary:hover{background-color:var(--ink);border-color:var(--ink)}button.danger{background-color:transparent;color:var(--accent);border-color:var(--accent)}button.danger:hover{background-color:var(--accent);color:var(--paper)}button.ghost{background-color:transparent;color:var(--ink)}button.ghost:hover{background-color:var(--ink);color:var(--paper)}.error{color:var(--accent);font-size:var(--text-meta);font-family:var(--font-mono);margin:var(--rhythm-1) 0 0}.field{margin-bottom:var(--rhythm-4)}.field input{font-size:1.125rem;font-weight:500}.create-page{display:grid;gap:var(--rhythm-4)}.create-hero{border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-width) solid var(--ink);padding:var(--rhythm-4) 0 var(--rhythm-3);display:flex;align-items:baseline;justify-content:space-between;gap:var(--rhythm-4)}.create-hero-number{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:var(--text-display);font-weight:700;letter-spacing:-.04em;line-height:1;color:var(--ink)}.create-hero-number[data-empty=true]{color:var(--rule-faint)}.create-hero-label{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-align:right;max-width:12ch}.create-form{display:grid;gap:var(--rhythm-4)}.create-form button[type=submit]{justify-self:start;padding:1rem 1.75rem}.session-page--missing{text-align:center;padding:var(--rhythm-7) 0}.session-body{display:grid;gap:var(--rhythm-4)}.username-form{display:grid;gap:var(--rhythm-3);max-width:28rem}.lobby-hero{border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-width) solid var(--ink);padding:var(--rhythm-4) 0 var(--rhythm-3);display:flex;align-items:baseline;justify-content:space-between;gap:var(--rhythm-4)}.lobby-hero-number{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:var(--text-display);font-weight:700;letter-spacing:-.04em;line-height:1;color:var(--ink)}.lobby-hero-label{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);text-align:right;max-width:12ch}.share-block{border-bottom:var(--rule-width) solid var(--rule-faint);padding-bottom:var(--rhythm-4)}.share-control{display:flex;align-items:stretch;gap:var(--rhythm-2)}.share-control input{font-family:var(--font-mono);font-size:var(--text-meta);padding:.5rem 0}.share-control button{padding:0 1rem;flex-shrink:0;min-width:9rem;text-align:center}.lobby-roster{display:grid;gap:var(--rhythm-3)}.lobby-actions{margin-top:var(--rhythm-2)}.lobby-actions .start-button{width:100%;padding:1.25rem 1.5rem;background-color:var(--accent);border-color:var(--accent);font-size:var(--text-meta)}.lobby-actions .start-button:hover{background-color:var(--ink);border-color:var(--ink)}.participant-list{display:grid;gap:0;border-top:var(--rule-width) solid var(--rule);border-bottom:var(--rule-width) solid var(--rule)}.participant-row{display:grid;grid-template-columns:minmax(0,1fr) 4.5rem;align-items:center;gap:var(--rhythm-3);padding:.875rem 0;border-bottom:var(--rule-width) solid var(--rule-faint);transition:opacity .2s ease}.participant-row:last-child{border-bottom:none}.participant-row .name{font-family:var(--font-mono);font-size:var(--text-meta);font-weight:700;letter-spacing:.05em;color:var(--ink);display:flex;align-items:center;gap:.75rem}.participant-row .name .rank-tag{display:inline-block;font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;color:var(--green);border:1.5px solid var(--green);padding:.125rem .4rem;min-width:2.75rem;text-align:center}.participant-row .name .rank-tag--first{color:var(--gold);border-color:var(--gold)}.participant-row .name .you-tag{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;color:var(--muted)}.participant-row .word-tally{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:var(--text-meta);font-weight:700;color:var(--ink);text-align:right;letter-spacing:.02em}.participant-row.disconnected .name,.participant-row.disconnected .word-tally{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--rule-faint)}.participant-row.disconnected .progress-bar{opacity:.4}.participant-row.local .name:after{content:"YOU";font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;color:var(--muted);margin-left:.5rem}.progress-bar{grid-column:1 / -1;width:100%;height:6px;background-color:var(--rule-faint);margin-top:.5rem;overflow:hidden}.progress-bar-fill{height:100%;width:0%;background-color:var(--meter);transition:width .22s ease,background-color .2s ease}.progress-bar-fill--finished{background-color:var(--green)}.progress-bar-fill--first{background-color:var(--gold)}.countdown-display{position:fixed;top:0;right:0;bottom:0;left:0;background-color:var(--backdrop);display:flex;align-items:center;justify-content:center;z-index:100}.countdown-number{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:var(--text-countdown);font-weight:700;letter-spacing:-.06em;line-height:.9;color:var(--paper);animation:countdown-pulse .9s cubic-bezier(.16,1,.3,1)}.countdown-number.pulse{animation:countdown-pulse .9s cubic-bezier(.16,1,.3,1)}@keyframes countdown-pulse{0%{transform:scale(.6);opacity:0}35%{transform:scale(1.04);opacity:1}to{transform:scale(1);opacity:1}}.active-page{display:grid;gap:var(--rhythm-3)}.session-writing{font-family:var(--font-display);font-size:1.125rem;line-height:1.65;background-color:var(--paper-soft);border:none;border-top:var(--rule-width) solid var(--rule);border-bottom:var(--rule-width) solid var(--rule);padding:var(--rhythm-4);min-height:22rem;resize:vertical;color:var(--ink);border-radius:0;transition:background-color .2s ease}.session-writing:focus{background-color:var(--paper);border-color:var(--accent)}.session-writing:disabled{background-color:var(--paper-soft);color:var(--muted)}.active-footer{display:flex;align-items:baseline;justify-content:space-between;gap:var(--rhythm-4);flex-wrap:wrap}.word-tally-block{display:flex;align-items:baseline;gap:var(--rhythm-3)}.word-tally-current{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:3rem;font-weight:700;letter-spacing:-.03em;line-height:1;color:var(--ink)}.word-tally-divider{font-family:var(--font-mono);font-size:1.5rem;font-weight:400;color:var(--muted)}.word-tally-goal{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:700;color:var(--muted)}.word-tally-label{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.you-won{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--green);margin:0;padding:.625rem .875rem;border:1.5px solid var(--green);background-color:var(--green-soft)}.you-won--first{color:var(--gold);border-color:var(--gold);background-color:var(--gold-soft)}.you-won[hidden]{display:none}.scoreboard{list-style:none;margin:0 0 var(--rhythm-5);padding:0;border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-width) solid var(--ink)}.scoreboard-row,.ended-rank-row{display:grid;grid-template-columns:5rem minmax(0,1fr) 4rem;align-items:baseline;gap:var(--rhythm-3);padding:var(--rhythm-3) 0;border-bottom:var(--rule-width) solid var(--rule-faint)}.scoreboard-row:last-child,.ended-rank-row:last-child{border-bottom:none}.scoreboard-rank,.ended-rank-label{font-family:var(--font-mono);font-size:1.125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--green)}.scoreboard-rank--first,.ended-rank-label--first{color:var(--gold)}.scoreboard-rank.dnf,.ended-rank-label.dnf{font-size:var(--text-eyebrow);letter-spacing:.16em;color:var(--muted)}.scoreboard-name,.ended-rank-name{font-family:var(--font-mono);font-size:1rem;font-weight:500;color:var(--ink)}.scoreboard-words{font-family:var(--font-mono);font-feature-settings:var(--tnum);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:700;color:var(--muted);text-align:right}.ended-actions{display:flex;gap:var(--rhythm-3);flex-wrap:wrap}.session-list{display:grid;gap:var(--rhythm-5);margin-bottom:var(--rhythm-5)}.session-card{border-top:var(--rule-heavy) solid var(--ink);padding:var(--rhythm-4) 0;display:grid;gap:var(--rhythm-3)}.session-card header{display:flex;align-items:baseline;gap:var(--rhythm-3);flex-wrap:wrap}.session-card header h2{margin:0;font-family:var(--font-mono);font-size:1.5rem;letter-spacing:.02em}.session-card .session-card-meta{display:flex;gap:var(--rhythm-4);font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);flex-wrap:wrap}.session-card textarea{font-family:var(--font-display);font-size:1rem;line-height:1.5;background-color:var(--paper-soft);border:var(--rule-width) solid var(--rule-faint);padding:var(--rhythm-3);min-height:10rem;border-radius:0;resize:vertical}.session-card .delete{justify-self:start}.badge{display:inline-block;font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--green);border:1.5px solid var(--green);padding:.125rem .5rem;line-height:1.5}.recover-page{display:grid;gap:var(--rhythm-4)}.recover-empty{border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-width) solid var(--ink);padding:var(--rhythm-6) 0;text-align:center}.recover-clear-all{justify-self:start}.lobby-page{display:grid;gap:var(--rhythm-4)}.lobby-create{justify-self:start}.lobby-list{border-top:var(--rule-heavy) solid var(--ink);border-bottom:var(--rule-width) solid var(--ink)}.lobby-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr) auto;align-items:center;gap:var(--rhythm-4);padding:var(--rhythm-4) 0;border-bottom:var(--rule-width) solid var(--rule-faint)}.lobby-row:last-child{border-bottom:none}.lobby-row .eyebrow{margin:0 0 var(--rhythm-1)}.lobby-row>div>p:last-child{margin:0;font-family:var(--font-mono);font-size:var(--text-meta);font-weight:700;color:var(--ink)}.lobby-row-host{letter-spacing:.02em}.lobby-row-host--waiting{color:var(--muted);font-weight:500!important;font-style:italic}.lobby-row button[data-join]{padding:.75rem 1.25rem}.lobby-empty{padding:var(--rhythm-6) 0;text-align:center;display:grid;gap:var(--rhythm-3)}.lobby-empty p{margin:0;font-family:var(--font-mono);font-size:var(--text-meta);color:var(--muted);letter-spacing:.04em}.lobby-status{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0}.field--checkbox{display:grid;gap:var(--rhythm-1)}.checkbox-label{display:flex;align-items:center;gap:var(--rhythm-2);cursor:pointer;text-transform:none;letter-spacing:.02em;color:var(--ink);font-family:var(--font-display);font-size:var(--text-body);font-weight:500;margin:0}.checkbox-label input[type=checkbox]{-moz-appearance:none;appearance:none;-webkit-appearance:none;width:1.25rem;height:1.25rem;border:var(--rule-width) solid var(--ink);background-color:transparent;border-radius:0;cursor:pointer;display:inline-block;flex-shrink:0;padding:0;position:relative;transition:background-color .12s ease,border-color .12s ease}.checkbox-label input[type=checkbox]:checked{background-color:var(--ink)}.checkbox-label input[type=checkbox]:checked:after{content:"";position:absolute;left:.3rem;top:.05rem;width:.35rem;height:.7rem;border-right:2px solid var(--paper);border-bottom:2px solid var(--paper);transform:rotate(45deg)}.checkbox-label input[type=checkbox]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent)}.field-hint{font-family:var(--font-mono);font-size:var(--text-eyebrow);letter-spacing:.06em;color:var(--muted);margin:0}.session-visibility{display:inline-block;font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:.125rem .5rem;line-height:1.5;margin:0 0 var(--rhythm-3)}.session-visibility--public{color:var(--green);border:1.5px solid var(--green)}.session-visibility--private{color:var(--muted);border:1.5px solid var(--rule-faint)}.end-reason{font-family:var(--font-mono);font-size:var(--text-meta);letter-spacing:.04em;color:var(--muted);margin-bottom:var(--rhythm-5)}.active-actions{display:flex;align-items:center;gap:var(--rhythm-3)}.end-button{background-color:transparent;color:var(--accent);border-color:var(--accent)}.end-button:hover{background-color:var(--accent);color:var(--paper)}@media (max-width: 640px){header nav:before{display:none}.create-hero,.lobby-hero{flex-direction:column;align-items:flex-start;gap:var(--rhythm-2)}.create-hero-label,.lobby-hero-label{text-align:left;max-width:none}.scoreboard-row,.ended-rank-row{grid-template-columns:4rem minmax(0,1fr) 3rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
