:root{
  --bg:#ECEEF0;
  --panel:#FFFFFF;
  --ink:#16212B;
  --steel:#5C6B7A;
  --line:#D5DADF;
  --line-soft:#E7EAED;
  --accent:#E8590C;
  --accent-soft:#FFF1E8;
  --ok:#2B8A3E;
  --warn:#E67700;
  --bad:#C92A2A;
  --info:#1971C2;
  --hover:#F5F6F7;
  --muted:#98A2AC;
  --mono:ui-monospace,'Cascadia Mono',Consolas,'Courier New',monospace;
  --sans:'Segoe UI',system-ui,-apple-system,Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:14px}
button,input,select,textarea{font:inherit}
button{color:inherit}.hidden{display:none!important}
.app{min-height:100vh;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:10px;white-space:nowrap}
.brand-mark{width:16px;height:16px;background:var(--accent);border:3px solid var(--ink);transform:rotate(45deg)}
.brand-text{font-size:16px;font-weight:800;letter-spacing:.045em}
.muted{color:var(--steel)}
.mono{font-family:var(--mono)}

.login-screen{position:fixed;inset:0;display:grid;place-items:center;background:repeating-linear-gradient(-45deg,#ECEEF0,#ECEEF0 28px,#E3E6E9 28px,#E3E6E9 30px)}
.login-card{width:390px;max-width:calc(100vw - 32px);background:var(--panel);border:1px solid var(--line);border-top:4px solid var(--accent);padding:34px 38px;box-shadow:0 16px 45px rgba(22,33,43,.16)}
.login-card .muted{margin:10px 0 24px;font-size:13px}

.topbar{height:56px;display:flex;align-items:center;gap:22px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.main-tabs{display:flex;height:100%;flex:1;overflow-x:auto}
.main-tab{height:100%;padding:0 18px;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--steel);cursor:pointer;font-size:13.5px}
.main-tab:hover{color:var(--ink)}
.main-tab.active{color:var(--ink);font-weight:700;border-bottom-color:var(--accent)}
.topbar-right{display:flex;align-items:center;gap:10px}.user-badge{font-size:12.5px;color:var(--steel)}
#view{flex:1;min-height:0}

.btn{border:1px solid var(--line);background:var(--panel);padding:7px 13px;cursor:pointer}
.btn:hover{border-color:var(--steel)}.btn-dark{background:var(--ink);border-color:var(--ink);color:white}.btn-dark:hover{background:#000}
.btn-accent{background:var(--accent);border-color:var(--accent);color:white}.btn-ghost{border-color:transparent;background:transparent;color:var(--steel)}.btn-ghost:hover{color:var(--ink);border-color:var(--line)}
.btn-danger{color:var(--bad)}.btn-sm{font-size:12px;padding:4px 8px}.btn-wide{width:100%}

.field{display:block;margin-bottom:13px}.field>span{display:block;font-size:12px;font-weight:650;color:var(--steel);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:white;padding:8px 9px;color:var(--ink)}
.field textarea{min-height:84px;resize:vertical}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
.form-error{color:var(--bad);font-size:12.5px;margin:0 0 12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .field{margin:0}.form-grid .span-2{grid-column:1/-1}

/* MAP */
.map-page{height:calc(100vh - 56px);display:grid;grid-template-rows:auto 1fr;min-height:620px}
.map-toolbar{display:flex;align-items:center;gap:9px;padding:10px 14px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}
.map-title{font-weight:800;margin-right:8px}.map-search{width:min(360px,50vw);padding:7px 9px;border:1px solid var(--line)}
.map-toolbar .spacer{flex:1}.layer-menu{position:relative}.layer-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:25;background:white;border:1px solid var(--line);box-shadow:0 10px 30px rgba(22,33,43,.14);padding:10px 12px;min-width:240px}
.layer-row{display:flex;gap:8px;align-items:center;padding:5px 0;font-size:12.5px}.layer-row input{accent-color:var(--accent)}
.map-shell{position:relative;overflow:hidden;background:#D8DDE1}
.map-stage{position:absolute;inset:0;touch-action:none;cursor:grab}.map-stage.dragging{cursor:grabbing}
.map-svg{width:100%;height:100%;display:block;background:#fff}
.map-obj{stroke:#53606B;stroke-width:2;vector-effect:non-scaling-stroke;cursor:pointer;transition:filter .12s,stroke-width .12s}.map-obj:hover,.map-obj.selected{stroke:#111;stroke-width:5;filter:brightness(.97)}
.map-label{font-family:var(--sans);font-weight:700;fill:#17212B;text-anchor:middle;pointer-events:none;paint-order:stroke;stroke:white;stroke-width:3px;stroke-linejoin:round}
.map-road{fill:#F0F0EC;stroke:#D7D9D4;stroke-width:2}.map-boundary{fill:none;stroke:#111;stroke-width:5;stroke-dasharray:22 16;vector-effect:non-scaling-stroke}.map-fence{fill:none;stroke:#555;stroke-width:3;stroke-dasharray:10 8;vector-effect:non-scaling-stroke}
.map-rail{fill:none;stroke:#59636D;stroke-width:4;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke;cursor:pointer}.map-rail.inferred{stroke:#E67700;stroke-dasharray:12 8}.map-rail:hover{stroke:#111;stroke-width:7}
.map-external-rail{stroke:#111;stroke-width:4;vector-effect:non-scaling-stroke}.map-node{fill:#7C3AED;stroke:white;stroke-width:2;vector-effect:non-scaling-stroke}.map-zone{fill:#64748B;fill-opacity:.10;stroke:#64748B;stroke-width:3;stroke-dasharray:12 8;vector-effect:non-scaling-stroke}
.map-context{fill:none;stroke:#777;stroke-width:2}.map-context-fill{fill:#EFEFEF;stroke:#777;stroke-width:1}.map-circle{fill:white;stroke:#555;stroke-width:2}.map-dim{font-size:13px;fill:#555;pointer-events:none}
.map-status{position:absolute;left:14px;bottom:14px;background:rgba(255,255,255,.93);border:1px solid var(--line);padding:8px 10px;font-size:12px;color:var(--steel);box-shadow:0 8px 24px rgba(22,33,43,.08)}

/* DRAWER */
.overlay{position:fixed;inset:0;background:rgba(22,33,43,.34);z-index:40}.drawer{position:fixed;right:0;top:0;bottom:0;width:540px;max-width:96vw;background:white;z-index:41;border-left:1px solid var(--line);box-shadow:-15px 0 45px rgba(22,33,43,.18);display:flex;flex-direction:column}
.drawer-head{padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:flex-start;gap:12px}.drawer-head-main{flex:1;min-width:0}.drawer-id{font:12px var(--mono);color:var(--steel);margin-bottom:3px}.drawer-title{font-size:18px;font-weight:800}.drawer-sub{font-size:12.5px;color:var(--steel);margin-top:4px}.drawer-body{padding:0 18px 18px;overflow:auto;flex:1}.drawer-actions{display:flex;gap:8px;align-items:center}
.subtabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin:0 -18px 16px;padding:0 18px;overflow-x:auto}.subtab{border:0;background:transparent;padding:11px 10px 9px;color:var(--steel);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap;font-size:12.5px}.subtab.active{color:var(--ink);font-weight:700;border-bottom-color:var(--accent)}
.kv-grid{display:grid;grid-template-columns:145px 1fr;border-top:1px solid var(--line-soft)}.kv-grid>div{padding:8px 6px;border-bottom:1px solid var(--line-soft)}.kv-k{color:var(--steel);font-size:12px}.empty-box{border:1px dashed var(--line);padding:22px;text-align:center;color:var(--steel);background:#FAFAFA}.empty-box b{display:block;color:var(--ink);margin-bottom:5px}
.list-card{border:1px solid var(--line);padding:10px 12px;margin-bottom:8px}.list-card-title{font-weight:700}.list-card-sub{font-size:12px;color:var(--steel);margin-top:4px}.maturity{margin:14px 0}.maturity-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.maturity-score{font:700 22px var(--mono)}.maturity-row{display:grid;grid-template-columns:130px 1fr 42px;gap:8px;align-items:center;margin:7px 0;font-size:12px}.bar{height:6px;background:#E9ECEF}.bar>span{display:block;height:100%;background:var(--accent)}

/* SETTINGS */
.settings-page{max-width:1500px;margin:0 auto;padding:20px}.settings-head{display:flex;align-items:flex-start;gap:15px;margin-bottom:16px}.settings-head h1{font-size:21px;margin:0 0 4px}.settings-head p{margin:0;color:var(--steel);font-size:13px}.settings-layout{display:grid;grid-template-columns:250px 1fr;gap:18px;align-items:start}.settings-side{background:white;border:1px solid var(--line);position:sticky;top:76px}.side-label{padding:10px 13px;border-bottom:1px solid var(--line);font-size:11px;color:var(--steel);font-weight:800;letter-spacing:.08em;text-transform:uppercase}.side-button{width:100%;text-align:left;padding:9px 13px;border:0;border-left:3px solid transparent;background:white;cursor:pointer}.side-button:hover{background:var(--hover)}.side-button.active{background:var(--bg);border-left-color:var(--accent);font-weight:700}.side-count{float:right;font:12px var(--mono);color:var(--muted)}
.panel{background:white;border:1px solid var(--line)}.panel-head{display:flex;align-items:center;gap:10px;padding:12px 15px;border-bottom:1px solid var(--line);flex-wrap:wrap}.panel-title{font-weight:800;font-size:15px;margin-right:auto}.panel-body{padding:15px}.panel-note{padding:10px 12px;border-left:3px solid var(--warn);background:#FFF7ED;color:#7C4A03;font-size:12.5px;margin-bottom:14px}
.table-wrap{overflow:auto}table.grid{border-collapse:collapse;width:100%;font-size:13px}.grid th{text-align:left;background:var(--bg);color:var(--steel);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:8px 9px;border-bottom:1px solid var(--line);white-space:nowrap}.grid td{padding:8px 9px;border-bottom:1px solid var(--line-soft);vertical-align:top}.grid tr:hover td{background:var(--hover)}.row-actions{display:flex;justify-content:flex-end;gap:5px}.status-pill{display:inline-block;border:1px solid var(--line);padding:2px 7px;font-size:11.5px}.status-pill.active{color:var(--ok);border-color:var(--ok)}.status-pill.off{color:var(--muted)}
.search-row{display:flex;gap:8px;align-items:center}.search-row input{min-width:240px;padding:6px 8px;border:1px solid var(--line)}
.admin-note{font-size:12px;color:var(--steel);padding:7px 10px;border:1px solid var(--line);background:var(--hover)}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(10,18,27,.62);z-index:60;display:grid;place-items:center;padding:22px;backdrop-filter:blur(5px)}.modal{background:white;border:1px solid rgba(255,255,255,.4);width:min(920px,96vw);max-height:92vh;display:flex;flex-direction:column;box-shadow:0 28px 80px rgba(0,0,0,.32)}.modal-head{padding:14px 17px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px}.modal-title{font-weight:800;font-size:16px;flex:1}.modal-body{padding:17px;overflow:auto}.modal-foot{padding:12px 17px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;padding:8px;border:1px solid var(--line);max-height:210px;overflow:auto}.check-item{display:flex;gap:7px;align-items:flex-start;padding:4px;font-size:12.5px}.check-item input{margin-top:2px;accent-color:var(--accent)}
.section-title{font-size:12px;font-weight:800;color:var(--steel);letter-spacing:.05em;text-transform:uppercase;margin:18px 0 8px;padding-bottom:6px;border-bottom:1px solid var(--line)}

.toast{position:fixed;right:18px;bottom:18px;z-index:100;background:var(--ink);color:white;padding:10px 13px;box-shadow:0 10px 30px rgba(22,33,43,.25);font-size:13px}.toast.bad{background:var(--bad)}

@media(max-width:900px){
  .brand-text{font-size:14px}.topbar{gap:10px;padding:0 10px}.main-tab{padding:0 12px}.user-badge{display:none}
  .settings-page{padding:12px}.settings-layout{grid-template-columns:1fr}.settings-side{position:static;display:flex;overflow-x:auto}.side-label{display:none}.side-button{white-space:nowrap;border-left:0;border-bottom:3px solid transparent}.side-button.active{border-bottom-color:var(--accent)}
  .form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}.check-grid{grid-template-columns:1fr}.drawer{width:100%}.map-toolbar{padding:8px}.map-search{width:100%;order:5}.map-toolbar .spacer{display:none}
}


/* ============================================================
   DIGITAL TWIN SLD — DARK GLASS UI v0.5.1
   Visual reference: approved late DieselFlow workshop theme.
   Presentation only: no SLD data model, geometry or relations changed.
   ============================================================ */
:root{
  --bg:#0E1B2C;
  --panel:#142D4A;
  --panel-strong:#183657;
  --ink:#E9F2FB;
  --steel:#8FB0CE;
  --line:#355879;
  --line-soft:#233F60;
  --accent:#F5A94A;
  --accent-soft:rgba(245,169,74,.10);
  --ok:#52D58E;
  --warn:#FFB936;
  --bad:#FF6B6B;
  --info:#4DABF7;
  --hover:#1C4169;
  --muted:#547493;
  --glass:rgba(20,52,86,.72);
  --glass-strong:rgba(15,40,69,.92);
  --input:#0C2138;
}
html,body{background:#0E1B2C;color:var(--ink)}
body{
  background:
    linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),
    radial-gradient(circle at 50% 0,#17385E 0,#0E1B2C 48%,#091522 100%);
  background-size:28px 28px,28px 28px,100% 100%;
  background-attachment:fixed;
}
.app{background:transparent}
.muted{color:var(--steel)}

/* Login */
.login-screen{
  background:
    linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px),
    radial-gradient(circle at 50% 18%,#183E69 0,#0C2747 48%,#081522 100%);
  background-size:28px 28px,28px 28px,100% 100%;
}
.login-card{
  background:var(--glass-strong);border:1px solid rgba(225,242,255,.34);border-top:3px solid var(--accent);
  box-shadow:0 24px 75px rgba(0,0,0,.45);backdrop-filter:blur(18px) saturate(125%);
}
.login-card .muted{color:var(--steel)}
.brand-mark{background:var(--accent);border-color:var(--ink);box-shadow:0 0 16px rgba(245,169,74,.28)}
.brand-text{color:var(--ink)}

/* Top navigation */
.topbar{
  height:64px;padding:0 clamp(18px,2.2vw,38px);gap:24px;
  background:rgba(11,29,49,.90);border-bottom:1px solid rgba(215,237,255,.22);
  box-shadow:0 10px 30px rgba(2,10,20,.24);backdrop-filter:blur(16px);
}
.main-tab{color:var(--steel);font-size:14px}
.main-tab:hover{color:var(--ink);background:rgba(255,255,255,.025)}
.main-tab.active{color:var(--ink);border-bottom-color:var(--accent)}
.user-badge{color:var(--steel)}

/* Controls */
.btn{
  background:rgba(19,52,86,.82);border-color:rgba(220,239,255,.32);color:var(--ink);border-radius:4px;
}
.btn:hover{border-color:var(--accent);background:var(--hover)}
.btn-dark,.btn-accent{background:var(--accent);border-color:var(--accent);color:#10243A;font-weight:700}
.btn-dark:hover,.btn-accent:hover{background:#FFC46C;border-color:#FFC46C;color:#10243A}
.btn-ghost{background:transparent;border-color:transparent;color:var(--steel)}
.btn-ghost:hover{color:var(--ink);border-color:rgba(220,239,255,.22);background:rgba(255,255,255,.025)}
.btn-danger{color:var(--bad)}
.field>span{color:var(--steel)}
.field input,.field select,.field textarea,.map-search,.search-row input{
  background:var(--input);color:var(--ink);border-color:var(--line);border-radius:4px;
}
.field input::placeholder,.field textarea::placeholder,.map-search::placeholder,.search-row input::placeholder{color:#6F90AE}
.field input:focus,.field select:focus,.field textarea:focus,.map-search:focus,.search-row input:focus{
  outline:2px solid var(--accent);outline-offset:-1px;
}
select option{background:#102842;color:var(--ink)}

/* Map shell — approved dark navy / glass visual language */
.map-page{height:calc(100vh - 64px)}
.map-toolbar{
  min-height:58px;padding:10px clamp(14px,2vw,30px);background:rgba(8,27,49,.70);
  border-bottom:1px solid rgba(218,238,255,.24);box-shadow:0 8px 24px rgba(2,10,20,.16);
  backdrop-filter:blur(12px);
}
.map-title{font-size:15px;color:var(--ink)}
.layer-pop{
  background:var(--glass-strong);border-color:rgba(225,242,255,.34);
  box-shadow:0 18px 45px rgba(0,0,0,.38);backdrop-filter:blur(16px);
}
.layer-row{color:var(--steel)}
.map-shell{
  background:#081A31;
  box-shadow:inset 0 0 70px rgba(3,12,23,.55);
}


/* Upper network map — Privolzhskaya Railway */
.road-page{height:calc(100vh - 64px);padding:14px clamp(14px,2vw,28px) 16px;display:grid;grid-template-rows:auto minmax(0,1fr);gap:12px;min-height:0;overflow:hidden}
.road-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:rgba(8,27,49,.42);border:1px solid rgba(218,238,255,.18);border-radius:10px;padding:12px 16px;box-shadow:0 12px 34px rgba(2,10,20,.16);backdrop-filter:blur(10px)}
.road-head h1{margin:2px 0 4px;font-size:clamp(28px,2.4vw,38px);color:var(--ink)}
.road-head p{margin:0;color:var(--steel);max-width:780px}
.road-summary{display:grid;grid-template-columns:repeat(2,minmax(190px,1fr));gap:12px;min-width:min(420px,42vw)}
.road-summary-card,.road-side,.road-depot-card{background:var(--glass);border:1px solid rgba(218,238,255,.28);border-radius:10px;box-shadow:0 10px 28px rgba(2,12,24,.14);backdrop-filter:blur(10px)}
.road-summary-card{padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.road-summary-card span,.road-summary-card small,.road-side-title{color:var(--steel)}
.road-summary-card b{font-size:30px;color:var(--ink)}
.road-board{display:grid;grid-template-columns:minmax(0,1.4fr) 320px;gap:12px;min-height:0;overflow:hidden}
.road-map-wrap{position:relative;min-height:0;height:100%;display:flex;align-items:center;justify-content:center;background:rgba(8,27,49,.40);border:1px solid rgba(218,238,255,.18);border-radius:14px;overflow:hidden;box-shadow:inset 0 0 70px rgba(3,12,23,.55),0 12px 34px rgba(2,10,20,.16)}
.road-map-image{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;background:#081A31;user-select:none;pointer-events:none}
.road-side{padding:12px;display:flex;flex-direction:column;gap:10px;min-height:0;overflow:hidden}
.road-side-title{font-size:14px;text-transform:uppercase;letter-spacing:.08em}
.road-depot-list{display:flex;flex-direction:column;gap:10px}
.road-depot-card{padding:12px 14px;display:flex;justify-content:space-between;align-items:center;color:var(--ink);cursor:pointer;text-align:left}
.road-depot-card b{display:block;color:var(--ink)}
.road-depot-card small{display:block;color:var(--steel);margin-top:4px}
.road-depot-card span{color:var(--steel);font-size:13px}
.road-depot-card.active{border-color:rgba(245,169,74,.68);box-shadow:0 0 0 1px rgba(245,169,74,.28),0 10px 28px rgba(2,12,24,.14)}
.road-depot-card.active span{color:var(--accent);font-weight:700}
.road-depot-card.planned{opacity:.9}
.road-marker{position:absolute;transform:translate(-50%,-50%);display:grid;place-items:center;width:44px;height:44px;background:transparent;border:0;padding:0;color:var(--ink);cursor:pointer;z-index:4;overflow:visible}
.road-marker-dot{width:25px;height:25px;border-radius:50%;display:inline-block;background:#0A2742;border:4px solid #78C1FF;box-shadow:0 0 0 5px rgba(120,193,255,.18),0 0 20px rgba(120,193,255,.42);position:relative;z-index:2}
.road-marker-caption{position:absolute;left:31px;top:50%;transform:translateY(-50%);display:block;white-space:nowrap;padding:7px 10px 7px 9px;border-radius:7px;background:rgba(7,22,39,.94);border:1px solid rgba(220,239,255,.28);box-shadow:0 8px 20px rgba(0,0,0,.26);color:#EAF5FF;font-size:12px;font-weight:800;letter-spacing:.01em;z-index:1;pointer-events:none}
.road-marker.active .road-marker-caption{border-color:rgba(245,169,74,.68);color:#FFD38D}
.road-marker.active{border-color:rgba(245,169,74,.64);box-shadow:0 0 0 1px rgba(245,169,74,.22),0 12px 26px rgba(0,0,0,.34)}
.road-marker.active .road-marker-dot{border-color:var(--accent);box-shadow:0 0 0 4px rgba(245,169,74,.22),0 0 20px rgba(245,169,74,.52)}
.road-marker.planned .road-marker-dot{border-color:#6BB6FF;opacity:.92}
.road-marker:hover{transform:translate(-50%,-50%) scale(1.035)}
.road-region-label{position:absolute;transform:translate(-50%,-50%);color:#7E9BB5;font-size:clamp(11px,.9vw,15px);font-weight:600;letter-spacing:.18em;text-align:center;white-space:nowrap;text-shadow:0 2px 8px rgba(2,12,24,.9);opacity:.76;pointer-events:none;z-index:2}
.map-breadcrumb{display:flex;align-items:center;gap:8px;color:var(--steel);font-size:14px}
.map-breadcrumb b{color:var(--ink)}
@media (max-width: 1180px){.road-board{grid-template-columns:1fr}.road-side{order:2}.road-summary{min-width:0}}
@media (max-width: 860px){.road-head{flex-direction:column}.road-summary{grid-template-columns:1fr}.road-marker-caption{font-size:10px;padding:5px 7px;left:27px}.road-region-label{font-size:9px;letter-spacing:.12em}}
.map-svg{background:#081A31}
.map-obj{
  stroke:rgba(154,190,219,.70);stroke-width:2;
  filter:drop-shadow(0 5px 10px rgba(0,0,0,.16));
  transition:filter .12s,stroke-width .12s,opacity .12s;
}
.map-obj:hover,.map-obj.selected{
  stroke:var(--accent);stroke-width:5;filter:brightness(1.18) drop-shadow(0 8px 14px rgba(0,0,0,.30));
}
.map-label{
  fill:#F1F7FD;stroke:#0B2139;stroke-width:4px;font-weight:750;
  text-shadow:0 2px 5px rgba(0,0,0,.42);
}
.map-road{fill:rgba(95,129,159,.12);stroke:rgba(158,191,220,.25);stroke-width:2}
.map-boundary{stroke:#D7E7F5;stroke-width:4;stroke-dasharray:22 16;opacity:.88}
.map-fence{stroke:#94B4D0;stroke-width:3;stroke-dasharray:10 8;opacity:.7}
.map-rail{stroke:#90AAC2;stroke-width:4;opacity:.85}
.map-rail.inferred{stroke:var(--warn);stroke-dasharray:12 8}
.map-rail:hover{stroke:var(--accent);stroke-width:7;opacity:1}
.map-external-rail{stroke:#D8E8F6;stroke-width:4;opacity:.88}
.map-node{fill:#B68CFF;stroke:#EAF4FD;stroke-width:2}
.map-zone{fill:#80ADD7;fill-opacity:.08;stroke:#7DA7CD;stroke-width:3;stroke-dasharray:12 8}
.map-context{fill:none;stroke:#6886A1;stroke-width:2;opacity:.62}
.map-context-fill{fill:rgba(137,164,188,.06);stroke:#6886A1;stroke-width:1;opacity:.55}
.map-circle{fill:rgba(22,54,86,.62);stroke:#8DA9C3;stroke-width:2}
.map-dim{fill:#8FACCA;font-size:13px}
.map-status{
  background:rgba(10,31,54,.86);border:1px solid rgba(218,238,255,.28);color:#9DB9D1;
  box-shadow:0 10px 28px rgba(0,0,0,.24);backdrop-filter:blur(12px);border-radius:4px;
}
.sarepto-map-shell{background:#081a31}
.sarepto-map-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#081a31}
.sarepto-map-image{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.astrakhan-map-shell{background:#081a31}
.astrakhan-map-stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#081a31}
.astrakhan-map-image{display:block;width:100%;height:100%;object-fit:contain;user-select:none;pointer-events:none}
.astrakhan-map-toolbar{gap:12px}.astrakhan-site-switch{display:flex;align-items:center;gap:7px;margin-left:auto}.astrakhan-site-switch .btn{white-space:nowrap}

/* Drawers / object cards */
.overlay{background:rgba(2,10,20,.70)}
.drawer{
  background:var(--glass-strong);border-left-color:rgba(220,239,255,.30);
  box-shadow:-18px 0 50px rgba(0,0,0,.38);backdrop-filter:blur(18px);
}
.drawer-head{background:rgba(7,25,45,.52);border-bottom-color:var(--line)}
.drawer-id,.drawer-sub{color:var(--steel)}
.drawer-title{color:var(--ink)}
.subtabs{border-bottom-color:var(--line)}
.subtab{color:var(--steel)}
.subtab:hover{color:var(--ink);background:rgba(255,255,255,.025)}
.subtab.active{color:var(--ink);border-bottom-color:var(--accent)}
.kv-grid{border-top-color:var(--line-soft)}
.kv-grid>div{border-bottom-color:var(--line-soft)}
.kv-k{color:var(--steel)}
.empty-box{border-color:var(--line);color:var(--steel);background:rgba(9,31,54,.45)}
.empty-box b{color:var(--ink)}
.list-card{background:rgba(12,37,64,.52);border-color:var(--line)}
.list-card-sub{color:var(--steel)}
.bar{background:#091D34;border:1px solid rgba(220,239,255,.08)}
.bar>span{background:linear-gradient(90deg,var(--accent),#FFD27E)}

/* Settings */
.settings-page{max-width:none;padding:24px clamp(18px,2.8vw,54px) 36px}
.settings-head{padding-bottom:13px;border-bottom:1px solid rgba(220,239,255,.22)}
.settings-head h1{color:var(--ink);font-size:25px}
.settings-head p{color:var(--steel)}
.settings-side,.panel{
  background:var(--glass);border-color:rgba(218,238,255,.32);
  box-shadow:0 10px 28px rgba(2,12,24,.16);backdrop-filter:blur(10px);
}
.side-label{color:var(--steel);border-bottom-color:var(--line);background:rgba(8,27,49,.35)}
.side-button{background:transparent;color:var(--steel)}
.side-button:hover{background:var(--hover);color:var(--ink)}
.side-button.active{background:rgba(245,169,74,.10);border-left-color:var(--accent);color:var(--ink)}
.side-count{color:var(--muted)}
.panel-head{background:rgba(8,27,49,.38);border-bottom-color:var(--line);padding:14px 16px}
.panel-title{color:var(--ink)}
.panel-note{background:rgba(64,50,20,.62);border-left-color:var(--warn);color:#F8D796}
.grid th{background:rgba(7,25,45,.72);color:#A9C5DE;border-bottom-color:var(--line)}
.grid td{border-bottom-color:var(--line-soft)}
.grid tr:hover td{background:rgba(34,74,113,.50)}
.status-pill{border-color:var(--line)}
.status-pill.active{color:var(--ok);border-color:rgba(82,213,142,.55)}
.status-pill.off{color:var(--muted)}

/* Modals / toast */
.modal-overlay{background:rgba(2,10,20,.80)}
.modal{
  background:var(--glass-strong);border-color:rgba(225,242,255,.38);
  box-shadow:0 22px 70px rgba(0,0,0,.48);backdrop-filter:blur(18px);
}
.toast{background:#07192D;color:#fff;border-color:var(--accent);box-shadow:0 8px 30px rgba(0,0,0,.38)}
.toast.bad{border-color:var(--bad)}
*{scrollbar-color:#466B8E #09192A;scrollbar-width:thin}

@media (max-width:760px){
  .topbar{min-height:58px;height:auto;background:rgba(9,25,43,.96)}
  .map-page{height:calc(100vh - 58px)}
  .settings-page{padding:14px 10px 24px}
  .settings-side,.panel{backdrop-filter:none}
}


/* ============================================================
   DIGITAL TWIN SLD — v0.5.3 FIXED OPERATIONAL MAP
   No pan/zoom/inner scrolling. Source technical graphics are not rendered.
   ============================================================ */
.map-page{height:calc(100vh - 64px);min-height:0;overflow:hidden}
.map-shell{min-height:0;overflow:hidden}
.map-stage{position:absolute;inset:0;touch-action:auto;cursor:default;user-select:none;overflow:hidden}
.map-stage.dragging{cursor:default}
.map-svg{width:100%;height:100%;display:block;overflow:hidden}
.map-card-hit{cursor:pointer}
.map-card-hit .map-circle,.map-card-hit.map-obj{transition:stroke .12s,stroke-width .12s,filter .12s,fill-opacity .12s}
.map-card-hit:hover .map-circle,.map-card-hit.selected .map-circle{stroke:var(--accent);stroke-width:4;filter:brightness(1.15)}
.map-obj:hover,.map-obj.selected{stroke:var(--accent);stroke-width:5;filter:brightness(1.18) drop-shadow(0 8px 14px rgba(0,0,0,.30))}
.map-road,.map-rail,.map-external-rail,.map-gate{pointer-events:none;cursor:default}
.map-rail:hover{stroke:#90AAC2;stroke-width:4;opacity:.85}
.map-gate line{stroke:var(--accent);stroke-width:3;vector-effect:non-scaling-stroke;opacity:.88}
.map-boundary,.map-fence,.map-zone,.map-node,.map-dim{display:none!important}
.map-status{pointer-events:none}
#drawer-overlay{display:none!important}
.drawer{top:64px;bottom:0;width:520px;max-width:min(96vw,520px);z-index:41}
.drawer-head{padding:16px 18px}
.drawer-body{min-height:0}
.kv-grid{grid-template-columns:150px minmax(0,1fr)}
.kv-grid>div:nth-child(even){overflow-wrap:anywhere}

@media(max-width:900px){
  .map-page{height:calc(100vh - 58px);min-height:0}
  .drawer{top:58px;width:100%;max-width:100vw}
}

/* ============================================================
   DIGITAL TWIN SLD — v0.5.4 UX PATCH
   Centered object card, floating layers, notes workflow.
   ============================================================ */
.map-toolbar{position:relative;z-index:60;flex-wrap:nowrap}
.map-toolbar .spacer{display:block;flex:1}
.layer-menu{position:relative;z-index:80}
.layer-pop{z-index:90;top:calc(100% + 8px);right:0;min-width:250px}
.map-shell{position:relative;z-index:1}

#drawer-overlay{
  display:block!important;position:fixed;inset:64px 0 0;background:rgba(2,10,20,.56);
  backdrop-filter:blur(2px);z-index:70;
}
#drawer-overlay.hidden{display:none!important}
.drawer{
  position:fixed;left:50%;right:auto;top:50%;bottom:auto;
  transform:translate(-50%,-47%);width:min(1040px,90vw);max-width:min(1040px,90vw);
  max-height:82vh;border:1px solid rgba(225,242,255,.36);border-radius:8px;
  z-index:71;box-shadow:0 28px 90px rgba(0,0,0,.55);overflow:hidden;
}
.drawer.hidden{display:none}
.drawer-head{padding:16px 20px}
.drawer-body{padding:0 20px 20px;overflow:auto;min-height:0}
.subtabs{display:flex;overflow-x:auto;white-space:nowrap;scrollbar-width:thin}
.subtab{flex:0 0 auto}
.kv-grid{grid-template-columns:170px minmax(0,1fr)}

.notes-head{display:flex;gap:18px;align-items:flex-start;justify-content:space-between;margin:16px 0}
.note-card{border:1px solid var(--line);background:rgba(12,37,64,.52);padding:14px 15px;margin:10px 0;border-radius:6px}
.note-card-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.note-card-head .note-edit{margin-left:auto}
.note-text{white-space:pre-wrap;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.note-status{display:inline-flex;align-items:center;padding:3px 8px;border:1px solid var(--line);border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}
.note-new{color:#FFD27E;border-color:rgba(255,210,126,.55)}
.note-accepted{color:#87C7FF;border-color:rgba(135,199,255,.55)}
.note-implemented{color:var(--ok);border-color:rgba(82,213,142,.55)}
.note-rejected{color:#FF9696;border-color:rgba(255,107,107,.55)}
.notes-table-text{max-width:520px;white-space:pre-wrap;overflow-wrap:anywhere}

.modal-overlay{z-index:100}
.modal{z-index:101}

@media(max-width:900px){
  #drawer-overlay{inset:58px 0 0}
  .drawer{top:52%;width:96vw;max-width:96vw;max-height:84vh;transform:translate(-50%,-50%)}
  .kv-grid{grid-template-columns:135px minmax(0,1fr)}
  .notes-head{flex-direction:column}
}

/* ============================================================
   DIGITAL TWIN SLD — v0.6.0 PTOL FUNCTIONAL CORE
   ============================================================ */
.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);font-weight:800}
.ptol-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:16px 0}
.ptol-kpi{border:1px solid var(--line);background:rgba(11,35,61,.58);border-radius:6px;padding:12px 14px;min-height:82px;display:flex;flex-direction:column;gap:4px}
.ptol-kpi span{font-size:11px;color:var(--steel);text-transform:uppercase;letter-spacing:.04em}
.ptol-kpi b{font-size:25px;line-height:1;color:var(--ink)}
.ptol-kpi small{font-size:11px;color:var(--muted);line-height:1.25}
.ptol-kpi.accent{border-color:rgba(245,169,74,.48);background:rgba(111,72,22,.18)}
.ptol-kpi.accent b{color:var(--accent)}
.ptol-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:10px 0 14px}
.ptol-branch{border:1px solid var(--line);background:rgba(9,29,51,.52);border-radius:7px;margin:12px 0;padding:14px 15px}
.ptol-branch-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}
.ptol-branch-head b{font-size:15px;color:var(--ink)}
.ptol-branch-head .muted{margin-top:3px;font-size:12px}
.ptol-branch-kpi{font-size:12px;color:var(--steel);white-space:nowrap}
.ptol-track{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;padding:10px 4px 4px}
.ptol-rail-line{position:absolute;left:1%;right:1%;top:50%;height:4px;background:linear-gradient(90deg,#718da6,#a2b8cb,#718da6);opacity:.42;border-radius:99px}
.ptol-post{position:relative;z-index:1;min-height:118px;border:1px solid rgba(220,239,255,.28);background:rgba(12,39,67,.92);border-radius:7px;padding:11px;display:flex;flex-direction:column;align-items:center;text-align:center;box-shadow:0 8px 22px rgba(0,0,0,.18)}
.ptol-post.working{border-color:rgba(82,213,142,.55);background:linear-gradient(180deg,rgba(20,74,66,.72),rgba(10,44,53,.88))}
.ptol-post.off{border-color:rgba(142,161,180,.24);background:rgba(22,39,57,.72);opacity:.68}
.ptol-post.warn{border-color:rgba(245,169,74,.55);background:rgba(76,58,25,.58)}
.ptol-post.blocked{border-color:rgba(255,107,107,.55);background:rgba(75,32,38,.58)}
.ptol-post-no{font-weight:800;font-size:14px;color:var(--ink)}
.ptol-post-state{font-size:11px;color:var(--steel);margin-top:3px}
.ptol-empty{margin:auto;font-size:19px;color:rgba(222,237,250,.78);font-weight:800}
.ptol-post.off .ptol-empty{font-size:44px;line-height:1;color:rgba(255,128,128,.72)}
.ptol-loco{margin:auto;display:flex;flex-direction:column;gap:4px}.ptol-loco span{font-size:12px;color:var(--steel)}
.ptol-process-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:16px 0 12px}.ptol-process-head h3{margin:4px 0 5px;font-size:22px}.ptol-process-head p{margin:0;color:var(--steel)}
.ptol-routes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:14px 0}.ptol-route{border:1px solid var(--line);background:rgba(12,37,64,.52);border-radius:5px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.ptol-route>div{display:flex;gap:9px;align-items:center;min-width:0}.ptol-route b{color:var(--accent);min-width:52px}.ptol-route span{color:var(--steel);font-size:12px}.ptol-route strong{font-size:18px;color:var(--ink)}
.ptol-gates{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:14px;margin-top:14px}.ptol-gates span{padding:7px 9px;border:1px solid var(--line);border-radius:4px;color:var(--steel);font-size:12px}.ptol-gates i{color:var(--accent);font-style:normal}
.ptol-staff-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:14px}.ptol-staff-card{display:flex;align-items:center;gap:14px;border:1px solid var(--line);background:rgba(12,37,64,.52);padding:13px 14px;border-radius:6px}.ptol-staff-count{font-size:30px;color:var(--accent);font-weight:800;min-width:42px;text-align:center}.ptol-staff-card b{display:block;margin-bottom:4px}.ptol-staff-card .muted{font-size:11px}
.ptol-equipment-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.ptol-equip-card{display:flex;flex-direction:column;gap:5px;border:1px solid var(--line);padding:16px;border-radius:7px;background:rgba(12,37,64,.52)}.ptol-equip-card.ok{border-color:rgba(82,213,142,.45)}.ptol-equip-card.off{border-color:rgba(255,107,107,.34)}.ptol-equip-card strong{font-size:20px}.ptol-equip-card span{font-size:12px;color:var(--steel)}
.ptol-post-manager{display:flex;flex-direction:column;gap:8px}.ptol-post-manage-row{display:grid;grid-template-columns:1fr 220px 1.2fr;gap:10px;align-items:center;border-bottom:1px solid var(--line-soft);padding:9px 0}.ptol-post-manage-row>div{display:flex;flex-direction:column}.ptol-post-manage-row span{font-size:11px;color:var(--muted)}.ptol-post-manage-row select,.ptol-post-manage-row input{background:var(--input);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:9px 10px}
.ptol-check-items{margin-top:12px;display:flex;flex-direction:column;gap:7px;max-height:50vh;overflow:auto}.ptol-check-items>div{display:grid;grid-template-columns:110px 1fr;gap:7px 12px;border-bottom:1px solid var(--line-soft);padding:7px 0}.ptol-check-items b{font-size:12px;font-weight:600}.ptol-check-items small{grid-column:2;color:var(--muted);font-size:10px}
@media(max-width:900px){.ptol-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ptol-track{grid-template-columns:repeat(2,minmax(0,1fr))}.ptol-routes,.ptol-staff-grid,.ptol-equipment-summary{grid-template-columns:1fr}.ptol-post-manage-row{grid-template-columns:1fr}.ptol-toolbar{align-items:flex-start;flex-direction:column}}

/* ===== v0.6.1 PTOL compact operational UX ===== */
.drawer.ptol-fit .drawer-body{overflow:hidden;display:flex;flex-direction:column}
.drawer.ptol-fit .subtabs{flex:0 0 auto;margin-bottom:8px}
.drawer.ptol-fit #object-tab-body{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}
.ptol-summary-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr)) auto;gap:8px;align-items:stretch;margin:8px 0}
.ptol-summary-strip>span{display:flex;align-items:center;justify-content:center;gap:5px;min-height:44px;border:1px solid var(--line);border-radius:5px;background:rgba(11,35,61,.58);font-size:11px;color:var(--steel);white-space:nowrap}
.ptol-summary-strip b{font-size:17px;color:var(--ink)}
.ptol-summary-strip .accent{border-color:rgba(245,169,74,.45)}.ptol-summary-strip .accent b{color:var(--accent)}
.ptol-branch.compact{margin:7px 0;padding:8px 10px;min-height:0}
.ptol-branch.compact .ptol-branch-head{margin-bottom:3px;align-items:center}.ptol-branch.compact .ptol-branch-head b{font-size:13px}
.ptol-track.compact{gap:9px;padding:5px 2px 2px}
.ptol-track.compact .ptol-post{min-height:86px;padding:7px 8px;cursor:pointer;font:inherit;color:inherit;width:100%}
.ptol-track.compact .ptol-post:hover{transform:translateY(-1px);filter:brightness(1.08)}
.ptol-track.compact .ptol-post-no{font-size:13px}.ptol-track.compact .ptol-post-state{font-size:10px}
.ptol-track.compact .ptol-empty{font-size:15px}.ptol-track.compact .ptol-post.off .ptol-empty{font-size:30px}
.ptol-foot-note{font-size:11px;color:var(--steel);padding:5px 2px}
.ptol-work-head{display:flex;align-items:center;justify-content:space-between;margin:8px 0}.ptol-work-head h3{font-size:20px;margin:2px 0}.ptol-work-head p{margin:0;color:var(--steel);font-size:12px}
.ptol-work-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;flex:1;align-content:center}
.ptol-work-group{min-height:118px;border:1px solid var(--line);border-radius:7px;background:rgba(12,37,64,.58);color:var(--ink);cursor:pointer;padding:14px;display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:auto auto;gap:4px 10px;text-align:left}
.ptol-work-group:hover{border-color:rgba(245,169,74,.6);background:rgba(18,49,82,.78)}
.ptol-work-code{color:var(--accent);font-size:18px;font-weight:800}.ptol-work-group b{align-self:center}.ptol-work-group strong{font-size:27px;grid-row:1/3;grid-column:3;align-self:center}.ptol-work-group small{grid-column:1/3;color:var(--steel)}
.ptol-gates.compact{margin-top:8px;padding-top:8px;gap:6px}.ptol-gates.compact span{padding:5px 7px;font-size:10px}
.ptol-post-detail h4{margin:16px 0 8px}.ptol-post-detail .list-card{padding:8px 10px}
.ptol-route-modal{display:grid;grid-template-columns:1fr 1fr;gap:8px}.ptol-route-detail{border:1px solid var(--line);background:rgba(12,37,64,.58);color:var(--ink);border-radius:5px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;text-align:left}.ptol-route-detail>div{display:flex;gap:8px;align-items:center}.ptol-route-detail b{color:var(--accent)}.ptol-route-detail span{color:var(--steel);font-size:11px}.ptol-route-detail strong{font-size:18px}
.ptol-inline-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.ptol-crews{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.ptol-crew-card{border:1px solid var(--line);border-radius:6px;background:rgba(12,37,64,.52);padding:12px}.ptol-crew-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px}.ptol-crew-head span{color:var(--steel);font-size:11px}.ptol-person-row{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--line-soft)}.ptol-person-row>div{display:flex;flex-direction:column}.ptol-person-row span,.ptol-person-row em{font-size:10px;color:var(--steel);font-style:normal}.ptol-person-row em{max-width:45%;text-align:right}
.route-check-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;margin-top:6px}.route-check-grid label{border:1px solid var(--line);padding:6px 5px;border-radius:4px;text-align:center;font-size:11px;color:var(--steel);background:rgba(10,29,50,.6)}
.ptol-resource-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin:12px 0}.ptol-resource-head h3{margin:0 0 4px}.ptol-resource-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ptol-resource-card{border:1px solid var(--line);border-radius:6px;background:rgba(12,37,64,.52);padding:13px;display:flex;flex-direction:column;gap:4px}.ptol-resource-card span,.ptol-resource-card small{font-size:11px;color:var(--steel)}
.ptol-kpis.compact4{grid-template-columns:repeat(4,minmax(0,1fr))}.ptol-kpis.compact3{grid-template-columns:repeat(3,minmax(0,1fr))}.ptol-kpis.compact4 .ptol-kpi,.ptol-kpis.compact3 .ptol-kpi{min-height:72px}
@media(max-width:1000px){.ptol-summary-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.ptol-work-groups{grid-template-columns:repeat(2,minmax(0,1fr))}.ptol-resource-grid,.ptol-crews{grid-template-columns:1fr}.route-check-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* v0.6.2 — manual PTOL flow loading */
.ptol-flow-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin:10px 0 12px}.ptol-flow-head h3{margin:3px 0 4px}.ptol-flow-head p{margin:0;color:var(--steel);font-size:12px}
.ptol-flow-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:12px}.ptol-flow-kpis span{display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;border:1px solid var(--line);border-radius:6px;background:rgba(11,35,61,.58);font-size:11px;color:var(--steel)}.ptol-flow-kpis b{font-size:18px;color:var(--ink)}
.ptol-flow-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.flow-loco-card{border:1px solid var(--line);border-radius:7px;background:rgba(12,37,64,.55);padding:12px}.flow-loco-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:9px}.flow-loco-head>div{display:flex;flex-direction:column;gap:3px}.flow-loco-head span{font-size:11px;color:var(--steel)}
.flow-section-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.flow-section-card{border:1px solid rgba(82,213,142,.35);border-radius:6px;background:rgba(17,68,65,.48);color:var(--ink);padding:10px;text-align:left;display:flex;flex-direction:column;gap:3px;cursor:pointer}.flow-section-card:hover{border-color:rgba(245,169,74,.6);filter:brightness(1.07)}.flow-section-card span,.flow-section-card small{font-size:11px;color:var(--steel)}
.section-headline h3{font-size:24px;margin:2px 0}.section-headline p{margin:0;color:var(--steel)}.section-actions{display:flex;gap:8px;flex-wrap:wrap;margin:13px 0}.section-event-list{display:flex;flex-direction:column;gap:7px;max-height:230px;overflow:auto}.btn-danger{border-color:rgba(255,107,107,.42)!important;color:#ffc1c1!important}
@media(max-width:900px){.ptol-flow-list{grid-template-columns:1fr}.ptol-flow-kpis{grid-template-columns:1fr}.flow-section-grid{grid-template-columns:1fr}}
.to3-post-grid{display:grid;gap:14px;margin-top:12px}.to3-branch{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px 8px}.to3-rail-line{position:absolute;left:1%;right:1%;top:50%;border-top:2px dashed rgba(125,211,252,.35);z-index:0}.to3-branch .ptol-post{position:relative;z-index:1;min-height:88px}.to3-capacity{display:grid;gap:6px;padding:12px 14px;border:1px solid rgba(125,211,252,.18);border-radius:14px;background:rgba(8,25,48,.55);margin:10px 0}.to3-capacity span,.to3-flow-arrow span{color:var(--muted)}.to3-flow-arrow{padding:10px 12px;border-radius:12px;background:rgba(13,31,54,.55);font-weight:700;letter-spacing:.02em}

/* v0.7.0.1 — TO-3 map/layout regression fix */
.map-to3-internal-rail{stroke:rgba(206,180,73,.72);stroke-width:5;stroke-dasharray:22 13;stroke-linecap:round;pointer-events:none}
.to3-summary-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:6px 0 8px}.to3-summary-strip>span{display:flex;align-items:center;justify-content:center;gap:5px;min-height:42px;border:1px solid var(--line);border-radius:5px;background:rgba(11,35,61,.58);font-size:11px;color:var(--steel);white-space:nowrap}.to3-summary-strip b{font-size:17px;color:var(--ink)}.to3-summary-strip .accent{border-color:rgba(245,169,74,.45)}.to3-summary-strip .accent b{color:var(--accent)}
.to3-capacity-compact{display:grid;grid-template-columns:auto 1fr;gap:2px 14px;align-items:center;border:1px solid var(--line);border-radius:6px;padding:8px 11px;background:rgba(8,25,48,.48);margin-bottom:7px}.to3-capacity-compact>b{font-size:12px}.to3-capacity-compact>span{font-size:12px;color:var(--ink);font-weight:700}.to3-capacity-compact>small{grid-column:1/3;color:var(--steel);font-size:10px}
.to3-flow-arrow.compact{padding:7px 10px;margin-bottom:5px;font-size:11px}
.to3-post-grid.compact{display:grid;gap:5px;margin-top:0;flex:1;min-height:0}.to3-branch.compact{position:relative;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:7px 8px 5px;min-height:0;border:1px solid rgba(125,211,252,.12);border-radius:6px}.to3-branch.compact .to3-branch-head{position:absolute;left:10px;top:3px;z-index:3;font-size:10px;color:var(--steel);pointer-events:none}.to3-branch.compact .to3-rail-line{top:57%;left:1%;right:1%}.to3-branch.compact .ptol-post{min-height:78px;padding:12px 8px 6px}.to3-branch.compact .ptol-post span{font-size:12px}.to3-branch.compact .ptol-post b{font-size:12px}.to3-branch.compact .ptol-post small{font-size:9px}
.drawer.ptol-fit #object-tab-body>.to3-post-grid.compact{overflow:hidden}
@media(max-width:1000px){.to3-summary-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.to3-branch.compact{grid-template-columns:repeat(3,minmax(0,1fr))}}
.to3-master-badges{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.to3-master-badges span{border:1px solid rgba(116,171,215,.26);background:rgba(12,39,65,.55);padding:7px 10px;border-radius:8px;font-size:12px;color:#a8c5dc}.to3-package-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:12px}.to3-package-card,.to3-route-card{background:rgba(9,43,73,.72);border:1px solid rgba(108,171,214,.32);border-radius:10px;color:#d9ebfa;padding:12px;text-align:left;cursor:pointer}.to3-package-card:hover,.to3-route-card:hover{border-color:#f5aa45}.to3-package-card span{display:block;font-size:12px;color:#9cb9cf}.to3-package-card b{display:block;font-size:24px;margin:3px 0}.to3-package-card small,.to3-route-card small{color:#8daac0}.to3-route-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin-top:12px}.to3-route-card b{display:block;color:#f5aa45;font-size:18px}.to3-route-card span{display:block;margin:4px 0}.modal-master-list{display:flex;flex-direction:column;gap:8px;max-height:58vh;overflow:auto}.master-op{border:1px solid rgba(110,170,210,.25);background:rgba(9,38,64,.58);border-radius:8px;padding:10px}.master-op small{display:block;color:#8faec5;margin-top:5px}.badge{display:inline-block;padding:2px 6px;border:1px solid rgba(245,170,69,.35);border-radius:10px;color:#f5bd6b;font-size:10px}@media(max-width:1100px){.to3-package-grid{grid-template-columns:repeat(3,1fr)}.to3-route-grid{grid-template-columns:repeat(4,1fr)}}

/* v0.7.3 — TO-3 staffing model + full work disclosure */
.to3-staff-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:10px 0 14px}
.to3-staff-card{display:block;width:100%;text-align:left;border:1px solid var(--line);border-radius:7px;background:rgba(12,37,64,.52);color:var(--ink);padding:11px 12px;cursor:pointer}
.to3-staff-card:hover{border-color:rgba(245,170,69,.7);background:rgba(17,47,78,.68)}
.to3-staff-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.to3-staff-head b{display:block;font-size:12px}.to3-staff-head small{display:block;color:var(--steel);font-size:10px;margin-top:3px}.to3-staff-head strong{font-size:20px;color:var(--accent);white-space:nowrap}
.to3-staff-meter{height:5px;border-radius:10px;overflow:hidden;background:rgba(125,156,181,.15);margin:9px 0 6px}.to3-staff-meter i{display:block;height:100%;background:var(--accent);border-radius:10px}
.to3-staff-foot{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--steel);font-size:10px}.to3-staff-foot span:last-child{color:var(--accent)}
.ptol-person-row.to3-person-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px}.ptol-person-row.to3-person-row>div:first-child{min-width:0}.ptol-person-row.to3-person-row small{font-size:10px;color:var(--steel);margin-top:2px}.to3-person-actions{display:flex!important;flex-direction:row!important;gap:5px}.to3-person-actions .btn{white-space:nowrap}
@media(max-width:1000px){.to3-staff-grid{grid-template-columns:1fr}.ptol-person-row.to3-person-row{grid-template-columns:1fr}.ptol-person-row.to3-person-row em{text-align:left;max-width:none}.to3-person-actions{justify-content:flex-start}}

/* TO-3 network graph v0.7.4 */
.to3-graph-legend{display:flex;gap:16px;flex-wrap:wrap;margin:10px 0 12px;color:#9ebbd3;font-size:12px}.to3-graph-legend span{display:flex;align-items:center;gap:7px}.to3-graph-legend i{width:18px;height:3px;display:inline-block;border-radius:99px;background:#7cc4ff}.to3-graph-legend i.green{background:#74e39b}.to3-graph-legend i.red{background:#ff7a7a}.to3-graph-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0 0 12px}.to3-graph-kpis span{display:flex;align-items:center;justify-content:center;min-height:42px;border:1px solid rgba(108,171,214,.32);border-radius:8px;background:rgba(9,43,73,.48);font-size:12px;color:#9db9d1}.to3-graph-kpis b{font-size:18px;color:#f4f9fd;margin-right:5px}.to3-graph-wrap{overflow:auto;border:1px solid rgba(108,171,214,.32);border-radius:10px;background:rgba(7,24,42,.85);padding:10px}.to3-network-svg{display:block;min-width:1240px;width:100%;height:auto}.to3-net-grid-v{stroke:rgba(152,185,213,.14);stroke-width:1}.to3-net-grid-v.gate{stroke:rgba(255,122,122,.32);stroke-width:1.3}.to3-net-grid-h{stroke:rgba(152,185,213,.14);stroke-width:1}.to3-net-hour{fill:#9eb9d0;font-size:11px;text-anchor:middle}.to3-net-label{fill:#edf6ff;font-size:12.5px;font-weight:700}.to3-net-sub{fill:#87a7c1;font-size:10.5px}.to3-net-gate{stroke:#ff7a7a;stroke-width:1.6;stroke-dasharray:6 4}.to3-net-gate-label{fill:#ff9f9f;font-size:11px;font-weight:700}.to3-net-line{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 2px 5px rgba(0,0,0,.45))}.to3-net-train-label{font-size:11.5px;font-weight:700}.to3-net-train-sub{fill:#87a7c1;font-size:10px}.to3-graph-table-wrap{margin-top:12px}.to3-graph-table td,.to3-graph-table th{white-space:nowrap}@media(max-width:1100px){.to3-graph-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* TO-3 monthly/day network plan v0.7.5 */
.modal.to3-network-plan-modal{width:min(1500px,98vw)}
.to3-plan-controls{display:grid;grid-template-columns:220px 220px 1fr;gap:10px;align-items:end;margin:12px 0}.to3-plan-controls .field{margin:0}.to3-plan-actions{display:flex;gap:8px;align-items:center;justify-content:flex-start;flex-wrap:wrap;min-height:38px}
.to3-plan-weekdays,.to3-plan-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.to3-plan-weekdays{margin:8px 0 5px;color:#87a7c1;font-size:11px;text-align:center}.to3-plan-day{min-width:0;border:1px solid rgba(108,171,214,.24);border-radius:7px;background:rgba(9,38,64,.48);padding:6px;display:grid;grid-template-columns:28px 1fr;gap:5px;align-items:center}.to3-plan-day.weekend{background:rgba(78,49,33,.24)}.to3-plan-day.selected{border-color:#f5a94a;box-shadow:inset 0 0 0 1px rgba(245,169,74,.28)}.to3-plan-day.blank{visibility:hidden}.to3-plan-day-select{width:28px;height:28px;border:0;border-radius:50%;background:rgba(255,255,255,.04);color:#dcecf8;cursor:pointer;font-weight:700;padding:0}.to3-plan-day-select:hover,.to3-plan-day.selected .to3-plan-day-select{background:#f5a94a;color:#10243a}.to3-plan-day input{width:100%;min-width:0;background:#0c2138;color:#e9f2fb;border:1px solid #355879;border-radius:4px;padding:5px 6px;text-align:center}.to3-selected-day-head{display:flex;gap:16px;align-items:end;justify-content:space-between;margin:14px 0 8px}.to3-selected-day-head h3{margin:2px 0 0}.to3-selected-day-head .muted{max-width:620px;text-align:right;font-size:12px}.to3-graph-kpis span.ok{border-color:rgba(82,213,142,.45)}.to3-graph-kpis span.ok b{color:#74e39b}.to3-graph-kpis span.warn{border-color:rgba(255,185,54,.45)}.to3-graph-kpis span.warn b{color:#ffd36f}.to3-graph-kpis span.bad{border-color:rgba(255,107,107,.45)}.to3-graph-kpis span.bad b{color:#ff7a7a}.to3-net-line.planned{stroke-width:2.4}.to3-net-empty{fill:#87a7c1;font-size:16px;text-anchor:middle}
@media(max-width:900px){.modal.to3-network-plan-modal{width:98vw}.to3-plan-controls{grid-template-columns:1fr}.to3-plan-weekdays,.to3-plan-calendar{gap:3px}.to3-plan-day{grid-template-columns:1fr;padding:4px}.to3-plan-day-select{margin:auto}.to3-selected-day-head{display:block}.to3-selected-day-head .muted{text-align:left;margin-top:6px}}

/* TO-3 calendar time axis v0.7.6 */
.to3-net-day-band{fill:rgba(124,196,255,.055);stroke:rgba(124,196,255,.12);stroke-width:1}.to3-net-day-band.alt{fill:rgba(116,227,155,.035)}.to3-net-day-label{fill:#d8ebfa;font-size:12px;font-weight:800;text-anchor:middle;letter-spacing:.02em}.to3-net-day-boundary{stroke:rgba(245,169,74,.48);stroke-width:1.7;stroke-dasharray:5 4}.to3-net-grid-v.midnight{stroke:rgba(245,169,74,.38);stroke-width:1.4}.to3-net-hour{fill:#9eb9d0;font-size:10.5px;text-anchor:middle}.to3-net-train-sub{font-size:9.5px}

/* TO-3 locomotives/sections planning v0.7.8 */
.to3-graph-kpis span{flex-wrap:wrap;text-align:center}.to3-graph-kpis span small{display:block;width:100%;font-size:10.5px;color:#88a8c1;margin-top:1px}.to3-plan-countbox{min-width:0;display:grid;grid-template-columns:1fr;gap:2px}.to3-plan-countbox small{display:block;text-align:center;color:#7fa1bc;font-size:9.5px;line-height:1.1}.to3-month-capacity-note{margin:0 0 12px;padding:8px 10px;border:1px solid rgba(108,171,214,.25);border-radius:7px;background:rgba(9,38,64,.42);color:#9db9d1;font-size:12px}.to3-month-capacity-note b{color:#e9f2fb}.to3-day-capacity{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:8px 0 12px;padding:9px;border:1px solid rgba(108,171,214,.28);border-radius:8px;background:rgba(8,31,54,.58)}.to3-day-capacity>div{min-width:0;display:flex;flex-direction:column;gap:3px;padding:7px 9px;border-right:1px solid rgba(108,171,214,.16)}.to3-day-capacity>div:last-child{border-right:0}.to3-day-capacity span{font-size:10.5px;color:#85a6c0}.to3-day-capacity b{font-size:13px;color:#edf6ff}.to3-day-capacity.ok{border-color:rgba(82,213,142,.38)}.to3-day-capacity.near-limit{border-color:rgba(255,185,54,.50)}.to3-day-capacity.overload{border-color:rgba(255,107,107,.60);background:rgba(85,28,37,.28)}.to3-day-capacity.overload>div:nth-child(3) b,.to3-day-capacity.overload>div:nth-child(4) b{color:#ff8f8f}@media(max-width:900px){.to3-day-capacity{grid-template-columns:repeat(2,minmax(0,1fr))}.to3-day-capacity>div{border-right:0}.to3-plan-countbox small{font-size:9px}}

/* ============================================================
   DIGITAL TWIN SLD — REFERENCE DEPOT v0.8.0
   Benchmark layer only: normative/design capacity vs current post configuration.
   ============================================================ */
.reference-page{padding:24px clamp(18px,2.8vw,54px) 38px;max-width:1560px;margin:0 auto}.reference-hero{display:flex;gap:28px;align-items:flex-start;justify-content:space-between;padding:22px 24px;border:1px solid rgba(218,238,255,.28);background:rgba(10,36,62,.72);border-radius:10px}.reference-hero h1{margin:5px 0 7px;font-size:27px}.reference-hero p{margin:0;max-width:820px;color:var(--steel);line-height:1.5}.reference-hero-kpis{display:grid;grid-template-columns:1fr;gap:7px;min-width:255px}.reference-hero-kpis span{display:flex;gap:7px;align-items:center;padding:8px 10px;border:1px solid rgba(116,171,215,.22);background:rgba(7,26,46,.5);border-radius:7px;color:var(--steel);font-size:12px}.reference-hero-kpis b{color:var(--ink)}.reference-principle{margin:14px 0}.reference-process-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.reference-process-card{border:1px solid rgba(218,238,255,.28);background:rgba(12,39,66,.72);border-radius:10px;padding:16px;min-width:0}.reference-process-head{display:flex;gap:14px;align-items:flex-start;justify-content:space-between}.reference-process-head h3{margin:4px 0 0;font-size:19px}.reference-formula{margin:13px 0;padding:10px 12px;border-left:3px solid var(--accent);background:rgba(5,22,39,.5);display:flex;flex-direction:column;gap:4px}.reference-formula b{font-size:13px}.reference-formula span{color:var(--steel);font-size:12px}.reference-kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.reference-kpi-grid>div{border:1px solid rgba(116,171,215,.22);background:rgba(7,28,49,.45);padding:10px;border-radius:8px;min-width:0}.reference-kpi-grid span{display:block;color:var(--steel);font-size:11px}.reference-kpi-grid b{display:block;margin-top:4px;font-size:17px;overflow-wrap:anywhere}.reference-kpi-grid small{display:block;margin-top:3px;color:#87a7c1}.reference-current{margin-top:11px;display:grid;grid-template-columns:minmax(0,1fr) 170px auto;gap:10px;align-items:center;padding-top:11px;border-top:1px solid rgba(116,171,215,.18)}.reference-current span{display:block;font-size:11px;color:var(--steel)}.reference-current b{font-size:12px}.reference-current strong{color:var(--accent);font-size:12px;white-space:nowrap}.reference-meter{height:8px;background:#071b2f;border-radius:99px;overflow:hidden}.reference-meter i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#ffd07a);border-radius:99px}.reference-assumptions{margin-top:18px;border:1px solid rgba(218,238,255,.24);background:rgba(8,31,54,.55);padding:0 16px 14px;border-radius:10px}.reference-assumption{display:flex;gap:10px;padding:8px 2px;border-bottom:1px solid rgba(116,171,215,.12);color:#bdd2e3;line-height:1.45}.reference-assumption:last-child{border-bottom:0}.reference-assumption>span{color:var(--ok);font-weight:800}.reference-next{margin-top:14px;padding:12px 14px;border:1px dashed rgba(245,169,74,.45);background:rgba(245,169,74,.06);border-radius:8px;color:#c6d8e7}.reference-building-banner{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:center;margin:6px 0 9px;padding:11px 13px;border:1px solid rgba(245,169,74,.42);background:linear-gradient(90deg,rgba(245,169,74,.10),rgba(9,37,63,.56));border-radius:8px}.reference-building-banner>div{min-width:0}.reference-building-banner span{display:block;color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.08em}.reference-building-banner b{display:block;margin:3px 0;font-size:13px}.reference-building-banner small{display:block;color:#8eacc3;line-height:1.35}.reference-building-banner>strong{font-size:24px;color:var(--accent)}
@media(max-width:980px){.reference-process-grid{grid-template-columns:1fr}.reference-hero{flex-direction:column}.reference-hero-kpis{width:100%;min-width:0;grid-template-columns:repeat(3,minmax(0,1fr))}.reference-current{grid-template-columns:1fr}.reference-kpi-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.reference-page{padding:14px 10px 24px}.reference-hero-kpis{grid-template-columns:1fr}.reference-kpi-grid{grid-template-columns:1fr}.reference-process-head{flex-direction:column}.reference-building-banner{grid-template-columns:1fr}.reference-building-banner>strong{font-size:20px}}

/* ============================================================
   Digital Twin SLD v0.8.1 — PTOL reference simulator / layout fix
   ============================================================ */
.drawer-actions{flex-wrap:wrap;justify-content:flex-end}
.ptol-branch.compact{overflow:hidden}
.ptol-track.compact{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:96px;gap:12px;align-items:stretch;padding:8px 2px 4px}
.ptol-track.compact .ptol-rail-line{top:50%;z-index:0;opacity:.24;height:3px;pointer-events:none}
.ptol-track.compact .ptol-post{z-index:2;height:96px;min-height:96px;max-height:96px;min-width:0;margin:0;padding:8px 10px;overflow:hidden;justify-content:flex-start;background:#0d2b45;box-shadow:0 6px 16px rgba(0,0,0,.20)}
.ptol-track.compact .ptol-post.working{background:linear-gradient(180deg,#124a43,#0b3339)}
.ptol-track.compact .ptol-post.off{background:#14283d;opacity:.74}
.ptol-track.compact .ptol-post.warn{background:#49391e}.ptol-track.compact .ptol-post.blocked{background:#48252d}
.ptol-track.compact .ptol-empty,.ptol-track.compact .ptol-loco{margin:auto 0 0;width:100%;min-height:30px;display:flex;align-items:center;justify-content:center}
.ptol-track.compact .ptol-loco{flex-direction:column;gap:2px}.ptol-track.compact .ptol-loco b,.ptol-track.compact .ptol-loco span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
@media(max-width:1000px){.ptol-track.compact{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:92px}.ptol-track.compact .ptol-post{height:92px;min-height:92px;max-height:92px}}

.ptol-network-plan-modal{width:min(1500px,96vw);max-width:min(1500px,96vw);max-height:94vh}
.ptol-network-plan-modal .modal-body{padding:14px 16px;overflow:auto}
.ptol-sim-controls{display:grid;grid-template-columns:1.2fr .9fr .8fr 1fr;gap:10px;align-items:end;margin:12px 0}.ptol-sim-controls .field{margin:0}
.ptol-sim-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:10px 0}.ptol-sim-kpis>div{border:1px solid rgba(116,171,215,.26);background:rgba(8,31,54,.55);border-radius:8px;padding:10px 12px;min-width:0}.ptol-sim-kpis span{display:block;color:var(--steel);font-size:11px}.ptol-sim-kpis b{display:block;font-size:22px;margin:3px 0;color:var(--ink)}.ptol-sim-kpis small{display:block;color:#87a7c1}.ptol-sim-kpis .ok{border-color:rgba(82,213,142,.38)}.ptol-sim-kpis .warn{border-color:rgba(245,169,74,.48)}.ptol-sim-kpis .bad{border-color:rgba(255,107,107,.5)}
.ptol-capacity-waterfall{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center;margin:12px 0}.ptol-capacity-waterfall>div{border:1px solid rgba(116,171,215,.26);background:rgba(8,31,54,.48);border-radius:8px;padding:10px 12px}.ptol-capacity-waterfall span{display:block;color:var(--steel);font-size:10px;text-transform:uppercase;letter-spacing:.05em}.ptol-capacity-waterfall b{display:block;margin:4px 0;color:var(--ink)}.ptol-capacity-waterfall strong{color:var(--accent);font-size:14px}.ptol-capacity-waterfall>i{font-style:normal;color:var(--accent);font-size:20px;text-align:center}
.ptol-resource-scenario{display:flex;gap:16px;align-items:center;flex-wrap:wrap;border:1px dashed rgba(245,169,74,.35);background:rgba(245,169,74,.05);padding:9px 11px;border-radius:8px;margin:10px 0}.ptol-resource-scenario label{display:flex;gap:7px;align-items:center;color:#c3d6e6;font-size:12px}.ptol-resource-scenario input{accent-color:var(--accent)}.ptol-resource-scenario small{flex-basis:100%;color:#8faec5}
.ptol-plan-verdict{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(240px,1.3fr);gap:8px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:10px 0;background:rgba(8,31,54,.58)}.ptol-plan-verdict>div span{display:block;color:var(--steel);font-size:10px}.ptol-plan-verdict>div b{display:block;margin-top:3px}.ptol-plan-verdict>strong{text-align:right}.ptol-plan-verdict.ok{border-color:rgba(82,213,142,.42)}.ptol-plan-verdict.ok>strong{color:var(--ok)}.ptol-plan-verdict.warn{border-color:rgba(245,169,74,.5)}.ptol-plan-verdict.warn>strong{color:var(--accent)}.ptol-plan-verdict.bad{border-color:rgba(255,107,107,.5)}.ptol-plan-verdict.bad>strong{color:var(--bad)}.ptol-plan-verdict.neutral>strong{color:var(--steel)}
.ptol-cycle-warning{display:flex;gap:12px;align-items:flex-start;border-left:3px solid var(--accent);padding:8px 10px;margin:7px 0;background:rgba(245,169,74,.06)}.ptol-cycle-warning b{white-space:nowrap;color:var(--accent)}.ptol-cycle-warning span{color:#9eb9d0;font-size:12px;line-height:1.4}
.ptol-network-wrap{overflow:auto;border:1px solid rgba(116,171,215,.26);border-radius:9px;background:rgba(5,22,39,.7);padding:8px;margin:8px 0}.ptol-network-svg,.ptol-post-schedule-svg{display:block;width:100%;min-width:1120px;height:auto}.ptol-net-bg{fill:rgba(5,22,39,.86)}.ptol-net-grid-v,.ptol-net-grid-h{stroke:rgba(148,182,210,.16);stroke-width:1}.ptol-net-minute{fill:#92aec5;font-size:10px;text-anchor:middle}.ptol-net-gate{stroke:#ff8f8f;stroke-width:1.5;stroke-dasharray:5 4}.ptol-net-gate-label{fill:#ff9f9f;font-size:10px;font-weight:700}.ptol-net-route-label{fill:#e5f0f9;font-size:11px;font-weight:700}.ptol-net-route-segment{fill:#73bdf1;opacity:.86}.ptol-net-route-segment.d{fill:#74d39c}.ptol-net-route-segment.e{fill:#c7a5f5}.ptol-net-route-segment.b{fill:#ffd078}.ptol-net-route-segment.master{fill:#f29b6f}.ptol-net-phase{fill:rgba(116,171,215,.17);stroke:rgba(116,171,215,.30)}.ptol-net-phase-label{fill:#93afc6;font-size:9px;text-anchor:middle}.ptol-master-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:8px 0}.ptol-master-kpis span{display:flex;justify-content:center;align-items:center;gap:5px;min-height:38px;border:1px solid rgba(116,171,215,.22);background:rgba(8,31,54,.45);border-radius:7px;color:var(--steel);font-size:11px}.ptol-master-kpis b{font-size:16px;color:var(--ink)}
.ptol-post-schedule-note,.ptol-crew-assumption{font-size:11px;color:#91aec5;line-height:1.45;margin:6px 0}.ptol-crew-assumption{border:1px solid rgba(116,171,215,.22);background:rgba(8,31,54,.45);border-radius:7px;padding:9px 11px}.ptol-post-lane-label{fill:#e3eef7;font-size:11px;font-weight:700}.ptol-post-lane-sub{font-size:9px}.ptol-post-lane-sub.productive{fill:#71d99d}.ptol-post-lane-sub.crew-limited{fill:#f7b857}.ptol-post-lane-sub.unavailable{fill:#8197aa}.ptol-slot{stroke-width:1}.ptol-slot.capacity{fill:rgba(86,144,188,.10);stroke:rgba(114,180,229,.28)}.ptol-slot.planned{fill:rgba(245,169,74,.58);stroke:rgba(255,204,129,.85)}.ptol-slot.crew-blocked{fill:rgba(245,169,74,.12);stroke:rgba(245,169,74,.44);stroke-dasharray:5 4}.ptol-slot.unavailable{fill:rgba(116,132,148,.08);stroke:rgba(116,132,148,.25);stroke-dasharray:5 5}.ptol-route-load{margin:12px 0;border:1px solid rgba(116,171,215,.24);border-radius:8px;background:rgba(8,31,54,.42)}.ptol-route-load summary{cursor:pointer;padding:10px 12px;font-weight:700;color:#d8e8f5}.ptol-route-load>div{margin:0 10px 10px}
@media(max-width:980px){.ptol-sim-controls{grid-template-columns:1fr 1fr}.ptol-sim-kpis,.ptol-master-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ptol-capacity-waterfall{grid-template-columns:1fr}.ptol-capacity-waterfall>i{transform:rotate(90deg)}.ptol-plan-verdict{grid-template-columns:1fr 1fr}.ptol-plan-verdict>strong{text-align:left;grid-column:1/-1}.ptol-cycle-warning{flex-direction:column;gap:4px}}
@media(max-width:620px){.ptol-sim-controls,.ptol-sim-kpis,.ptol-master-kpis,.ptol-plan-verdict{grid-template-columns:1fr}.ptol-resource-scenario{align-items:flex-start;flex-direction:column}.ptol-resource-scenario small{flex-basis:auto}}

/* ============================================================
   Digital Twin SLD v0.8.2 — shared network planner
   ============================================================ */
.network-page{padding:22px clamp(16px,2.5vw,46px) 40px;max-width:1680px;margin:0 auto}.network-hero{display:flex;gap:24px;align-items:flex-start;justify-content:space-between;border:1px solid rgba(218,238,255,.28);background:rgba(10,36,62,.72);border-radius:10px;padding:18px 20px}.network-hero h1{margin:4px 0 6px;font-size:26px}.network-hero p{margin:0;max-width:770px;color:var(--steel);line-height:1.45}.network-process-switch{display:grid;grid-template-columns:repeat(5,minmax(92px,1fr));gap:7px;min-width:min(700px,54vw)}.network-process{border:1px solid rgba(116,171,215,.28);background:rgba(7,28,49,.52);color:var(--ink);border-radius:8px;padding:9px 10px;cursor:pointer;text-align:left}.network-process b,.network-process small{display:block}.network-process small{margin-top:2px;color:var(--steel);font-size:10px}.network-process.active{border-color:var(--accent);background:rgba(245,169,74,.10)}.network-process.disabled{opacity:.42;cursor:not-allowed}.network-mode-bar{display:flex;gap:14px;align-items:center;margin:12px 0;padding:10px 12px;border:1px solid rgba(116,171,215,.22);background:rgba(7,27,47,.56);border-radius:8px}.network-mode-switch{display:flex;gap:7px;flex-wrap:wrap}.network-mode-note{min-width:0;color:var(--steel);font-size:12px;line-height:1.4}.network-mode-note b{color:var(--ink)}.network-context{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin:12px 0 8px}.network-context h2{margin:3px 0 4px;font-size:21px}.network-context p{margin:0;color:var(--steel)}.network-context-badge{padding:7px 10px;border:1px solid rgba(245,169,74,.42);background:rgba(245,169,74,.08);border-radius:7px;color:var(--accent);font-size:11px;font-weight:800;white-space:nowrap}.network-scenario-controls{display:grid;grid-template-columns:repeat(2,minmax(180px,260px)) minmax(300px,1fr);gap:10px;align-items:end;margin:10px 0;padding:11px;border:1px solid rgba(245,169,74,.26);background:rgba(245,169,74,.045);border-radius:8px}.network-scenario-controls .field{margin:0}.network-risk-flags{display:flex;gap:12px;flex-wrap:wrap;align-items:center;color:#b7ccdd;font-size:12px}.network-risk-flags label{display:flex;align-items:center;gap:6px}.network-risk-flags small{width:100%;color:#7f9db5;line-height:1.35}.network-capacity-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:8px 0}.network-capacity-strip>div{border:1px solid rgba(116,171,215,.24);background:rgba(7,29,51,.50);border-radius:8px;padding:9px 10px;min-width:0}.network-capacity-strip span{display:block;color:var(--steel);font-size:10px}.network-capacity-strip b{display:block;margin:3px 0 1px;font-size:18px}.network-capacity-strip small{display:block;color:#87a7c1;font-size:10px}.network-capacity-strip .ok b{color:var(--ok)}.network-capacity-strip .warn b{color:var(--warn)}.network-capacity-strip .bad b{color:var(--bad)}.network-waterfall{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center;margin:10px 0}.network-waterfall>div{border:1px solid rgba(116,171,215,.22);background:rgba(8,31,54,.46);padding:9px 10px;border-radius:8px}.network-waterfall span,.network-waterfall b,.network-waterfall strong{display:block}.network-waterfall span{color:var(--steel);font-size:10px}.network-waterfall b{margin-top:3px}.network-waterfall strong{margin-top:2px;color:var(--accent);font-size:12px}.network-waterfall>i{color:var(--steel);font-style:normal;text-align:center}.network-plan-row{display:grid;grid-template-columns:minmax(170px,220px) minmax(210px,280px) auto auto minmax(190px,1fr);gap:9px;align-items:end;margin:12px 0}.network-plan-row .field{margin:0}.network-plan-verdict{border:1px solid rgba(116,171,215,.24);background:rgba(7,29,51,.50);border-radius:8px;padding:7px 10px;min-height:50px}.network-plan-verdict span,.network-plan-verdict small{display:block;color:var(--steel);font-size:10px}.network-plan-verdict b{display:block;margin:2px 0;font-size:16px}.network-plan-verdict.ok b{color:var(--ok)}.network-plan-verdict.bad b{color:var(--bad)}
.network-family-panel{display:grid;gap:10px;min-width:min(780px,58vw)}.network-family-panel .network-process-switch{min-width:0!important;width:100%}.network-depot-switch{display:grid;grid-template-columns:auto minmax(260px,1fr);gap:5px 12px;align-items:center;padding:10px 12px;border:1px solid rgba(245,169,74,.38);border-radius:9px;background:rgba(245,169,74,.07)}.network-depot-switch>span{color:var(--accent);font-size:11px;font-weight:850}.network-depot-switch select{min-height:42px;border:1px solid var(--line);border-radius:8px;background:var(--input);color:var(--ink);padding:8px 10px;font-size:14px}.network-depot-switch small{grid-column:2;color:var(--steel);font-size:9px}
@media(max-width:1100px){.network-hero{flex-direction:column}.network-process-switch{min-width:0;width:100%}.network-family-panel{min-width:0;width:100%}.network-capacity-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.network-scenario-controls{grid-template-columns:1fr 1fr}.network-risk-flags{grid-column:1/-1}.network-plan-row{grid-template-columns:1fr 1fr auto auto}.network-plan-verdict{grid-column:1/-1}.network-waterfall{grid-template-columns:1fr}.network-waterfall>i{transform:rotate(90deg)}}
@media(max-width:700px){.network-page{padding:12px 9px 24px}.network-process-switch{grid-template-columns:repeat(2,1fr)}.network-depot-switch{grid-template-columns:1fr}.network-depot-switch small{grid-column:auto}.network-mode-bar{align-items:stretch;flex-direction:column}.network-mode-switch{display:grid;grid-template-columns:1fr}.network-context{flex-direction:column}.network-capacity-strip{grid-template-columns:1fr 1fr}.network-scenario-controls{grid-template-columns:1fr}.network-risk-flags{grid-column:auto}.network-plan-row{grid-template-columns:1fr}.network-plan-verdict{grid-column:auto}}
.network-resource-warning{margin:8px 0;padding:9px 11px;border:1px solid rgba(255,185,54,.42);background:rgba(255,185,54,.07);border-radius:7px;color:#c8d9e7;font-size:12px}.network-resource-warning b{color:var(--warn)}

/* Digital Twin SLD v0.8.4 — day/month movement graph */
.network-movement-head{display:flex;gap:18px;align-items:flex-end;justify-content:space-between;margin:18px 0 8px;padding-top:10px;border-top:1px solid rgba(116,171,215,.18)}
.network-movement-head .section-title{margin:0 0 3px}.network-movement-head p{margin:0;max-width:900px;color:var(--steel);font-size:12px;line-height:1.42}
.network-range-controls{display:flex;gap:7px;align-items:flex-end;justify-content:flex-end;flex-wrap:wrap;flex:0 0 auto}.network-range-controls .field.compact{margin:0;width:152px}.network-range-controls .field.compact:last-of-type{width:112px}.network-range-controls .field.compact>span{font-size:10px;margin-bottom:3px;white-space:nowrap}.network-range-controls .field.compact input{height:31px;padding:5px 7px}.network-range-controls input:disabled{opacity:.56;cursor:not-allowed}.network-view-switch{display:flex;gap:6px;flex:0 0 auto;padding:4px;border:1px solid rgba(116,171,215,.24);background:rgba(7,29,51,.48);border-radius:8px}
.network-scale-switch{display:flex;gap:6px;flex:0 0 auto;padding:4px;border:1px solid rgba(116,171,215,.24);background:rgba(7,29,51,.48);border-radius:8px}
.network-graph-date-row,.network-graph-summary{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin:8px 0}
.network-graph-date-row .field{margin:0;min-width:190px}.network-graph-date-row>span,.network-graph-summary>span{display:flex;gap:5px;align-items:baseline;min-height:42px;padding:8px 10px;border:1px solid rgba(116,171,215,.22);background:rgba(8,31,54,.44);border-radius:7px;color:var(--steel);font-size:11px}
.network-graph-date-row b,.network-graph-summary b{color:var(--ink);font-size:15px}.network-graph-summary .warn{border-color:rgba(255,185,54,.42);color:var(--warn)}
.network-movement-wrap{padding:8px}.ptol-movement-svg{display:block;width:100%;min-width:1180px;height:auto}.ptol-movement-svg.month{min-width:1900px}.network-month-svg{min-width:1900px}
.movement-day-band{fill:rgba(116,171,215,.035)}.movement-day-band.alt{fill:rgba(116,171,215,.065)}.movement-day-boundary{stroke:rgba(161,194,220,.24);stroke-width:1}.movement-day-label{fill:#a9c1d5;font-size:10px;text-anchor:middle;font-weight:700}.ptol-net-phase-sub{fill:#7f9db5;font-size:9.5px}
.movement-line{fill:none;stroke-width:1.55;stroke-linejoin:round;stroke-linecap:round;opacity:.72;vector-effect:non-scaling-stroke}.ptol-movement-svg.month .movement-line{stroke-width:1.15;opacity:.50}.network-month-svg .movement-line{opacity:.64}
@media(max-width:900px){.network-movement-head{align-items:stretch;flex-direction:column}.network-range-controls{justify-content:flex-start}.network-scale-switch{align-self:flex-start}.ptol-movement-svg.month,.network-month-svg{min-width:1550px}}
@media(max-width:620px){.network-range-controls{display:grid;grid-template-columns:1fr 1fr}.network-range-controls .network-scale-switch,.network-range-controls .network-view-switch{grid-column:1/-1}.network-range-controls .field.compact,.network-range-controls .field.compact:last-of-type{width:auto}}

/* Digital Twin SLD v0.8.5 — resource/post lanes for network graphs */
.resource-network-svg .resource-lane-bg{fill:rgba(116,171,215,.018)}
.resource-network-svg .resource-lane-bg.selected{fill:rgba(116,171,215,.050)}
.resource-network-svg .resource-lane-bg.selected.productive{fill:rgba(116,227,155,.045)}
.resource-network-svg .resource-lane-bg.disabled{fill:rgba(255,255,255,.012);opacity:.55}
.resource-network-svg .resource-lane-bg.queue{fill:rgba(255,211,111,.028)}
.resource-occupancy{fill:rgba(255,255,255,.035);stroke-width:1;opacity:.72;vector-effect:non-scaling-stroke}
.resource-movement-line{stroke-width:1.8;opacity:.82;vector-effect:non-scaling-stroke}
.resource-transition-dot,.diagnostic-gate-dot{fill:#071d31;stroke-width:1.6;vector-effect:non-scaling-stroke}
.diagnostic-gate-dot{fill:rgba(255,211,111,.18);stroke-width:2}
.ptol-movement-svg.month .resource-movement-line,.network-month-svg .resource-movement-line{stroke-width:1.2;opacity:.58}
.ptol-movement-svg.month .resource-occupancy,.network-month-svg .resource-occupancy{opacity:.45}
@media(max-width:900px){.resource-network-svg{min-width:1500px}}

.road-tooltip{position:absolute;left:50%;bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px);min-width:235px;max-width:300px;padding:10px 12px;border-radius:8px;background:rgba(7,22,39,.96);border:1px solid rgba(220,239,255,.28);box-shadow:0 12px 28px rgba(0,0,0,.34);color:var(--ink);text-align:left;opacity:0;visibility:hidden;pointer-events:none;transition:.14s ease;z-index:8}
.road-tooltip b{display:block;color:var(--ink);font-size:14px}.road-tooltip small{display:block;color:var(--steel);margin-top:4px;line-height:1.35}
.road-tooltip-fleet{display:grid;gap:4px;margin-top:8px;padding-top:7px;border-top:1px solid rgba(116,171,215,.24);color:var(--steel);font-size:11px}.road-tooltip-fleet>span{display:flex;justify-content:space-between;gap:12px;color:var(--ink);font-weight:700}.road-tooltip-fleet strong{color:var(--accent);font-style:normal}.road-tooltip-fleet i{display:flex;justify-content:space-between;gap:12px;color:var(--steel);font-style:normal}.road-tooltip-fleet i span{min-width:0}
.road-marker:hover .road-tooltip,.road-marker:focus-visible .road-tooltip{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.road-map-wrap,.road-page,.road-board{overscroll-behavior:none}

/* v0.8.9.3 — shared calendar planner contract for TO-2 / TO-3 / TO-5 / TR-1 / TR-2 */
.network-plan-save-state{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:-2px 0 8px;padding:7px 10px;border:1px solid rgba(116,171,215,.20);border-radius:7px;background:rgba(8,31,54,.38);font-size:11px;color:var(--steel)}
.network-plan-save-state b{color:var(--ink)}
.network-plan-save-state.dirty{border-color:rgba(255,185,54,.46);background:rgba(84,59,20,.18)}
.network-plan-save-state.dirty b{color:var(--warn)}
.network-plan-save-state.saved{border-color:rgba(82,213,142,.28)}
.network-plan-save-state.saved b{color:var(--ok)}
.network-graph-wrap{overflow:auto;border:1px solid rgba(116,171,215,.20);border-radius:8px;background:rgba(5,22,39,.48)}
.network-graph-wrap>svg{display:block;min-width:100%;height:auto}
.network-technology-details{margin-top:18px;padding-top:12px;border-top:1px dashed rgba(116,171,215,.22)}
@media(max-width:700px){.network-plan-save-state{align-items:flex-start;flex-direction:column;gap:3px}}

/* v0.8.9.4 — TR-1 + shared BLD-002 shop flow */
.network-process-building{border-style:double;min-width:170px}
.shop-plan-day .shop-plan-counts{display:grid;gap:2px;padding:3px 6px 6px}
.shop-plan-counts small{display:flex;justify-content:space-between;gap:8px;font-size:11px}
.shop-plan-counts b{font-size:12px}
.shop-view-controls{align-items:end}
.shop-legend{display:inline-flex;align-items:center;gap:5px;font-weight:700}
.shop-legend:before{content:"";width:18px;height:3px;border-radius:2px;background:currentColor;display:inline-block}
.shop-legend.to3{color:#7cc4ff}.shop-legend.tr1{color:#ffd36f}
.tr1-master-kpis{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0 12px}
.tr1-master-kpis span{padding:8px 10px;border:1px solid rgba(255,255,255,.10);border-radius:8px;background:rgba(255,255,255,.025)}
.tr1-master-card{display:grid;gap:6px}.tr1-master-card.conditional{border-style:dashed}
.tr1-operation-list{display:grid;gap:8px;max-height:68vh;overflow:auto;padding-right:4px}
.tr1-operation-row{display:grid;grid-template-columns:56px 1fr;gap:10px;padding:10px;border:1px solid rgba(255,255,255,.09);border-radius:8px;background:rgba(255,255,255,.02)}
.tr1-operation-no{font-family:monospace;font-weight:700;color:var(--accent)}
.tr1-operation-row small{display:block;margin-top:4px;white-space:pre-wrap}
.tr1-operation-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:7px;font-size:12px;opacity:.82}
.tr1-operation-resources{margin-top:6px;font-size:12px;opacity:.68}
.shop-work-switch{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:10px;margin:0 0 18px;padding:12px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.018)}
.shop-work-program{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:58px;padding:12px 16px;border:1px solid var(--line);border-radius:9px;background:rgba(255,255,255,.025);color:var(--steel);cursor:pointer;text-align:left}
.shop-work-program span{font-weight:800;font-size:15px}.shop-work-program small{opacity:.72;text-align:right}
.shop-work-program:hover{color:var(--ink);border-color:rgba(108,181,255,.46);background:rgba(108,181,255,.055)}
.shop-work-program.active{color:var(--ink);border-color:var(--accent);background:rgba(55,157,255,.12);box-shadow:inset 0 0 0 1px rgba(55,157,255,.18)}
.shop-tr1-search{margin:16px 0 12px}.shop-tr1-card-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:10px;max-height:62vh;overflow:auto;padding-right:5px}
@media(max-width:700px){.shop-work-switch{grid-template-columns:1fr}.shop-work-program{min-height:52px}.shop-tr1-card-list{grid-template-columns:1fr;max-height:none}}

/* v0.8.9.11 · linked work hierarchy: block → scope → card → operation */
.work-group-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:11px;margin-top:14px}
.work-group-card{position:relative;display:grid;align-content:start;gap:8px;min-height:154px;padding:15px 16px 38px;border:1px solid rgba(126,177,216,.25);border-radius:10px;background:linear-gradient(145deg,rgba(34,83,121,.18),rgba(10,34,53,.42));color:var(--ink);text-align:left;cursor:pointer}
.work-group-card:hover{border-color:rgba(91,180,255,.65);background:linear-gradient(145deg,rgba(43,105,153,.26),rgba(10,34,53,.5));transform:translateY(-1px)}
.work-group-name{font-size:15px;font-weight:800;line-height:1.3}.work-group-kpis{font-size:12px;color:#a9c5da}.work-group-card small{font-size:11px;color:#88a8bf}.work-group-card small i{font-style:normal}.work-group-card em{position:absolute;right:15px;bottom:13px;color:var(--accent);font-size:11px;font-style:normal;font-weight:750}
.work-trace-legend{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;padding:10px 12px;border:1px solid rgba(255,255,255,.08);border-radius:9px;background:rgba(255,255,255,.018);font-size:11px}
.work-trace-legend span,.work-trace-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border:1px solid currentColor;border-radius:999px;font-weight:750}
.trace-direct{color:#71dca7}.trace-group{color:#78bdf3}.trace-external{color:#f2bd6b}
.work-group-head{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;align-items:start;margin:0 0 12px}.work-group-head h3{margin:3px 0 4px}.work-group-head p{margin:0;color:var(--steel)}
.work-group-search{margin:12px 0}.work-trace-columns{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:12px;align-items:start}.work-trace-stack{display:grid;gap:12px}
.work-trace-section{min-width:0;border:1px solid rgba(126,177,216,.2);border-radius:10px;background:rgba(4,25,41,.3);overflow:hidden}.work-trace-section>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:rgba(73,129,170,.09);cursor:pointer;font-weight:800;list-style-position:inside}.work-trace-section>summary b{color:var(--accent)}
.work-scope-list,.work-process-list,.work-tech-card-grid{display:grid;gap:8px;padding:10px;max-height:64vh;overflow:auto}.work-tech-card-grid{grid-template-columns:repeat(auto-fit,minmax(270px,1fr));align-items:start}
.work-scope-row,.work-tech-card,.work-process-row{min-width:0;padding:11px;border:1px solid rgba(255,255,255,.085);border-radius:8px;background:rgba(255,255,255,.022)}
.work-scope-head,.work-tech-card-head,.work-process-row{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.work-scope-head>div{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.work-scope-head span,.work-tech-card-head span,.work-process-row span{font-size:10px;color:#8fb0c7}.work-trace-badge{font-size:9px;white-space:nowrap}
.work-scope-task{margin:7px 0;line-height:1.42}.work-scope-links{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.work-scope-row>small{display:block;color:#7898af;line-height:1.35}
.work-tech-card{display:grid;gap:7px}.work-tech-card.reference-only{border-style:dashed;border-color:rgba(242,189,107,.36)}.work-tech-card .btn{justify-self:start}.work-tech-card>small{color:#83a3b9}.work-tech-card-head b{font-family:monospace;color:var(--accent)}
.work-process-row b{line-height:1.35}.work-operation-badges{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:6px}
@media(max-width:980px){.work-trace-columns{grid-template-columns:1fr}.work-scope-list,.work-process-list,.work-tech-card-grid{max-height:none}.work-group-head{grid-template-columns:1fr}.work-group-head>.btn{justify-self:start}}
@media(max-width:620px){.work-group-grid,.work-tech-card-grid{grid-template-columns:1fr}.work-group-card{min-height:140px}.work-scope-head{display:grid}.work-trace-badge{justify-self:start;white-space:normal}}

/* Digital Twin SLD v0.8.9.5 — BLD-002 mixed shop planner */
.shop-scenario-panel{display:grid;grid-template-columns:minmax(170px,220px) repeat(4,minmax(160px,1fr)) auto auto;gap:9px;align-items:end;margin:12px 0;padding:12px;border:1px solid rgba(245,169,74,.28);background:rgba(245,169,74,.045);border-radius:9px}.shop-scenario-panel .field{margin:0}.shop-plan-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:14px 0 8px}.shop-detail-links{display:flex;gap:7px}.shop-plan-day .shop-plan-counts{display:grid;gap:4px;padding:4px 5px 6px}.shop-plan-counts label{display:grid;grid-template-columns:32px 1fr;gap:4px;align-items:center;font-size:9px;color:var(--steel)}.shop-plan-counts input{width:100%;min-width:0;height:25px;padding:2px 4px;border:1px solid rgba(116,171,215,.28);background:rgba(6,28,48,.8);color:var(--ink);border-radius:5px;text-align:center;font-size:11px}.shop-capacity-strip{margin-top:10px}.shop-context{margin-top:12px}@media(max-width:1350px){.shop-scenario-panel{grid-template-columns:repeat(3,minmax(160px,1fr))}.shop-scenario-panel .btn{min-height:38px}}@media(max-width:850px){.shop-scenario-panel{grid-template-columns:1fr 1fr}.shop-plan-tools{align-items:flex-start;flex-direction:column}.shop-detail-links{width:100%;flex-wrap:wrap}}


/* Digital Twin SLD v0.8.9.6 — network tile fit + unified depot map */
.network-process{min-width:0;overflow:hidden}
.network-process b,.network-process small{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:normal}
.network-process small{white-space:normal;line-height:1.22}
.network-process-building{background:rgba(245,169,74,.075)}
.map-obj{fill:rgba(39,82,118,.72);stroke:rgba(154,190,219,.70)}
.map-obj:hover,.map-obj.selected{fill:rgba(47,96,136,.82)}
@media(min-width:1101px){.network-process-switch{grid-template-columns:repeat(4,minmax(118px,1fr));min-width:min(720px,52vw)}}

/* v0.8.9.9 · analytical PTOL layers and readable monthly capacity view */
.settings-side,.panel,.modal{border-radius:10px}.panel,.modal{overflow:hidden}.list-card,.empty-box{border-radius:8px}
.ptol-branch-head small{display:block;margin-top:3px;max-width:760px;color:#86a7c1;font-size:10.5px;line-height:1.35}.ptol-post.capacity-reserve{border-style:dashed}.ptol-post.capacity-reserve .ptol-empty{font-size:12px!important;color:#90a9bd;line-height:1.25}.ptol-operational-status{display:block;margin-top:4px;color:#7898b1;font-size:9px;line-height:1.2}.ptol-post.capacity-base .ptol-operational-status{color:#7fa4bd}
.ptol-capacity-heatmap{display:block;min-width:1850px;width:100%;height:auto}.ptol-heat-cell{stroke:rgba(149,185,213,.18);stroke-width:1}.ptol-heat-cell.off{fill:#13283b;fill-opacity:.46;stroke-dasharray:3 3}.ptol-heat-cell.empty{fill:#102f4a;fill-opacity:.56}.ptol-heat-cell.low{fill:#28618a;fill-opacity:.72}.ptol-heat-cell.high{fill:#2d8d78;fill-opacity:.82}.ptol-heat-cell.full{fill:#38b87f;fill-opacity:.9}.ptol-heat-value{fill:#edf7ff;font-size:11px;font-weight:750;text-anchor:middle}.network-graph-summary .bad{border-color:rgba(255,107,107,.52);color:#ff9393}.network-graph-summary .ok{border-color:rgba(82,213,142,.4);color:#74e39b}
@media(max-width:900px){.ptol-capacity-heatmap{min-width:1750px}.ptol-branch-head{align-items:flex-start!important;flex-direction:column}.ptol-branch-kpi{align-self:flex-start}}

/* Digital Twin SLD v0.8.9.7 — access states + settings overflow */
#settings-content{min-width:0}
.read-only-disabled,.read-only-disabled:hover{opacity:.48!important;cursor:not-allowed!important;filter:saturate(.55)}
.read-only-note{border-color:rgba(255,185,54,.42);color:var(--warn)}
.checkbox-field{align-content:start}.checkbox-line{display:flex;gap:8px;align-items:center;min-height:38px;color:var(--ink)}
.checkbox-line input{width:auto;margin:0}
.audit-grid{table-layout:fixed;width:100%}
.audit-grid th:nth-child(1){width:150px}.audit-grid th:nth-child(2){width:170px}.audit-grid th:nth-child(3){width:120px}.audit-grid th:nth-child(4){width:145px}.audit-grid th:nth-child(5){width:145px}
.audit-entity-id,.audit-payload{white-space:normal;overflow-wrap:anywhere;word-break:break-word}
.audit-payload{line-height:1.45}

/* Digital Twin SLD v0.8.9.14 — registered locomotive fleet and linked filters */
.fleet-page{max-width:1580px;margin:0 auto;padding:24px clamp(16px,2.6vw,46px) 40px}
.fleet-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:22px 24px;border:1px solid rgba(218,238,255,.28);border-radius:10px;background:rgba(10,36,62,.74)}
.fleet-hero h1{margin:5px 0 7px;font-size:28px}.fleet-hero p{max-width:850px;margin:0;color:var(--steel);line-height:1.5}
.fleet-hero-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:8px;width:min(620px,48vw);min-width:430px}.fleet-hero-kpis span{display:flex;flex-direction:column;justify-content:center;min-height:70px;padding:10px 12px;border:1px solid rgba(116,171,215,.24);border-radius:8px;background:rgba(7,26,46,.52);color:var(--steel);font-size:11px}.fleet-hero-kpis b{color:var(--ink);font-size:24px}.fleet-hero-kpis .fleet-kpi-total{border-color:rgba(245,169,74,.42);background:rgba(245,169,74,.08)}
.fleet-depot-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0}.fleet-depot-card{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:3px 12px;min-height:82px;padding:13px 15px;border:1px solid rgba(116,171,215,.23);border-radius:9px;background:rgba(10,36,62,.58);color:var(--ink);font:inherit;text-align:left;cursor:pointer}.fleet-depot-card:hover{border-color:rgba(116,171,215,.55);background:rgba(13,46,77,.72)}.fleet-depot-card.selected{border-color:var(--accent);background:rgba(245,169,74,.10);box-shadow:inset 0 0 0 1px rgba(245,169,74,.18)}.fleet-depot-card span{align-self:end;color:var(--steel);font-size:12px}.fleet-depot-card b{grid-row:1/3;grid-column:2;align-self:center;color:var(--accent);font-size:28px}.fleet-depot-card small{color:#7f9db5}
.fleet-table-panel{margin-top:0}.fleet-table-panel .panel-head{align-items:flex-end;justify-content:space-between}.fleet-table-panel .panel-title+.muted{margin-top:3px;font-size:11px}.fleet-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.fleet-filters input,.fleet-filters select,#settings-fleet-sld{min-width:180px;padding:7px 9px;border:1px solid var(--line);border-radius:4px;background:var(--input);color:var(--ink)}.fleet-filters input{min-width:220px}.fleet-table-count{margin:0 0 8px;color:var(--steel);font-size:11px}.fleet-table-count b{color:var(--ink)}
.fleet-grid th,.fleet-grid td{white-space:nowrap}.fleet-grid td:nth-child(3),.fleet-grid td:nth-child(5){white-space:normal}.fleet-number{font-size:14px;color:var(--accent);font-weight:800}
.fleet-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.fleet-card-head h2{margin:3px 0 0;font-size:26px}.fleet-kv{margin-bottom:13px}.fleet-section-list{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 14px}.fleet-section-chip{padding:6px 10px;border:1px solid rgba(82,213,142,.35);border-radius:999px;background:rgba(17,68,65,.34);color:#a8e8c5;font-size:12px}
.fleet-history-list{display:grid;gap:8px}.fleet-history-row{display:grid;grid-template-columns:150px 1fr;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:rgba(7,29,51,.42)}.fleet-history-row time{color:var(--steel);font-size:11px}.fleet-history-row span{display:block;margin-top:3px;color:var(--steel);font-size:11px}.fleet-history-row p{margin:6px 0 0}.fleet-history-empty{padding:28px 18px}
#settings-content .panel-head>.spacer{flex:1}
@media(max-width:1100px){.fleet-hero{flex-direction:column}.fleet-hero-kpis{width:100%;min-width:0}.fleet-depot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fleet-table-panel .panel-head{align-items:flex-start;flex-direction:column}.fleet-filters{width:100%}}
@media(max-width:680px){.fleet-page{padding:12px 9px 24px}.fleet-hero-kpis{grid-template-columns:1fr}.fleet-depot-grid{grid-template-columns:1fr}.fleet-filters{display:grid;grid-template-columns:1fr}.fleet-filters input,.fleet-filters select{width:100%;min-width:0}.fleet-history-row{grid-template-columns:1fr}}


/* Digital Twin SLD v0.8.9.16 — Sarepto locomotive-depot structural card */
.sarepto-building-hotspot{position:absolute;z-index:6;border:1px solid transparent;background:transparent;padding:0;cursor:pointer;border-radius:8px;transition:border-color .12s,background .12s,box-shadow .12s}
.sarepto-building-hotspot span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:6px 9px;border-radius:6px;background:rgba(7,24,43,.92);border:1px solid rgba(245,169,74,.62);color:#ffd38d;font-size:11px;font-weight:800;white-space:nowrap;opacity:0;transition:opacity .12s;pointer-events:none}
.sarepto-building-hotspot:hover,.sarepto-building-hotspot:focus-visible{border-color:rgba(245,169,74,.82);background:rgba(245,169,74,.055);box-shadow:0 0 0 2px rgba(245,169,74,.12),0 0 24px rgba(245,169,74,.18);outline:none}
.sarepto-building-hotspot:hover span,.sarepto-building-hotspot:focus-visible span{opacity:1}
.astrakhan-building-hotspot{position:absolute;z-index:6;border:1px solid transparent;background:transparent;padding:0;cursor:pointer;border-radius:8px;transition:border-color .12s,background .12s,box-shadow .12s}
.astrakhan-building-hotspot span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:6px 9px;border-radius:6px;background:rgba(7,24,43,.94);border:1px solid rgba(245,169,74,.62);color:#ffd38d;font-size:11px;font-weight:800;white-space:nowrap;opacity:0;transition:opacity .12s;pointer-events:none}
.astrakhan-building-hotspot:hover,.astrakhan-building-hotspot:focus-visible{border-color:rgba(245,169,74,.82);background:rgba(245,169,74,.055);box-shadow:0 0 0 2px rgba(245,169,74,.12),0 0 24px rgba(245,169,74,.18);outline:none}
.astrakhan-building-hotspot:hover span,.astrakhan-building-hotspot:focus-visible span{opacity:1}
.astrakhan-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:12px}.astrakhan-kpi-grid>div{display:flex;flex-direction:column;gap:5px;min-height:78px;padding:12px;border:1px solid var(--line);border-radius:9px;background:var(--hover)}.astrakhan-kpi-grid span{color:var(--steel);font-size:10px}.astrakhan-kpi-grid b{color:var(--ink);font-size:16px;line-height:1.25}
.astrakhan-facts{display:grid;gap:7px;margin-top:11px}.astrakhan-fact{display:grid;grid-template-columns:24px 1fr;gap:9px;align-items:start;padding:10px 12px;border:1px solid rgba(82,213,142,.25);border-radius:8px;background:rgba(82,213,142,.045);color:var(--steel);font-size:12px;line-height:1.4}.astrakhan-fact>span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(82,213,142,.15);color:var(--ok);font-weight:900}.astrakhan-fact.warn{border-color:rgba(255,185,54,.30);background:rgba(255,185,54,.045)}.astrakhan-fact.warn>span{background:rgba(255,185,54,.15);color:var(--warn)}
.astrakhan-track-list{display:grid;gap:8px;margin-top:10px}.astrakhan-track-card{display:grid;grid-template-columns:minmax(220px,1fr) minmax(250px,1.4fr);gap:12px;align-items:center;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:var(--hover)}.astrakhan-track-card>div:first-child span,.astrakhan-track-card>div:first-child b{display:block}.astrakhan-track-card>div:first-child span{color:var(--steel);font-size:10px}.astrakhan-track-card>div:first-child b{margin-top:3px}.astrakhan-track-card>div:last-child{display:flex;align-items:center;justify-content:flex-end;gap:8px}.astrakhan-track-card i{padding:5px 8px;border:1px solid rgba(116,171,215,.28);border-radius:6px;color:var(--ink);font-style:normal;font-size:11px}.astrakhan-track-card>div:last-child span{color:var(--steel)}
.astrakhan-reference-grid{display:grid;gap:6px;margin-top:10px}.astrakhan-reference-row{display:grid;grid-template-columns:64px minmax(0,1fr) 100px;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--line);border-radius:7px;background:var(--hover)}.astrakhan-reference-row>span{color:var(--steel);font-size:10px}.astrakhan-reference-row>b{font-size:12px}.astrakhan-reference-row>strong{text-align:right;color:var(--accent);font-size:11px}
.astrakhan-source-card{padding:15px;border:1px solid var(--line);border-radius:10px;background:var(--hover)}.astrakhan-source-card h3{margin:5px 0 7px}.astrakhan-source-card p{margin:0;color:var(--steel);font-size:12px;line-height:1.45}
.sarepto-depot-grid{gap:5px}
.to3-branch.compact.sarepto-depot-branch{grid-template-columns:repeat(2,minmax(0,1fr));padding-top:14px}
.to3-branch.compact.sarepto-depot-branch.single .sarepto-single-post{grid-column:1/-1;width:calc(50% - 5px);justify-self:center}
.to3-branch.compact.sarepto-depot-branch .to3-rail-line{top:60%}
.sarepto-depot-post{cursor:default!important}
.sarepto-depot-post:hover{transform:none!important;filter:none!important}
.sarepto-summary-strip span b{white-space:nowrap}
.sarepto-depot-note{margin-bottom:8px}
@media(max-width:700px){
  .astrakhan-map-toolbar{align-items:flex-start;flex-direction:column}.astrakhan-site-switch{width:100%;margin-left:0;overflow-x:auto}.astrakhan-kpi-grid{grid-template-columns:1fr 1fr}.astrakhan-track-card{grid-template-columns:1fr}.astrakhan-track-card>div:last-child{justify-content:flex-start}.astrakhan-reference-row{grid-template-columns:52px minmax(0,1fr)}.astrakhan-reference-row>strong{grid-column:2;text-align:left}
  .to3-branch.compact.sarepto-depot-branch{grid-template-columns:1fr}
  .to3-branch.compact.sarepto-depot-branch.single .sarepto-single-post{width:100%}
}

/* v0.8.9.16 · Sarepta depot interactive posts + infrastructure load check */
.sarepto-depot-post{cursor:pointer!important;text-align:left;font:inherit}
.sarepto-depot-post:hover{transform:translateY(-1px)!important;filter:brightness(1.08)!important}
.sarepto-depot-post:focus-visible{outline:2px solid var(--accent,#f5a94a);outline-offset:2px}
.sarepta-load-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:10px 0}
.sarepta-norm-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0 10px}
.sarepta-norm-strip span{border:1px solid var(--line,#35536e);border-radius:8px;padding:9px 11px;background:rgba(11,42,70,.45);color:var(--muted,#91abc4)}
.sarepta-norm-strip b{color:var(--text,#e9f2fa)}
.sarepta-load-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:10px 0}
.sarepta-load-kpis>div{border:1px solid var(--line,#35536e);border-radius:9px;padding:10px 12px;background:rgba(8,33,57,.58);display:flex;flex-direction:column;gap:3px;min-width:0}
.sarepta-load-kpis span,.sarepta-load-kpis small{color:var(--muted,#91abc4)}
.sarepta-load-kpis b{font-size:24px;color:var(--text,#e9f2fa)}
.sarepta-load-kpis .ok{border-color:rgba(62,185,122,.55)}
.sarepta-load-kpis .warn{border-color:rgba(245,169,74,.68)}
.sarepta-load-kpis .bad{border-color:rgba(226,91,91,.72)}
@media(max-width:900px){.sarepta-load-form,.sarepta-norm-strip{grid-template-columns:1fr}.sarepta-load-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.sarepta-load-kpis{grid-template-columns:1fr}}


/* Digital Twin SLD v0.8.9.20 — compact Sarepta depot + multi-depot network planner */
.drawer.ptol-fit .sarepto-depot-grid{gap:3px;overflow:hidden!important}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch{min-height:54px;padding:9px 6px 3px;gap:6px}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .ptol-post{min-height:48px!important;padding:7px 7px 4px!important}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .ptol-post span,.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .ptol-post b{font-size:11px!important}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .ptol-post small{font-size:8.5px!important;line-height:1.12}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .to3-branch-head{top:1px;font-size:9px}
.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch .to3-rail-line{top:58%}
.drawer.ptol-fit .sarepto-depot-note{padding:7px 10px;margin-bottom:4px;font-size:10px;line-height:1.3}
.drawer.ptol-fit .sarepto-summary-strip{margin:4px 0;gap:5px}
.drawer.ptol-fit .sarepto-summary-strip span{padding:5px 7px;min-height:38px}
.drawer.ptol-fit .to3-capacity-compact{padding:6px 9px;margin:4px 0;font-size:10px;line-height:1.25}
.drawer.ptol-fit .to3-flow-arrow.compact{padding:5px 8px;margin:2px 0;font-size:10px}

.network-process-switch-v08918{grid-template-columns:repeat(5,minmax(120px,1fr))!important;min-width:min(860px,58vw)!important;align-self:stretch}
.network-process-sarepta{border-color:rgba(82,213,142,.30)}
.network-process-balance{border-style:double;background:rgba(82,213,142,.055)}
.network-process-balance.active{border-color:rgba(82,213,142,.75);background:rgba(82,213,142,.10)}
.sarepta-shop-panel{grid-template-columns:minmax(170px,220px) repeat(2,minmax(180px,1fr)) auto auto}
.sarepta-network-svg{display:block;min-width:1300px;width:100%;height:auto}
.network-balance-toolbar{display:flex;align-items:end;gap:10px;margin:10px 0}.network-balance-toolbar .field{margin:0;max-width:220px}
.network-balance-grid{display:grid;grid-template-columns:minmax(0,1fr) 54px minmax(0,1fr);gap:12px;align-items:stretch;margin:12px 0}
.network-balance-arrow{display:grid;place-items:center;color:var(--accent);font-size:34px;font-weight:900}
.network-balance-depot{border:1px solid rgba(116,171,215,.28);border-radius:10px;background:rgba(7,29,51,.55);padding:14px 16px;min-width:0}
.network-balance-depot h3{margin:4px 0 10px}.network-balance-depot.ok{border-color:rgba(82,213,142,.42)}.network-balance-depot.warn{border-color:rgba(245,169,74,.55)}.network-balance-depot.bad{border-color:rgba(226,91,91,.70)}
.network-balance-load{display:flex;align-items:baseline;gap:10px;margin:4px 0 9px}.network-balance-load b{font-size:32px}.network-balance-load span{font-size:11px;color:var(--steel)}.network-balance-depot.bad .network-balance-load b{color:var(--bad)}.network-balance-depot.warn .network-balance-load b{color:var(--warn)}.network-balance-depot.ok .network-balance-load b{color:var(--ok)}
.network-balance-plan{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.network-balance-plan span{padding:6px 9px;border:1px solid rgba(116,171,215,.2);border-radius:7px;color:var(--steel)}.network-balance-plan b{color:var(--ink)}.network-balance-depot small{display:block;color:#84a5bd;line-height:1.4}
.network-transfer-panel{display:grid;grid-template-columns:minmax(300px,1.4fr) repeat(2,minmax(150px,220px)) minmax(240px,1fr) auto;gap:10px;align-items:end;margin:14px 0;padding:13px;border:1px solid rgba(245,169,74,.30);border-radius:10px;background:rgba(245,169,74,.045)}.network-transfer-panel p{margin:4px 0 0;color:var(--steel);font-size:11px;line-height:1.4}.network-transfer-panel .field{margin:0}.network-transfer-limits{min-width:0;padding:7px 9px;border:1px solid rgba(116,171,215,.22);border-radius:8px;background:rgba(7,29,51,.5)}.network-transfer-limits span,.network-transfer-limits small{display:block}.network-transfer-limits span{color:var(--steel)}.network-transfer-limits b{color:var(--ink)}.network-transfer-limits small{margin-top:3px;color:#7f9db5;line-height:1.3}
@media(max-width:1380px){.network-process-switch-v08918{grid-template-columns:repeat(4,minmax(120px,1fr))!important;min-width:0!important}.network-transfer-panel{grid-template-columns:1fr 1fr 1fr}.network-transfer-panel>div:first-child,.network-transfer-limits{grid-column:span 2}}
@media(max-width:900px){.network-process-switch-v08918{grid-template-columns:repeat(2,minmax(0,1fr))!important}.network-balance-grid{grid-template-columns:1fr}.network-balance-arrow{transform:rotate(90deg)}.network-transfer-panel{grid-template-columns:1fr 1fr}.network-transfer-panel>div:first-child,.network-transfer-limits{grid-column:1/-1}.sarepta-shop-panel{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.network-process-switch-v08918,.sarepta-shop-panel,.network-transfer-panel{grid-template-columns:1fr!important}.network-transfer-panel>div:first-child,.network-transfer-limits{grid-column:auto}.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch{grid-template-columns:1fr}.drawer.ptol-fit .to3-branch.compact.sarepto-depot-branch.single .sarepto-single-post{width:100%}}

/* v0.8.9.20 — explicit automatic Ershov overflow recalculation to Sarepta */
.network-auto-transfer-panel{display:grid;grid-template-columns:minmax(300px,1.25fr) minmax(420px,1.5fr) auto;gap:12px;align-items:end;margin:14px 0;padding:13px;border:1px solid rgba(82,213,142,.34);border-radius:10px;background:rgba(82,213,142,.045)}
.network-auto-transfer-panel p{margin:4px 0 0;color:var(--steel);font-size:11px;line-height:1.45}.network-auto-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.network-auto-kpis span{display:flex;flex-direction:column;gap:2px;min-width:0;padding:8px 9px;border:1px solid rgba(116,171,215,.22);border-radius:8px;background:rgba(7,29,51,.5);color:var(--steel);font-size:11px}.network-auto-kpis b{font-size:20px;color:var(--ink)}.network-auto-kpis small{color:#7f9db5;line-height:1.3}.network-auto-kpis span.bad{border-color:rgba(226,91,91,.45)}.network-auto-kpis span.bad b{color:var(--bad)}.network-auto-kpis span.ok{border-color:rgba(82,213,142,.38)}.network-auto-kpis span.ok b{color:var(--ok)}
@media(max-width:1180px){.network-auto-transfer-panel{grid-template-columns:1fr}.network-auto-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.network-auto-kpis{grid-template-columns:1fr}}

/* v0.8.9.20 — unified multi-depot planning state, balance graphs and reset controls */
.btn-danger-soft{border-color:rgba(226,91,91,.42)!important;background:rgba(226,91,91,.08)!important;color:#f1b0b0!important}.btn-danger-soft:hover{background:rgba(226,91,91,.14)!important}
.network-sync-warning,.network-sync-ok{margin:10px 0;padding:10px 12px;border-radius:9px;font-size:11px;line-height:1.45}.network-sync-warning{border:1px solid rgba(245,169,74,.48);background:rgba(245,169,74,.07);color:#d9b47c}.network-sync-ok{border:1px solid rgba(82,213,142,.34);background:rgba(82,213,142,.055);color:#9ed7bc}.network-sync-warning b,.network-sync-ok b{color:var(--ink)}
.network-balance-graphs-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:18px 0 8px}.network-balance-graphs-head p{margin:4px 0 0;color:var(--steel);font-size:11px;line-height:1.45}.network-balance-graphs{display:grid;grid-template-columns:1fr;gap:14px;margin-bottom:14px}.network-balance-graph-card{min-width:0;border:1px solid rgba(116,171,215,.28);border-radius:10px;background:rgba(7,29,51,.52);padding:12px}.network-balance-graph-card.ok{border-color:rgba(82,213,142,.35)}.network-balance-graph-card.warn{border-color:rgba(245,169,74,.52)}.network-balance-graph-card.bad{border-color:rgba(226,91,91,.62)}.network-balance-graph-head{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:12px;margin-bottom:8px}.network-balance-graph-head h3{margin:3px 0}.network-balance-graph-card .network-movement-wrap{max-height:none}.network-balance-graph-card .network-graph-wrap{overflow:auto}
@media(max-width:900px){.network-balance-graph-head{grid-template-columns:1fr}.network-balance-graphs-head{align-items:stretch;flex-direction:column}.network-balance-toolbar{align-items:stretch;flex-wrap:wrap}}

/* Digital Twin SLD v0.8.9.21 — full-section thread hover/focus in network graphs */
.network-thread{opacity:1;outline:none;transition:opacity .12s ease}
.network-thread .resource-movement-line,.network-thread .resource-occupancy,.network-thread .diagnostic-gate-dot,.network-thread .to3-net-train-label{transition:opacity .12s ease,stroke-width .12s ease,fill-opacity .12s ease,filter .12s ease}
.resource-network-svg.thread-hover-active .network-thread:not(.is-hovered){opacity:.10}
.resource-network-svg.thread-hover-active .network-thread.is-hovered{opacity:1}
.resource-network-svg.thread-hover-active .network-thread.is-hovered .resource-movement-line{stroke-width:4.8!important;opacity:1!important;filter:drop-shadow(0 0 3px rgba(255,255,255,.55))}
.resource-network-svg.thread-hover-active .network-thread.is-hovered .resource-occupancy{stroke-width:2.4!important;opacity:1!important;fill:rgba(255,255,255,.12)}
.resource-network-svg.thread-hover-active .network-thread.is-hovered .diagnostic-gate-dot{stroke-width:3!important;opacity:1!important}
.resource-network-svg.thread-hover-active .network-thread.is-hovered .to3-net-train-label{font-weight:700;opacity:1!important}
.network-thread:focus-visible .resource-movement-line{stroke-width:4.8!important;opacity:1!important}
.network-thread:focus-visible .resource-occupancy{stroke-width:2.4!important;opacity:1!important}

/* Digital Twin SLD v0.8.9.22 — fleet passport, mileage/forecast and reliability (АРМ ИБД/БМЗ) */
.reliability-top-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.reliability-top-grid .section-title{margin-top:0}
tr.reliability-overdue td{color:#e58a8a}
@media(max-width:900px){.reliability-top-grid{grid-template-columns:1fr}}

/* Digital Twin SLD v0.8.9.24 — маневровое колено в сетевом графике Ершова */
.maneuver-occupancy{fill:rgba(255,255,255,.06);stroke-dasharray:2 2}
.resource-network-svg.thread-hover-active .network-thread.is-hovered .maneuver-occupancy{
  stroke-width:2.2!important;opacity:1!important;stroke-dasharray:none;fill:rgba(255,255,255,.14)}

/* Digital Twin SLD v0.8.9.26 — Ershov TO-3 chronometry overlay (source №180, 06.04.2022) */
.to3-tech-occupancy{fill:rgba(124,196,255,.035)!important;cursor:pointer}
.to3-tech-bar{stroke-width:.6;stroke:rgba(255,255,255,.42);cursor:pointer;opacity:.92}
.to3-tech-running,.to3-chrono-legend-item.to3-tech-running i,.to3-chrono-swatch.to3-tech-running{fill:#6dcff6;background:#6dcff6}
.to3-tech-diesel,.to3-chrono-legend-item.to3-tech-diesel i,.to3-chrono-swatch.to3-tech-diesel{fill:#ff9e66;background:#ff9e66}
.to3-tech-fuel,.to3-chrono-legend-item.to3-tech-fuel i,.to3-chrono-swatch.to3-tech-fuel{fill:#ffd166;background:#ffd166}
.to3-tech-pneumatic,.to3-chrono-legend-item.to3-tech-pneumatic i,.to3-chrono-swatch.to3-tech-pneumatic{fill:#73e2a7;background:#73e2a7}
.to3-tech-electric,.to3-chrono-legend-item.to3-tech-electric i,.to3-chrono-swatch.to3-tech-electric{fill:#c9a7ff;background:#c9a7ff}
.to3-tech-safety,.to3-chrono-legend-item.to3-tech-safety i,.to3-chrono-swatch.to3-tech-safety{fill:#ff83b5;background:#ff83b5}
.to3-tech-battery,.to3-chrono-legend-item.to3-tech-battery i,.to3-chrono-swatch.to3-tech-battery{fill:#72e6df;background:#72e6df}
.network-thread.is-hovered .to3-tech-bar,.to3-tech-bar:hover{opacity:1;stroke-width:1.1;filter:drop-shadow(0 0 2px rgba(255,255,255,.35))}
.to3-chrono-details{margin-top:14px}
.to3-chrono-legend{display:flex;flex-wrap:wrap;gap:7px 12px;margin:10px 0 12px}
.to3-chrono-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--steel)}
.to3-chrono-legend-item i{display:inline-block;width:18px;height:4px;border-radius:3px}
.to3-chrono-kpis{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 12px}
.to3-chrono-kpis span{display:flex;gap:5px;align-items:baseline;border:1px solid rgba(116,171,215,.25);background:rgba(7,29,51,.45);border-radius:8px;padding:7px 9px;color:var(--steel);font-size:11px}
.to3-chrono-kpis b{color:var(--ink);font-size:13px}
.to3-chrono-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:10px}
.to3-chrono-modal-head>div:first-child{display:flex;flex-direction:column;gap:4px}.to3-chrono-modal-head span{color:var(--steel);font-size:11px}
.to3-chrono-variant-switch{display:flex;gap:6px;flex:0 0 auto}
.to3-chrono-group{border:1px solid rgba(116,171,215,.22);border-radius:9px;background:rgba(7,29,51,.32);margin:8px 0;overflow:hidden}
.to3-chrono-group summary{display:flex;align-items:center;gap:8px;padding:9px 10px;cursor:pointer;list-style:none}.to3-chrono-group summary::-webkit-details-marker{display:none}.to3-chrono-group summary span:last-child{margin-left:auto;color:var(--steel);font-size:10px}
.to3-chrono-swatch{display:inline-block;width:18px;height:5px;border-radius:3px;flex:0 0 auto}
.to3-chrono-table-wrap{overflow:auto;border-top:1px solid rgba(116,171,215,.18);max-height:46vh}
.to3-chrono-table{width:100%;border-collapse:collapse;font-size:10px;min-width:1040px}.to3-chrono-table th,.to3-chrono-table td{padding:6px 7px;border-bottom:1px solid rgba(116,171,215,.12);vertical-align:top;text-align:left}.to3-chrono-table th{position:sticky;top:0;background:#09233b;color:var(--ink);z-index:1}.to3-chrono-table td{color:var(--steel)}.to3-chrono-table td:nth-child(2){color:var(--ink);min-width:360px}
@media(max-width:700px){.to3-chrono-modal-head{flex-direction:column}.to3-chrono-group summary{align-items:flex-start;flex-wrap:wrap}.to3-chrono-group summary span:last-child{margin-left:26px;width:100%}}

/* Digital Twin SLD v0.9.8.2 — guided multi-depot road planner */
.network-guided-entry{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:16px}.network-guided-entry .btn{min-height:44px;padding-inline:17px}.network-guided-entry small{max-width:420px;color:var(--steel);line-height:1.35}
.modal.network-guided-modal{width:min(1320px,97vw);max-height:95vh;border-radius:16px;overflow:hidden}.network-guided-modal .modal-head{padding:16px 20px}.network-guided-modal .modal-title{font-size:18px}.network-guided-modal .modal-body{padding:18px 22px}.network-guided-modal .modal-foot{padding:13px 22px}.network-guided-modal .modal-foot .btn{min-height:40px;padding-inline:16px}
.guided-progress{display:grid;grid-template-columns:repeat(7,minmax(74px,1fr));gap:5px;margin:0 0 20px}.guided-progress>div{position:relative;display:flex;align-items:center;gap:7px;min-width:0;padding:7px 8px;border:1px solid var(--line);border-radius:9px;color:var(--steel);background:var(--hover)}.guided-progress>div:after{content:'';position:absolute;left:100%;top:50%;width:6px;border-top:1px solid var(--line)}.guided-progress>div:last-child:after{display:none}.guided-progress i{display:grid;place-items:center;flex:0 0 24px;height:24px;border-radius:50%;background:var(--line);color:var(--steel);font-style:normal;font-size:11px;font-weight:800}.guided-progress span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;font-weight:750}.guided-progress .active{border-color:var(--accent);background:rgba(245,169,74,.10);color:var(--ink)}.guided-progress .active i{background:var(--accent);color:#10283d}.guided-progress .done{border-color:rgba(82,213,142,.35)}.guided-progress .done i{background:var(--ok);color:#09291b}
.guided-intro,.guided-depot-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(230px,340px);gap:24px;align-items:start}.guided-intro h2,.guided-depot-head h2,.guided-section-head h2,.guided-success h2{margin:4px 0 7px;font-size:25px}.guided-intro p,.guided-depot-head p,.guided-section-head p,.guided-success p{margin:0;color:var(--steel);line-height:1.48}.guided-month{margin:0;padding:13px;border:1px solid rgba(245,169,74,.32);background:rgba(245,169,74,.06);border-radius:10px}.guided-month input{min-height:44px;font-size:16px}
.guided-kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:18px 0}.guided-kpis>div{display:flex;flex-direction:column;gap:3px;min-height:82px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--hover)}.guided-kpis b{font-size:23px;color:var(--ink)}.guided-kpis span{font-size:10px;color:var(--steel);line-height:1.3}.guided-kpis .bad{border-color:rgba(255,107,107,.55)}.guided-kpis .bad b,.bad-text{color:var(--bad)!important}.guided-kpis .warn{border-color:rgba(255,185,54,.55)}
.guided-how{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.guided-how>div{display:grid;grid-template-columns:34px 1fr;gap:2px 10px;padding:14px;border:1px solid var(--line);border-radius:12px}.guided-how i{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(116,171,215,.16);color:var(--accent);font-style:normal;font-weight:900}.guided-how b{font-size:14px}.guided-how span{font-size:11px;color:var(--steel);line-height:1.35}
.guided-ready,.guided-not-ready{padding:13px 14px;border:1px solid rgba(82,213,142,.38);border-radius:10px;background:rgba(82,213,142,.07)}.guided-not-ready{border-color:rgba(255,185,54,.42);background:rgba(255,185,54,.07)}.guided-ready b,.guided-not-ready b,.guided-ready span,.guided-not-ready span{display:block}.guided-ready b{color:var(--ok)}.guided-not-ready b{color:var(--warn)}.guided-ready span,.guided-not-ready span{margin-top:4px;color:var(--steel);font-size:11px;line-height:1.4}.guided-lock,.guided-confirm{display:flex;align-items:center;gap:9px;margin:15px 0;padding:11px 13px;border:1px solid var(--line);border-radius:9px;background:var(--hover);font-weight:750}.guided-lock input,.guided-confirm input{width:18px;height:18px;accent-color:var(--accent)}.guided-confirm{border-color:rgba(245,169,74,.45);background:rgba(245,169,74,.07)}.guided-confirm.disabled{opacity:.55}
.guided-repairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.guided-repair{padding:13px;border:1px solid var(--line);border-radius:11px;background:var(--hover)}.guided-repair.disabled{opacity:.56;background:transparent;border-style:dashed}.guided-repair-head,.guided-repair.disabled>div{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.guided-repair-head b,.guided-repair-head span,.guided-repair.disabled b,.guided-repair.disabled span{display:block}.guided-repair-head span,.guided-repair.disabled span,.guided-repair>small{color:var(--steel);font-size:10px}.guided-repair-head strong{color:var(--ok);font-size:12px}.guided-repair-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}.guided-repair-fields .field{margin:0}.guided-repair-fields input{text-align:center}.guided-warning{margin:12px 0;padding:11px 13px;border:1px solid rgba(255,185,54,.45);border-radius:9px;background:rgba(255,185,54,.07);color:var(--steel);font-size:12px}.guided-warning b{color:var(--warn)}.guided-warning ul{margin:6px 0 0;padding-left:18px}
.guided-modes{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin:16px 0}.guided-mode{display:grid;grid-template-columns:34px 1fr;gap:3px 9px;min-height:112px;padding:13px;text-align:left;border:1px solid var(--line);border-radius:12px;background:var(--hover);color:var(--ink);cursor:pointer}.guided-mode i{grid-row:1/3;display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:rgba(116,171,215,.14);color:var(--accent);font-style:normal;font-size:20px}.guided-mode b{font-size:13px}.guided-mode span{color:var(--steel);font-size:10px;line-height:1.35}.guided-mode.active{border-color:var(--accent);box-shadow:0 0 0 2px rgba(245,169,74,.12) inset;background:rgba(245,169,74,.08)}.guided-reserve{max-width:430px}.guided-rules{display:grid;gap:7px}.guided-rule{display:grid;grid-template-columns:minmax(240px,1fr) 150px 190px;gap:9px;align-items:end;padding:9px 11px;border:1px solid var(--line);border-radius:9px}.guided-rule>label:first-child{align-self:center}.guided-rule .field{margin:0}
.guided-before-after small{display:block;margin-top:3px;color:var(--steel)}.guided-loads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.guided-load{padding:11px 12px;border:1px solid var(--line);border-radius:9px}.guided-load>div{display:flex;justify-content:space-between;gap:10px}.guided-load>div span{font-size:18px;font-weight:850}.guided-load small{display:block;margin-top:4px;color:var(--steel);font-size:10px}.guided-load.ok{border-color:rgba(82,213,142,.36)}.guided-load.warn{border-color:rgba(255,185,54,.48)}.guided-load.bad{border-color:rgba(255,107,107,.55)}.guided-details{margin:14px 0;border:1px solid var(--line);border-radius:9px}.guided-details summary{padding:11px 13px;cursor:pointer;font-weight:750}.guided-details .table-wrap{border-top:1px solid var(--line);max-height:280px}.guided-success{text-align:center;padding:34px 20px}.guided-success>i{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 12px;border-radius:50%;background:var(--ok);color:#09291b;font-size:34px;font-style:normal;font-weight:900}.guided-success .guided-kpis{max-width:650px;margin:22px auto 0}
@media(max-width:1000px){.guided-progress{grid-template-columns:repeat(4,1fr)}.guided-progress>div:after{display:none}.guided-modes{grid-template-columns:1fr 1fr}.guided-kpis{grid-template-columns:repeat(3,1fr)}.guided-repair-fields{grid-template-columns:1fr}.guided-rule{grid-template-columns:1fr 1fr}.guided-rule>label:first-child{grid-column:1/-1}.guided-loads{grid-template-columns:1fr}}
@media(max-width:650px){.modal.network-guided-modal{width:100%;height:100%;max-height:100%;border-radius:0}.network-guided-modal .modal-body{padding:13px}.guided-progress{display:flex;overflow-x:auto}.guided-progress>div{min-width:92px}.guided-intro,.guided-depot-head{grid-template-columns:1fr}.guided-kpis,.guided-how,.guided-repairs,.guided-modes{grid-template-columns:1fr}.guided-rule{grid-template-columns:1fr}.guided-rule>label:first-child{grid-column:auto}.network-guided-modal .modal-foot{flex-wrap:wrap}.network-guided-modal .modal-foot .btn{flex:1}}

/* Digital Twin SLD v0.9.8.7 — premium RF visual polish; strict, crisp, restrained. */
.rf-page.rf-map-only{height:calc(100vh - 64px);min-height:0;overflow:hidden;padding:8px 12px 12px;background:#071827}
.rf-map-only .rf-map-panel{position:relative;width:100%;height:100%;min-width:0;overflow:hidden;border:1px solid rgba(167,217,247,.18);border-radius:18px;background:#051522;box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 18px 44px rgba(0,0,0,.22)}
.rf-map-only .rf-map-svg{display:block;width:100%;height:100%;min-height:0;user-select:none;touch-action:none}
.rf-map-status{position:absolute;left:clamp(26px,3vw,54px);top:clamp(24px,3.2vh,42px);z-index:6;max-width:min(610px,48vw);padding:0 0 13px;pointer-events:none;color:#edf7ff;text-shadow:0 1px 2px rgba(0,0,0,.55)}
.rf-map-status::after{content:"";position:absolute;left:0;bottom:0;width:min(330px,88%);height:1px;background:linear-gradient(90deg,rgba(147,211,244,.34),rgba(147,211,244,0))}
.rf-map-status h1{margin:0;color:#f2f8fc;font-size:clamp(25px,2.12vw,35px);font-weight:760;line-height:1.04;letter-spacing:-.034em}
.rf-map-status-metrics{display:flex;gap:25px;align-items:baseline;margin-top:13px;color:#a4bfd2;font-size:11px;font-weight:650;letter-spacing:.055em;text-transform:uppercase}
.rf-map-status-metrics span{display:inline-flex;gap:7px;align-items:baseline;white-space:nowrap}
.rf-map-status-metrics b{color:#f3a64b;font-size:23px;font-weight:790;line-height:1;letter-spacing:-.035em}
.rf-map-only .rf-base-map{opacity:.98;filter:brightness(1.08) contrast(1.18) saturate(1.08);pointer-events:none}
.rf-map-only .rf-russia-outline polygon{fill:none;stroke:rgba(119,211,250,.76);stroke-width:1.25;vector-effect:non-scaling-stroke;filter:none;pointer-events:none}
.rf-road-point{outline:none;cursor:pointer;transform-box:fill-box;transform-origin:center;transition:opacity .12s ease}
.rf-road-point-halo{fill:rgba(78,190,238,.055);stroke:rgba(116,207,246,.24);stroke-width:.85;vector-effect:non-scaling-stroke;transition:r .12s ease,fill .12s ease,stroke .12s ease}
.rf-road-point-dot{fill:#78d4f8;stroke:#f2fbff;stroke-width:1.65;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px rgba(75,195,242,.42));transition:fill .12s ease,stroke .12s ease,filter .12s ease,r .12s ease}
.rf-road-point-label{pointer-events:none}
.rf-road-point-label rect{fill:rgba(5,22,36,.92);stroke:rgba(126,199,232,.32);stroke-width:.8;vector-effect:non-scaling-stroke;filter:none;transition:fill .12s ease,stroke .12s ease}
.rf-road-point-label text{fill:#edf7fc;font-size:10.7px;font-weight:760;letter-spacing:.012em;pointer-events:none}
.rf-road-point:hover .rf-road-point-halo,.rf-road-point:focus-visible .rf-road-point-halo,.rf-road-point.selected .rf-road-point-halo{r:17px;fill:rgba(243,166,75,.075);stroke:rgba(243,166,75,.62)}
.rf-road-point:hover .rf-road-point-dot,.rf-road-point:focus-visible .rf-road-point-dot,.rf-road-point.selected .rf-road-point-dot{r:6.4px;fill:#f3a64b;stroke:#fff7e9;filter:drop-shadow(0 0 3px rgba(243,166,75,.55))}
.rf-road-point:hover .rf-road-point-label rect,.rf-road-point:focus-visible .rf-road-point-label rect,.rf-road-point.selected .rf-road-point-label rect{fill:rgba(29,28,24,.95);stroke:rgba(243,166,75,.78);stroke-width:1}
.rf-road-point:hover .rf-road-point-label text,.rf-road-point:focus-visible .rf-road-point-label text,.rf-road-point.selected .rf-road-point-label text{fill:#ffd79d}
.rf-hover-popup{position:absolute;left:50%;top:50%;z-index:20;width:min(760px,66vw);max-height:72%;transform:translate(-50%,-50%) scale(.992);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .12s ease,transform .12s ease,visibility .12s ease}
.rf-hover-popup.visible{opacity:1;visibility:visible;transform:translate(-50%,-50%) scale(1)}
.rf-hover-card{padding:18px 20px 16px;border:1px solid rgba(180,224,247,.28);border-radius:15px;background:linear-gradient(145deg,rgba(9,29,48,.955),rgba(5,20,34,.93));box-shadow:0 22px 54px rgba(0,0,0,.42),inset 0 1px 0 rgba(255,255,255,.045);backdrop-filter:blur(7px) saturate(108%)}
.rf-hover-card::before{content:"";display:block;height:1px;margin:-18px -20px 16px;background:linear-gradient(90deg,rgba(243,166,75,.82),rgba(243,166,75,.12) 52%,transparent)}
.rf-hover-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:12px;border-bottom:1px solid rgba(145,192,219,.17)}
.rf-hover-head .eyebrow{color:#d89c54;letter-spacing:.12em}
.rf-hover-head h2{margin:4px 0 0;font-size:clamp(22px,1.9vw,29px);font-weight:760;line-height:1.06;letter-spacing:-.025em;color:#f2f7fb}
.rf-hover-head>b{flex:0 0 auto;padding:6px 9px;border:1px solid rgba(243,166,75,.46);border-radius:7px;background:rgba(243,166,75,.035);color:#f3a64b;font-size:12.5px;font-weight:780}
.rf-hover-section{display:grid;grid-template-columns:155px minmax(0,1fr);gap:13px;align-items:start;padding:10px 0;border-bottom:1px solid rgba(137,185,214,.12)}
.rf-hover-section>span{padding-top:5px;color:#91adbf;font-size:9px;font-weight:720;letter-spacing:.085em;text-transform:uppercase}
.rf-hover-chips{display:flex;flex-wrap:wrap;gap:5px}
.rf-hover-chips i{display:inline-flex;align-items:center;min-height:24px;padding:4px 8px;border:1px solid rgba(126,183,215,.18);border-radius:6px;background:rgba(15,45,70,.48);color:#deedf6;font-size:10.3px;font-style:normal;font-weight:650;line-height:1.2}
.rf-hover-chips.repairs i{border-color:rgba(243,166,75,.19);background:rgba(243,166,75,.035)}
.rf-hover-hint{display:block;padding-top:10px;color:#718fa4;font-size:9px;text-align:right}
@media(max-width:1100px){.rf-page.rf-map-only{padding:7px}.rf-map-status{left:24px;top:22px;max-width:56vw}.rf-map-status h1{font-size:24px}.rf-map-status-metrics{gap:14px;font-size:10px}.rf-map-status-metrics b{font-size:18px}.rf-hover-popup{width:min(720px,78vw)}.rf-road-point-label text{font-size:10px}.rf-hover-section{grid-template-columns:125px minmax(0,1fr)}}
@media(max-width:760px){.rf-page.rf-map-only{height:calc(100vh - 58px);padding:5px}.rf-map-status{left:14px;top:14px;max-width:76vw}.rf-map-status h1{font-size:18px}.rf-map-status-metrics{margin-top:7px;gap:10px;font-size:8px}.rf-map-status-metrics b{font-size:15px}.rf-map-status::after{width:76%}.rf-hover-popup{width:88vw;max-height:76%}.rf-hover-card{padding:13px}.rf-hover-card::before{margin:-13px -13px 12px}.rf-hover-head h2{font-size:20px}.rf-hover-section{grid-template-columns:1fr;gap:5px;padding:8px 0}.rf-hover-section>span{padding-top:0}.rf-road-point-label{display:none}}
.road-network-page{grid-template-rows:auto auto minmax(0,1fr);padding-top:0}.road-level-toolbar{margin:0 calc(-1 * clamp(14px,2vw,28px));padding-inline:clamp(14px,2vw,28px)}.road-network-board{grid-template-columns:minmax(0,1.35fr) minmax(390px,470px)}.road-network-map{min-height:520px;background:#071a31}.road-network-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.road-region-silhouette{fill:rgba(37,93,133,.17);stroke:rgba(104,179,222,.32);stroke-width:2;stroke-dasharray:8 6}.road-connections line{stroke:#6ed4ff;stroke-width:4;stroke-linecap:round;opacity:.78;filter:drop-shadow(0 0 5px rgba(77,190,239,.4))}.road-map-legend{position:absolute;left:14px;bottom:12px;display:flex;gap:12px;padding:7px 10px;border:1px solid rgba(151,205,238,.22);border-radius:8px;background:rgba(4,21,39,.86);font-size:10px}.road-map-legend .layout{color:var(--accent)}.road-map-legend .reference{color:#78c9ff}.road-marker.reference .road-marker-dot{border-color:#78c9ff;background:#082541;box-shadow:0 0 0 5px rgba(76,177,235,.16),0 0 20px rgba(76,177,235,.5)}.road-marker.has-layout .road-marker-dot{border-color:var(--accent);background:#2b2417;box-shadow:0 0 0 5px rgba(245,169,74,.18),0 0 20px rgba(245,169,74,.55)}.road-marker.selected{z-index:9}.road-marker.selected .road-marker-caption{border-color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.18),0 10px 25px rgba(0,0,0,.38)}.road-network-side{display:grid;grid-template-rows:auto minmax(120px,35%) minmax(0,1fr)}.road-network-side .road-depot-list{overflow:auto;padding-right:3px}.road-depot-card.reference{border-color:rgba(83,176,230,.28)}.road-depot-card.selected{border-color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.12)}.road-depot-card.reference>span{color:#78c9ff}.road-selected-depot{height:100%;min-height:0;overflow:auto;padding:13px;border:1px solid rgba(119,179,217,.24);border-radius:10px;background:rgba(6,27,48,.54)}.road-selected-head{display:flex;justify-content:space-between;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--line-soft)}.road-selected-head span,.road-selected-head small{display:block;color:var(--steel);font-size:9px}.road-selected-head h2{margin:3px 0;font-size:20px}.road-selected-head>i{align-self:flex-start;padding:5px 7px;border:1px solid;border-radius:6px;font-size:9px;font-style:normal;white-space:nowrap}.road-selected-head>i.layout{color:var(--accent);border-color:rgba(245,169,74,.5)}.road-selected-head>i.reference{color:#78c9ff;border-color:rgba(82,184,240,.45)}.road-selected-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.road-selected-grid>div{padding:8px;border:1px solid rgba(98,151,188,.16);border-radius:7px;background:rgba(17,51,82,.38)}.road-selected-grid .wide{grid-column:1/-1}.road-selected-grid span,.road-selected-grid b{display:block}.road-selected-grid span{color:var(--steel);font-size:9px;text-transform:uppercase;letter-spacing:.04em}.road-selected-grid b{margin-top:4px;font-size:10px;line-height:1.4}.road-selected-depot>.btn{width:100%;margin-top:9px}.road-data-warning{padding:7px 8px;border-left:3px solid var(--warn);background:rgba(245,169,74,.08);color:#d6b77e;font-size:9px}.road-depot-placeholder{display:grid;place-items:center;align-content:center;height:100%;min-height:160px;color:var(--steel);text-align:center}.road-depot-placeholder b{color:var(--ink);font-size:16px}.road-depot-placeholder span{font-size:10px;margin-top:4px}.data-unknown{color:#7d9aaf;font-style:italic}.reference-depot-passport>.road-selected-depot{height:auto;overflow:visible}.reference-depot-status{display:flex;justify-content:space-between;gap:12px;margin-bottom:11px;padding:12px;border:1px solid rgba(82,184,240,.3);border-radius:8px;background:rgba(82,184,240,.06)}.reference-depot-status span{color:#78c9ff;font-size:10px;letter-spacing:.08em}.reference-depot-status b{color:var(--ink)}
@media(max-width:1280px){.road-network-board{grid-template-columns:minmax(0,1fr) 390px}.road-marker-caption{max-width:145px;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:980px){.road-network-page{height:auto;overflow:auto}.road-network-board{grid-template-columns:1fr}.road-network-side{min-height:700px}.road-network-map{min-height:560px}}
@media(max-width:620px){.road-selected-grid{grid-template-columns:1fr}.road-selected-grid .wide{grid-column:auto}.road-network-side{min-height:780px}.road-marker-caption{display:none}}

/* Digital Twin SLD v0.9.8.7.2 — premium railway-level template: map first, compact header, no dashboard sidebar. */
.rf-hover-chips.branch i{border-color:rgba(125,203,239,.30);background:rgba(72,159,205,.08);color:#dff4ff;font-weight:720}
.road-premium-page{height:calc(100vh - 56px);padding:12px clamp(14px,1.55vw,24px) 16px;display:grid;grid-template-rows:auto minmax(0,1fr);gap:10px;overflow:hidden;background:transparent}
.road-premium-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:18px;padding:0 4px 10px;border-bottom:1px solid rgba(139,197,230,.19);min-width:0}
.road-premium-back{align-self:center;border:1px solid rgba(139,197,230,.22);border-radius:7px;background:rgba(5,20,34,.46);color:#8fb1c8;padding:7px 10px;cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.02em;transition:border-color .14s,color .14s,background .14s}
.road-premium-back:hover{border-color:rgba(178,221,243,.44);background:rgba(9,31,50,.72);color:#eaf7ff}
.road-premium-title{min-width:0}.road-premium-title .eyebrow{color:#f3a64b;font-size:9px;letter-spacing:.16em;font-weight:800}.road-premium-title h1{margin:2px 0 0;color:#edf7ff;font-size:clamp(25px,2.15vw,35px);line-height:1.04;letter-spacing:-.025em;font-weight:760;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.road-premium-meta{display:flex;align-items:center;justify-content:flex-end;gap:13px;align-self:center;color:#8eaec3;font-size:11px;white-space:nowrap}.road-premium-meta span{display:flex;align-items:baseline;gap:6px}.road-premium-meta b{color:#eaf6ff;font-size:13px;font-weight:760}.road-premium-meta span:last-child b{color:#f3a64b;font-size:19px}.road-premium-meta i{width:1px;height:23px;background:rgba(137,195,226,.18)}
.road-premium-stage{position:relative;min-height:0;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid rgba(119,188,223,.22);border-radius:14px;background:radial-gradient(circle at 50% 45%,#0b2a43 0,#061a2b 52%,#041321 100%);box-shadow:inset 0 0 0 1px rgba(255,255,255,.018),inset 0 0 78px rgba(1,8,15,.26),0 18px 48px rgba(0,0,0,.22)}
.road-premium-stage::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);background-size:34px 34px;opacity:.22}
.road-cartography-canvas{position:relative;flex:0 0 auto;max-width:100%;max-height:100%;overflow:visible;filter:drop-shadow(0 14px 32px rgba(0,0,0,.28))}
.road-cartography-svg{position:absolute;inset:0;width:100%;height:100%;display:block;background:transparent;border:0}
.road-cartography-image{filter:none;opacity:1}
.road-premium-marker{z-index:5;width:36px;height:36px}.road-premium-marker .road-marker-dot{width:18px;height:18px;border-width:2px;background:#09293f;border-color:#8addff;box-shadow:0 0 0 3px rgba(86,194,239,.11),0 0 8px rgba(69,190,240,.30)}
.road-premium-marker.has-layout .road-marker-dot{background:#2a2116;border-color:#f3a64b;box-shadow:0 0 0 3px rgba(243,166,75,.12),0 0 9px rgba(243,166,75,.34)}
.road-premium-marker:hover .road-marker-dot,.road-premium-marker:focus-visible .road-marker-dot{border-color:#eefaff;box-shadow:0 0 0 3px rgba(111,211,251,.16),0 0 12px rgba(92,200,242,.40)}
.road-premium-marker .road-marker-caption{left:50%;top:50%;transform:translate(calc(-50% + var(--label-dx,0px)),calc(-50% + var(--label-dy,-26px)));padding:5px 8px;border-radius:5px;border:1px solid rgba(141,205,236,.28);background:rgba(4,19,31,.91);box-shadow:0 7px 18px rgba(0,0,0,.29);color:#eaf6ff;font-size:10.5px;font-weight:760;letter-spacing:.005em;backdrop-filter:blur(4px)}
.road-premium-marker.has-layout .road-marker-caption{border-color:rgba(243,166,75,.46);color:#ffd38d}
.road-premium-marker .road-tooltip{min-width:310px;max-width:390px;padding:12px 13px;border:1px solid rgba(157,216,243,.29);border-radius:10px;background:linear-gradient(145deg,rgba(7,27,44,.97),rgba(4,18,31,.97));box-shadow:0 18px 38px rgba(0,0,0,.44);backdrop-filter:blur(8px) saturate(108%)}
.road-premium-marker .road-tooltip b{font-size:14px;letter-spacing:-.01em}.road-premium-marker .road-tooltip small{margin-top:6px;color:#94b2c5;font-size:10.5px;line-height:1.4}.road-premium-marker .road-tooltip small strong{color:#d7edf8;font-weight:720}.road-premium-marker .road-tooltip em{display:block;margin-top:9px;padding-top:8px;border-top:1px solid rgba(133,194,224,.18);color:#6f91a7;font-size:9px;font-style:normal;text-align:right}
.road-premium-marker.edge-right .road-tooltip{left:auto;right:50%;transform:translateX(18px) translateY(4px)}.road-premium-marker.edge-right:hover .road-tooltip,.road-premium-marker.edge-right:focus-visible .road-tooltip{transform:translateX(18px) translateY(0)}
.road-premium-marker.edge-left .road-tooltip{left:50%;transform:translateX(-18px) translateY(4px)}.road-premium-marker.edge-left:hover .road-tooltip,.road-premium-marker.edge-left:focus-visible .road-tooltip{transform:translateX(-18px) translateY(0)}
.road-premium-marker.edge-top .road-tooltip{bottom:auto;top:calc(100% + 10px)}
.road-premium-hint{position:absolute;left:14px;bottom:13px;z-index:8;padding:6px 9px;border:1px solid rgba(132,194,224,.16);border-radius:6px;background:rgba(3,16,27,.72);color:#7293a8;font-size:9px;letter-spacing:.015em;pointer-events:none;backdrop-filter:blur(5px)}
.road-cartography-source{position:absolute;right:14px;bottom:13px;z-index:8;max-width:48%;padding:6px 9px;border:1px solid rgba(132,194,224,.14);border-radius:6px;background:rgba(3,16,27,.70);color:#67869a;font-size:8.5px;letter-spacing:.02em;text-align:right;pointer-events:none;backdrop-filter:blur(5px)}
@media(max-width:1100px){.road-premium-head{grid-template-columns:auto minmax(0,1fr);gap:10px}.road-premium-meta{grid-column:2;justify-self:start;justify-content:flex-start}.road-premium-page{height:auto;min-height:calc(100vh - 56px);overflow:auto}.road-premium-stage{min-height:680px}.road-premium-title h1{white-space:normal}.road-cartography-source{max-width:55%}}
@media(max-width:720px){.road-premium-page{padding:8px}.road-premium-head{grid-template-columns:1fr}.road-premium-back{justify-self:start}.road-premium-meta{grid-column:auto;justify-self:start;flex-wrap:wrap}.road-premium-meta i{display:none}.road-premium-stage{min-height:560px}.road-premium-marker .road-marker-caption{display:none}.road-premium-marker .road-tooltip{min-width:250px;max-width:78vw}.road-cartography-source{display:none}.road-premium-hint{font-size:8px}}

/* Digital Twin SLD v0.9.8.7.4 — approved master maps + code-only SLD interaction layer. */
.road-v09874-page{height:calc(100vh - 64px);padding:10px 12px 12px;display:block;overflow:hidden;background:linear-gradient(180deg,#061727,#04111e)}
.road-v09874-layout{height:100%;display:grid;grid-template-columns:minmax(0,1fr) clamp(285px,18vw,330px);gap:10px;min-height:0;overflow:hidden;align-content:center;align-items:stretch}
.road-v09874-stage{position:relative;width:100%;height:auto!important;min-height:0!important;aspect-ratio:2048/877;align-self:center;border-radius:14px;border:1px solid rgba(132,203,236,.24);background:#061827;box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 20px 46px rgba(0,0,0,.24);overflow:hidden}
.road-v09874-stage::before{display:none}
.road-v09874-stage .road-cartography-canvas{width:100%!important;height:100%!important;max-width:none;max-height:none;filter:none}
.road-v09874-stage .road-cartography-image{filter:none}
.road-v09874-back{position:absolute;z-index:12;left:14px;top:14px;padding:7px 10px;border:1px solid rgba(173,220,242,.28);border-radius:9px;background:linear-gradient(145deg,rgba(24,64,94,.80),rgba(5,23,39,.88));color:#dff4ff;box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 8px 24px rgba(0,0,0,.20);backdrop-filter:blur(8px) saturate(112%);cursor:pointer;font-size:10px;font-weight:760;letter-spacing:.02em}
.road-v09874-back:hover{border-color:rgba(255,190,88,.64);color:#fff3dc}

.road-v09874-side{position:relative;height:100%;min-height:0;overflow:hidden;padding:14px 13px 13px;border:1px solid rgba(165,216,241,.24);border-radius:14px;background:linear-gradient(150deg,rgba(25,69,101,.56),rgba(9,37,61,.72) 44%,rgba(5,23,39,.88));box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 20px 44px rgba(0,0,0,.22);backdrop-filter:blur(14px) saturate(120%);display:grid;grid-template-rows:auto auto auto minmax(0,1fr);gap:10px}
.road-v09874-side::before{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;background:linear-gradient(115deg,rgba(255,255,255,.045),transparent 30%,transparent 74%,rgba(83,180,228,.025))}
.road-v09874-side-head{position:relative;z-index:1;padding:2px 2px 11px;border-bottom:1px solid rgba(151,210,238,.17)}
.road-v09874-side-head .eyebrow{color:#f2ad54;font-size:8px;letter-spacing:.17em;font-weight:850}
.road-v09874-side-head h1{margin:4px 0 10px;color:#f0f8ff;font-size:clamp(18px,1.28vw,23px);line-height:1.03;letter-spacing:-.025em;font-weight:770}
.road-v09874-meta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 9px;align-items:end}.road-v09874-meta span{grid-column:1/-1;color:#82a8bf;font-size:8px;letter-spacing:.02em}.road-v09874-meta b{color:#dff4ff;font-size:11px}.road-v09874-meta i{padding:3px 6px;border:1px solid rgba(255,184,78,.35);border-radius:6px;background:rgba(255,174,61,.075);color:#ffc36a;font-size:9px;font-style:normal;font-weight:800}
.road-v09874-repairs{position:relative;z-index:1;padding:9px 10px;border:1px solid rgba(149,208,237,.15);border-radius:10px;background:linear-gradient(145deg,rgba(91,172,211,.07),rgba(3,20,34,.18));box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.road-v09874-repairs span,.road-v09874-depot-label{display:block;color:#7fa6bd;font-size:8px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.road-v09874-repairs p{margin:5px 0 0;color:#d7edf8;font-size:9.5px;line-height:1.42}
.road-v09874-depot-label{position:relative;z-index:1;padding:0 2px}
.road-v09874-depot-list{position:relative;z-index:1;display:grid;grid-auto-rows:minmax(44px,52px);align-content:start;gap:6px;min-height:0;overflow:hidden}
.road-v09874-depot-card{width:100%;min-width:0;display:grid;grid-template-columns:25px minmax(0,1fr) 14px;gap:8px;align-items:center;padding:7px 8px;border:1px solid rgba(151,210,238,.17);border-radius:9px;background:linear-gradient(145deg,rgba(78,152,191,.075),rgba(5,25,42,.34));color:#edf8ff;text-align:left;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.025);transition:border-color .12s,background .12s,transform .12s}
.road-v09874-depot-card:hover,.road-v09874-depot-card:focus-visible{border-color:rgba(255,188,82,.42);background:linear-gradient(145deg,rgba(95,174,213,.10),rgba(8,31,50,.43));outline:none;transform:translateX(-1px)}
.road-v09874-card-index{display:grid;place-items:center;width:24px;height:24px;border:1px solid rgba(145,207,237,.19);border-radius:7px;background:rgba(108,191,231,.06);color:#76a8c3;font:700 8px var(--mono)}
.road-v09874-card-main{min-width:0}.road-v09874-card-main b,.road-v09874-card-main small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.road-v09874-card-main b{color:#edf8ff;font-size:11px;line-height:1.15}.road-v09874-card-main small{margin-top:3px;color:#7fa2b7;font-size:8px}.road-v09874-card-arrow{color:#f2ad54;font-size:18px;line-height:1}

/* Markers are UI overlays only; the approved master PNG bytes remain untouched. */
.road-v09874-page .road-premium-marker{width:34px;height:34px;z-index:8}
.road-v09874-page .road-premium-marker .road-marker-dot,.road-v09874-page .road-premium-marker.reference .road-marker-dot,.road-v09874-page .road-premium-marker.has-layout .road-marker-dot{width:18px;height:18px;border:2px solid #ffc160;background:#fff6df;box-shadow:0 0 0 3px rgba(255,178,73,.15),0 0 11px rgba(255,171,61,.54)}
.road-v09874-page .road-premium-marker .road-marker-dot::after{content:"";position:absolute;inset:4px;border-radius:50%;background:#f5a13b;box-shadow:inset 0 0 0 1px rgba(255,255,255,.42)}
.road-v09874-page .road-premium-marker:hover .road-marker-dot,.road-v09874-page .road-premium-marker:focus-visible .road-marker-dot{border-color:#fff8eb;box-shadow:0 0 0 3px rgba(255,189,93,.22),0 0 15px rgba(255,177,66,.72)}
.road-v09874-page .road-premium-marker .road-marker-caption,.road-v09874-page .road-premium-marker.has-layout .road-marker-caption{padding:5px 8px;border:1px solid rgba(255,192,96,.34);border-radius:7px;background:linear-gradient(145deg,rgba(12,42,65,.92),rgba(4,20,34,.95));color:#fff3dc;box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 6px 16px rgba(0,0,0,.26);font-size:10px;font-weight:780;backdrop-filter:blur(7px) saturate(115%)}
/* v0.9.8.7.15 near-marker label standard: new road maps can opt into a fixed 9px visual gap from the marker dot. Existing road maps without road-label-* classes keep their accepted offsets. */
.road-v09874-page .road-premium-marker.road-label-left .road-marker-caption{left:auto;right:calc(50% + 18px);top:50%;transform:translateY(calc(-50% + var(--label-shift,0px)))}
.road-v09874-page .road-premium-marker.road-label-right .road-marker-caption{left:calc(50% + 18px);right:auto;top:50%;transform:translateY(calc(-50% + var(--label-shift,0px)))}
.road-v09874-page .road-premium-marker.road-label-top .road-marker-caption{left:50%;right:auto;top:auto;bottom:calc(50% + 18px);transform:translateX(calc(-50% + var(--label-shift,0px)))}
.road-v09874-page .road-premium-marker.road-label-bottom .road-marker-caption{left:50%;right:auto;top:calc(50% + 18px);bottom:auto;transform:translateX(calc(-50% + var(--label-shift,0px)))}
.road-v09874-page .road-premium-marker .road-tooltip{border-color:rgba(255,195,103,.28);background:linear-gradient(145deg,rgba(18,55,82,.97),rgba(5,23,39,.98));box-shadow:inset 0 1px 0 rgba(255,255,255,.045),0 18px 38px rgba(0,0,0,.36);backdrop-filter:blur(12px) saturate(118%)}

@media(max-width:1150px){.road-v09874-layout{grid-template-columns:minmax(0,1fr) 280px}.road-v09874-side{padding:11px}.road-v09874-card-main small{display:none}.road-v09874-depot-list{grid-auto-rows:42px}.road-v09874-side-head h1{font-size:18px}.road-v09874-repairs p{font-size:8.5px}}
@media(max-width:880px){.road-v09874-page{height:auto;min-height:calc(100vh - 64px);overflow:auto}.road-v09874-layout{height:auto;grid-template-columns:1fr;align-content:start}.road-v09874-stage{min-height:0!important;aspect-ratio:2048/877}.road-v09874-side{height:auto}.road-v09874-depot-list{overflow:visible}}

/* Digital Twin SLD v0.9.8.7.5 — same v0.9.8.7.4 road-level visual baseline, now supporting mixed master-map aspect ratios without crop or distortion. */
.road-v09875-stage-slot{width:100%;height:100%;min-width:0;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
.road-v09875-stage-slot .road-v09874-stage{flex:0 0 auto;width:var(--road-stage-width,100%);height:var(--road-stage-height,100%)!important;max-width:100%;max-height:100%;aspect-ratio:auto}
@media(max-width:880px){.road-v09875-stage-slot{height:auto;min-height:70vw;max-height:82vh}.road-v09875-stage-slot .road-v09874-stage{max-height:82vh}}

/* Digital Twin SLD v0.9.8.7.7 — collision-aware road hover cards. Master maps and accepted v7.4/v7.5 visual baseline stay untouched. */
.road-v09874-page .road-premium-marker:hover,.road-v09874-page .road-premium-marker:focus-visible{z-index:40}
.road-v09874-page .road-premium-marker.road-tooltip-top .road-tooltip{left:50%;right:auto;top:auto;bottom:calc(100% + 10px);transform:translateX(-50%) translateY(4px)}
.road-v09874-page .road-premium-marker.road-tooltip-top:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-top:focus-visible .road-tooltip{transform:translateX(-50%) translateY(0)}
.road-v09874-page .road-premium-marker.road-tooltip-top-right .road-tooltip{left:calc(50% + 10px);right:auto;top:auto;bottom:calc(100% + 8px);transform:translateY(4px)}
.road-v09874-page .road-premium-marker.road-tooltip-top-right:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-top-right:focus-visible .road-tooltip{transform:translateY(0)}
.road-v09874-page .road-premium-marker.road-tooltip-right .road-tooltip{left:calc(100% + 10px);right:auto;top:50%;bottom:auto;transform:translateX(-4px) translateY(-50%)}
.road-v09874-page .road-premium-marker.road-tooltip-right:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-right:focus-visible .road-tooltip{transform:translateX(0) translateY(-50%)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom-right .road-tooltip{left:calc(50% + 10px);right:auto;top:calc(100% + 8px);bottom:auto;transform:translateY(-4px)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom-right:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-bottom-right:focus-visible .road-tooltip{transform:translateY(0)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom .road-tooltip{left:50%;right:auto;top:calc(100% + 10px);bottom:auto;transform:translateX(-50%) translateY(-4px)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-bottom:focus-visible .road-tooltip{transform:translateX(-50%) translateY(0)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom-left .road-tooltip{left:auto;right:calc(50% + 10px);top:calc(100% + 8px);bottom:auto;transform:translateY(-4px)}
.road-v09874-page .road-premium-marker.road-tooltip-bottom-left:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-bottom-left:focus-visible .road-tooltip{transform:translateY(0)}
.road-v09874-page .road-premium-marker.road-tooltip-left .road-tooltip{left:auto;right:calc(100% + 10px);top:50%;bottom:auto;transform:translateX(4px) translateY(-50%)}
.road-v09874-page .road-premium-marker.road-tooltip-left:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-left:focus-visible .road-tooltip{transform:translateX(0) translateY(-50%)}
.road-v09874-page .road-premium-marker.road-tooltip-top-left .road-tooltip{left:auto;right:calc(50% + 10px);top:auto;bottom:calc(100% + 8px);transform:translateY(4px)}
.road-v09874-page .road-premium-marker.road-tooltip-top-left:hover .road-tooltip,.road-v09874-page .road-premium-marker.road-tooltip-top-left:focus-visible .road-tooltip{transform:translateY(0)}



/* Digital Twin SLD v0.9.8.7.12 — viewport-safe road hover cards.
   Position transitions are disabled during/after measurement so getBoundingClientRect() reflects each candidate immediately.
   Independent translate nudges keep the selected card inside the clipped road stage and visible viewport. */
.road-v09874-page .road-premium-marker .road-tooltip{transition:opacity .14s ease,visibility .14s ease,transform .14s ease;translate:var(--road-tooltip-shift-x,0px) var(--road-tooltip-shift-y,0px)}
.road-v09874-page .road-premium-marker.road-tooltip-measuring .road-tooltip{transition:none!important}
