:root{--bg: #f6f4ee;--bg-sunken: #efece4;--surface: #fbfaf6;--surface-2: #f1eee5;--line: #e3ddd0;--line-strong: #cfc7b3;--ink: #16181b;--ink-2: #3a3d42;--ink-3: #6b6e75;--ink-4: #9a9ca2;--accent: #2f5ad9;--accent-soft: #e6ecfb;--accent-ink: #1b3aa0;--ok: #1f7a4d;--ok-soft: #e1efe5;--warn: #a7651a;--warn-soft: #f4e9d5;--bad: #b3331f;--bad-soft: #f4dcd5;--neutral-soft: #ebe6da;--shadow-sm: 0 1px 0 rgba(20,20,20,.04), 0 1px 2px rgba(20,20,20,.04);--shadow-md: 0 6px 16px -4px rgba(28,30,33,.1), 0 1px 0 rgba(20,20,20,.04);--radius: 6px;--radius-lg: 10px;--row-h: 40px;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}[data-theme=slate]{--bg: #f1f3f6;--bg-sunken: #e7eaf0;--surface: #ffffff;--surface-2: #eef1f5;--line: #dfe3ea;--line-strong: #c5ccd6;--ink: #0e1318;--ink-2: #2c333d;--ink-3: #5c6571;--ink-4: #8a93a0;--accent: #2a52d6;--accent-soft: #e1e9fc;--accent-ink: #1a3aa5;--neutral-soft: #e3e7ee}[data-theme=dark]{--bg: #0e1013;--bg-sunken: #0a0c0f;--surface: #16191e;--surface-2: #1c2027;--line: #262a32;--line-strong: #353a44;--ink: #ecedef;--ink-2: #c9ccd2;--ink-3: #8c919b;--ink-4: #5e636c;--accent: #6b8cff;--accent-soft: #1e2845;--accent-ink: #b9c8ff;--ok: #6dc28b;--ok-soft: #163022;--warn: #d9a35a;--warn-soft: #2e2415;--bad: #e07a64;--bad-soft: #321b16;--neutral-soft: #1f2228;--shadow-sm: 0 1px 0 rgba(0,0,0,.3), 0 1px 2px rgba(0,0,0,.4);--shadow-md: 0 8px 22px -6px rgba(0,0,0,.55), 0 1px 0 rgba(0,0,0,.3)}[data-density=compact]{--row-h: 34px}[data-accent=blue]{--accent: #2f5ad9;--accent-soft: #e6ecfb;--accent-ink: #1b3aa0}[data-accent=ink]{--accent: #1a1c20;--accent-soft: #e6e6e3;--accent-ink: #0a0b0d}[data-accent=moss]{--accent: #3a6b3a;--accent-soft: #e3eede;--accent-ink: #244625}[data-accent=rust]{--accent: #a44a23;--accent-soft: #f3e1d5;--accent-ink: #6f3014}html,body{height:100%}body{margin:0;font-family:var(--font-sans);color:var(--ink);background:var(--bg);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"ss01","cv11"}::selection{background:var(--accent-soft);color:var(--accent-ink)}button{font-family:inherit}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.app{display:grid;grid-template-columns:224px 1fr;height:100vh;background:var(--bg)}.sidebar{background:var(--bg-sunken);border-right:1px solid var(--line);display:flex;flex-direction:column;padding:14px 12px;gap:18px}.wordmark{display:flex;align-items:center;gap:9px;padding:6px 8px}.wordmark .mark{width:22px;height:22px;display:grid;place-items:center;border-radius:5px;background:var(--ink);color:var(--bg);font-family:var(--font-mono);font-weight:600;font-size:12px;letter-spacing:-.02em}.wordmark .name{font-size:13px;font-weight:600;letter-spacing:-.01em}.wordmark .sub{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-3);letter-spacing:.02em;text-transform:uppercase;margin-top:1px}.nav-group{display:flex;flex-direction:column;gap:1px}.nav-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:var(--ink-4);text-transform:uppercase;padding:6px 9px 4px}.nav-item{display:flex;align-items:center;gap:9px;padding:6px 9px;border-radius:5px;color:var(--ink-2);background:transparent;border:none;text-align:left;cursor:pointer;font-size:13px;width:100%;transition:background .12s ease}.nav-item:hover{background:var(--surface-2);color:var(--ink)}.nav-item.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.nav-item svg{color:var(--ink-3);flex:0 0 16px}.nav-item.active svg{color:var(--ink)}.nav-item .count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--ink-3)}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:10px 6px 4px;display:flex;align-items:center;gap:9px}.avatar{width:26px;height:26px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);display:grid;place-items:center;font-size:11px;font-weight:600}.user-meta{min-width:0;flex:1}.user-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:10.5px;color:var(--ink-3);font-family:var(--font-mono)}.sidebar-signout{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:1px solid var(--line);border-radius:4px;color:var(--ink-3);font-family:var(--font-mono);font-size:10.5px;padding:3px 7px;cursor:pointer;margin-left:auto}.sidebar-signout:hover{border-color:var(--ink-2);color:var(--ink-1)}.main{display:grid;grid-template-rows:56px 1fr;min-width:0;overflow:hidden}.topbar{display:flex;align-items:center;gap:14px;padding:0 24px;border-bottom:1px solid var(--line);background:var(--bg)}.crumbs{display:flex;align-items:center;gap:6px;color:var(--ink-3);font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase}.crumbs .now{color:var(--ink)}.topbar .search{margin-left:auto;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:5px 10px;width:260px;color:var(--ink-3)}.topbar .search input{background:transparent;border:0;outline:0;font-family:inherit;font-size:12.5px;color:var(--ink);flex:1;min-width:0}.topbar .search .kbd{font-family:var(--font-mono);font-size:10.5px;color:var(--ink-4);border:1px solid var(--line);border-radius:3px;padding:0 4px}.topbar .actions{display:flex;gap:6px}.content{overflow:auto;padding:22px 24px 64px}.page-head{display:flex;align-items:flex-end;gap:24px;margin-bottom:18px}.page-head h1{margin:0;font-size:22px;letter-spacing:-.015em;font-weight:500}.page-head .desc{color:var(--ink-3);font-size:12.5px;margin-top:3px;max-width:520px}.page-head .actions{margin-left:auto;display:flex;gap:8px}.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);font-size:12.5px;font-weight:500;cursor:pointer;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--surface-2);border-color:var(--line-strong)}.btn.primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn.primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn.accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.accent:hover{filter:brightness(.95)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.ghost:hover{background:var(--surface-2)}.btn.sm{height:26px;padding:0 9px;font-size:12px}.btn.icon{padding:0 8px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}.card-head h3{margin:0;font-size:13px;font-weight:600;letter-spacing:-.005em}.card-head .sub{color:var(--ink-3);font-size:12px}.card-head .actions{margin-left:auto;display:flex;gap:6px}.card-body{padding:14px 16px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px 13px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.stat .lbl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;color:var(--ink-3);text-transform:uppercase}.stat .val{margin-top:6px;font-family:var(--font-mono);font-size:26px;letter-spacing:-.02em;font-weight:500;color:var(--ink);font-feature-settings:"tnum"}.stat .val .unit{font-size:13px;color:var(--ink-3);margin-left:4px;font-weight:400}.stat .meta{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11.5px;color:var(--ink-3)}.stat .spark{position:absolute;right:14px;top:14px;color:var(--ink-4);opacity:.7}.table-wrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.filter-bar{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line);background:var(--surface)}.filter-bar .chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--line);border-radius:99px;font-size:12px;color:var(--ink-2);background:var(--surface);cursor:pointer}.filter-bar .chip:hover{background:var(--surface-2)}.filter-bar .chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.filter-bar .chip .dot{width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}.filter-bar .sep{width:1px;align-self:stretch;background:var(--line);margin:0 4px}.filter-bar .search-inline{margin-left:auto;display:flex;align-items:center;gap:6px;color:var(--ink-3);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:3px 8px;width:220px}.filter-bar .search-inline input{background:transparent;border:0;outline:0;font-family:inherit;font-size:12px;color:var(--ink);width:100%}table.t{width:100%;border-collapse:separate;border-spacing:0;font-size:12.5px}table.t thead th{text-align:left;font-weight:500;font-size:11px;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;padding:9px 12px;background:var(--bg-sunken);border-bottom:1px solid var(--line);position:sticky;top:0;font-family:var(--font-mono);white-space:nowrap}table.t tbody td{padding:0 12px;height:var(--row-h);border-bottom:1px solid var(--line);color:var(--ink);vertical-align:middle;white-space:nowrap}table.t tbody tr:last-child td{border-bottom:0}table.t tbody tr{transition:background .1s ease}table.t tbody tr:hover{background:var(--surface-2)}table.t tbody tr.selected{background:var(--accent-soft)}table.t .num{font-family:var(--font-mono);font-feature-settings:"tnum";text-align:right}table.t .mono{font-family:var(--font-mono)}table.t .dim{color:var(--ink-3)}table.t .right{text-align:right}table.t td.actions{text-align:right;color:var(--ink-3)}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:99px;font-size:11px;font-weight:500;font-family:var(--font-mono);letter-spacing:.02em;background:var(--neutral-soft);color:var(--ink-2);border:1px solid transparent;line-height:1.5}.badge .dot{width:6px;height:6px;border-radius:50%;background:var(--ink-3)}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.ok .dot{background:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.warn .dot{background:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.bad .dot{background:var(--bad)}.badge.accent{background:var(--accent-soft);color:var(--accent-ink)}.badge.accent .dot{background:var(--accent)}.badge.ghost{background:transparent;border-color:var(--line);color:var(--ink-3)}.bar-cell{display:flex;align-items:center;gap:8px;width:100%}.bar-track{height:4px;flex:1;background:var(--surface-2);border-radius:99px;overflow:hidden;position:relative}.bar-fill{height:100%;background:var(--ink);border-radius:99px}.bar-fill.ok{background:var(--ok)}.bar-fill.warn{background:var(--warn)}.bar-fill.bad{background:var(--bad)}.bar-fill.accent{background:var(--accent)}.drawer-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#14161a52;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:80;opacity:0;pointer-events:none;transition:opacity .18s ease}.drawer-scrim.open{opacity:1;pointer-events:auto}.drawer{position:fixed;top:0;right:0;height:100vh;width:640px;background:var(--bg);border-left:1px solid var(--line);box-shadow:-16px 0 40px -16px #0000002e;z-index:90;transform:translate(100%);transition:transform .22s cubic-bezier(.2,.6,.2,1);display:flex;flex-direction:column}.drawer.open{transform:translate(0)}.drawer-head{display:flex;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}.drawer-head .title{font-size:14px;font-weight:600}.drawer-head .sub{font-size:11.5px;color:var(--ink-3);font-family:var(--font-mono)}.drawer-body{padding:18px;overflow:auto;flex:1}.drawer-foot{border-top:1px solid var(--line);padding:12px 18px;display:flex;gap:8px;background:var(--bg)}.field{display:flex;flex-direction:column;gap:5px}.field label,.label{font-size:11px;font-family:var(--font-mono);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}.input,.select{height:30px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:0 10px;font-family:inherit;font-size:13px;color:var(--ink)}.input:focus,.select:focus{border-color:var(--accent);outline:none}.input.mono{font-family:var(--font-mono)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stage-rail{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--surface);flex:1;min-width:0}.stage-rail .step{flex:1;min-width:0;padding:7px 10px;border-right:1px solid var(--line);font-size:11px;color:var(--ink-3);display:flex;align-items:center;gap:6px;background:var(--surface);position:relative}.stage-rail .step:last-child{border-right:0}.stage-rail .step .n{font-family:var(--font-mono);font-size:10px;color:var(--ink-4);width:14px}.stage-rail .step.done{background:var(--ink);color:var(--bg)}.stage-rail .step.done .n{color:var(--bg);opacity:.6}.stage-rail .step.current{background:var(--accent-soft);color:var(--accent-ink)}.stage-rail .step.current .n{color:var(--accent-ink);opacity:.8}.meter{display:flex;align-items:center;gap:8px}.meter .num{font-family:var(--font-mono);font-feature-settings:"tnum";font-size:12px;min-width:28px;text-align:right}.meter .num .of{color:var(--ink-3)}.col-2{display:grid;grid-template-columns:1.6fr 1fr;gap:16px}.feas-input{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;align-items:end}.feas-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:18px;padding-top:14px;border-top:1px dashed var(--line)}.verdict{display:flex;align-items:center;gap:14px;padding:14px 18px;border-radius:var(--radius-lg);background:var(--ok-soft);color:var(--ok);border:1px solid color-mix(in oklab,var(--ok) 18%,transparent)}.verdict.warn{background:var(--warn-soft);color:var(--warn);border-color:color-mix(in oklab,var(--warn) 22%,transparent)}.verdict .ico{width:32px;height:32px;border-radius:50%;background:#fff9;display:grid;place-items:center}.verdict .text .h{font-weight:600;font-size:14px}.verdict .text .sub{font-size:12px;opacity:.85}.verdict .right{margin-left:auto;text-align:right;font-family:var(--font-mono);font-feature-settings:"tnum"}.verdict .right .val{font-size:18px;font-weight:500}.verdict .right .lbl{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;opacity:.8}.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;align-items:baseline;font-size:12.5px}.kv .k{color:var(--ink-3);font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.activity{display:flex;flex-direction:column;gap:1px}.activity-row{display:grid;grid-template-columns:78px 1fr auto;align-items:center;gap:12px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:12.5px}.activity-row:last-child{border-bottom:0}.activity-row .ts{font-family:var(--font-mono);color:var(--ink-3);font-size:11.5px}.activity-row .who{color:var(--ink-3);font-size:11.5px}.h-section{display:flex;align-items:center;gap:10px;margin:28px 0 10px}.h-section h2{font-size:13px;font-weight:600;margin:0;letter-spacing:-.005em}.h-section .rule{flex:1;height:1px;background:var(--line)}.h-section .count{font-family:var(--font-mono);color:var(--ink-3);font-size:11px}.aside-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:14px 16px;box-shadow:var(--shadow-sm)}.aside-card h4{margin:0 0 10px;font-size:12px;color:var(--ink-3);font-family:var(--font-mono);font-weight:500;letter-spacing:.06em;text-transform:uppercase}.dist{display:flex;height:8px;border-radius:99px;overflow:hidden;background:var(--surface-2)}.dist .seg{height:100%}.legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px;font-size:11.5px;color:var(--ink-2)}.legend .item{display:inline-flex;align-items:center;gap:6px}.legend .swatch{width:8px;height:8px;border-radius:2px}.legend .val{font-family:var(--font-mono);color:var(--ink-3)}.danger{color:var(--bad)}.small{font-size:11.5px}.muted{color:var(--ink-3)}.truncate{overflow:hidden;text-overflow:ellipsis;max-width:32ch;display:inline-block;vertical-align:bottom}.datepop{position:relative;display:inline-flex;vertical-align:middle}.datepop-trigger{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;height:24px;background:transparent;border:1px dashed transparent;border-radius:4px;color:var(--ink);font-family:var(--font-mono);font-size:12.5px;cursor:pointer;transition:background .12s ease,border-color .12s ease;text-align:left}.datepop-trigger:hover{background:var(--surface-2);border-color:var(--line-strong)}.datepop-trigger.open{background:var(--accent-soft);border-color:transparent;color:var(--accent-ink)}.datepop-trigger .ico{color:var(--ink-4);opacity:0;transition:opacity .12s ease}.datepop-trigger:hover .ico,.datepop-trigger.open .ico{opacity:1}.datepop-trigger.danger{color:var(--bad)}.datepop-trigger.placeholder{color:var(--ink-4);font-style:italic;font-family:var(--font-sans)}.datepop-panel{position:absolute;top:calc(100% + 4px);left:0;z-index:60;background:var(--surface);border:1px solid var(--line-strong);border-radius:8px;box-shadow:var(--shadow-md);padding:10px;width:248px;-webkit-user-select:none;user-select:none}.datepop-panel.floating{position:fixed;top:0;left:0;z-index:100}.datepop-panel.right{left:auto;right:0}.datepop-panel.up{top:auto;bottom:calc(100% + 4px)}.datepop-head{display:flex;align-items:center;gap:4px;padding:2px 4px 8px}.datepop-head .month{flex:1;text-align:center;font-size:12.5px;font-weight:500;color:var(--ink)}.datepop-head button{width:22px;height:22px;border:0;background:transparent;border-radius:4px;color:var(--ink-3);cursor:pointer;display:grid;place-items:center}.datepop-head button:hover{background:var(--surface-2);color:var(--ink)}.datepop-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.datepop-grid .dow{font-family:var(--font-mono);font-size:10px;color:var(--ink-4);letter-spacing:.04em;text-transform:uppercase;text-align:center;padding:4px 0}.datepop-grid .day{height:26px;border-radius:4px;border:0;background:transparent;font-family:var(--font-mono);font-size:12px;color:var(--ink);cursor:pointer;transition:background .1s ease}.datepop-grid .day:hover{background:var(--surface-2)}.datepop-grid .day.other{color:var(--ink-4)}.datepop-grid .day.today{box-shadow:inset 0 0 0 1px var(--line-strong)}.datepop-grid .day.selected{background:var(--ink);color:var(--bg)}.datepop-grid .day.selected.today{box-shadow:inset 0 0 0 1px var(--ink)}.datepop-foot{display:flex;gap:6px;padding-top:8px;margin-top:6px;border-top:1px dashed var(--line)}.datepop-foot button{flex:1;background:transparent;border:1px solid var(--line);border-radius:4px;padding:4px 0;font-family:var(--font-mono);font-size:11px;color:var(--ink-2);cursor:pointer}.datepop-foot button:hover{background:var(--surface-2);border-color:var(--line-strong)}[data-density=compact] table.t tbody td{padding:0 10px;font-size:12px}[data-density=compact] .btn{height:28px}[data-density=compact] .stat .val{font-size:22px}[data-density=compact] .card-body{padding:12px 14px}
