:root{--ink:#10222c;--paper:#183240;--paper-2:#214454;--text:#f4efe4;--muted:#8aa0a8;--line:#2c5060;--gold:#f0c14a;--gold-dim:#f0c14a29;--teal:#4ec9a8;--teal-dim:#4ec9a824;--today:#4ec9a8;--later:#7aa0c4;--math:#5b9bd5;--reading:#e08a4a;--science:#6ecf8a;--other:#c490b0;--danger:#e07070;--ok:#7cba86;--ok-dim:#7cba8624;--focus-ring:#f0c14a61;color:var(--text);background:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Nunito,Trebuchet MS,Segoe UI,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(820px 380px at 92% -6%, #f0c14a29, transparent 54%), radial-gradient(640px 320px at 8% 0%, #4ec9a81f, transparent 50%), var(--ink);min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}button,input,select,textarea{font-family:inherit}button{cursor:pointer}input,select,textarea{color:var(--text)}.app{width:min(820px,100% - 32px);margin:0 auto;padding:28px 0 72px}.top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.brand{align-items:center;gap:12px;display:flex}.mark{flex:none;width:48px;height:48px}h1{letter-spacing:-.03em;margin:0;font-size:1.9rem;font-weight:750}.tag{color:var(--gold);margin:2px 0 0;font-size:.98rem;font-weight:650}.tools{z-index:20;flex-wrap:wrap;gap:8px;display:flex;position:relative}.ghost,.tiny,.solid{color:var(--text);border:1px solid var(--line);background:0 0;border-radius:999px;padding:7px 14px;font-size:.86rem}.ghost:hover,.tiny:hover{background:var(--paper)}.ghost.danger,.tiny.danger{color:var(--danger)}.ghost.warn,.tiny.warn{color:var(--danger);background:#e070701f;border-color:#e0707073}.ghost:disabled,.tiny:disabled,.solid:disabled{opacity:.4;cursor:not-allowed}.solid{background:var(--gold);border-color:var(--gold);color:#1a140c;font-weight:700}.solid:hover:not(:disabled){filter:brightness(1.05)}.solid.wide{width:100%;min-height:48px;font-size:1.02rem}.tiny{padding:4px 10px;font-size:.74rem}.blurb{color:var(--muted);max-width:52rem;margin:14px 0 0;font-size:.92rem}.empty{color:var(--muted);margin:0;font-size:.92rem}.notice{background:var(--gold-dim);color:var(--gold);border:1px solid #f0c14a66;border-radius:12px;margin:14px 0 0;padding:10px 14px;font-size:.92rem}.notice.ok{background:var(--ok-dim);color:var(--ok);border-color:#7cba8659}button.notice{text-align:left;cursor:pointer;width:100%;display:block}.kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--gold);margin:0 0 10px;font-size:.72rem}.counts{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.counts li{border:1px solid var(--line);background:var(--paper);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:.82rem}.counts strong{font-variant-numeric:tabular-nums;color:var(--text);margin-right:4px}.counts .todo{color:var(--today);border-color:#4ec9a866}.counts .done{color:var(--later);border-color:#7aa0c466}.counts .stars{color:var(--gold);border-color:#f0c14a73}.composer{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-top:22px;padding:16px}.hint{color:var(--muted);margin:0;font-size:.8rem}.hint.tight{margin:-4px 0 10px}.gate-form{gap:10px;display:grid}.gate-form label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:4px;font-size:.72rem;display:grid}.fields{gap:10px;display:grid}input[type=text],textarea,select{background:var(--paper-2);border:1px solid var(--line);width:100%;min-width:0;color:var(--text);resize:vertical;border-radius:12px;padding:9px 12px;font-size:1rem}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--paper-2);color:var(--text);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:.84rem}.chip.on{border-color:var(--gold);background:var(--gold-dim);color:var(--gold);font-weight:700}.chip.Math.on{color:var(--math);background:#5b9bd524;border-color:#5b9bd58c}.chip.Reading.on{color:var(--reading);background:#e08a4a24;border-color:#e08a4a8c}.chip.Science.on{color:var(--science);background:#6ecf8a24;border-color:#6ecf8a8c}.chip.Other.on{color:var(--other);background:#c490b024;border-color:#c490b08c}.chip.today.on{color:var(--today);background:var(--teal-dim);border-color:#4ec9a88c}.chip.later.on{color:var(--later);background:#7aa0c424;border-color:#7aa0c48c}.section{margin-top:28px}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px;display:flex}.section-head .kicker{margin:0}.list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.card{border:1px solid var(--line);background:var(--paper);border-radius:14px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:12px 14px;display:grid}.card.done{opacity:.82}.card h2{margin:0;font-size:1.08rem;font-weight:700}.card.done h2{color:var(--muted);text-decoration:line-through}.meta{flex-wrap:wrap;gap:6px;margin:4px 0 0;display:flex}.badge{border:1px solid var(--line);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-radius:999px;width:fit-content;margin:0;padding:2px 8px;font-size:.68rem;display:inline-block}.badge.Math{color:var(--math);border-color:#5b9bd573}.badge.Reading{color:var(--reading);border-color:#e08a4a73}.badge.Science{color:var(--science);border-color:#6ecf8a73}.badge.Other{color:var(--other);border-color:#c490b073}.badge.today{color:var(--today);border-color:#4ec9a873}.badge.later{color:var(--later);border-color:#7aa0c473}.check{border:2px solid var(--line);background:var(--paper-2);width:40px;height:40px;color:var(--muted);border-radius:50%;flex:none;place-items:center;padding:0;font-size:1.15rem;font-weight:700;display:grid}.check.on{border-color:var(--gold);background:var(--gold);color:#1a140c}.row-actions{flex-wrap:wrap;gap:6px;display:flex}.empty-bar{width:100%;min-height:72px;color:var(--danger);cursor:pointer;z-index:50;background:#e0707029;border:1px solid #e0707073;border-radius:12px;margin:14px 0 0;font-size:1.05rem;font-weight:650;display:block;position:relative}.foot{color:var(--muted);margin-top:22px;font-size:.8rem}button:focus,input:focus,textarea:focus,select:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--focus-ring);outline:none}
