:root{--paper:#F5F6F8;--surface:#FFFFFF;--surface-2:#EDEFF2;--line:#D9DDE3;--ink:#1A1A1A;--ink-2:#4A5261;--ink-3:#7A828F;--accent:#2D5789;--accent-soft:#DEE7F2;--accent-ink:#234670;--warm:#9A5B0B;--warm-soft:#F2E3CC;--good:#1F6B45;--good-soft:#DFF0E6;--shadow:0 1px 2px rgba(20,30,50,.06),0 6px 18px rgba(20,30,50,.05);--radius:5px;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#121721;--surface:#1A2130;--surface-2:#232C3F;--line:#303A50;--ink:#E8EBF1;--ink-2:#A9B2C2;--ink-3:#7C8698;--accent:#6396DA;--accent-soft:#22314A;--accent-ink:#A9C4E6;--warm:#D9A24E;--warm-soft:#33291A;--good:#6FC79A;--good-soft:#16311F;--shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.32);color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Jost,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Marcellus,Georgia,serif;font-weight:400;text-wrap:balance;margin:0}a{color:var(--accent-ink);-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-decoration-color:color-mix(in srgb,var(--accent) 40%,transparent);text-underline-offset:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--surface);border-bottom:1px solid var(--line);gap:24px;padding:0 20px;flex:none}.topbar,.topbar .brand{display:flex;align-items:center;height:56px}.topbar .brand{gap:10px;text-decoration:none;color:var(--ink)}.topbar .brand strong{font-family:Marcellus,Georgia,serif;font-weight:400;font-size:18px}.topbar .brand span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}.brand-img{height:40px;width:auto;display:block}.topnav{display:flex;gap:4px}.topnav a{padding:6px 12px;border-radius:var(--radius);text-decoration:none;color:var(--ink-2);font-weight:500;font-size:14.5px}.topnav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-ink)}.page,.toolbar .spacer,.topbar .spacer{flex:1 1}.page{display:flex;flex-direction:column;min-height:0;padding:20px 20px 40px}.page-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:14px}.page-head h1{font-size:26px}.page-head .meta{display:flex;gap:14px;align-items:center;color:var(--ink-2);font-size:14px}.error{color:#B3261E;margin:0}.wtd{max-width:1100px}.people{flex-direction:column;flex:1 1;min-height:0}.people,.toolbar{display:flex;gap:12px}.toolbar{align-items:center}.search{font:inherit;padding:8px 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);min-width:280px}.search.narrow{min-width:200px}.searchform{display:contents}.count{color:var(--ink-3);font-size:13.5px}.chooser{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:8px;min-width:200px;display:flex;flex-direction:column;gap:2px}.menu-item{display:flex;gap:10px;align-items:center;padding:6px 8px;border-radius:4px;font-size:14px;cursor:pointer}.menu-item:hover{background:var(--surface-2)}.menu-reset{font:inherit;font-size:13px;color:var(--accent-ink);background:none;border:0;border-top:1px solid var(--line);margin-top:6px;padding:8px 8px 4px;text-align:left;cursor:pointer}.grid-wrap{flex:1 1;min-height:0;overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}.grid{border-collapse:separate;border-spacing:0;table-layout:fixed;font-size:14px;min-width:100%}.grid th{top:0;z-index:2;background:var(--surface-2);font-weight:600;font-size:12.5px;letter-spacing:.03em;color:var(--ink-2);border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:0;white-space:nowrap}.grid th,.th-btn{text-align:left;overflow:hidden}.th-btn{font:inherit;font-weight:inherit;color:inherit;background:none;border:0;padding:9px 12px;width:100%;cursor:pointer;display:flex;gap:6px;align-items:center;text-overflow:ellipsis}.sort-ind{font-size:9px;color:var(--accent)}.resizer{position:absolute;top:0;right:0;width:8px;height:100%;cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none}.th-btn[draggable]{cursor:-webkit-grab;cursor:grab}.grid th.dragging{opacity:.45}.grid th.drop-before{box-shadow:inset 3px 0 0 var(--accent)}.grid th.drop-after{box-shadow:inset -3px 0 0 var(--accent)}.savestate{font-size:13px;color:var(--ink-3)}.savestate.saved{color:var(--good)}.savestate.error{color:#B3261E}.resizer:hover{background:var(--accent-soft)}.grid th{position:-webkit-sticky;position:sticky}.grid td,.grid th{position:relative}.grid td{padding:9px 12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.grid tbody tr:hover td{background:color-mix(in srgb,var(--accent-soft) 45%,var(--surface))}.grid td.empty{text-align:center;color:var(--ink-3);padding:36px}.name-link{color:var(--ink);font-weight:500;text-decoration:none}.name-link:hover{text-decoration:underline}.tag{display:inline-block;background:var(--surface-2);border-radius:4px;padding:1px 7px;font-size:12.5px;margin-right:4px}.overdue{color:#B3261E}.overdue,.soon{font-weight:500}.soon{color:var(--warm)}.person{max-width:1100px;display:flex;flex-direction:column;gap:14px}.card.pad{padding:16px 20px}.card.pad p{margin:0 0 6px}.card.pad .section-title{margin:0 0 8px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.pill{display:inline-block;font-size:11.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 9px;border-radius:99px;white-space:nowrap}.pill.stage{background:var(--accent-soft);color:var(--accent-ink)}.pill.due{background:var(--warm-soft);color:var(--warm)}.pill.done{background:var(--good-soft);color:var(--good)}.pill.sample{background:var(--surface-2);color:var(--ink-3)}.btn{font:inherit;font-weight:500;background:var(--accent);color:#fff;border:0;border-radius:var(--radius);padding:9px 16px;cursor:pointer}.btn:disabled{opacity:.6;cursor:default}.btn.ghost{background:transparent;color:var(--accent-ink);border:1px solid var(--line)}.wtd-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:22px}.wtd-head h1{font-size:30px}.wtd-head p{margin:4px 0 0;color:var(--ink-2)}.meter{min-width:240px}.meter .label{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-2);margin-bottom:6px}.meter .bar{height:8px;background:var(--surface-2);border-radius:99px;overflow:hidden}.meter .bar i{display:block;height:100%;background:var(--accent);border-radius:99px}.touch{display:grid;grid-template-columns:1fr auto;grid-gap:8px 20px;gap:8px 20px;padding:16px 20px;border-bottom:1px solid var(--line);align-items:center}.touch:last-child{border-bottom:0}.touch .who{font-weight:500}.touch .why{font-size:14px;color:var(--ink-2);margin-top:2px}.touch .meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.section-title{font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:28px 0 10px}.notice{display:flex;gap:10px;align-items:center;font-size:14px;color:var(--ink-2);padding:12px 16px;background:var(--surface-2);border-radius:var(--radius);margin-bottom:20px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);padding:36px 32px;display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.login-logo{width:100%;max-width:300px;height:auto;display:block;border-radius:6px}.brand-sub{font-family:Marcellus,Georgia,serif;font-size:20px}.login-sub{margin:0;color:var(--ink-2)}.login-error{margin:0;color:#B3261E;font-size:14px}.login-note{margin:6px 0 0;font-size:12.5px;color:var(--ink-3)}@media (max-width:640px){.topbar{gap:14px;padding:0 16px}.topnav a{padding:6px 8px;font-size:13.5px}.wrap{padding:22px 16px 60px}}