:root{--ink:#161014;--paper:#261c20;--paper-2:#322428;--text:#f6ece6;--muted:#a89088;--line:#4a3838;--gem:#e88868;--gem-dim:#e8886829;--gold:#d4a05c;--gold-dim:#d4a05c29;--slate:#7a9ab8;--slate-dim:#7a9ab829;--danger:#e07070;--ok:#7cba86;--ok-dim:#7cba8624;--focus-ring:#e8886861;color:var(--text);background:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Iowan Old Style,Palatino,Georgia,serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(780px 360px at 92% -8%, #e8886829, transparent 54%), radial-gradient(600px 300px at 8% 0%, #d4a05c1a, 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;font-family:Segoe UI,Avenir Next,system-ui,sans-serif}input,select,textarea{color:var(--text)}.app{width:min(640px,100% - 28px);margin:0 auto;padding:26px 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.85rem;font-weight:750}.tag{color:var(--gem);margin:2px 0 0;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;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(--gem);border-color:var(--gem);color:#1a0c10;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}.tiny.log{color:var(--gem);border-color:#e8886873}.blurb{color:var(--muted);margin:14px 0 0;font-size:.92rem}.empty{color:var(--muted);margin:0;font-size:.92rem}.notice{background:var(--gem-dim);color:var(--gem);border:1px solid #e8886866;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}.notice.warn{background:var(--gold-dim);color:var(--gold);border-color:#d4a05c66}button.notice{text-align:left;cursor:pointer;width:100%;display:block}.kicker{text-transform:uppercase;letter-spacing:.14em;color:var(--gem);margin:0 0 10px;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;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-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.82rem}.counts strong{font-variant-numeric:tabular-nums;color:var(--text);margin-right:4px}.counts .people{color:var(--gem);border-color:#e8886873}.counts .due{color:var(--gold);border-color:#d4a05c73}.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-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.72rem;display:grid}input[type=text],input[type=number],textarea{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{font-weight:700}.chip.friend.on{color:var(--gem);background:var(--gem-dim);border-color:#e888688c}.chip.family.on{color:var(--gold);background:var(--gold-dim);border-color:#d4a05c8c}.chip.coworker.on{color:var(--slate);background:var(--slate-dim);border-color:#7a9ab88c}.chip.today.on{color:var(--gem);background:var(--gem-dim);border-color:#e888688c}.chip.week.on{color:var(--gold);background:var(--gold-dim);border-color:#d4a05c8c}.chip.later.on{color:var(--slate);background:var(--slate-dim);border-color:#7a9ab88c}.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;gap:12px;padding:12px 14px;display:grid}.card.today{border-color:#e8886866}.card-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.card h2{margin:0;font-size:1.12rem;font-weight:700}.meta{flex-wrap:wrap;align-items:center;gap:8px;margin:6px 0 0;display:flex}.touch{color:var(--muted);margin:0;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.86rem}.note{color:var(--muted);margin:8px 0 0;font-size:.86rem}.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-family:Segoe UI,Avenir Next,system-ui,sans-serif;font-size:.68rem;display:inline-block}.badge.friend{color:var(--gem);border-color:#e8886873}.badge.family{color:var(--gold);border-color:#d4a05c73}.badge.coworker{color:var(--slate);border-color:#7a9ab873}.badge.today{color:var(--gem);border-color:#e8886873}.badge.week{color:var(--gold);border-color:#d4a05c73}.badge.later{color:var(--slate);border-color:#7a9ab866}.row-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.row-actions.start{justify-content:flex-start}.empty-bar{width:100%;min-height:96px;color:var(--danger);cursor:pointer;z-index:80;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#e0707029;border:1px solid #e0707073;border-radius:12px;margin:10px 0 0;font-size:1.15rem;font-weight:700;display:block;position:sticky;top:8px}.foot{color:var(--muted);margin-top:22px;font-size:.8rem}button:focus,input:focus,textarea:focus{border-color:var(--gem);box-shadow:0 0 0 3px var(--focus-ring);outline:none}
