:root{color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);--bg: #EEF2F1;--surface: #FFFFFF;--sunk: #E3E9E8;--ink: #17262B;--muted: #55676C;--line: #CCD7D6;--accent: #2C6A74;--accent-ink: #FFFFFF;--accent-soft: #D6E8EA;--s0: #CFE6D2;--s1: #EFD27A;--s2: #E39A52;--s3: #C2413B;--win: #5DA56F;--mid: #E9C25A;--wave: #C2413B;--unlogged: #E3E9E8;--good: #3E7B54;--warn: #9A6400;--alert: #B3261E;--alert-soft: #FBE3E0;--display: "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--body: "Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0F1A1D;--surface: #17252A;--sunk: #1E2F34;--ink: #E4EEEE;--muted: #9AB0B3;--line: #2C4248;--accent: #7CC3CC;--accent-ink: #0F1A1D;--accent-soft: #1F3C42;--s0: #2F5139;--s1: #CDAE4F;--s2: #D9874A;--s3: #E0605A;--win: #5DB476;--mid: #D9B44F;--wave: #E0605A;--unlogged: #1E2F34;--good: #7FC296;--warn: #E3B04B;--alert: #FF8A80;--alert-soft: #3B1D1B;color-scheme:dark}}:root[data-theme=dark]{--bg: #0F1A1D;--surface: #17252A;--sunk: #1E2F34;--ink: #E4EEEE;--muted: #9AB0B3;--line: #2C4248;--accent: #7CC3CC;--accent-ink: #0F1A1D;--accent-soft: #1F3C42;--s0: #2F5139;--s1: #CDAE4F;--s2: #D9874A;--s3: #E0605A;--win: #5DB476;--mid: #D9B44F;--wave: #E0605A;--unlogged: #1E2F34;--good: #7FC296;--warn: #E3B04B;--alert: #FF8A80;--alert-soft: #3B1D1B;color-scheme:dark}*{box-sizing:border-box}html{scroll-padding-top:env(safe-area-inset-top,0px)}body{background:var(--bg);color:var(--ink);font:16px/1.55 var(--body);margin:0;padding:0}body:before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}.wrap{max-width:860px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:20px 64px}h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.15}h1{font-size:clamp(1.9rem,5vw,2.6rem);font-weight:700;letter-spacing:-.01em}h2{font-size:1.45rem;font-weight:700}h3{font-size:1.08rem;font-weight:700}p{margin:0}.muted{color:var(--muted)}.small{font-size:.88rem}.label{font:500 .74rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}header.top{display:grid;gap:10px;padding-block:8px 18px}.top-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}.user-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.scale-strip{display:flex;gap:4px;align-items:center}.scale-strip i{display:block;width:28px;height:8px;border-radius:2px}.status{font-size:.85rem;color:var(--muted)}nav.tabs{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:var(--bg);display:flex;gap:4px;overflow-x:auto;padding-block:8px;border-bottom:1px solid var(--line);margin-bottom:22px;scrollbar-width:none}nav.tabs button{flex:0 0 auto;border:0;background:transparent;padding:9px 14px;border-radius:999px;cursor:pointer;font-weight:700;color:var(--muted)}nav.tabs button[aria-selected=true]{background:var(--ink);color:var(--bg)}nav.tabs button.sos{color:var(--alert)}nav.tabs button.sos[aria-selected=true]{background:var(--alert);color:var(--surface)}nav.tabs button.admin-tab{color:var(--accent)}nav.tabs button.admin-tab[aria-selected=true]{background:var(--accent);color:var(--accent-ink)}section.view{display:grid;gap:22px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.field{display:grid;gap:6px;min-width:0}.field label{font-weight:700;font-size:.92rem}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],textarea,select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:9px 11px}textarea{min-height:90px;resize:vertical}input[type=range]{width:100%;accent-color:var(--accent)}.btn{border:1px solid var(--line);background:var(--surface);padding:9px 15px;border-radius:8px;cursor:pointer;font-weight:700}.btn.small-btn{padding:6px 11px;font-size:.85rem}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.btn.danger{background:var(--alert-soft);color:var(--alert);border-color:var(--alert)}.btn:disabled{opacity:.5;cursor:default}.chip{border:1px solid var(--line);background:var(--surface);padding:6px 12px;border-radius:999px;cursor:pointer;font-size:.9rem}.chip[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--ink);font-weight:700}.daybar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.daybar .date{font-family:var(--display);font-size:1.25rem;font-weight:700}.load{display:flex;align-items:baseline;gap:8px}.load b{font:500 2.2rem/1 var(--mono)}details.cat{border-top:1px solid var(--line)}details.cat:first-of-type{border-top:0}details.cat summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:10px;align-items:center;padding:14px 2px;font-family:var(--display);font-weight:700;font-size:1.05rem}details.cat summary::-webkit-details-marker{display:none}details.cat summary:after{content:"+";font-family:var(--mono);color:var(--muted)}details.cat[open] summary:after{content:"−"}.sym{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-top:1px dashed var(--line)}.sym .nm{min-width:0}.sym .nm small{display:block;color:var(--muted);font-size:.8rem}.sym .flag{color:var(--alert);font-weight:700;font-size:.75rem;margin-left:6px;font-family:var(--mono)}.seg{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:var(--surface);width:38px;height:36px;cursor:pointer;font:500 .9rem var(--mono);border-left:1px solid var(--line)}.seg button:first-child{border-left:0}.seg button[aria-pressed=true][data-v="0"]{background:var(--s0);color:#17262b;font-weight:700}.seg button[aria-pressed=true][data-v="1"]{background:var(--s1);color:#1b1b1b;font-weight:700}.seg button[aria-pressed=true][data-v="2"]{background:var(--s2);color:#1b1b1b;font-weight:700}.seg button[aria-pressed=true][data-v="3"]{background:var(--s3);color:#fff;font-weight:700}.count{font:500 .8rem var(--mono);color:var(--muted)}.alertbox{background:var(--alert-soft);border:1px solid var(--alert);border-radius:12px;padding:16px;display:grid;gap:8px}.alertbox h3{color:var(--alert)}.callout{border-left:4px solid var(--accent);padding:4px 0 4px 14px}.chartbox{overflow-x:auto}.chartbox svg{display:block;width:100%;min-width:520px;height:auto}.heat{overflow-x:auto}.heat table{border-collapse:separate;border-spacing:3px;font-size:.82rem}.heat th{font-weight:400;text-align:left;white-space:nowrap;padding-right:8px;color:var(--muted)}.heat td{width:22px;height:22px;border-radius:4px}.heat thead th{font:500 .68rem var(--mono);text-align:center;padding:0}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.stat{background:var(--sunk);border-radius:10px;padding:12px 14px;display:grid;gap:4px}.stat b{font:500 1.5rem/1.1 var(--mono)}.example-tag{display:inline-block;background:var(--s1);color:#1b1b1b;font:500 .72rem var(--mono);padding:3px 8px;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.months{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}.month h3{margin-bottom:8px}.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal .dow{font:500 .66rem var(--mono);color:var(--muted);text-align:center}.cal .d{aspect-ratio:1;max-width:100%;border-radius:6px;display:grid;place-items:center;font:500 .78rem var(--mono);border:0;padding:0;background:var(--unlogged);color:var(--muted)}.cal button.d{cursor:pointer}.cal .d.window{background:var(--win);color:#0e2416;font-weight:700}.cal .d.mid{background:var(--mid);color:#2a2108;font-weight:700}.cal .d.wave{background:var(--wave);color:#fff;font-weight:700}.cal .d.future{background:transparent;opacity:.35}.cal .d.today{outline:2px solid var(--ink);outline-offset:1px}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.88rem}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:14px;height:14px;border-radius:4px;display:inline-block}.hope{background:var(--surface);border:1px solid var(--line);border-left:6px solid var(--win);border-radius:4px 12px 12px 4px;padding:16px 18px;display:grid;gap:6px}.hope h2{font-size:1.3rem}.streak{display:flex;gap:2px;flex-wrap:wrap}.streak i{width:10px;height:22px;border-radius:2px}.overall .chip[data-ov=window][aria-pressed=true]{background:var(--win);border-color:var(--win);color:#0e2416}.overall .chip[data-ov=mid][aria-pressed=true]{background:var(--mid);border-color:var(--mid);color:#2a2108}.overall .chip[data-ov=wave][aria-pressed=true]{background:var(--wave);border-color:var(--wave);color:#fff}.heat th.sticky{position:sticky;left:0;background:var(--surface);z-index:1}.heat .mrow th{font:500 .68rem var(--mono);color:var(--muted);text-align:left;padding:0}.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.tool{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:8px;align-content:start}.tool ul{margin:0;padding-left:20px}.pacer{display:grid;place-items:center;gap:14px;padding:12px 0}.orb{width:180px;height:180px;max-width:100%;border-radius:50%;background:radial-gradient(circle at 40% 35%,var(--accent-soft),var(--accent));transform:scale(.55);transition:transform 4s ease-in-out;display:grid;place-items:center}.orb span{font-family:var(--display);font-weight:700;color:var(--accent-ink);font-size:1.05rem}.ground-step{font-family:var(--display);font-size:1.3rem;font-weight:700}.libtools{display:grid;gap:12px}.lib-item{border-top:1px solid var(--line)}.lib-item summary{cursor:pointer;list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:12px 2px;align-items:center}.lib-item summary::-webkit-details-marker{display:none}.lib-item .body{padding:0 2px 16px;display:grid;gap:10px;max-width:68ch}.tags{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}.tag{font:500 .68rem var(--mono);padding:2px 6px;border-radius:4px;background:var(--sunk);color:var(--muted)}.tag.red{background:var(--alert-soft);color:var(--alert)}.tag.accent{background:var(--accent-soft);color:var(--ink)}.tag.good{background:var(--s0);color:#17262b}.classcard{display:grid;gap:8px}.timeline{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;font-size:.93rem}.timeline dt{font:500 .78rem var(--mono);color:var(--muted);padding-top:2px}.timeline dd{margin:0}.copyline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.copyline code{font:500 1.05rem var(--mono);background:var(--sunk);padding:4px 10px;border-radius:6px;-webkit-user-select:all;user-select:all}.auth-card{max-width:460px;margin:32px auto}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;border-collapse:collapse;font-size:.92rem}.admin-table th,.admin-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:middle}.admin-table th{font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1a1d8c;display:grid;place-items:center;padding:16px;z-index:30}.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:22px;width:100%;max-width:480px;display:grid;gap:14px}.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:8px;font-weight:700;z-index:50}footer{margin-top:40px;font-size:.85rem;color:var(--muted);max-width:68ch}@media(prefers-reduced-motion:reduce){.orb{transition:none}}@media(max-width:480px){.seg button{width:34px}}
