:root{--page:#0d0d0d;--surface:#1a1a19;--surface-2:#222220;--ink:#f0efec;--ink-2:#c3c2b7;--muted:#898781;--grid:#2c2c2a;--axis:#383835;--blue:#3987e5;--orange:#d95926;--aqua:#199e70;--yellow:#c98500;--magenta:#d55181;--violet:#9085e9;--good:#0ca30c;--warn:#fab219;--serious:#ec835a;--crit:#e66767}.dash{background:var(--page);color:var(--ink);min-height:100vh;padding:0 16px 40px;font:13px/1.4 system-ui,-apple-system,Segoe UI,sans-serif;position:relative}.dash *{box-sizing:border-box}.dash button,.dash select,.dash input{font:inherit;color:var(--ink)}.topbar{z-index:20;background:linear-gradient(var(--page) 85%, transparent);grid-template-columns:auto auto auto minmax(180px,1fr) auto;align-items:center;gap:14px 22px;padding:10px 0 12px;display:grid;position:sticky;top:0}.brand{align-items:center;gap:10px;display:flex}.brand .mark{color:var(--yellow);font-size:22px}.brand b{letter-spacing:.02em;font-size:15px;display:block}.brand small{color:var(--muted)}.clockbox{align-items:center;gap:10px;display:flex}.clock{letter-spacing:.02em;font:600 30px/1 ui-monospace,SF Mono,Menlo,monospace}.pill{background:var(--surface-2);color:var(--ink-2);text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--axis);border-radius:99px;padding:3px 10px;font-size:11px}.pill.service.live{border-color:var(--aqua);color:var(--aqua)}.pill.prep{border-color:var(--yellow)}.transport,.plan{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.plan label,.sel{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:flex}.btn{background:var(--surface-2);border:1px solid var(--axis);cursor:pointer;border-radius:8px;padding:6px 12px}.btn:hover{border-color:var(--muted)}.btn.primary,.btn.on{border-color:var(--blue);background:#1d3a63}.dash select,.dash input[type=number]{background:var(--surface);border:1px solid var(--axis);border-radius:6px;padding:5px 8px}.dash input[type=number]{width:70px}.seg{border:1px solid var(--axis);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{cursor:pointer;color:var(--ink-2);background:0 0;border:0;padding:5px 12px}.seg button.on{color:var(--ink);background:#1d3a63}.seg.small button{padding:2px 9px;font-size:11px}.scrub{grid-column:1/-1;padding-bottom:14px;position:relative}.scrub input{width:100%;accent-color:var(--blue)}.phases{pointer-events:none;height:12px;position:absolute;top:22px;left:0;right:0}.phases span{color:var(--muted);border-left:2px solid var(--c);white-space:nowrap;padding-left:6px;font-size:10px;position:absolute;transform:translate(-2px)}.kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:8px;display:grid}@media (max-width:1000px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}.tile{background:var(--surface);border-top:3px solid var(--grid);border-radius:12px;min-height:92px;padding:10px 12px 9px}.tile.good{border-top-color:var(--good)}.tile.warn{border-top-color:var(--warn)}.tile.crit{border-top-color:var(--crit)}.tile .lbl{color:var(--ink-2);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;font-size:11px;display:flex}.tile .g{font-size:12px}.tile.good .g{color:var(--good)}.tile.warn .g{color:var(--warn)}.tile.crit .g{color:var(--crit)}.tile .val{font-variant-numeric:tabular-nums;margin-top:2px;font-size:28px;font-weight:650}.tile .val small{color:var(--muted);font-size:15px;font-weight:400}.tile .sub{color:var(--muted);margin-top:2px;font-size:11.5px}.banner{background:linear-gradient(90deg,#3a1d12,#1a1a19 70%);border:1px solid #5a2c1a;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;margin-top:12px;padding:10px 14px;display:flex}.banner .tag{background:var(--orange);color:#fff;text-transform:uppercase;letter-spacing:.08em;border-radius:6px;padding:3px 9px;font-size:11px;font-weight:700}.banner .txt{font-size:14px}.banner .prep{color:var(--aqua);margin-left:auto}.grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:12px;margin-top:12px;display:grid}.panel{background:var(--surface);border-radius:14px;min-width:0;padding:12px 14px}.panel.wide{grid-column:span 2}@media (max-width:860px){.panel.wide{grid-column:auto}.topbar{grid-template-columns:1fr}}.panel h2{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);align-items:center;gap:10px;margin:0 0 8px;font-size:12px;font-weight:650;display:flex}.dash canvas{width:100%;display:block}canvas.floor{height:400px}canvas.ch{height:130px}canvas.ch.tall{height:290px}canvas.gantt{height:400px}.legend{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:4px 14px;margin-top:6px;font-size:11.5px;display:flex}.legend i,i.sw{border-radius:2px;width:9px;height:9px;margin-right:5px;display:inline-block}.muted{color:var(--muted)}.tools{align-items:center;gap:12px;margin-bottom:6px;display:flex}.scroll{overflow:auto}.scroll.tall{max-height:320px}.t{border-collapse:collapse;width:100%;font-size:12px}.t th{text-align:left;color:var(--muted);background:var(--surface);padding:4px 6px;font-weight:500;position:sticky;top:0}.t td{border-top:1px solid var(--grid);padding:4px 6px}.t tr[data-ing],.t tr[data-app]{cursor:pointer}.t tr.sel{background:#1d3a63}.t tr.down td{background:#3a1616}.num{font-variant-numeric:tabular-nums;text-align:right}.barc{width:70px}.bar>i,.mini>i{border-radius:3px;height:100%;display:block}.barc .bar,.mini{background:var(--grid);vertical-align:middle;border-radius:3px;width:60px;height:7px;margin-right:6px;display:inline-block}.mini>i{background:var(--blue)}.st-good{color:var(--good)}.st-warn{color:var(--warn)}.st-crit{color:var(--crit)}.rail{gap:8px;max-height:470px;display:grid;overflow:auto}.tk{background:var(--surface-2);border-left:4px solid var(--axis);border-radius:8px;padding:6px 10px}.tk.old{border-left-color:var(--warn)}.tk.late{border-left-color:var(--crit)}.tk .h{align-items:baseline;gap:10px;display:flex}.tk .h em{font-variant-numeric:tabular-nums;color:var(--ink-2);margin-left:auto;font-style:normal}.tk .ls{color:var(--ink-2);flex-wrap:wrap;gap:2px 10px;font-size:12px;display:flex}.tk .ls .ok{color:var(--aqua)}.tk .st{color:var(--violet);font-size:11px}.scen{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.scn.on{border-color:var(--blue);background:#1d3a63}.scen-head{flex-wrap:wrap;align-items:center;gap:10px;margin:6px 0;display:flex}.why{background:var(--surface-2);border-radius:8px;margin:6px 0;padding:8px 10px}.cmp td:nth-child(n+2),.cmp th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}.v-good{color:var(--good)}.v-bad{color:var(--crit)}.v-flat{color:var(--muted)}.log{max-height:260px;color:var(--ink-2);font:12px/1.7 ui-monospace,Menlo,monospace;overflow:auto}.log time{color:var(--muted);margin-right:8px}.log i{border-radius:50%;width:7px;height:7px;margin-right:8px;display:inline-block}.tip{z-index:50;pointer-events:none;border:1px solid var(--axis);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#000d;border-radius:8px;max-width:280px;padding:7px 10px;font-size:12px;position:absolute}.grow{flex:1}.pgrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 16px;margin:6px 0;display:grid}.fld{color:var(--ink-2);gap:3px;font-size:12px;display:grid}.fld small{font-size:11px}.dash input[type=range]{accent-color:var(--blue);width:100%}.rng{grid-template-columns:1fr 130px 40px;align-items:center;gap:8px;font-size:12px;display:grid}.rng output{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.orders{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.orders .ch{background:var(--surface-2);border-radius:8px;gap:4px;padding:8px 10px;display:grid}.party{flex-wrap:wrap;align-items:center;gap:10px;margin-top:6px;display:flex}.party label{color:var(--ink-2);align-items:center;gap:4px;display:flex}.dash .party input[type=number]{width:54px}.chk{color:var(--ink-2);align-items:flex-start;gap:8px;margin-top:8px;font-size:12px;display:flex}.scroll.short{max-height:240px}.plan-body{min-height:90px}.mtiles{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin-bottom:10px;display:grid}.mini-tile{background:var(--surface-2);border-left:3px solid var(--axis);border-radius:8px;gap:1px;padding:8px 10px;display:grid}.mini-tile small{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px}.mini-tile b{font-variant-numeric:tabular-nums;font-size:22px}.mini-tile span{color:var(--ink-2);font-size:11.5px}.mini-tile.warn{border-left-color:var(--warn)}.mini-tile.crit{border-left-color:var(--crit)}.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;display:grid}.lib-note{margin:0 0 8px}.lib-cards{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-bottom:8px;display:grid}.lib-card{text-align:left;background:var(--surface-2);border:1px solid var(--axis);border-left:3px solid var(--axis);cursor:pointer;border-radius:8px;gap:2px;padding:8px 10px;display:grid}.lib-card:hover{border-color:var(--muted)}.lib-card.on{border-color:var(--blue);background:#1d3a63}.lib-card.good{border-left-color:var(--good)}.lib-card.warn{border-left-color:var(--warn)}.lib-card.crit{border-left-color:var(--crit)}.lib-card small{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px}.lib-card b{font-variant-numeric:tabular-nums;font-size:22px}.lib-card b small{text-transform:none;letter-spacing:0;font-size:11px}.lib-card span{color:var(--ink-2);font-size:11.5px}.lib-card span.st-good{color:var(--good)}.lib-card span.st-warn{color:var(--warn)}.lib-card span.st-crit{color:var(--crit)}.lib-t td:first-child{min-width:240px}.lib-t td:nth-child(n+2),.lib-t th:nth-child(n+2){white-space:nowrap}.lib-t tr.rec td{background:#3987e51f}.lib-t tr.flag td{color:var(--muted)}.lib-t .kind{border:1px solid var(--axis);color:var(--ink-2);white-space:nowrap;border-radius:99px;padding:1px 6px;font-size:10.5px}.lib-t .k-cook{border-color:var(--orange)}.lib-t .k-fire{border-color:var(--aqua)}.lib-t .k-both{border-color:var(--violet)}.btn.small{padding:2px 8px;font-size:11.5px}.lib-live{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.pin{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;display:flex}.pin .muted{font-size:11px}.pin-out{margin-bottom:10px}.pin-out:empty{display:none}
