:root{--surface-1: #fcfcfb;--page: #f9f9f7;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--gridline: #e1e0d9;--baseline: #c3c2b7;--border: rgba(11, 11, 11, .1);--series-supply: #2a78d6;--series-demand: #1baf7a;--status-good: #0ca30c;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b;--radius: 10px;--font: system-ui, -apple-system, "Segoe UI", sans-serif}@media(prefers-color-scheme:dark){:root{--surface-1: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--gridline: #2c2c2a;--baseline: #383835;--border: rgba(255, 255, 255, .1);--series-supply: #3987e5;--series-demand: #199e70;--status-good: #0ca30c;--status-warning: #fab219;--status-serious: #ec835a;--status-critical: #d03b3b}}*{box-sizing:border-box}body{margin:0;font-family:var(--font);background:var(--page);color:var(--text-primary);-webkit-font-smoothing:antialiased}.shell{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:var(--surface-1);border-right:1px solid var(--border);padding:24px 16px;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column}.brand{font-size:15px;font-weight:600;letter-spacing:-.01em;margin-bottom:2px}.brand-sub{font-size:12px;color:var(--text-muted);margin-bottom:28px}.field-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin:0 0 6px}.select{width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--page);color:var(--text-primary);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;font-size:13px;margin-bottom:16px;cursor:pointer}.select:disabled,.select option:disabled{color:var(--text-muted)}.scope-note{font-size:11px;color:var(--text-muted);line-height:1.6;padding:10px 0 0;border-top:1px solid var(--border);margin-bottom:20px}.scope-note b{color:var(--text-secondary);font-weight:550}.nav{display:flex;flex-direction:column;gap:2px}.nav button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background:transparent;color:var(--text-secondary);font:inherit;font-size:14px;text-align:left;padding:9px 12px;border-radius:8px;cursor:pointer}.nav button:hover{background:var(--page);color:var(--text-primary)}.nav button[aria-current=page]{background:var(--page);color:var(--text-primary);font-weight:550}.main{flex:1;padding:32px 40px 72px;max-width:1200px}.page-head{margin-bottom:28px}.page-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.page-head-row .date-picker{flex:none}.filtered-region{margin-bottom:20px}.filtered-region-bar{display:flex;justify-content:flex-end;margin-bottom:12px}.empty-window{padding:28px 20px;text-align:center;font-size:13px;color:var(--text-secondary);background:var(--surface-2, rgba(0,0,0,.02));border:1px dashed var(--border);border-radius:var(--radius)}.pager{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border);font-size:13px;color:var(--text-secondary)}.pager-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.pager-rows select{margin-left:6px}.pager-page{min-width:92px;text-align:center}.pager .toggle:disabled{opacity:.45;cursor:default}.page-title{font-size:24px;font-weight:600;letter-spacing:-.02em;margin:0 0 6px}.page-sub{font-size:14px;color:var(--text-secondary);margin:0;max-width:70ch;line-height:1.55}.lineage{display:flex;flex-wrap:wrap;gap:16px;font-size:12px;color:var(--text-muted);margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.lineage b{font-weight:550;color:var(--text-secondary)}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;margin-bottom:20px}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:4px}.card-title{font-size:15px;font-weight:600;margin:0}.card-actions{display:inline-flex;align-items:center;gap:8px}.card-sub{font-size:13px;color:var(--text-secondary);margin:0 0 18px;line-height:1.5;max-width:72ch}.toggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font:inherit;font-size:12px;padding:4px 10px;border-radius:6px;cursor:pointer;white-space:nowrap}.toggle:hover{color:var(--text-primary)}.toggle[aria-current=true]{background:var(--page);color:var(--text-primary);border-color:var(--text-secondary);font-weight:550}.control-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.toggle-group{display:inline-flex;gap:4px}.select-inline{width:auto;margin-bottom:0;padding:4px 26px 4px 10px;font-size:12px}.export-btn{width:100%;margin:4px 0 12px;padding:9px 12px;font-size:13px;font-family:var(--font);font-weight:600;color:#fff;background:var(--series-supply);border:1px solid var(--series-supply);border-radius:var(--radius);cursor:pointer;box-shadow:0 1px 2px #0000001f}.export-btn:hover{filter:brightness(1.06)}.export-btn:active{filter:brightness(.96)}.date-picker{position:relative;display:inline-block}.dp-trigger{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;font-size:12px;font-family:var(--font);color:var(--text-primary);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.dp-trigger:hover{border-color:var(--baseline)}.dp-cal-icon{display:inline-flex;color:var(--text-secondary)}.dp-popover{position:absolute;right:0;top:calc(100% + 8px);z-index:40;width:320px;padding:16px;background:var(--surface-1);border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 40px #00000047}.dp-title-row{display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:4px}.dp-title{font-size:15px;font-weight:600;color:var(--text-primary)}.dp-tz-hint{margin:0 0 12px;text-align:center;font-size:11px;color:var(--text-secondary)}.dp-close{position:absolute;right:0;top:50%;transform:translateY(-50%);width:26px;height:26px;font-size:12px;line-height:1;color:var(--text-secondary);background:var(--page);border:none;border-radius:999px;cursor:pointer}.dp-close:hover{color:var(--text-primary)}.dp-field{display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:12px;border:1px solid var(--text-secondary);border-radius:10px}.dp-field-icon{display:inline-flex;color:var(--text-secondary)}.dp-field-text{flex:1;display:inline-flex;align-items:center;gap:3px;font-size:13px;color:var(--text-primary);flex-wrap:wrap}.dp-placeholder{color:var(--text-muted)}.dp-timedd{position:relative;display:inline-block}.dp-timedd-btn{font-family:var(--font);font-size:12px;color:var(--text-primary);background:var(--page);border:1px solid var(--border);border-radius:6px;padding:2px 8px;cursor:pointer;min-width:48px}.dp-timedd-btn:hover{border-color:var(--baseline)}.dp-timedd-pop{position:absolute;top:calc(100% + 4px);left:0;z-index:60;display:flex;padding:4px;background:var(--surface-1);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000038}.dp-timedd-col{display:flex;flex-direction:column;max-height:200px;overflow-y:auto}.dp-timedd-min{border-left:1px solid var(--border);margin-left:4px;padding-left:4px}.dp-timedd-opt{font-size:12px;color:var(--text-primary);text-align:center;background:transparent;border:none;border-radius:5px;padding:5px 12px;cursor:pointer}.dp-timedd-opt:hover{background:var(--page)}.dp-timedd-opt.sel{background:var(--series-supply);color:#fff;font-weight:600}.dp-field-clear{width:20px;height:20px;font-size:10px;color:var(--text-secondary);background:var(--page);border:none;border-radius:999px;cursor:pointer}.dp-field-clear:hover{color:var(--text-primary)}.dp-shortcuts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.dp-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:5px 12px;color:var(--text-primary);background:transparent;border:1px solid var(--border);border-radius:8px;cursor:pointer}.dp-chip svg{color:var(--text-secondary)}.dp-chip:hover{border-color:var(--baseline);background:var(--page)}.dp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.dp-month{font-size:15px;font-weight:600;color:var(--text-primary)}.dp-nav{display:inline-flex;gap:4px}.dp-nav button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:24px;color:var(--text-secondary);background:transparent;border:1px solid var(--border);border-radius:6px;cursor:pointer}.dp-nav button:hover{background:var(--page);color:var(--text-primary)}.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.dp-weekdays{margin-bottom:6px}.dp-weekday{text-align:center;font-size:11px;color:var(--text-muted);padding:2px 0}.dp-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-primary);background:transparent;border:none;border-radius:999px;cursor:pointer}.dp-day:hover{background:var(--page)}.dp-muted{color:var(--text-muted);opacity:.45}.dp-day.dp-disabled,.dp-day:disabled{color:var(--text-muted);opacity:.3;cursor:not-allowed}.dp-day.dp-disabled:hover,.dp-day:disabled:hover{background:transparent}.dp-chip:disabled{opacity:.4;cursor:not-allowed}.dp-chip:disabled:hover{border-color:var(--border);background:transparent}.dp-today{font-weight:600}.dp-inrange{background:color-mix(in srgb,var(--series-supply) 16%,transparent);border-radius:0}.dp-selected,.dp-selected:hover{background:var(--text-primary);color:var(--surface-1);font-weight:600}.dp-actions{display:flex;gap:12px;margin-top:16px}.dp-clear,.dp-save{flex:1;padding:11px 0;font-size:14px;font-weight:550;border-radius:12px;cursor:pointer}.dp-clear{color:var(--status-critical);background:transparent;border:1px solid var(--status-critical)}.dp-clear:hover{background:color-mix(in srgb,var(--status-critical) 8%,transparent)}.dp-save{color:var(--surface-1);background:var(--text-primary);border:1px solid var(--text-primary)}.dp-save:hover{opacity:.9}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:20px}.tile{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.tile-label{font-size:12px;color:var(--text-secondary);margin-bottom:8px;line-height:1.35}.tile-value{font-size:26px;font-weight:600;letter-spacing:-.02em;line-height:1.1}.tile-note{font-size:11px;color:var(--text-muted);margin-top:6px}.hero{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:26px 24px;margin-bottom:20px}.hero-top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.hero-action{flex:none}.hero-filter{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.hero-filter-hint{font-size:11px;color:var(--text-secondary)}.hero-label{font-size:13px;color:var(--text-secondary);margin-bottom:10px}.hero-value{font-size:52px;font-weight:650;letter-spacing:-.03em;line-height:1}.hero-note{font-size:13px;color:var(--text-secondary);margin-top:12px;max-width:68ch;line-height:1.55}.caveat{display:flex;gap:10px;align-items:flex-start;padding:11px 13px;border-radius:8px;font-size:13px;line-height:1.5;border:1px solid var(--border);margin-bottom:8px;background:var(--surface-1)}.caveat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:6px}.caveat-critical .caveat-dot{background:var(--status-critical)}.caveat-warning .caveat-dot{background:var(--status-warning)}.caveat-info .caveat-dot{background:var(--text-muted)}.caveat-field{font-weight:600}.caveat-body{color:var(--text-secondary)}.inline-caveat{font-size:12px;color:var(--text-secondary);border-left:2px solid var(--status-warning);padding:4px 0 4px 10px;margin:10px 0 0;line-height:1.5}.inline-caveat.critical{border-left-color:var(--status-critical)}.legend{display:flex;gap:18px;margin-bottom:14px}.legend-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text-secondary)}.legend-swatch{width:10px;height:10px;border-radius:3px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}th{font-weight:550;color:var(--text-secondary);font-size:12px}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:0}.table-scroll{overflow-x:auto}.muted{color:var(--text-muted)}.pill{display:inline-block;font-size:11px;font-weight:550;padding:2px 9px;border-radius:999px;white-space:nowrap;border:1px solid transparent}.pill-succeeded{color:var(--status-good);border-color:var(--status-good)}.pill-failed{color:var(--status-critical);border-color:var(--status-critical)}.pill-running{color:var(--text-muted);border-color:var(--baseline)}.pill-review{color:var(--status-warning);border-color:var(--status-warning)}.pill-approved{color:var(--status-good);border-color:var(--status-good)}.pill-rejected{color:var(--status-critical);border-color:var(--status-critical)}.status-cell{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.review-reasons{font-size:11px;margin-top:4px;max-width:240px;line-height:1.4}.review-actions{margin-top:6px}.review-buttons{display:flex;gap:6px}.review-form{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.review-input{font:inherit;font-size:12px;padding:4px 8px;min-width:150px;color:var(--text-primary);background:var(--page);border:1px solid var(--baseline);border-radius:6px}.review-input:focus{outline:none;border-color:var(--text-muted)}.btn{font:inherit;font-size:12px;font-weight:550;padding:4px 10px;border-radius:6px;border:1px solid var(--baseline);background:var(--page);color:var(--text-primary);cursor:pointer}.btn:hover:not(:disabled){border-color:var(--text-muted)}.btn:disabled{opacity:.5;cursor:default}.btn-approve,.btn-approved{color:var(--status-good);border-color:var(--status-good)}.btn-reject,.btn-rejected{color:var(--status-critical);border-color:var(--status-critical)}.btn-cancel{color:var(--text-muted)}.review-note{font-size:11px;margin-top:2px;font-style:italic}.review-error{font-size:11px;color:var(--status-critical);margin-top:4px;max-width:240px}.caveat-review{border-color:var(--status-warning)}.caveat-review .caveat-dot{background:var(--status-warning)}.chart-wrap{position:relative}.chart svg{display:block;width:100%;overflow:visible}.tick{font-size:11px;fill:var(--text-muted);font-variant-numeric:tabular-nums}.cat-label{font-size:12px;fill:var(--text-secondary)}.value-label{font-size:11px;fill:var(--text-secondary);font-variant-numeric:tabular-nums}.tooltip{position:absolute;pointer-events:none;background:var(--surface-1);border:1px solid var(--baseline);border-radius:8px;padding:8px 11px;font-size:12px;color:var(--text-primary);box-shadow:0 4px 14px #00000024;z-index:10;white-space:nowrap;transform:translate(-50%,-100%);line-height:1.5}.tooltip-title{font-weight:600;margin-bottom:3px}.tooltip-row{display:flex;align-items:center;gap:6px;color:var(--text-secondary)}.state{padding:48px;text-align:center;color:var(--text-secondary);font-size:14px}.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(1100px 520px at 12% -10%,color-mix(in srgb,var(--series-supply) 16%,transparent),transparent 60%),radial-gradient(900px 480px at 108% 118%,color-mix(in srgb,var(--series-demand) 14%,transparent),transparent 55%),var(--page)}.login-card{width:100%;max-width:404px;background:var(--surface-1);border:1px solid var(--border);border-radius:16px;padding:34px 32px 26px;box-shadow:0 1px 2px #0000000a,0 18px 48px -22px #00000059}.login-brandblock{display:flex;align-items:center;gap:12px;margin-bottom:26px}.login-logo{width:44px;height:44px;flex:none;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;letter-spacing:.02em;color:#fff;background:linear-gradient(135deg,var(--series-supply),var(--series-demand))}.login-brand{font-size:16px;font-weight:650;letter-spacing:-.01em;color:var(--text-primary)}.login-brand-sub{font-size:12px;color:var(--text-muted);margin-top:1px}.login-title{font-size:21px;font-weight:650;letter-spacing:-.02em;margin:0 0 7px;color:var(--text-primary)}.login-body{font-size:13.5px;color:var(--text-secondary);line-height:1.55;margin:0 0 22px}.login-input{width:100%;padding:10px 12px;font:inherit;font-size:14px;color:var(--text-primary);background:var(--page);border:1px solid var(--border);border-radius:9px;margin-bottom:16px;transition:border-color .12s,box-shadow .12s}.login-input::placeholder{color:var(--text-muted)}.login-input:focus{outline:none;border-color:var(--series-supply);box-shadow:0 0 0 3px color-mix(in srgb,var(--series-supply) 22%,transparent)}.login-input:disabled{opacity:.6;cursor:default}.login-label-row{display:flex;align-items:baseline;justify-content:space-between}.login-password{position:relative}.login-password .login-input{padding-right:44px}.login-eye{position:absolute;top:9px;right:8px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1;background:none;border:none;border-radius:7px;cursor:pointer;opacity:.7}.login-eye:hover{opacity:1;background:var(--page)}.login-submit{width:100%;margin-top:6px;padding:11px 14px;font:inherit;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--series-supply),color-mix(in srgb,var(--series-supply) 70%,var(--series-demand)));border:none;border-radius:9px;cursor:pointer;transition:opacity .12s,transform .02s}.login-submit:hover:not(:disabled){opacity:.92}.login-submit:active:not(:disabled){transform:translateY(1px)}.login-submit:disabled{opacity:.45;cursor:default}.login-secondary{margin-top:18px;padding:0;font:inherit;font-size:13px;color:var(--text-secondary);background:none;border:none;cursor:pointer}.login-secondary:hover{color:var(--text-primary)}.login-link{padding:0;font:inherit;font-size:12.5px;color:var(--series-supply);background:none;border:none;cursor:pointer}.login-link:hover{text-decoration:underline}.login-error{margin:14px 0 0;padding:9px 12px;font-size:13px;line-height:1.5;color:var(--status-critical);background:color-mix(in srgb,var(--status-critical) 10%,transparent);border:1px solid color-mix(in srgb,var(--status-critical) 30%,transparent);border-radius:8px}.login-switch{margin-top:18px;font-size:13px;color:var(--text-secondary);text-align:center}.login-foot{margin:24px 0 0;padding-top:16px;border-top:1px solid var(--border);font-size:12px;color:var(--text-muted);text-align:center}.state-centred{display:flex;align-items:center;justify-content:center;min-height:100vh}.account{margin-top:auto;padding-top:16px;border-top:1px solid var(--border);position:relative}.account-trigger{display:flex;align-items:center;gap:10px;width:100%;min-width:0;padding:6px 8px;font:inherit;text-align:left;background:none;border:none;border-radius:8px;cursor:pointer}.account-trigger:hover{background:var(--page)}.account-caret{margin-left:auto;font-size:11px;color:var(--text-muted);flex:none}.account-menu{position:absolute;left:8px;right:8px;bottom:calc(100% + 6px);background:var(--surface-1);border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px -12px #0006;padding:6px;z-index:10}.account-menu-role{padding:6px 10px;font-size:11.5px;color:var(--text-muted);text-transform:capitalize;border-bottom:1px solid var(--border);margin-bottom:4px}.account-menu-item{display:block;width:100%;padding:8px 10px;font:inherit;font-size:13px;text-align:left;color:var(--text-primary);background:none;border:none;border-radius:6px;cursor:pointer}.account-menu-item:hover{background:var(--page)}.account-row{display:flex;align-items:center;gap:10px;min-width:0}.account-avatar{width:34px;height:34px;flex:none;border-radius:50%;object-fit:cover}.account-avatar-initial{display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:#fff;background:linear-gradient(135deg,var(--series-supply),var(--series-demand))}.account-meta{min-width:0}.account-name{font-size:13px;font-weight:600;color:var(--text-primary);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-email{font-size:11.5px;color:var(--text-muted);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-role{margin-top:3px;font-size:11px;color:var(--text-muted);text-transform:capitalize}.account-signout{margin-top:8px;padding:0;font:inherit;font-size:12px;color:var(--text-secondary);background:none;border:none;text-decoration:underline;cursor:pointer}.account-signout:hover{color:var(--text-primary)}
