:root{--bg:#f6f7f4;--surface:#fff;--fg:#1d221c;--muted:#5f675c;--line:#d9ddd5;--accent:#2f6b3a;--accent-fg:#fff;--na-bg:#e4e6e2;--na-fg:#4a4f47;--warn:#b4531a;--warn-bg:#fbeee4;--ok:#2f6b3a;--focus:#2f6b3a;--font-body:"IBM Plex Sans", "Segoe UI", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#161915;--surface:#1f231d;--fg:#e8ebe4;--muted:#a2a99c;--line:#363b33;--accent:#7fbf8a;--accent-fg:#101410;--na-bg:#2b2f29;--na-fg:#b8bdb2;--warn:#f0a070;--warn-bg:#3a2718;--ok:#7fbf8a;--focus:#7fbf8a;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:14px;line-height:1.45}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.wrap{gap:20px;max-width:1240px;margin:0 auto;padding-block:24px 48px;padding-inline:16px;display:grid}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 20px;display:flex}.topbar h1{margin:0;font-size:20px;font-weight:600}.topbar .sub{color:var(--muted);margin:2px 0 0}.brand{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px}.controls{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.controls form{display:contents}.btn,.controls input[type=date],.controls select{font:inherit;color:var(--fg);background:var(--surface);border:1px solid var(--line);cursor:pointer;border-radius:4px;padding:6px 10px;text-decoration:none}.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn:hover{border-color:var(--accent)}.pill{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:2px 8px;font-size:12px;display:inline-block}.pill.demo{border-color:var(--warn);color:var(--warn)}.summary{flex-wrap:wrap;gap:12px;display:flex}.stat{background:var(--surface);border:1px solid var(--line);flex:140px;min-width:140px;padding:10px 14px}.stat .k{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px}.stat .v{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-top:2px;font-size:20px;font-weight:500}.stat .v small{color:var(--muted);font-size:12px;font-family:var(--font-body);margin-left:6px}.tablewrap{background:var(--surface);border:1px solid var(--line);overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1040px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:8px 10px}th{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface);z-index:1;font-size:11px;font-weight:600;position:sticky;top:0}td.num,th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}td.tick,th.tick{text-align:center}td.tick{color:var(--ok);font-weight:600}td.pos,td.other,td.note{color:var(--muted)}td.note{max-width:320px}td.name{white-space:nowrap;font-weight:500}td.status{white-space:nowrap}tr.na td{background:var(--na-bg);color:var(--na-fg)}tr.na td.status{font-weight:500}td.diff.neg-big{color:var(--warn);background:var(--warn-bg);font-weight:600}td.diff.neg{color:var(--warn)}td.diff.pos{color:var(--ok)}tr.total td{border-top:2px solid var(--fg);border-bottom:none;font-weight:600}tr.divider td{border-bottom:2px solid var(--line);padding:0}tr.excluded td{color:var(--muted);font-style:italic}.notes{color:var(--muted);gap:6px;max-width:72ch;font-size:13px;display:grid}.notes p{margin:0}.legend{background:var(--na-bg);border:1px solid var(--line);vertical-align:-2px;width:14px;height:14px;margin-right:4px;display:inline-block}.banner{border:1px solid var(--warn);background:var(--warn-bg);color:var(--fg);padding:10px 14px}.banner.ok{border-color:var(--line);background:var(--surface);color:var(--muted)}.login{place-items:center;min-height:70vh;padding:16px;display:grid}.login-card{background:var(--surface);border:1px solid var(--line);gap:14px;width:min(380px,100%);padding:28px;display:grid}.login form{gap:12px;display:grid}.login .google{justify-content:center;align-items:center;gap:10px;padding:10px 14px;font-weight:500;display:inline-flex}.login .or{text-align:center;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.field textarea{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:4px;max-width:480px;min-height:96px;padding:6px 10px}.login h1{margin:0;font-size:18px}.login input{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:4px;padding:8px 10px}.login .err{color:var(--warn)}.week{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.daycard{background:var(--surface);border:1px solid var(--line);color:inherit;gap:4px;padding:10px 12px;text-decoration:none;display:grid}.daycard:hover{border-color:var(--accent)}.daycard .d{font-weight:600}.daycard .m{font-family:var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;font-size:13px}.daycard .m b{color:var(--fg)}.daycard .flag{color:var(--warn);font-size:12px}td.exp,th:first-child{width:28px;padding-right:0}tbody tr:not(.bd-row):not(.total):not(.divider){cursor:pointer}tbody tr:not(.bd-row):not(.total):not(.divider):hover td{background:color-mix(in srgb, var(--accent) 6%, transparent)}tr.na:hover td{background:color-mix(in srgb, var(--na-bg) 80%, var(--accent) 8%)!important}.expander{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:0 4px;line-height:1}.expander:hover{color:var(--accent)}tr.open td{border-bottom:none}tr.bd-row td{background:color-mix(in srgb, var(--bg) 60%, var(--surface));padding-top:0;padding-bottom:14px}tr.bd-row.na td{background:var(--na-bg)}.breakdown{gap:10px;padding:6px 0 0;display:grid}.bd-empty{color:var(--muted);font-size:13px}.bd-table{border:1px solid var(--line);background:var(--surface);width:auto;min-width:0;max-width:900px}.bd-table th{padding:6px 10px;font-size:10.5px;position:static}.bd-table td{padding:6px 10px;font-size:13px}.bd-table tr:last-child td{border-bottom:none}.bd-table tbody tr{cursor:default}.bd-table tbody tr:hover td{background:0 0}.bd-name{min-width:280px;font-weight:500}.bd-crew{color:var(--fg)}.bd-note{color:var(--muted);max-width:300px}.bd-table td.num.neg{color:var(--warn)}.bd-table td.num.pos{color:var(--ok)}tr.bd-missing td.bd-name:after{content:" · not logged";color:var(--warn);font-size:12px;font-weight:400}.bd-overhead{gap:3px;font-size:13px;display:grid}.bd-label{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:10.5px}.bd-oh-line .num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin-right:6px}.muted{color:var(--muted)}:root{--series-actual:#2a7f4f;--series-budget:#4a63c8;--area:#2a7f4f1f}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--series-actual:#3fa866;--series-budget:#6f86e6;--area:#3fa86629}}.stat.good .v{color:var(--ok)}.stat.bad .v{color:var(--warn)}.chart{background:var(--surface);border:1px solid var(--line);gap:8px;margin:0;padding:12px 14px 8px;display:grid}.chart-legend{color:var(--muted);flex-wrap:wrap;gap:6px 18px;font-size:12px;display:flex}.sw{vertical-align:middle;border-radius:2px;width:14px;height:3px;margin-right:6px;display:inline-block}.sw-actual{background:var(--series-actual)}.sw-budget{background:repeating-linear-gradient(90deg, var(--series-budget) 0 4px, transparent 4px 7px)}.chartwrap{position:relative}.chart svg{display:block;overflow:visible}.chart .grid{stroke:var(--line);stroke-width:1px}.chart .axis{stroke:var(--muted);stroke-width:1px}.chart .tick{fill:var(--muted);font-size:11px;font-family:var(--font-mono)}.chart .line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart .line.actual{stroke:var(--series-actual)}.chart .line.budget{stroke:var(--series-budget);stroke-dasharray:5 4}.chart .area{fill:var(--area)}.chart .dot.actual{fill:var(--series-actual)}.chart .dot.budget{fill:var(--series-budget)}.chart .dot.ring{stroke:var(--surface);stroke-width:2px}.chart .dlabel{fill:var(--fg);font-size:12px;font-family:var(--font-mono);font-weight:500}.chart .dlabel.budget{fill:var(--muted)}.chart .crosshair{stroke:var(--muted);stroke-width:1px;stroke-dasharray:2 3}.tooltip{background:var(--surface);border:1px solid var(--line);pointer-events:none;white-space:nowrap;gap:2px;padding:6px 10px;font-size:12px;display:grid;position:absolute;top:8px;transform:translate(-50%);box-shadow:0 2px 8px #00000014}.tooltip .tt-date{font-weight:600}.tooltip .neg{color:var(--warn)}.tooltip .pos{color:var(--ok)}.month-table{min-width:0}.month-table td.num.neg{color:var(--warn)}.month-table td.num.pos{color:var(--ok)}.card{background:var(--surface);border:1px solid var(--line);gap:12px;padding:16px 18px;display:grid}.card h2{margin:0;font-size:15px}.row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.field{border:0;gap:6px;margin:0;padding:0;display:grid}.field>span,.field>legend{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:11px}.field select,.field input[type=number]{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:4px;max-width:480px;padding:6px 10px}.checks{border:1px solid var(--line);gap:4px;max-height:260px;padding:8px 10px;display:grid;overflow:auto}.err{color:var(--warn)}code{font-family:var(--font-mono);background:var(--na-bg);border-radius:3px;padding:1px 4px;font-size:12px}@media (max-width:600px){.tooltip{white-space:normal;max-width:70vw}}
