@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;700&display=swap";:root{--4y-white: #FFFFFF;--4y-black: #0A0A0A;--4y-green: #26BE43;--4y-green-press: #1FA838;--4y-green-hover: #2DCE4B;--4y-gray-950: #0F0F10;--4y-gray-900: #161618;--4y-gray-800: #1E1F22;--4y-gray-700: #2A2C30;--4y-gray-600: #3B3E44;--4y-gray-500: #62666D;--4y-gray-400: #8C9097;--4y-gray-300: #B8BCC2;--4y-gray-200: #D9DCE0;--4y-gray-150: #E6E8EB;--4y-gray-100: #EFF1F3;--4y-gray-50: #F7F8F9;--fg-1: var(--4y-black);--fg-2: var(--4y-gray-600);--fg-3: var(--4y-gray-500);--fg-mute: var(--4y-gray-400);--fg-on-signal: var(--4y-black);--fg-on-dark: var(--4y-white);--bg-1: var(--4y-white);--bg-2: var(--4y-gray-50);--bg-3: var(--4y-gray-100);--bg-inverse: var(--4y-black);--border-1: var(--4y-gray-150);--border-2: var(--4y-gray-200);--border-strong: var(--4y-black);--signal: var(--4y-green);--signal-hover: var(--4y-green-hover);--signal-press: var(--4y-green-press);--status-live: var(--4y-green);--status-warn: #F5A524;--status-error: #E5484D;--status-offline: var(--4y-gray-400);--font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--w-light: 300;--w-regular: 400;--w-medium: 500;--w-semibold: 600;--w-bold: 700;--w-extrabold:800;--w-black: 900;--t-display-xl: clamp(64px, 9vw, 144px);--t-display: clamp(48px, 6.5vw, 96px);--t-h1: 56px;--t-h2: 36px;--t-h3: 24px;--t-h4: 18px;--t-body: 15px;--t-small: 13px;--t-micro: 11px;--tr-display: -.03em;--tr-tight: -.02em;--tr-normal: 0;--tr-caps: .1em;--lh-display: .95;--lh-heading: 1.08;--lh-body: 1.5;--lh-tight: 1.2;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--s-8: 64px;--s-9: 96px;--s-10: 128px;--r-0: 0px;--r-1: 2px;--r-2: 4px;--r-3: 6px;--r-pill: 999px;--shadow-1: 0 1px 0 rgba(10,10,10,.04);--shadow-2: 0 4px 16px -8px rgba(10,10,10,.12), 0 1px 0 rgba(10,10,10,.04);--shadow-3: 0 16px 48px -16px rgba(10,10,10,.24);--shadow-signal: 0 0 0 4px rgba(38,190,67,.18);--ease-4y: cubic-bezier(.2, 0, 0, 1);--dur-fast: .12s;--dur-base: .18s;--dur-slow: .24s}.theme-dark,[data-theme=dark]{--fg-1: var(--4y-white);--fg-2: var(--4y-gray-300);--fg-3: var(--4y-gray-400);--fg-mute: var(--4y-gray-500);--bg-1: var(--4y-gray-950);--bg-2: var(--4y-gray-900);--bg-3: var(--4y-gray-800);--bg-inverse: var(--4y-white);--border-1: var(--4y-gray-800);--border-2: var(--4y-gray-700);--border-strong: var(--4y-white);--shadow-2: 0 4px 16px -8px rgba(0,0,0,.6), 0 1px 0 rgba(255,255,255,.04);--shadow-3: 0 16px 48px -16px rgba(0,0,0,.8)}.t-display-xl,.t-display{font-family:var(--font-sans);font-weight:var(--w-black);letter-spacing:var(--tr-display);line-height:var(--lh-display);color:var(--fg-1)}.t-display-xl{font-size:var(--t-display-xl)}.t-display{font-size:var(--t-display)}.t-h1,.t-h2,.t-h3,.t-h4{font-family:var(--font-sans);letter-spacing:var(--tr-tight);line-height:var(--lh-heading);color:var(--fg-1)}.t-h1{font-size:var(--t-h1);font-weight:var(--w-extrabold)}.t-h2{font-size:var(--t-h2);font-weight:var(--w-bold)}.t-h3{font-size:var(--t-h3);font-weight:var(--w-semibold)}.t-h4{font-size:var(--t-h4);font-weight:var(--w-semibold)}.t-body{font-family:var(--font-sans);font-size:var(--t-body);font-weight:var(--w-regular);line-height:var(--lh-body);color:var(--fg-2);letter-spacing:0}.t-small{font-family:var(--font-sans);font-size:var(--t-small);font-weight:var(--w-regular);line-height:1.45;color:var(--fg-2)}.t-micro{font-family:var(--font-sans);font-size:var(--t-micro);font-weight:var(--w-medium);line-height:1.3;color:var(--fg-3)}.t-eyebrow{font-family:var(--font-sans);font-size:var(--t-micro);font-weight:var(--w-semibold);letter-spacing:var(--tr-caps);text-transform:uppercase;color:var(--fg-3)}.t-mono{font-family:var(--font-mono);font-weight:var(--w-regular);font-size:var(--t-small);letter-spacing:0;color:var(--fg-2);font-feature-settings:"tnum" 1,"ss01" 1}.t-code{font-family:var(--font-mono);font-size:var(--t-small);padding:2px 6px;background:var(--bg-2);border:1px solid var(--border-1);border-radius:var(--r-1);color:var(--fg-1)}.four-y{font-family:var(--font-sans);font-size:var(--t-body);line-height:var(--lh-body);color:var(--fg-1);background:var(--bg-1);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.four-y h1{font:var(--w-extrabold) var(--t-h1)/var(--lh-heading) var(--font-sans);letter-spacing:var(--tr-tight)}.four-y h2{font:var(--w-bold) var(--t-h2)/var(--lh-heading) var(--font-sans);letter-spacing:var(--tr-tight)}.four-y h3{font:var(--w-semibold) var(--t-h3)/var(--lh-heading) var(--font-sans);letter-spacing:var(--tr-tight)}.four-y h4{font:var(--w-semibold) var(--t-h4)/var(--lh-heading) var(--font-sans);letter-spacing:0}.four-y p{color:var(--fg-2)}.four-y code,.four-y kbd{font-family:var(--font-mono)}.signal-dot{display:inline-block;width:8px;height:8px;border-radius:999px;background:var(--signal);box-shadow:0 0 0 4px #26be432e}.signal-dot--live{animation:signal-pulse 1.4s var(--ease-4y) infinite}@keyframes signal-pulse{0%{box-shadow:0 0 #26be438c}to{box-shadow:0 0 0 10px #26be4300}}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{font-family:var(--font-sans);background:var(--bg-2);color:var(--fg-1);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:#26be4347}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:999px;border:3px solid transparent;background-clip:content-box}.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}.eyebrow{font-family:var(--font-sans);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--fg-3)}.muted{color:var(--fg-3)}.nowrap{white-space:nowrap}.app{display:grid;grid-template-columns:240px 1fr;height:100vh;overflow:hidden;background:var(--bg-1)}[data-theme=light] .app{background:var(--bg-2)}[data-theme=light] .sidebar,[data-theme=light] .card,[data-theme=light] .topbar{background:var(--4y-white)}.sidebar{border-right:1px solid var(--border-1);background:var(--bg-1);display:flex;flex-direction:column;padding:20px 14px;gap:4px;overflow-y:auto}.sidebar .logo{display:flex;align-items:center;gap:10px;padding:6px 8px 24px}.sidebar .logo img{height:32px}.sidebar .logo .tag{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);border:1px solid var(--border-1);border-radius:999px;padding:2px 8px}.nav-section{margin-top:14px;padding:0 8px 6px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:6px;cursor:pointer;color:var(--fg-2);font-size:14px;font-weight:500;border:1px solid transparent;transition:background var(--dur-base) var(--ease-4y),color var(--dur-base) var(--ease-4y)}.nav-item:hover{background:var(--bg-2);color:var(--fg-1)}.nav-item.active{background:var(--bg-3);color:var(--fg-1);border-color:var(--border-1)}.nav-item svg{width:18px;height:18px;flex:none}.nav-item .count{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--fg-3)}.nav-divider{height:1px;background:var(--border-1);margin:12px 10px}.sidebar .foot{margin-top:auto;padding:12px 8px 0}.sidebar .foot .seed{font-family:var(--font-mono);font-size:11px;color:var(--fg-3)}.main{display:flex;flex-direction:column;min-width:0;overflow:hidden}.topbar{height:64px;flex:none;border-bottom:1px solid var(--border-1);background:var(--bg-1);display:flex;align-items:center;gap:16px;padding:0 28px}.topbar .title{display:flex;flex-direction:column}.topbar .title h1{font-size:18px;font-weight:700;letter-spacing:-.01em;margin:0;color:var(--fg-1)}.topbar .title span{font-size:12px;color:var(--fg-3)}.topbar .spacer{flex:1}.content{flex:1;overflow-y:auto;padding:28px}.content-narrow{max-width:1180px}.timemachine{display:flex;align-items:center;gap:14px}.timemachine .clock{font-family:var(--font-mono);font-size:14px;color:var(--fg-1);border:1px solid var(--border-1);border-radius:6px;padding:7px 12px;display:flex;align-items:center;gap:8px;background:var(--bg-1);min-width:150px}.timemachine input[type=range]{width:280px;accent-color:var(--signal)}.tm-btns{display:flex;gap:6px}.btn{font-family:var(--font-sans);font-weight:600;font-size:13px;padding:8px 13px;border-radius:4px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;gap:7px;transition:background var(--dur-base) var(--ease-4y),border-color var(--dur-base) var(--ease-4y);white-space:nowrap}.btn svg{width:15px;height:15px}.btn-primary{background:var(--signal);color:var(--4y-black)}.btn-primary:hover{background:var(--signal-hover)}.btn-secondary{background:var(--bg-1);color:var(--fg-1);border-color:var(--border-1)}.btn-secondary:hover{background:var(--bg-2);border-color:var(--border-2)}.btn-ghost{background:transparent;color:var(--fg-2)}.btn-ghost:hover{background:var(--bg-2);color:var(--fg-1)}.btn:disabled{opacity:.4;cursor:not-allowed}select.field-select,input.field-input{font-family:var(--font-sans);font-size:13px;background:var(--bg-1);color:var(--fg-1);border:1px solid var(--border-1);border-radius:6px;padding:8px 12px;outline:none}select.field-select:focus,input.field-input:focus{border-color:var(--signal);box-shadow:0 0 0 3px #26be432e}input.field-input::-webkit-calendar-picker-indicator{filter:var(--cal-icon-filter, none);cursor:pointer}.search-field{display:inline-flex;align-items:center;gap:8px;height:36px;border:1px solid var(--border-1);border-radius:6px;background:var(--bg-1);padding:0 12px;transition:border-color var(--dur-base) var(--ease-4y),box-shadow var(--dur-base) var(--ease-4y)}.search-field:focus-within{border-color:var(--signal);box-shadow:0 0 0 3px #26be432e}.search-field input{border:0;outline:0;background:transparent;color:var(--fg-1);font-family:var(--font-sans);font-size:13px;min-width:200px}.search-field input::placeholder{color:var(--fg-mute)}.search-field svg{color:var(--fg-3);flex:none}[data-theme=dark]{--cal-icon-filter: invert(1)}.card{background:var(--bg-1);border:1px solid var(--border-1);border-radius:6px;padding:20px}.card.pad-0{padding:0}.card-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.card-head h3{font-size:15px;font-weight:600;margin:0;letter-spacing:-.01em}.card-head .spacer{flex:1}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (max-width: 1100px){.grid-4{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr 1fr}}.metric{background:var(--bg-1);border:1px solid var(--border-1);border-radius:6px;padding:18px 20px;display:flex;flex-direction:column;gap:6px}.metric .label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3)}.metric .value{font-family:var(--font-mono);font-size:30px;font-weight:700;line-height:1;color:var(--fg-1);letter-spacing:-.02em}.metric .value.small{font-size:24px}.metric .sub{font-size:12px;color:var(--fg-3);display:flex;align-items:center;gap:6px}.metric .value.green{color:var(--signal)}.metric .value.warn{color:var(--status-warn)}.metric .value.error{color:var(--status-error)}.badge{font-family:var(--font-mono);font-weight:500;font-size:11px;padding:3px 9px;border-radius:999px;border:1px solid var(--border-1);background:var(--bg-1);color:var(--fg-2);display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.badge.dot-before:before{content:"";width:6px;height:6px;border-radius:999px;background:var(--fg-mute);flex:none}.badge.on_track:before,.badge.ok:before,.badge.live:before{background:var(--signal)}.badge.ahead:before{background:#38bdf8}.badge.at_risk:before,.badge.warn:before{background:var(--status-warn)}.badge.critical:before,.badge.error:before{background:var(--status-error)}.badge.green{color:var(--signal);border-color:#26be4366}.badge.warn{color:var(--status-warn);border-color:#f5a52466}.badge.error{color:var(--status-error);border-color:#e5484d66}.type-pill{font-family:var(--font-mono);font-size:10px;padding:2px 7px;border-radius:4px;border:1px solid var(--border-1);color:var(--fg-3);text-transform:uppercase;letter-spacing:.04em}.type-pill.guaranteed{color:var(--signal);border-color:#26be4366}.dot{width:8px;height:8px;border-radius:999px;flex:none;display:inline-block}.dot.live{background:var(--signal);box-shadow:0 0 0 3px #26be4333;animation:pulse 1.4s var(--ease-4y) infinite}.dot.warn{background:var(--status-warn)}.dot.error{background:var(--status-error)}.dot.off{background:var(--status-offline)}@keyframes pulse{0%{box-shadow:0 0 #26be4380}to{box-shadow:0 0 0 9px #26be4300}}table.tbl{width:100%;border-collapse:collapse;font-size:13px}table.tbl th{text-align:left;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);padding:10px 12px;border-bottom:1px solid var(--border-strong);position:sticky;top:0;background:var(--bg-1)}table.tbl th.num,table.tbl td.num{text-align:right;font-family:var(--font-mono)}table.tbl td{padding:11px 12px;border-bottom:1px solid var(--border-1);color:var(--fg-2)}table.tbl tbody tr:hover{background:var(--bg-2)}table.tbl tbody tr.clickable{cursor:pointer}table.tbl tbody tr.selected{background:var(--bg-3)}table.tbl td .strong{color:var(--fg-1);font-weight:500}.table-wrap{overflow:auto;max-height:62vh}.bar{height:10px;border-radius:999px;background:var(--bg-3);overflow:hidden;position:relative}.bar>span{position:absolute;left:0;top:0;bottom:0;border-radius:999px}.bar .fill-green{background:var(--signal)}.bar .fill-warn{background:var(--status-warn)}.bar .fill-error{background:var(--status-error)}.bar .fill-mute{background:var(--border-2)}.layerbar{display:flex;flex-direction:column;gap:7px}.layerbar .row{display:flex;align-items:center;gap:12px}.layerbar .row .lbl{width:130px;font-size:12px;color:var(--fg-3)}.layerbar .row .bar{flex:1}.layerbar .row .val{width:90px;text-align:right;font-family:var(--font-mono);font-size:12px;color:var(--fg-1)}.pipeline{display:grid;grid-template-columns:repeat(4,1fr);gap:0}.pipe-stage{border:1px solid var(--border-1);padding:16px;position:relative}.pipe-stage:not(:last-child){border-right:0}.pipe-stage:first-child{border-radius:6px 0 0 6px}.pipe-stage:last-child{border-radius:0 6px 6px 0}.pipe-stage .n{font-family:var(--font-mono);font-size:28px;font-weight:700;color:var(--fg-1)}.pipe-stage .nlabel{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);margin-top:2px}.pipe-stage .delta{font-family:var(--font-mono);font-size:11px;color:var(--status-error);margin-top:8px}.pipe-stage.final .n{color:var(--signal)}.scoreline{display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px dashed var(--border-1)}.scoreline:last-child{border-bottom:0}.scoreline .k{color:var(--fg-3)}.scoreline .v{font-family:var(--font-mono)}.scoreline .v.pos{color:var(--signal)}.scoreline .v.neg{color:var(--status-error)}.scoreline.total{margin-top:6px;padding-top:8px;border-top:1px solid var(--border-strong)}.scoreline.total .v{font-weight:700;font-size:14px;color:var(--fg-1)}.slotgrid{display:flex;flex-wrap:wrap;gap:8px}.slot{width:104px;height:82px;border:1px solid var(--border-1);border-radius:6px;display:flex;flex-direction:column;justify-content:space-between;padding:10px;font-family:var(--font-mono);font-size:10px;position:relative;overflow:hidden;background:var(--bg-1)}.slot.clickable{cursor:pointer;transition:border-color var(--dur-base) var(--ease-4y)}.slot.clickable:hover{border-color:var(--fg-2)}.slot .pos{color:var(--fg-mute);font-size:11px}.slot .who{font-size:13px;color:var(--fg-1);line-height:1.15;font-family:var(--font-sans);font-weight:600}.slot.institutional,.slot.calhau{background:var(--bg-2);border-color:var(--border-1);opacity:.72}.slot.institutional .who,.slot.calhau .who{color:var(--fg-3);font-weight:500}.slot.institutional .pos,.slot.calhau .pos{color:var(--fg-mute)}.slot.programmatic{border-style:dashed;opacity:.72}.slot.programmatic .who{color:var(--fg-3)}.slot .corner{position:absolute;top:5px;right:5px;color:var(--fg-mute)}.slot .barcol{height:6px;border-radius:3px}.slot.institutional .barcol,.slot.calhau .barcol,.slot.programmatic .barcol{background:var(--border-1)!important}:root{--calhau: #8B5CF6;--calhau-bg: rgba(139,92,246,.1);--calhau-border: rgba(139,92,246,.45)}.calhau-fg{color:var(--calhau)}.badge.calhau{color:var(--calhau);border-color:var(--calhau-border)}.badge.calhau.dot-before:before{background:var(--calhau)}.badge.institucional{color:#0ea5e9;border-color:#0ea5e973}.legend .sw.calhau{background:var(--calhau-bg);border-color:var(--calhau-border)}.legend{display:flex;gap:18px;flex-wrap:wrap;font-size:12px;color:var(--fg-3)}.legend .item{display:flex;align-items:center;gap:7px}.legend .sw{width:14px;height:14px;border-radius:3px;border:1px solid var(--border-1)}.legend .sw.campaign{background:var(--bg-1)}.legend .sw.institutional{background:var(--bg-3)}.legend .sw.programmatic{border-style:dashed}.legend .sw.violation{border-color:var(--status-error);box-shadow:inset 0 0 0 1px var(--status-error)}.alert-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-1)}.alert-row:last-child{border-bottom:0}.alert-row .ic{width:30px;height:30px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex:none;border:1px solid var(--border-1)}.alert-row .ic.error{color:var(--status-error);border-color:#e5484d66}.alert-row .ic.warn{color:var(--status-warn);border-color:#f5a52466}.alert-row .msg{font-size:13px;color:var(--fg-1)}.alert-row .meta{font-size:11px;color:var(--fg-3);font-family:var(--font-mono);margin-top:2px}.empty{padding:40px;text-align:center;color:var(--fg-3);font-size:13px}.section-title{display:flex;align-items:center;gap:10px;margin:4px 0 16px}.section-title h2{font-size:20px;font-weight:700;letter-spacing:-.01em;margin:0}.section-title .desc{font-size:13px;color:var(--fg-3)}.toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:18px}.seg{display:inline-flex;border:1px solid var(--border-1);border-radius:6px;overflow:hidden}.seg-btn{background:var(--bg-1);color:var(--fg-3);border:0;padding:7px 16px;font-size:13px;font-family:var(--font-sans);cursor:pointer}.seg-btn+.seg-btn{border-left:1px solid var(--border-1)}.seg-btn:hover{color:var(--fg-1)}.seg-btn.active{background:var(--signal);color:var(--4y-black);font-weight:600}.year-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:18px 20px}.month-name{font-weight:600;font-size:13px;margin-bottom:8px;text-transform:capitalize}.month-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.month-days .wd{font-size:9px;color:var(--fg-mute);text-align:center;font-family:var(--font-mono);padding-bottom:2px}.daycell{aspect-ratio:1;border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:9px;color:#ffffffe6;cursor:pointer;font-family:var(--font-mono)}.daycell:hover{outline:1.5px solid var(--fg-1)}.daystrip{display:flex;align-items:center;gap:8px}.daystrip-track{display:flex;gap:6px;overflow-x:auto;flex:1;padding-bottom:2px}.daychip{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:56px;padding:6px 8px;border:1px solid var(--border-1);border-radius:6px;background:var(--bg-1);color:var(--fg-2);cursor:pointer;flex:none}.daychip:hover{border-color:var(--fg-2)}.daychip.active{background:var(--signal);border-color:var(--signal);color:var(--4y-black)}.daychip .wd{font-size:9px;text-transform:uppercase;letter-spacing:.05em;opacity:.8}.daychip .dd{font-family:var(--font-mono);font-size:12px;font-weight:600}.toolbar .lbl{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3)}.kv{display:flex;gap:8px;font-size:12px}.kv .k{color:var(--fg-3)}.kv .v{color:var(--fg-1);font-family:var(--font-mono)}:root{--tc-guaranteed: #26BE43;--tc-standard: #38BDF8;--tc-remnant: #F5A524;--tc-institutional: #2DD4BF;--tc-house: #8B5CF6}.type-pill.tp{background:transparent}.type-pill.tp-guaranteed{color:var(--tc-guaranteed);border-color:color-mix(in srgb,var(--tc-guaranteed) 45%,transparent)}.type-pill.tp-standard{color:var(--tc-standard);border-color:color-mix(in srgb,var(--tc-standard) 45%,transparent)}.type-pill.tp-remnant{color:var(--tc-remnant);border-color:color-mix(in srgb,var(--tc-remnant) 45%,transparent)}.type-pill.tp-institutional{color:var(--tc-institutional);border-color:color-mix(in srgb,var(--tc-institutional) 45%,transparent)}.type-pill.tp-house{color:var(--tc-house);border-color:color-mix(in srgb,var(--tc-house) 45%,transparent)}.type-pill .lead{width:6px;height:6px;border-radius:999px;display:inline-block;margin-right:5px;vertical-align:middle}.badge.st-running{color:var(--signal);border-color:#26be4366}.badge.st-running:before{background:var(--signal)}.badge.st-waiting{color:#38bdf8;border-color:#38bdf866}.badge.st-waiting:before{background:#38bdf8}.badge.st-finished{color:var(--fg-3)}.badge.st-finished:before{background:var(--fg-mute)}.badge.st-paused{color:var(--status-warn);border-color:#f5a52466}.badge.st-paused:before{background:var(--status-warn)}.badge.st-cancelled{color:var(--status-error);border-color:#e5484d66}.badge.st-cancelled:before{background:var(--status-error)}.badge.st-draft{color:var(--fg-3)}.badge.st-draft:before{background:var(--fg-mute)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0a99;display:flex;align-items:center;justify-content:center;z-index:50;padding:24px}.modal{background:var(--bg-1);border:1px solid var(--border-1);border-radius:8px;max-width:760px;width:100%;max-height:86vh;overflow:auto;box-shadow:var(--shadow-3)}.modal.wide{max-width:980px}.modal-head{display:flex;align-items:center;gap:12px;padding:18px 24px;border-bottom:1px solid var(--border-1);position:sticky;top:0;background:var(--bg-1);z-index:1}.modal-head h3{margin:0;font-size:17px;font-weight:700;letter-spacing:-.01em}.modal-head .spacer{flex:1}.modal-body{padding:24px}.help-list{display:flex;flex-direction:column;gap:14px}.help-item{display:flex;gap:12px}.help-item .ic{width:30px;height:30px;flex:none;border:1px solid var(--border-1);border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--signal)}.help-item .t{font-weight:600;color:var(--fg-1);font-size:14px}.help-item .d{color:var(--fg-2);font-size:13px;line-height:1.5}.ms{border:1px solid var(--border-1);border-radius:6px;background:var(--bg-1)}.ms-search{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border-1)}.ms-search input{border:0;outline:0;background:transparent;color:var(--fg-1);font-family:var(--font-sans);font-size:13px;width:100%}.ms-search svg{color:var(--fg-3);flex:none}.ms-list{max-height:170px;overflow-y:auto}.ms-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;font-size:13px;color:var(--fg-2)}.ms-opt:hover{background:var(--bg-2)}.ms-opt.sel{color:var(--fg-1)}.ms-check{width:15px;height:15px;border:1px solid var(--border-2);border-radius:3px;flex:none;display:flex;align-items:center;justify-content:center}.ms-opt.sel .ms-check{background:var(--signal);border-color:var(--signal);color:var(--4y-black)}.ms-foot{padding:6px 10px;border-top:1px solid var(--border-1);font-size:11px;color:var(--fg-3);display:flex;justify-content:space-between}.ms-foot button{background:none;border:0;color:var(--signal);cursor:pointer;font-size:11px}.combo{position:relative}.combo-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;font-family:var(--font-sans);font-size:13px;background:var(--bg-1);color:var(--fg-1);border:1px solid var(--border-1);border-radius:6px;padding:8px 12px;cursor:pointer;outline:none}.combo-trigger:hover{border-color:var(--border-2)}.combo-trigger svg{color:var(--fg-3);flex:none}.combo-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200}.combo-panel{position:fixed;z-index:201;box-shadow:var(--shadow-3)}.combo-add{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--signal);cursor:pointer;font-size:12px;padding:2px 0}.ms-radio{width:15px;height:15px;border:1px solid var(--border-2);border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center}.ms-radio .dot-in{width:7px;height:7px;border-radius:50%;background:var(--signal)}.ms-opt.sel .ms-radio{border-color:var(--signal)}.thumb{position:relative;border-radius:4px;overflow:hidden;border:1px solid var(--border-1);background:var(--bg-3);display:flex;align-items:center;justify-content:center;flex:none;cursor:pointer}.thumb .play{color:#ffffffeb}.thumb .res{position:absolute;bottom:3px;right:4px;font-family:var(--font-mono);font-size:8px;color:#ffffffeb;background:#0a0a0a73;border-radius:2px;padding:0 3px}.thumb .ar{position:absolute;top:3px;left:4px;font-family:var(--font-mono);font-size:8px;color:#ffffffe6}.thumb.pending{outline:1px dashed var(--status-warn);outline-offset:-2px}.thumb-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.format-chip{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid var(--border-1)}.format-chip.ok{color:var(--signal);border-color:#26be4366}.format-chip.missing{color:var(--status-error);border-color:#e5484d66}.info-i{width:14px;height:14px;color:var(--fg-3);cursor:help;vertical-align:middle}.daygrid{display:flex;align-items:flex-end;gap:2px;height:120px}.daygrid .col{flex:1;min-width:3px;display:flex;flex-direction:column;justify-content:flex-end;height:100%;position:relative}.daygrid .col .exp{position:absolute;left:0;right:0;border-top:1px dashed var(--fg-mute)}.daygrid .col.future .exp{opacity:.4}.daygrid .col .act{width:100%;border-radius:2px 2px 0 0}.daygrid .col .itv-marker{position:absolute;bottom:-6px;left:50%;transform:translate(-50%);width:22px;height:30px;display:flex;align-items:flex-end;justify-content:center;cursor:pointer;z-index:4}.daygrid .col .itv-marker .itv-dot{width:12px;height:12px;border-radius:50%;background:var(--status-warn);border:2px solid var(--bg-1);box-shadow:0 0 0 2px var(--status-warn);transition:transform var(--dur-base) var(--ease-4y)}.daygrid .col .itv-marker:hover .itv-dot{transform:scale(1.15)}.itv-pop{position:absolute;bottom:calc(100% - 5px);left:50%;transform:translate(-50%);width:270px;background:var(--bg-1);border:1px solid var(--border-2);border-radius:8px;box-shadow:var(--shadow-3);padding:12px 14px;z-index:60;cursor:default;text-align:left;white-space:normal}.itv-pop:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:-1px;border:7px solid transparent;border-top-color:var(--bg-1);filter:drop-shadow(0 1px 0 var(--border-2))}.itv-pop-head{display:flex;align-items:center;gap:7px;font-weight:600;font-size:13px;color:var(--fg-1)}.itv-pop-date{font-family:var(--font-mono);font-size:11px;color:var(--fg-3);margin:2px 0 8px}.itv-pop-text{font-size:12px;color:var(--fg-2);line-height:1.5;margin:0 0 10px}.itv-pop-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:12px;padding:3px 0;border-top:1px solid var(--border-1)}.itv-pop-row .signal{color:var(--signal);font-weight:600}.itv-pop-row .warn{color:var(--status-warn);font-weight:600}.itv-pop-foot{margin-top:9px;font-size:11px;color:var(--fg-3);font-style:italic}.chart-tip-float{position:fixed;transform:translate(-50%,-100%);background:var(--bg-1);border:1px solid var(--border-2);border-radius:8px;box-shadow:var(--shadow-3);padding:11px 13px;z-index:200;text-align:left;white-space:normal;pointer-events:none}.chart-tip-arrow{position:absolute;top:100%;transform:translate(-50%);margin-top:-1px;width:0;height:0;border:6px solid transparent;border-top-color:var(--bg-1);filter:drop-shadow(0 1px 0 var(--border-2))}.chart-tip-head{display:flex;align-items:center;gap:7px;font-weight:600;font-size:12px;color:var(--fg-1)}.chart-tip-head .dot{width:8px;height:8px;flex-shrink:0}.chart-tip-sub{font-family:var(--font-mono);font-size:10px;color:var(--fg-3);text-transform:uppercase;letter-spacing:.04em;margin-top:3px}.chart-tip-value{font-family:var(--font-mono);font-size:20px;font-weight:700;color:var(--fg-1);margin:8px 0 4px;letter-spacing:-.01em}.chart-tip-value small{font-family:var(--font-sans);font-size:11px;font-weight:500;color:var(--fg-3);margin-left:5px;letter-spacing:0}.chart-tip-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:11.5px;padding:5px 0;border-top:1px solid var(--border-1)}.chart-tip-row:first-of-type{margin-top:3px}.chart-tip-row-l{color:var(--fg-3)}.chart-tip-row-v{font-family:var(--font-mono);font-weight:600;color:var(--fg-1)}.chart-tip-row-v.signal{color:var(--signal)}.chart-tip-row-v.warn{color:var(--status-warn)}.chart-tip-row-v.muted{color:var(--fg-3);font-weight:500}.chart-tip-foot{margin-top:9px;padding-top:8px;border-top:1px solid var(--border-1);font-size:11px;color:var(--fg-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chart-tip-foot .dot{width:7px;height:7px;flex-shrink:0}.chart-tip-foot .peak{color:var(--signal);font-weight:600}.chart-tip-foot .muted{color:var(--fg-3)}.req{color:var(--status-error)}.iab-warn{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--status-error);border-radius:6px;background:#f43f5e14;color:var(--status-error);font-size:13px}.toggle-row{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--fg-2)}.toggle-row input{width:16px;height:16px;accent-color:var(--signal)}.form-grid{display:grid;grid-template-columns:300px 1fr;gap:16px 24px;align-items:center}.form-label{text-align:right;font-size:13px;color:var(--fg-2)}@media (max-width: 900px){.form-grid{grid-template-columns:1fr;gap:6px 0}.form-label{text-align:left}}.switch{width:46px;height:26px;border-radius:999px;border:0;background:var(--border-2);position:relative;cursor:pointer;padding:0;transition:background var(--dur-base) var(--ease-4y)}.switch.on{background:var(--signal)}.switch .knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left var(--dur-base) var(--ease-4y)}.switch.on .knob{left:23px}.kv-head{display:grid;grid-template-columns:1fr 1fr 40px;gap:8px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3);font-weight:600}.kv-row{display:grid;grid-template-columns:1fr 1fr 40px;gap:8px;align-items:center}.track-row{display:flex;align-items:center;gap:8px}.seg-btn svg{vertical-align:-2px;margin-right:3px}.daypart-card{border:1px solid var(--border-1);border-radius:8px;padding:16px 18px}.daypart-card-head{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}.daypart-card-head .dp-title{font-weight:600;font-size:14px;color:var(--signal)}.daypart-controls{display:flex;gap:40px;margin-bottom:12px}.dp-toggle{display:flex;align-items:center;gap:10px;font-weight:600;font-size:13px;color:var(--fg-1)}.daypart-build{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.dp-days{display:flex;gap:6px;flex-wrap:wrap}.dp-time{display:flex;align-items:center;gap:8px}.dp-time .field-select{padding:7px 12px}.dchip{border:1px solid var(--border-1);background:var(--bg-1);color:var(--fg-2);border-radius:6px;padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer}.dchip:hover:not(:disabled){border-color:var(--fg-2)}.dchip:disabled{opacity:.4;cursor:default}.dchip.active{background:var(--signal);border-color:var(--signal);color:var(--4y-black)}.dp-rules{display:flex;flex-direction:column;gap:8px;margin-top:14px}.dp-rule{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border-1);border-radius:6px;padding:10px 14px;font-size:13px;color:var(--fg-1)}.btn-outline{background:transparent;border:1px solid var(--signal);color:var(--signal)}.btn-outline:hover:not(:disabled){background:#26be4314}.btn-outline:disabled{opacity:.45;cursor:default}.face-selector{display:flex;flex-direction:column;gap:12px}.face-toolbar{display:flex;gap:10px;flex-wrap:wrap}.face-panels{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 900px){.face-panels{grid-template-columns:1fr}}.face-panel{border:1px solid var(--border-1);border-radius:8px;display:flex;flex-direction:column;min-height:240px}.face-panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border-1)}.face-list{flex:1;overflow-y:auto;max-height:380px;padding:8px;display:flex;flex-direction:column;gap:6px}.face-card{display:flex;align-items:center;gap:12px;padding:8px 10px;border:1px solid var(--border-1);border-radius:6px;background:var(--bg-1)}.face-card.selected{border-color:var(--signal);background:#26be430d}.face-info{flex:1;min-width:0}.face-price{font-family:var(--font-mono);font-weight:600;font-size:13px;white-space:nowrap}.face-slots{display:flex;align-items:center;gap:6px;margin-top:4px}.icon-btn.add{color:var(--signal)}.face-total{display:flex;justify-content:space-between;align-items:flex-end;padding:14px;border-top:1px solid var(--border-1)}.how-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.how-steps li{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--border-1)}.how-steps li:last-child{border-bottom:0;padding-bottom:0}.how-steps li:first-child{padding-top:0}.how-num{flex:none;width:26px;height:26px;border-radius:50%;background:var(--bg-3);border:1px solid var(--border-2);color:var(--signal);font-family:var(--font-mono);font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center}.how-t{font-weight:600;font-size:14px;color:var(--fg-1);margin-bottom:3px}.how-d{font-size:13px;color:var(--fg-2);line-height:1.55}.logline{display:flex;flex-direction:column;gap:5px;padding:9px 0;border-bottom:1px solid var(--border-1);font-size:13px}.logline:last-child{border-bottom:0}.logline .when{font-family:var(--font-mono);font-size:11px;color:var(--fg-3)}.logline .logbody{display:flex;align-items:flex-start;gap:8px}.logline .ic{flex:none;color:var(--fg-3);margin-top:1px}.logline .msg{color:var(--fg-1)}.logline .msg .sub{color:var(--fg-3);font-size:12px}.stack{display:flex;flex-direction:column;gap:16px}.compact,.compact .grid{gap:12px}.compact .card{padding:14px 16px}.compact .card.pad-0{padding:0}.compact .card-head{margin-bottom:10px}.compact .card-head h3{font-size:14px}.compact .metric{padding:12px 14px;gap:4px}.compact .metric .value{font-size:22px}.compact .metric .value.small{font-size:19px}.compact .daygrid{height:96px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.chips{display:flex;gap:6px;flex-wrap:wrap}
