@font-face{font-family:Geist;src:url(/fonts/Geist-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Geist Mono;src:url(/fonts/GeistMono-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--surface-3:#e6e9ee;--border:#d9dde4;--border-strong:#b9c0cb;--text:#14171f;--text-muted:#555c68;--text-faint:#6b7280;--accent:#2f6bff;--accent-ink:#2456d6;--accent-strong:#2456d6;--accent-soft:#e8efff;--accent-contrast:#fff;--success:#12795a;--success-soft:#e3f4ee;--warning:#8a5a00;--warning-soft:#fdf3dc;--danger:#b42318;--danger-soft:#fdecea;--info:#1d5fa8;--neutral-mark:#a7b0bf;--focus:#2f6bff;--shadow:0 1px 2px #1018280f, 0 4px 16px #1018280f;--radius:6px;--radius-lg:10px;--font:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--rail-w:216px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0e1015;--surface:#151820;--surface-2:#1b1f28;--surface-3:#232834;--border:#2a303c;--border-strong:#3b4352;--text:#e6e8ee;--text-muted:#a3a9b5;--text-faint:#8d94a1;--accent:#5b8cff;--accent-ink:#7ea2ff;--accent-strong:#5b8cff;--accent-soft:#1b2744;--accent-contrast:#0b1020;--success:#4cc79a;--success-soft:#12291f;--warning:#e2b45a;--warning-soft:#2b2312;--danger:#ff8a7a;--danger-soft:#2f1714;--info:#7cb4f5;--neutral-mark:#5a6372;--focus:#7ea2ff;--shadow:0 1px 2px #0006, 0 6px 20px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e1015;--surface:#151820;--surface-2:#1b1f28;--surface-3:#232834;--border:#2a303c;--border-strong:#3b4352;--text:#e6e8ee;--text-muted:#a3a9b5;--text-faint:#8d94a1;--accent:#5b8cff;--accent-ink:#7ea2ff;--accent-strong:#5b8cff;--accent-soft:#1b2744;--accent-contrast:#0b1020;--success:#4cc79a;--success-soft:#12291f;--warning:#e2b45a;--warning-soft:#2b2312;--danger:#ff8a7a;--danger-soft:#2f1714;--info:#7cb4f5;--neutral-mark:#5a6372;--focus:#7ea2ff;--shadow:0 1px 2px #0006, 0 6px 20px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font:13.5px/1.45 var(--font);-webkit-font-smoothing:antialiased}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:18px}h2{font-size:15px}h3{font-size:13.5px}p{margin:0 0 .6em}.num,td.num,.tnum{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.mono{font-family:var(--mono)}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.shell{grid-template-columns:var(--rail-w) 1fr;min-height:100vh;display:grid}.shell.collapsed{--rail-w:56px}.rail{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:2px;height:100vh;padding:10px 8px;display:flex;position:sticky;top:0;overflow-y:auto}.rail .brand{letter-spacing:-.02em;color:var(--text);align-items:center;gap:8px;padding:6px 8px 14px;font-size:15px;font-weight:650;display:flex}.rail .brand svg{flex:none}.rail a.nav{border-radius:var(--radius);color:var(--text-muted);align-items:center;gap:10px;padding:6px 10px;font-weight:500;display:flex}.rail a.nav:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.rail a.nav[aria-current=page]{background:var(--accent-soft);color:var(--accent-ink)}.rail .section{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:12px 10px 4px;font-size:11px}.rail .grow{flex:1}.shell.collapsed .rail .label,.shell.collapsed .rail .section,.shell.collapsed .rail .brand .label{display:none}.main{flex-direction:column;min-width:0;display:flex}.topbar{z-index:20;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:10px;height:48px;padding:0 20px;display:flex;position:sticky;top:0}.topbar .spacer{flex:1}.content{width:100%;max-width:1280px;margin:0 auto;padding:20px}.page-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.page-head .grow{flex:1}button,.btn{font:inherit;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--surface);height:30px;color:var(--text);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:500;display:inline-flex}button:hover,.btn:hover{background:var(--surface-2);text-decoration:none}button:disabled{opacity:.55;cursor:not-allowed}button.primary,.btn.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--accent-contrast)}button.primary:hover,.btn.primary:hover{background:color-mix(in srgb, var(--accent-strong) 88%, black)}button.ghost{color:var(--text-muted);background:0 0;border-color:#0000}button.ghost:hover{background:var(--surface-2);color:var(--text)}button.danger{color:var(--danger)}button.icon{width:30px;padding:0}button.sm{height:26px;padding:0 8px;font-size:12.5px}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);min-width:0;height:30px;padding:0 8px}textarea{resize:vertical;height:auto;padding:6px 8px;line-height:1.45}input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:-1px;border-color:var(--focus)}label.field{color:var(--text-muted);gap:4px;font-size:12.5px;font-weight:500;display:grid}label.check{align-items:center;gap:6px;display:inline-flex}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack{gap:12px;display:grid}.grid2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;display:grid}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.card>.card-head{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:10px 14px;display:flex}.card>.card-body{padding:14px}.tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px 14px}.tile .k{color:var(--text-muted);font-size:12px}.tile .v{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:2px;font-size:22px;font-weight:600}.chip{background:var(--surface-2);height:22px;color:var(--text-muted);border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.chip.ok{background:var(--success-soft);color:var(--success);border-color:#0000}.chip.warn{background:var(--warning-soft);color:var(--warning);border-color:#0000}.chip.bad{background:var(--danger-soft);color:var(--danger);border-color:#0000}.chip.info{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}.chip button{width:16px;height:16px;color:inherit;background:0 0;border:0;padding:0;font-size:14px;line-height:1}.dot{background:var(--border-strong);border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.dot.billable{background:var(--accent)}.empty{text-align:center;color:var(--text-muted);padding:28px}.banner{border-radius:var(--radius);background:var(--warning-soft);color:var(--warning);margin-bottom:12px;padding:10px 14px}.err{color:var(--danger)}table.t{border-collapse:collapse;width:100%}table.t th,table.t td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:7px 10px}table.t th{color:var(--text-muted);background:var(--surface);font-size:12px;font-weight:500}table.t th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}table.t td.num,table.t th.num{text-align:right}table.t tbody tr:hover{background:var(--surface-2)}table.t tfoot td{border-bottom:0;font-weight:600}.overlay{z-index:50;background:#0a0c1266;place-items:start center;padding-top:10vh;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);width:min(560px,100vw - 32px);max-height:80vh;overflow:auto}.modal .modal-head{border-bottom:1px solid var(--border);align-items:center;padding:12px 16px;display:flex}.modal .modal-body{gap:12px;padding:16px;display:grid}.modal .modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}.popover{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);min-width:260px;padding:10px;position:absolute}.toasts{z-index:60;gap:8px;display:grid;position:fixed;bottom:16px;right:16px}.toast{background:var(--text);color:var(--bg);border-radius:var(--radius);box-shadow:var(--shadow);max-width:360px;padding:10px 14px}.toast.bad{background:var(--danger);color:#fff}.picker{position:relative}.picker .list{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);min-width:280px;max-height:300px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.picker .group{color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;padding:6px 8px 2px;font-size:11px}.picker .opt{border-radius:var(--radius);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.picker .opt[aria-selected=true],.picker .opt:hover{background:var(--accent-soft)}.timer-pill{background:var(--accent-soft);height:30px;color:var(--accent-ink);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:8px;padding:0 6px 0 10px;font-weight:600;display:inline-flex}.timer-pill .pulse{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.weekstrip{grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:14px;display:grid}.weekstrip a{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text-muted);gap:2px;padding:6px 8px;font-size:12px;display:grid}.weekstrip a b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.weekstrip a[aria-current=date]{border-color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent)}.weekstrip a:hover{background:var(--surface-2);text-decoration:none}.entry{border-bottom:1px solid var(--border);grid-template-columns:1fr auto auto;align-items:center;gap:12px;padding:10px 14px;display:grid}.entry:last-child{border-bottom:0}.entry .what{min-width:0}.entry .what .proj{font-weight:600}.entry .what .notes{color:var(--text-muted);white-space:pre-wrap;overflow-wrap:anywhere;margin-top:2px}.entry .hours{font-variant-numeric:tabular-nums;text-align:right;min-width:64px;font-size:16px;font-weight:600}.entry.running{background:color-mix(in srgb, var(--accent-soft) 60%, var(--surface))}.entry.running .hours{color:var(--accent-ink)}.totalbar{border-top:1px solid var(--border);font-variant-numeric:tabular-nums;align-items:center;gap:12px;padding:10px 14px;display:flex}.meter{background:var(--surface-3);border-radius:999px;flex:1;height:6px;overflow:hidden}.meter>span{background:var(--accent);border-radius:999px;height:100%;display:block}.meter.over>span{background:var(--danger)}table.week{border-collapse:separate;border-spacing:0;width:100%}table.week th,table.week td{border-bottom:1px solid var(--border);padding:4px 6px}table.week th{color:var(--text-muted);text-align:right;font-size:12px;font-weight:500}table.week th:first-child,table.week td:first-child{text-align:left}table.week th.today{color:var(--accent-ink)}table.week td.cell{text-align:right;width:86px;position:relative}table.week td.cell input{text-align:right;font-variant-numeric:tabular-nums;background:0 0;border-color:#0000;width:72px}table.week td.cell input:hover{border-color:var(--border)}table.week td.cell input:focus{background:var(--surface)}table.week td.cell.has-notes:after{content:"";border:4px solid #0000;border-top-color:var(--accent);border-right-color:var(--accent);border-radius:0 3px 0 0;position:absolute;top:4px;right:4px}table.week td.cell.locked input{color:var(--text-muted)}table.week td.total,table.week th.total{text-align:right;font-variant-numeric:tabular-nums;width:72px;font-weight:600}table.week tfoot td{font-variant-numeric:tabular-nums;text-align:right;border-bottom:0;font-weight:600}table.week td.rowlabel .co{color:var(--text-muted);font-size:12px}@media (max-width:760px){.shell{grid-template-columns:1fr}.rail{z-index:30;border-right:0;border-top:1px solid var(--border);flex-direction:row;height:auto;padding:4px;position:fixed;inset:auto 0 0;overflow-x:auto}.rail .brand,.rail .section,.rail .grow,.rail .collapse{display:none}.rail a.nav{flex-direction:column;gap:2px;padding:4px 8px;font-size:11px}.content{padding:14px 12px 80px}.topbar{padding:0 12px}.entry{grid-template-columns:1fr auto}.entry .actions{grid-column:1/-1}.hide-sm{display:none}}.subnav{align-content:start;gap:2px;display:grid}.subnav a{border-radius:var(--radius);color:var(--text-muted);justify-content:space-between;gap:8px;padding:6px 10px;font-weight:500;display:flex}.subnav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.subnav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-ink)}.subnav .section{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:12px 10px 4px;font-size:11px}.split{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:20px;display:grid}@media (max-width:860px){.split{grid-template-columns:1fr}.subnav{grid-auto-flow:column;overflow-x:auto}}.filters{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:end;gap:10px 12px;padding:10px 14px;display:flex}.filters label.field{min-width:120px}.scroll-x{overflow-x:auto}table.t th.sortable button{all:unset;cursor:pointer;color:inherit;font:inherit;align-items:center;gap:4px;display:inline-flex}table.t th.sortable button:focus-visible{outline:2px solid var(--focus);outline-offset:2px}table.t td input[type=text],table.t td input[type=number],table.t td input:not([type]){height:26px}table.t td.num input{text-align:right;width:88px}table.t tr.archived td{color:var(--text-muted)}table.t tr.hot td{background:var(--warning-soft)}table.t th.group{background:var(--surface-2);color:var(--text);font-weight:600}.chips{flex-wrap:wrap;gap:6px;display:flex}.tick{position:relative}.tick .results{z-index:30;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);max-height:280px;padding:4px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.tick .results label{border-radius:var(--radius);cursor:pointer;align-items:center;gap:8px;padding:6px 8px;display:flex}.tick .results label:hover{background:var(--accent-soft)}.kv{grid-template-columns:max-content 1fr;gap:4px 14px;margin:0;display:grid}.kv dt{color:var(--text-muted)}.kv dd{margin:0}.budget-line{gap:4px;display:grid}.budget-line .nums{font-variant-numeric:tabular-nums;justify-content:space-between;gap:8px;display:flex}.chart{position:relative}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart text{fill:var(--text-muted);font-size:11.5px;font-family:var(--font);font-variant-numeric:tabular-nums}.chart text.strong{fill:var(--text)}.chart .grid{stroke:var(--border);stroke-width:1px}.chart .c-bill{fill:var(--accent)}.chart .c-non{fill:var(--neutral-mark)}.chart .l-bill{stroke:var(--accent);fill:none;stroke-width:2px}.chart .l-non{stroke:var(--neutral-mark);fill:none;stroke-width:2px}.chart .d-bill{fill:var(--accent)}.chart .d-non{fill:var(--neutral-mark)}.chart .hit{fill:#0000}.chart .hit:hover{fill:var(--surface-2);opacity:.6}.chart-tip{z-index:5;pointer-events:none;background:var(--text);color:var(--bg);border-radius:var(--radius);white-space:nowrap;padding:4px 8px;font-size:12px;position:absolute;transform:translate(-50%,-120%)}.legend{color:var(--text-muted);gap:14px;margin-bottom:6px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:5px;display:inline-block}.legend i.bill{background:var(--accent)}.legend i.non{background:var(--neutral-mark)}.chart-foot{justify-content:flex-end;margin-top:4px;display:flex}.cell-hot{color:var(--danger);font-weight:600}.cell-ok{color:var(--text)}.wrap-notes{white-space:pre-wrap;overflow-wrap:anywhere;max-width:420px;color:var(--text-muted)}pre.cmd{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--mono);white-space:pre-wrap;margin:0;padding:10px 12px;font-size:12.5px;overflow-x:auto}.week-mini td,.week-mini th{text-align:right}.week-mini td:first-child,.week-mini th:first-child{text-align:left}.muted a,.wrap-notes a{text-decoration:underline}
