:root{--ink:#081210;--paper:#101a18;--paper-2:#162420;--text:#e8f4ee;--muted:#7a9a8c;--line:#243832;--gold:#e0b04a;--gold-dim:#e0b04a29;--leaf:#6ecf8a;--rose:#e07080;--cream:#d8c19a;--danger:#e07070;--focus-ring:#e0b04a61;color:var(--text);background:var(--ink);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:Segoe UI,Avenir Next,system-ui,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(820px 380px at 92% -6%, #e0708024, transparent 54%), radial-gradient(640px 320px at 8% 0%, #e0b04a1f, 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(760px,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-family:Palatino,Iowan Old Style,Times New Roman,serif;font-size:1.9rem;font-weight:650}.tag{color:var(--muted);margin:2px 0 0;font-size:.98rem}.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:650}.solid:hover:not(:disabled){filter:brightness(1.05)}.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 #e0b04a66;border-radius:12px;margin:14px 0 0;padding:10px 14px;font-size:.92rem}.notice.ok{color:var(--leaf);background:#6ecf8a1a;border-color:#6ecf8a59}.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 .streak{color:var(--rose);border-color:#e0708059}.counts .month{color:var(--leaf);border-color:#6ecf8a52}.counts .people{color:var(--gold);border-color:#e0b04a66}.missed{background:#e070701a;border:1px solid #e0707066;border-radius:16px;margin-top:16px;padding:14px 16px}.missed-title{color:var(--danger);margin:0;font-weight:650}.missed-copy{color:var(--muted);margin:6px 0 0;font-size:.9rem}.missed-list{gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.missed-list li{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.missed-list span{color:var(--cream);font-size:.9rem}.checkin{justify-items:center;gap:10px;margin-top:22px;display:grid}.here-btn{color:#1a0c10;letter-spacing:-.03em;background:radial-gradient(120% 140% at 50% 0,#e07080,#8a3040);border:1px solid #e0708073;border-radius:999px;width:min(320px,100%);min-height:88px;font-family:Palatino,Iowan Old Style,Times New Roman,serif;font-size:1.7rem;font-weight:650;box-shadow:0 10px 28px #e0708038}.here-btn:hover:not(:disabled){filter:brightness(1.05)}.here-btn.done{color:#0c1610;background:radial-gradient(120% 140% at 50% 0,#6ecf8a,#2f6a44);border-color:#6ecf8a73;box-shadow:0 10px 28px #6ecf8a29}.here-hint{color:var(--muted);margin:0;font-size:.86rem}.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}.hint{color:var(--muted);margin:0;font-size:.8rem}.hint.tight{margin:-4px 0 10px}.dots{grid-template-columns:repeat(14,minmax(0,1fr));gap:6px;margin:0;padding:0;list-style:none;display:grid}.dot{justify-items:center;gap:4px;display:grid}.pip{border:1px solid var(--line);background:var(--paper-2);border-radius:50%;width:14px;height:14px}.dot.here .pip{background:var(--leaf);border-color:var(--leaf)}.dot.missed .pip{border-color:var(--danger);background:#e0707059}.dot.today .pip{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-dim);background:0 0}.dot.future .pip{border-color:var(--line);opacity:.55;background:0 0}.dow{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.64rem}.composer{background:var(--paper);border:1px solid var(--line);border-radius:16px;margin-top:18px;padding:16px}.contact-form{grid-template-columns:1fr 1.3fr auto;align-items:end;gap:8px;display:grid}.contact-form label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);gap:4px;font-size:.72rem;display:grid}input[type=text]{background:var(--paper-2);border:1px solid var(--line);width:100%;min-width:0;color:var(--text);border-radius:12px;padding:9px 12px;font-size:1rem}.people-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.person{background:var(--paper);border:1px solid var(--line);border-radius:16px;grid-template-columns:1fr auto;align-items:start;gap:12px;padding:14px 16px;display:grid}.person h2{margin:0;font-size:1.08rem;font-weight:650}.note{color:var(--muted);margin:6px 0 0;font-size:.86rem}.empty-bar{width:100%;min-height:56px;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}.empty-bar.sample{color:var(--gold);background:#e0b04a24;border-color:#e0b04a73}.foot{color:var(--muted);margin-top:22px;font-size:.8rem}button:focus,input:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--focus-ring);outline:none}@media (width<=640px){.contact-form{grid-template-columns:1fr}.dots{gap:4px}.pip{width:12px;height:12px}}
