:root{--surface-1: #fcfcfb;--page: #f9f9f7;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--grid: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--series-1: #2a78d6;--series-2: #1baf7a;--series-3: #eda100;--series-4: #008300;--series-5: #4a3aa7;--seq-250: #86b6ef;--seq-400: #3987e5;--seq-550: #1c5cab;--seq-700: #0d366b;--good: #006300;--bad: #d03b3b;--warn-bg: rgba(237, 161, 0, .1);--accent: var(--series-1)}@media(prefers-color-scheme:dark){:root{--surface-1: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--grid: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--series-1: #3987e5;--series-2: #199e70;--series-3: #c98500;--series-4: #008300;--series-5: #9085e9;--seq-250: #86b6ef;--seq-400: #3987e5;--seq-550: #1c5cab;--seq-600: #184f95;--good: #0ca30c;--bad: #e66767;--warn-bg: rgba(201, 133, 0, .16)}}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--text-primary);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:15px;line-height:1.45}#root{min-height:100vh}button{font:inherit;cursor:pointer}.shell{max-width:1080px;margin:0 auto;padding:0 24px 64px}.topbar{display:flex;align-items:center;gap:12px;padding:20px 0 8px}.brand{font-size:18px;font-weight:700;letter-spacing:-.01em}.brand small{font-weight:500;color:var(--text-muted);margin-left:6px}.env-badge{font-size:11px;font-weight:700;letter-spacing:.06em;padding:3px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-secondary)}.env-badge.demo{background:var(--warn-bg);color:var(--text-primary)}.topbar .spacer{flex:1}.ghost-btn{background:none;border:1px solid var(--border);border-radius:8px;padding:6px 12px;color:var(--text-secondary)}.ghost-btn:hover{background:var(--surface-1)}.controls-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 0 22px;position:sticky;top:0;background:var(--page);z-index:5}.tabs{display:flex;gap:4px;background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:4px}.tabs button{border:none;background:none;padding:7px 14px;border-radius:7px;color:var(--text-secondary);font-weight:500}.tabs button.active{background:var(--accent);color:#fff;font-weight:600}.range-picker{display:flex;gap:4px;margin-left:auto;background:var(--surface-1);border:1px solid var(--border);border-radius:10px;padding:4px}.range-picker button{border:none;background:none;padding:7px 12px;border-radius:7px;color:var(--text-secondary)}.range-picker button.active{background:var(--accent);color:#fff;font-weight:600}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:14px;padding:20px}.card h3{margin:0 0 2px;font-size:15px;font-weight:650}.card .sub{margin:0 0 16px;font-size:13px;color:var(--text-muted)}.grid-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-bottom:16px}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:16px}.insights{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;margin-bottom:24px}.insight{display:flex;gap:12px;align-items:flex-start;background:var(--surface-1);border:1px solid var(--border);border-left:4px solid var(--baseline);border-radius:12px;padding:14px 16px}.insight.up{border-left-color:var(--good)}.insight.down{border-left-color:var(--bad)}.insight.warn{border-left-color:var(--series-3)}.insight .icon{font-size:20px;line-height:1.3}.insight .headline{font-weight:650;font-size:14.5px}.insight .detail{font-size:13px;color:var(--text-secondary);margin-top:2px}.stat-tile{background:var(--surface-1);border:1px solid var(--border);border-radius:14px;padding:16px 18px 10px}.stat-tile .label{font-size:12.5px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.stat-tile .value{font-size:30px;font-weight:700;letter-spacing:-.02em;margin:2px 0 0}.stat-tile .delta{font-size:12.5px;font-weight:600}.stat-tile .delta.up{color:var(--good)}.stat-tile .delta.down{color:var(--bad)}.stat-tile .delta.flat{color:var(--text-muted)}.ranked-row{display:grid;grid-template-columns:minmax(120px,42%) 1fr 64px;align-items:center;gap:10px;padding:5px 0;font-size:13.5px}.ranked-row .name{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ranked-row .bar-track{height:14px;position:relative}.ranked-row .bar{position:absolute;inset:0 auto 0 0;border-radius:0 4px 4px 0;background:var(--series-1);min-width:2px}.ranked-row .num{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.funnel-step{padding:6px 0}.funnel-step .meta{display:flex;justify-content:space-between;font-size:13.5px;margin-bottom:4px}.funnel-step .meta .who{color:var(--text-secondary)}.funnel-step .meta .nums{font-variant-numeric:tabular-nums;color:var(--text-secondary)}.funnel-step .track{height:18px;background:none;position:relative}.funnel-step .fill{position:absolute;inset:0 auto 0 0;border-radius:0 4px 4px 0;min-width:2px}.funnel-drop{font-size:12px;color:var(--text-muted);padding:0 0 4px}.transition-row{display:flex;align-items:baseline;gap:8px;padding:7px 0;border-bottom:1px solid var(--grid);font-size:13.5px}.transition-row:last-child{border-bottom:none}.transition-row .arrow{color:var(--text-muted)}.transition-row .count{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--text-secondary)}.gate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.gate-card{background:var(--surface-1);border:1px solid var(--border);border-radius:18px;padding:36px;width:100%;max-width:380px;text-align:center}.gate-card h1{font-size:20px;margin:0 0 4px}.gate-card p{color:var(--text-secondary);font-size:14px;margin:0 0 20px}.gate-card form{display:flex;flex-direction:column;gap:10px;text-align:left}.gate-card input{font:inherit;padding:10px 12px;border-radius:9px;border:1px solid var(--baseline);background:var(--page);color:var(--text-primary)}.gate-card input:focus{outline:2px solid var(--accent);border-color:transparent}.gate-card .primary-btn{background:var(--accent);color:#fff;font-weight:600;border:none;border-radius:9px;padding:11px;margin-top:6px}.gate-card .primary-btn:disabled{opacity:.6;cursor:default}.gate-card .error{color:var(--bad);font-size:13px;margin:4px 0 0}.gate-icon{font-size:34px;margin-bottom:10px}.empty-note{color:var(--text-muted);font-size:13.5px;padding:12px 0}.section-title{font-size:16px;font-weight:700;margin:26px 0 12px}.loading-dim{opacity:.55;transition:opacity .15s}.recharts-tooltip-wrapper{outline:none}.chart-tooltip{background:var(--surface-1);border:1px solid var(--border);border-radius:9px;padding:8px 12px;font-size:13px;box-shadow:0 4px 16px #0000001f}.chart-tooltip .t-date{color:var(--text-muted);font-size:12px;margin-bottom:2px}.tabs{flex-wrap:wrap}.support-head h2{font-size:18px;margin:0 0 4px}.support-head .sub{margin:0 0 16px;font-size:13px;color:var(--text-muted);max-width:720px}.filter-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.filter-bar .range-picker{margin-left:0}.filter-bar .search{flex:1;min-width:220px;font:inherit;font-size:14px;padding:9px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-primary)}.filter-bar .search:focus{outline:2px solid var(--accent);border-color:transparent}.chip-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface-1);color:var(--text-secondary);border-radius:999px;padding:5px 12px;font-size:13px}.chip.active{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);color:var(--text-primary);font-weight:600}.chip .count{color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500}.dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%}.cat-tag{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary);white-space:nowrap}.status-tag{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:999px;border:1px solid var(--border);white-space:nowrap}.status-tag.open{background:var(--warn-bg);color:var(--text-primary)}.status-tag.done{color:var(--good)}.req-table{background:var(--surface-1);border:1px solid var(--border);border-radius:14px;overflow:hidden}.req-row{display:grid;grid-template-columns:128px 150px minmax(140px,1fr) minmax(200px,2fr) 64px;gap:12px;align-items:start;width:100%;padding:12px 16px;border:none;border-bottom:1px solid var(--grid);background:none;color:var(--text-primary);font-size:13.5px;text-align:left}.req-row:last-child{border-bottom:none}button.req-row:hover{background:var(--page)}button.req-row:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.req-head{padding-top:10px;padding-bottom:10px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.req-row small{display:block;margin-top:2px;font-size:12px;color:var(--text-muted)}.req-row .from strong,.req-row .from small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.req-row .from strong{font-weight:600}.req-row .summary .text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;color:var(--text-secondary)}.empty-card{padding:28px 20px;text-align:center;font-size:14px;color:var(--text-muted)}.show-older{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;font-size:13px;color:var(--text-muted)}.skel{display:block;height:12px;border-radius:6px;background:linear-gradient(90deg,var(--grid) 0%,var(--border) 50%,var(--grid) 100%);background-size:200% 100%;animation:shimmer 1.2s ease-in-out infinite}.skel-row{padding:18px 16px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media(prefers-reduced-motion:reduce){.skel{animation:none}}.drawer-scrim{position:fixed;inset:0;z-index:20;background:#00000052}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:21;width:min(560px,100vw);overflow-y:auto;padding:18px 22px 28px;background:var(--surface-1);border-left:1px solid var(--border);box-shadow:-8px 0 32px #0000002e}.drawer-top{display:flex;align-items:center;gap:10px}.drawer-top .spacer{flex:1}.drawer h2{margin:14px 0 2px;font-size:19px;overflow-wrap:anywhere}.drawer .sub{margin:0 0 8px;font-size:13px;color:var(--text-muted)}.drawer section{margin-top:18px}.drawer h4{margin:0 0 6px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted)}.drawer h4 .src-note{margin-left:8px;font-weight:400;text-transform:none;letter-spacing:0}.drawer .src-inline{color:var(--text-muted)}.drawer .message{margin:0;padding:12px 14px;font-size:14.5px;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--page);border:1px solid var(--border);border-radius:10px}.drawer dl{display:grid;grid-template-columns:130px 1fr;gap:6px 12px;margin:0;font-size:13.5px}.drawer dt{color:var(--text-muted)}.drawer dd{margin:0;overflow-wrap:anywhere}.drawer code{font-size:12.5px}.drawer a{color:var(--accent)}.drawer .skel{height:14px}.shots{display:flex;flex-wrap:wrap;gap:10px}.shot{width:120px;height:120px;padding:0;overflow:hidden;cursor:zoom-in;background:var(--page);border:1px solid var(--border);border-radius:10px}.shot img{display:block;width:100%;height:100%;object-fit:cover}.drawer-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:24px;padding-top:16px;border-top:1px solid var(--grid)}.drawer-actions .primary-btn{padding:10px 18px;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:9px}.drawer-actions button:disabled{opacity:.6;cursor:default}.drawer-actions .error{flex-basis:100%;margin:0;font-size:13px;color:var(--bad)}.lightbox{position:fixed;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:24px;cursor:zoom-out;background:#000c}.lightbox img{max-width:100%;max-height:100%;border-radius:8px}@media(max-width:720px){.shell{padding:0 16px 48px}.topbar{flex-wrap:wrap;row-gap:6px}.brand,.env-badge{white-space:nowrap}.env-badge{order:10}.req-head{display:none}.req-row{grid-template-columns:1fr auto;grid-template-areas:"cat status" "from from" "summary summary" "when when";gap:6px 10px}.req-row .when{grid-area:when}.req-row .when small{display:inline;margin-left:6px}.req-row .cat{grid-area:cat}.req-row .from{grid-area:from}.req-row .summary{grid-area:summary}.req-row .status{grid-area:status}.drawer{padding:16px 16px 28px;border-left:none}.drawer dl{grid-template-columns:1fr;gap:0}.drawer dd{margin-bottom:8px}}
