:root{color-scheme:light;--bg: #f4f5f6;--surface: #ffffff;--surface-hover: #eef0f1;--fg: #1a1a1a;--muted: #6b6f72;--border: #e1e4e6;--green-50: #eaf7e6;--green-500: #3dae2b;--green-700: #276f1b;--green-800: #1b5013;--accent: var(--green-500);--accent-strong: var(--green-700);--accent-hover: var(--green-800);--accent-fg: #ffffff;--warn-bg: #fdecea;--warn-fg: #9c2b2b;--info-bg: var(--green-50);--font-stack: "Roboto", "Segoe UI", system-ui, -apple-system, sans-serif;--size-brand: 16px;--size-body: 14px;--size-caption: 12px;--radius: 6px;--row-hover: rgba(61, 174, 43, .09);--swatch-edge: rgba(0, 0, 0, .25)}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg: #121614;--surface: #1b201d;--surface-hover: #242b27;--fg: #ecefea;--muted: #9aa39c;--border: #2a312c;--green-50: #1b241d;--accent: #5bc44a;--accent-strong: var(--green-700);--accent-hover: #2f8521;--warn-bg: #3a1f1f;--warn-fg: #f5b5b5;--info-bg: #1b241d;--row-hover: rgba(91, 196, 74, .12);--swatch-edge: rgba(255, 255, 255, .25)}}*{box-sizing:border-box}html{font-family:var(--font-stack);font-size:var(--size-body)}body{margin:0;background:var(--bg);color:var(--fg);font-size:var(--size-body)}a{color:var(--accent-strong)}:focus-visible{outline:2px solid var(--fg);outline-offset:2px;box-shadow:0 0 0 4px var(--surface)}button{font:inherit;font-weight:500;padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--fg);cursor:pointer}button:hover:not(:disabled){background:var(--surface-hover)}button:disabled{opacity:.6;cursor:default}input[type=search]{font:inherit;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--fg);min-width:180px}input[type=search]::placeholder{color:var(--muted)}input[type=checkbox]{accent-color:var(--green-500);margin:0}.muted{color:var(--muted)}.caption{font-size:var(--size-caption);color:var(--muted)}.centered{display:grid;place-items:center;min-height:60vh;padding:16px;color:var(--muted)}.app-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:12px;padding:8px 16px;background:var(--surface);border-bottom:4px solid var(--green-500);position:sticky;top:0;z-index:2}.brand{display:flex;align-items:baseline;gap:12px;font-size:var(--size-brand)}.brand strong{font-weight:500}.brand-mark{align-self:center;width:10px;height:10px;border-radius:2px;background:var(--green-500);flex:none}.brand nav{display:flex;gap:12px;font-size:var(--size-body)}.brand nav a{text-decoration:none;font-weight:500}.brand nav a[aria-current=page]{color:var(--fg);border-bottom:2px solid var(--green-500);padding-bottom:2px}.header-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.header-actions .user{font-size:var(--size-caption);color:var(--muted)}.pat-warning{background:var(--warn-bg);color:var(--warn-fg);padding:4px 10px;border-radius:var(--radius);font-weight:500;font-size:var(--size-caption)}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.toolbar .group{display:flex;gap:4px;align-items:center}.toolbar .segmented{gap:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.toolbar .segmented button{border:0;border-left:1px solid var(--border);border-radius:0;background:transparent}.toolbar .segmented button:first-child{border-left:0;border-radius:5px 0 0 5px}.toolbar .segmented button:last-child{border-radius:0 5px 5px 0}.toolbar .segmented button.active{background:var(--accent-strong);color:var(--accent-fg)}.toolbar .segmented button.active:hover{background:var(--accent-hover)}.toolbar .range-label{font-weight:500;white-space:nowrap}.toolbar select{font:inherit;padding:4px;background:var(--surface);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius)}.toolbar select[multiple]{vertical-align:top;max-height:8em}.toolbar .check{display:flex;align-items:center;gap:6px;font-weight:500;white-space:nowrap}.legend{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;font-size:var(--size-caption);color:var(--muted)}.legend-group{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0;padding:0;list-style:none}.legend-group li{display:flex;align-items:center;gap:6px;white-space:nowrap}.legend .swatch{width:12px;height:12px;border-radius:3px;border:1px solid var(--swatch-edge);flex:none}.legend .stripe{width:4px;height:14px;border-radius:2px;border:1px solid var(--swatch-edge);flex:none}.timeline-scroll{overflow:auto;position:relative;max-height:calc(100vh - 180px);background:var(--surface)}.timeline-scroll svg{display:block;-webkit-user-select:none;user-select:none}.timeline-scroll g.row:hover rect.row-bg{fill:var(--row-hover)}.timeline-scroll.panning{cursor:grabbing}.timeline-axis{position:sticky;top:0;z-index:1;background:var(--surface)}.timeline-axis+svg{margin-top:calc(-1 * var(--axis-h))}.empty-state{margin:16px;padding:24px;border:1px solid var(--border);border-left:4px solid var(--green-500);border-radius:8px;background:var(--bg);color:var(--muted);max-width:60ch}.banner{margin:8px 16px;padding:8px 12px;border-radius:var(--radius);background:var(--warn-bg);color:var(--warn-fg)}.banner.info{background:var(--info-bg);color:var(--fg);border:1px solid var(--border)}.panel{margin:8px 16px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.panel summary{padding:8px 12px;cursor:pointer;font-weight:500}.panel summary:hover{background:var(--surface-hover);border-radius:8px}.panel summary .badge{margin-left:4px}.badge{display:inline-block;min-width:20px;padding:0 6px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--muted);font-size:var(--size-caption);font-weight:500;text-align:center}.panel ul{margin:0;padding:0 12px 12px 28px}.panel li{margin:4px 0}.tooltip{position:fixed;pointer-events:none;max-width:360px;padding:8px 10px;border-radius:var(--radius);background:var(--surface);color:var(--fg);border:1px solid var(--border);box-shadow:0 4px 16px #00000026;z-index:3;font-size:var(--size-caption)}.tooltip h4{margin:0 0 4px;font-size:var(--size-body);font-weight:500}.tooltip dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:2px 8px}.tooltip dt{color:var(--muted)}.tooltip dd{margin:0}@media(max-width:700px){.app-header,.toolbar{padding:8px}}
