:root{--bg:#f6f7f5;--surface:#fff;--surface-2:#f0f2ef;--border:#dfe3dd;--text:#1c211e;--muted:#66706a;--accent:#176b4d;--accent-soft:#e3f1ea;--accent-text:#fff;--neg:#b42318;--pos:#176b4d;--warn-bg:#fff6e0;--warn-text:#7a5300;--danger:#b42318;--focus:#2f8f6b;--shadow:0 1px 2px #0000000d, 0 4px 16px #0000000f;--radius:8px;--sidebar:268px;color:var(--text);background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}@media (prefers-color-scheme:dark){:root{--bg:#111513;--surface:#181d1a;--surface-2:#202622;--border:#2c342f;--text:#e6ebe7;--muted:#94a099;--accent:#3fb68a;--accent-soft:#1d3329;--accent-text:#0c1410;--neg:#f07a6e;--pos:#5fd1a2;--warn-bg:#3a2e12;--warn-text:#f5d58a;--danger:#f07a6e;--focus:#5fd1a2;--shadow:0 1px 2px #0006, 0 4px 16px #0000004d}}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{letter-spacing:-.01em;margin:0;font-size:22px;font-weight:650}h2{margin:0 0 12px;font-size:16px;font-weight:620}h3{margin:0 0 8px;font-size:14px;font-weight:620}.muted{color:var(--muted)}.small{font-size:12px}.neg{color:var(--neg)}.pos{color:var(--pos)}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.nowrap{white-space:nowrap}.grow{flex:1}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:12px;display:flex}.spacer{height:16px}.app{grid-template-columns:var(--sidebar) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{color:var(--text);align-items:center;gap:8px;padding:4px 8px 12px;font-size:17px;font-weight:700;display:flex}.brand-mark{background:var(--accent);width:26px;height:26px;color:var(--accent-text);border-radius:7px;place-items:center;font-size:15px;display:grid}.nav a,.acct-link{color:var(--text);border-radius:6px;justify-content:space-between;gap:8px;padding:6px 8px;display:flex}.nav a:hover,.acct-link:hover{background:var(--surface-2);text-decoration:none}.nav a.active,.acct-link.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.acct-link .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.side-group{margin-top:12px}.side-group-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);justify-content:space-between;padding:4px 8px;font-size:11px;display:flex}.sidebar-footer{border-top:1px solid var(--border);margin-top:auto;padding-top:12px}.main{min-width:0;padding:24px 28px 48px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:18px;display:flex}.page-head .sub{color:var(--muted);margin-top:2px}.menu-btn{display:none}@media (width<=860px){.app{grid-template-columns:1fr}.sidebar{z-index:30;width:280px;box-shadow:var(--shadow);transition:transform .2s;position:fixed;transform:translate(-100%)}.sidebar.open{transform:none}.main{padding:16px}.menu-btn{display:inline-flex}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.card.flush{padding:0;overflow:hidden}.cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.stat .label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.stat .value{font-variant-numeric:tabular-nums;margin-top:4px;font-size:24px;font-weight:650}.grid-2{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=1100px){.grid-2{grid-template-columns:1fr}}.notice{background:var(--warn-bg);color:var(--warn-text);border-radius:var(--radius);padding:10px 14px}.error{color:var(--danger)}.empty{text-align:center;color:var(--muted);padding:48px 16px}button,.btn{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;gap:6px;padding:6px 12px;display:inline-flex}button:hover:not(:disabled){background:var(--surface-2)}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.primary:hover:not(:disabled){filter:brightness(1.08);background:var(--accent)}button.danger{color:var(--danger)}button.link{color:var(--accent);background:0 0;border:none;padding:0}button.small{padding:2px 8px;font-size:12px}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:6px;min-width:0;padding:6px 8px}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--focus);outline-offset:-1px;border-color:#0000}input[type=checkbox]{width:auto}.field{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.field>input,.field>select,.field>textarea{color:var(--text);font-size:14px}label.check{align-items:center;gap:6px;display:inline-flex}.form-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;display:grid}.form-grid .wide{grid-column:span 2}.form-grid .full{grid-column:1/-1}.segmented{border:1px solid var(--border);border-radius:6px;display:inline-flex;overflow:hidden}.segmented button{border:none;border-radius:0}.segmented button.on{background:var(--accent-soft);color:var(--accent);font-weight:600}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);background:var(--surface);z-index:1;white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:600;position:sticky;top:0}td{border-bottom:1px solid var(--border);vertical-align:top;padding:7px 10px}tbody tr:hover{background:var(--surface-2)}tr.clickable{cursor:pointer}tr.void td{color:var(--muted);text-decoration:line-through}tr.selected{background:var(--accent-soft)!important}.table-wrap{overflow-x:auto}.split-lines{color:var(--muted);margin-top:2px;font-size:12px}.badge{background:var(--surface-2);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:1px 6px;font-size:11px;display:inline-block}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.status-btn{width:24px;height:22px;color:var(--muted);justify-content:center;padding:0;font-size:12px;font-weight:700}.status-btn.C{color:var(--accent)}.status-btn.R{background:var(--accent-soft);color:var(--accent)}.modal-backdrop{z-index:50;background:#00000059;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);box-shadow:var(--shadow);border-radius:12px;width:min(760px,100%);max-height:calc(100vh - 32px);overflow:auto}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 18px;display:flex}.modal-body{padding:18px}.modal-foot{border-top:1px solid var(--border);justify-content:space-between;gap:8px;padding:12px 18px;display:flex}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login .card{width:min(360px,100%);padding:28px}.bar-row{grid-template-columns:minmax(120px,1.2fr) 2fr auto;align-items:center;gap:10px;padding:5px 0;display:grid}.bar{background:var(--accent);border-radius:5px;min-width:2px;height:10px}.bar.neg{background:var(--neg)}.bar-track{background:var(--surface-2);border-radius:5px}.tree-child{padding-left:18px}a.btn{color:var(--text);text-decoration:none}a.btn:hover{background:var(--surface-2);text-decoration:none}a.btn.primary,a.btn.primary:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}.hero{text-align:center;flex-direction:column;gap:12px;max-width:620px;margin:48px auto;padding:32px;display:flex}.hero h1{font-size:26px}.steps{flex-wrap:wrap;gap:6px;margin-bottom:14px;display:flex}.steps span{background:var(--surface-2);color:var(--muted);border-radius:999px;padding:3px 10px;font-size:12px}.steps span.on{background:var(--accent-soft);color:var(--accent);font-weight:600}.badge.warn{background:var(--warn-bg);color:var(--warn-text);border-color:#0000}.badge.muted-badge{opacity:.7}tr.excluded td{color:var(--muted)}.kv{grid-template-columns:max-content 1fr;gap:6px 16px;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}td input,td select{width:100%}.danger-zone{border-color:color-mix(in srgb, var(--danger) 40%, var(--border))}.modal.wide{width:min(1120px,100%)}
