:root{--bg:#000;--bg-raised:#111;--fg:#fff;--fg-muted:#ffffff80;--fg-faint:#ffffff40;--line:#ffffff1a;--accent:#39b54a;--accent-fg:#000;--danger:#f9423a;--surface:#262626;--field:#fff;--field-fg:#111;--font-display:"Manrope", system-ui, sans-serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"DM Mono", ui-monospace, monospace;--font-serif:"IBM Plex Serif", Georgia, serif;--text-xs:clamp(.75rem, .72rem + .15vw, .8125rem);--text-sm:clamp(.875rem, .85rem + .15vw, .9375rem);--text-md:clamp(1rem, .97rem + .2vw, 1.0625rem);--text-lg:clamp(1.25rem, 1.15rem + .5vw, 1.5rem);--text-xl:clamp(1.625rem, 1.4rem + 1vw, 2.125rem);--text-2xl:clamp(2rem, 1.6rem + 1.8vw, 2.75rem);--gutter:clamp(1rem, 4vw, 1.5rem);--space-xs:.5rem;--space-s:clamp(.75rem, 1.5vw, 1rem);--space-m:clamp(1.25rem, 3vw, 1.75rem);--space-l:clamp(2rem, 5vw, 3rem);--radius:14px;--tabbar-h:3.75rem;--content-max:40rem}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%;overscroll-behavior:none}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--text-md);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation;margin:0;line-height:1.5;overflow:hidden}h1,h2,h3,p,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit;text-decoration:none}button,input{font:inherit;color:inherit}button{cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{flex-direction:column;height:100dvh;display:flex}.app-main{flex:1;min-height:0;display:flex}.screen{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;min-height:0;padding-top:env(safe-area-inset-top);flex:1;overflow-y:auto}.screen-header{z-index:5;align-items:flex-end;gap:var(--space-xs);padding:var(--space-m) var(--gutter) var(--space-s);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(14px);max-width:var(--content-max);width:100%;margin-inline:auto;display:flex;position:sticky;top:0}.screen-heading{flex:1;min-width:0}.screen-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-2xl);letter-spacing:-.03em;text-wrap:balance;line-height:1.1}.screen-title.is-compact{font-size:var(--text-xl);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.screen-action{flex:none;padding-bottom:.35rem}.screen-body{padding:var(--space-xs) var(--gutter) calc(var(--space-l) + env(safe-area-inset-bottom));max-width:var(--content-max);width:100%;margin-inline:auto}.icon-button{width:2.5rem;height:2.5rem;color:var(--fg-muted);border-radius:999px;justify-content:center;align-items:center;margin-bottom:.15rem;margin-left:-.6rem;display:inline-flex}.icon-button:active{background:var(--bg-raised)}.tabbar{border-top:1px solid var(--line);background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(14px);padding-bottom:env(safe-area-inset-bottom);-webkit-user-select:none;user-select:none;flex:none;justify-content:space-around;display:flex}.tab{height:var(--tabbar-h);color:var(--fg-muted);font-family:var(--font-display);letter-spacing:.01em;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.2rem;font-size:.7rem;font-weight:500;transition:color .12s;display:flex}.tab span:before{content:"."}.tab.is-active{color:var(--accent)}.tab:active{color:var(--fg)}@media (width>=48rem){.app{flex-direction:row}.tabbar{border-top:0;border-right:1px solid var(--line);width:5.5rem;padding-top:var(--space-m);flex-direction:column;order:-1;justify-content:flex-start}.tab{flex:none;height:4.25rem}}.eyebrow{font-family:var(--font-mono);font-weight:300;font-size:var(--text-xs);color:var(--fg-muted)}.body{max-width:60ch}.muted{color:var(--fg-muted)}.meta{font-family:var(--font-mono);font-weight:300;font-size:var(--text-xs);color:var(--fg-muted)}.quote{font-family:var(--font-serif);font-style:italic;font-weight:300;font-size:var(--text-lg);max-width:34ch;margin-top:var(--space-xs);line-height:1.35}.byline{font-size:var(--text-sm);color:var(--fg-muted);margin-top:var(--space-xs)}.code{font-family:var(--font-mono);font-size:var(--text-xl);letter-spacing:.12em;color:var(--fg)}.list{gap:var(--space-s);margin-top:var(--space-s);display:grid}.list-tight{gap:var(--space-xs)}.card{padding:var(--space-m) var(--space-m);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);gap:.35rem;transition:border-color .12s,transform .12s;display:grid}.card-clickable{position:relative}.card-clickable:active{border-color:var(--fg-faint);transform:scale(.985)}.stretched:after{content:"";border-radius:inherit;position:absolute;inset:0}.foot-link{z-index:1;position:relative}.foot-link:active .foot-strong{color:var(--fg)}.card-static{gap:var(--space-s)}.card-row{justify-content:space-between;align-items:center;gap:var(--space-xs);display:flex}.card-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-xl);letter-spacing:-.025em;line-height:1.15}.pill{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 40%, transparent);border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;display:inline-flex}.pill-muted{color:var(--fg-muted);border-color:var(--line)}.banner{padding:var(--space-s) var(--space-m);margin-top:var(--space-xs);border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 12%, var(--bg-raised));border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);gap:.15rem;display:grid}.banner-static{background:var(--bg-raised);border-color:var(--line)}.banner-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-md);color:var(--accent)}.progress{background:var(--fg-faint);height:4px;margin-top:var(--space-xs);border-radius:999px;overflow:hidden}.progress>span{background:var(--accent);border-radius:inherit;height:100%;transition:width .24s ease-out;display:block}.play{align-items:center;gap:var(--space-s);width:100%;padding:var(--space-s) var(--space-m);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);transition:border-color .12s;display:flex}.play:active{border-color:var(--fg-faint)}.play-check{border:1.5px solid var(--fg-faint);width:1.75rem;height:1.75rem;color:var(--accent-fg);border-radius:999px;flex:none;justify-content:center;align-items:center;transition:background .12s,border-color .12s;display:inline-flex}.play.is-done .play-check{background:var(--accent);border-color:var(--accent)}.play-text{flex:1;gap:.1rem;min-width:0;display:grid}.play-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-md);letter-spacing:-.01em}.play.is-done .play-title{color:var(--fg-muted)}.member{align-items:center;gap:var(--space-s);padding:.35rem 0;display:flex}.member-name{min-width:0;font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;flex:1;font-weight:500;overflow:hidden}.member-progress{flex:0 0 34%}.member-progress .progress{margin-top:0}.rank{width:1.25rem;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-muted);text-align:right}.avatar{background:var(--surface);width:2.25rem;height:2.25rem;font-family:var(--font-display);letter-spacing:.02em;border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:.8rem;font-weight:600;display:inline-flex}.paywall{gap:var(--space-s);margin-top:var(--space-m);display:grid}.profile-head{align-items:flex-end;gap:var(--space-s);display:flex}.profile-head .avatar{width:3.25rem;height:3.25rem;margin-bottom:.1rem;font-size:1rem}.profile-head .field{flex:1}.stats{gap:var(--space-xs);margin-top:var(--space-m);grid-template-columns:repeat(3,1fr);display:grid}.stat{padding:var(--space-s);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius);gap:.15rem;display:grid}.stat-value{font-family:var(--font-display);font-weight:500;font-size:var(--text-xl);letter-spacing:-.03em;line-height:1}.form{gap:var(--space-s);margin-top:var(--space-m);display:grid}.field{gap:.375rem;display:grid}.field label{font-size:var(--text-xs);color:#888;font-weight:500}.field input{background:var(--field);width:100%;color:var(--field-fg);border:0;border-radius:10px;padding:.85rem 1rem;font-size:16px}.field input::placeholder{color:#999}.button{background:var(--surface);width:100%;min-height:3rem;font-family:var(--font-display);font-weight:600;font-size:var(--text-sm);border-radius:12px;justify-content:center;align-items:center;padding:.75rem 1.25rem;transition:filter .12s,transform .12s;display:inline-flex}.button:active{filter:brightness(1.15);transform:scale(.985)}.button-primary{background:var(--accent);color:var(--accent-fg)}.text-button{font-family:var(--font-display);font-weight:500;font-size:var(--text-sm);color:var(--fg-muted);padding:.35rem 0}.text-button:active{color:var(--fg)}.text-button.danger{color:var(--danger)}:root{--acid:#e5484d;--alk:#6e8bf5}.spine-wrap{margin-top:var(--space-m);padding:var(--space-s) var(--space-m);background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius)}.spine{background:linear-gradient(90deg, var(--acid), #b08a2e 32%, var(--accent) 50%, #3e6fb0 68%, var(--alk));border-radius:6px;height:10px;margin:.5rem 0 .75rem;position:relative}.spine-goal{background:var(--fg);opacity:.6;width:2px;height:22px;position:absolute;top:-6px;transform:translate(-50%)}.spine-dot{border:3px solid var(--bg-raised);border-radius:999px;width:20px;height:20px;transition:left .3s ease-out;position:absolute;top:-5px;transform:translate(-50%)}.spine-labels{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-muted);justify-content:space-between;display:flex}.poles{gap:var(--space-xs);margin:var(--space-s) 0 var(--space-m);grid-template-columns:repeat(auto-fit,minmax(min(12rem,100%),1fr));display:grid}.pole{padding:var(--space-s);border:1px solid var(--line);border-radius:var(--radius);gap:.25rem;display:grid}.pole-title{font-family:var(--font-display);font-weight:600;font-size:var(--text-sm)}.steps{margin-top:var(--space-s);gap:4px;display:flex}.steps>span{background:var(--fg-faint);border-radius:2px;flex:1;height:3px}.steps>.is-done{background:var(--accent)}.steps>.is-current{background:var(--fg)}.option{align-items:center;gap:var(--space-s);width:100%;padding:var(--space-s) var(--space-m);background:var(--bg-raised);border:1.5px solid var(--line);border-radius:var(--radius);line-height:1.4;font-size:var(--text-sm);transition:border-color .12s,background .12s;display:flex}.option:active{border-color:var(--fg-faint)}.option.is-on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--bg-raised))}.option-emoji{flex:none;font-size:1.5rem;line-height:1}.reading{align-items:center;gap:var(--space-m);margin-top:var(--space-xs);display:flex}.reading>div{display:grid}.reading-emoji{font-size:3.5rem;line-height:1}.reading-ph{font-family:var(--font-display);font-weight:500;font-size:var(--text-2xl);letter-spacing:-.03em;line-height:1}.test-banner{align-items:center;gap:var(--space-s);grid-template-columns:auto 1fr}.test-emoji{font-size:2rem;line-height:1}a.button{text-align:center}.play-icon{background:var(--accent);flex:none;justify-content:center;align-items:center;display:inline-flex;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.play-icon.is-placeholder{border:1.5px dashed var(--fg-faint);color:var(--fg-faint);font-family:var(--font-mono);background:0 0;border-radius:12px;font-size:1.1rem}.card-head{align-items:center;gap:var(--space-s);margin-top:.25rem;display:flex}.card-head>div{min-width:0}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.screen-header-bare{padding-bottom:var(--space-xs);align-items:center}.cover{object-fit:contain;object-position:top;border-radius:var(--radius);background:#0b0b0c;width:100%;max-height:72dvh;display:block}.cover-placeholder{aspect-ratio:9/12;border:1px dashed var(--fg-faint);place-content:center;justify-items:center;gap:var(--space-s);max-height:60dvh;display:grid}.cover-title{font-family:var(--font-display);font-weight:500;font-size:var(--text-xl);letter-spacing:-.02em;text-align:center}.invite{margin-top:var(--space-m);border-color:color-mix(in srgb, var(--accent) 45%, transparent)}.card-foot{gap:var(--space-xs);margin-top:var(--space-s);padding-top:var(--space-s);border-top:1px solid var(--line);display:grid}.card-foot .progress{margin-top:0}.foot-strong{font-family:var(--font-display);font-weight:600;font-size:var(--text-sm)}.accent-text{color:var(--accent)}.button-small{min-height:2.5rem;padding:.5rem 1rem}
