*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --shell:#1d2d3e;--shell-text:#ffffff;--bg:#f5f6f7;--surface:#ffffff;--text:#1d2d3e;
  --muted:#556b82;--border:#e5e8ec;--field:#bcc3ca;--primary:#0064d9;--primary-hover:#0053b8;
  --primary-soft:#ebf4ff;--header:#fafbfc;--ok:#256f3a;--ok-soft:#f5fae5;--warn:#e76500;
  --err:#aa0808;--err-soft:#ffeaf4;
  --radius:12px;--radius-sm:8px;
  --shadow:0 0 0 1px rgba(29,45,62,.04),0 2px 6px rgba(29,45,62,.08);
  --shadow-hover:0 0 0 1px rgba(0,100,217,.25),0 8px 24px rgba(29,45,62,.12);
}
html,body{background:var(--bg);color:var(--text);font-family:"Inter","Segoe UI","Helvetica Neue",Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}
body{min-height:100vh;display:flex;flex-direction:column}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}

/* Shell bar */
.shell{background:var(--shell);color:var(--shell-text);height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 20px;gap:12px;box-shadow:0 1px 0 rgba(255,255,255,.06)}
.shell-left{display:flex;align-items:center;gap:12px;min-width:0}
.shell-logo{display:grid;place-items:center;height:30px;padding:0 10px;border-radius:6px;background:var(--primary);color:#fff;font-weight:700;font-size:14px;letter-spacing:.06em}
.shell-logo:hover{text-decoration:none;background:var(--primary-hover)}
.shell-title{font-size:15px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.95}
.shell-right{display:flex;align-items:center;gap:14px;font-size:13px;white-space:nowrap}
.shell-right .muted{opacity:.7}
.shell-user{display:flex;align-items:center;gap:8px}
.avatar{width:30px;height:30px;border-radius:50%;background:#3c5a78;display:grid;place-items:center;font-weight:600;font-size:12px}
.shell-right a{color:#fff;padding:6px 12px;border-radius:6px;background:rgba(255,255,255,.08)}
.shell-right a:hover{background:rgba(255,255,255,.16);text-decoration:none}

/* Page header */
.page-head{background:var(--surface);border-bottom:1px solid var(--border);padding:18px 20px}
.page-head .inner{max-width:1240px;margin:0 auto}
.crumbs{font-size:12px;color:var(--muted);font-weight:500}
.page-head h1{font-size:22px;font-weight:600;margin-top:2px;letter-spacing:-.01em}

.container{max-width:1240px;width:100%;margin:0 auto;padding:24px 20px 48px;flex:1}
.layout{display:grid;grid-template-columns:1fr 380px;gap:24px;align-items:start}
.stack{display:grid;gap:24px}

/* Cards */
.panel{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.panel-head{padding:16px 20px 0;font-weight:600;font-size:15px}
.panel-body{padding:16px 20px 20px}
.panel > table{margin-top:10px}

/* Tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-height:140px;display:flex;flex-direction:column;justify-content:space-between;transition:box-shadow .15s,border-color .15s,transform .15s}
.tile:hover{box-shadow:var(--shadow-hover);border-color:transparent;transform:translateY(-2px)}
.tile-title{font-size:14px;font-weight:600;color:var(--text)}
.tile-sub{font-size:12.5px;color:var(--muted);margin-top:3px}
.tile-foot{display:flex;align-items:center;justify-content:space-between;color:var(--muted);margin-top:14px}
.tile-foot svg{width:36px;height:36px;padding:8px;border-radius:10px;background:var(--primary-soft);color:var(--primary)}
.tile-foot span{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}

/* Forms */
.signin .panel-head{font-size:18px;padding-top:22px}
.signin .sub{color:var(--muted);font-size:13px;margin-top:2px;font-weight:400}
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;font-weight:500;color:var(--text);margin-bottom:6px}
.field label b{color:var(--err);font-weight:500}
.field input,.field select{width:100%;height:40px;border:1px solid var(--field);border-radius:var(--radius-sm);padding:0 12px;font-size:14px;font-family:inherit;color:var(--text);background:#fff;transition:border-color .15s,box-shadow .15s}
.field input:hover{border-color:var(--primary)}
.field input:focus,.field select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.18)}
.row{display:flex;justify-content:flex-end;align-items:center;margin:-4px 0 18px;font-size:13px}
.btn{display:block;width:100%;height:40px;border:0;border-radius:var(--radius-sm);background:var(--primary);color:#fff;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit;transition:background .15s}
.btn:hover{background:var(--primary-hover)}
.btn:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(0,100,217,.3)}
.note{font-size:12px;color:var(--muted);margin-top:18px;padding-top:14px;border-top:1px solid var(--border)}

/* Message strips */
.msg{padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:16px}
.msg-err{background:var(--err-soft);color:var(--err)}
.msg-info{background:var(--primary-soft);color:#0040a0}
.msg-ok{background:var(--ok-soft);color:var(--ok)}

/* Tables */
table{width:100%;border-collapse:collapse;font-size:13.5px}
th,td{text-align:left;padding:11px 20px;border-top:1px solid var(--border)}
th{color:var(--muted);font-weight:500;width:40%}
.status{display:inline-flex;align-items:center;gap:6px;color:var(--ok);font-weight:600;background:var(--ok-soft);padding:2px 10px;border-radius:999px;font-size:12.5px}
.status::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--ok)}

footer{border-top:1px solid var(--border);background:var(--surface);padding:14px 20px;font-size:12px;color:var(--muted)}
footer .inner{max-width:1240px;margin:0 auto;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}

@media(max-width:900px){
  .layout{grid-template-columns:1fr}
  .signin{order:-1}
  .shell-right .muted,.shell-user .name{display:none}
}
@media(max-width:480px){
  .shell{padding:0 16px}
  .page-head{padding:14px 16px}
  .container{padding:16px 16px 40px}
  .tiles{grid-template-columns:1fr 1fr;gap:10px}
  .tile{min-height:128px;padding:14px}
}

/* Buttons (variants) */
.btn-auto{display:inline-flex;align-items:center;justify-content:center;width:auto;padding:0 18px;white-space:nowrap}
.btn-auto:hover{text-decoration:none}
a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.btn-ghost{background:var(--surface);color:var(--primary);border:1px solid var(--field)}
.btn-ghost:hover{background:var(--primary-soft);border-color:var(--primary)}
.btn-danger{background:var(--surface);color:var(--err);border:1px solid #e9b3b3}
.btn-danger:hover{background:var(--err-soft);border-color:var(--err)}
.btn-sm{height:30px;padding:0 12px;font-size:13px;width:auto;display:inline-flex;align-items:center}

/* Admin link row on dashboard */
.link-row{display:flex;align-items:center;gap:14px;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);transition:border-color .15s,box-shadow .15s}
.link-row:hover{text-decoration:none;border-color:var(--primary);box-shadow:var(--shadow-hover)}
.link-row svg{width:40px;height:40px;padding:9px;border-radius:10px;background:var(--primary-soft);color:var(--primary);flex-shrink:0}
.link-row b{display:block;font-weight:600}
.link-row small{color:var(--muted);font-size:12.5px}
.container > .msg{margin-bottom:20px}

/* Toolbar + data grid */
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--border)}
.toolbar-title{font-weight:600;font-size:15px;margin-right:auto}
.toolbar-title .count{color:var(--muted);font-weight:500}
.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filters input,.filters select{height:36px;border:1px solid var(--field);border-radius:var(--radius-sm);padding:0 10px;font:inherit;font-size:13.5px;color:var(--text);background:#fff}
.filters input{width:220px}
.filters input:focus,.filters select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.18)}
.filters .btn,.toolbar > .btn{height:36px}
.filters .clear{font-size:13px}
.table-wrap{overflow-x:auto}
table.grid th,table.grid td{padding:11px 16px;border-top:0;border-bottom:1px solid var(--border);white-space:nowrap;width:auto;vertical-align:middle}
table.grid thead th{background:var(--header);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.grid tbody tr:hover{background:#f7faff}
table.grid tbody tr:last-child td{border-bottom:0}
table.grid .right{text-align:right}
table.grid .empty{text-align:center;color:var(--muted);padding:32px}
.actions{display:flex;gap:8px;justify-content:flex-end}
.actions form{display:inline}
.dim{color:#9aa7b4}
.you{font-size:11px;font-weight:600;color:var(--primary);background:var(--primary-soft);padding:1px 7px;border-radius:999px;margin-left:4px}
.badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 10px;border-radius:999px}
.badge-admin{background:#f3e8ff;color:#6b21a8}
.badge-supervisor{background:#fff4e5;color:#a44a00}
.badge-user{background:#eef1f4;color:#475e75}
.state{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:500}
.state::before{content:'';width:8px;height:8px;border-radius:50%}
.state.on{color:var(--ok)}.state.on::before{background:var(--ok)}
.state.off{color:var(--muted)}.state.off::before{background:#b8c2cc}

/* Form pages */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
.form-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--border);background:var(--header)}
.form-foot .btn{height:36px}
.check{display:flex!important;align-items:center;gap:8px;height:40px;font-weight:400!important}
.check input{width:16px;height:16px;accent-color:var(--primary)}
.field.has-err input,.field.has-err select{border-color:var(--err)}
.field-err{color:var(--err);font-size:12.5px;margin-top:5px}
.field input::placeholder{color:#9aa7b4}

@media(max-width:700px){
  .form-grid{grid-template-columns:1fr}
  .filters,.filters input{width:100%}
  .filters input{flex:1 1 100%}
}

/* Tab bar */
.tabbar{background:var(--surface);border-bottom:1px solid var(--border);padding:0 20px}
.tabbar .inner{max-width:1240px;margin:0 auto;display:flex;gap:4px;overflow-x:auto}
.tabbar a{position:relative;padding:13px 14px;color:var(--muted);font-weight:500;font-size:14px;white-space:nowrap}
.tabbar a:hover{color:var(--text);text-decoration:none}
.tabbar a.active{color:var(--primary);font-weight:600}
.tabbar a.active::after{content:'';position:absolute;left:10px;right:10px;bottom:0;height:3px;border-radius:3px 3px 0 0;background:var(--primary)}
.tabbar + .page-head{border-top:0}

/* Textareas and wide fields */
.field textarea{width:100%;min-height:76px;border:1px solid var(--field);border-radius:var(--radius-sm);padding:9px 12px;font:inherit;font-size:14px;color:var(--text);resize:vertical;transition:border-color .15s,box-shadow .15s}
.field textarea:hover{border-color:var(--primary)}
.field textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.18)}
.field.has-err textarea{border-color:var(--err)}
.span-2{grid-column:1 / -1}

/* UOR grid */
table.grid .num{width:64px;text-align:center;color:var(--muted)}
table.grid td.wrap{white-space:normal;min-width:180px;max-width:320px;line-height:1.45}
table.grid.uor td{vertical-align:top}
table.grid.uor td .actions{justify-content:flex-end}
@media(max-width:480px){.tabbar{padding:0 8px}}

/* Export buttons */
.export{display:flex;gap:8px}
.export .btn{height:36px;gap:6px}
.export svg{width:16px;height:16px}

/* Editable sheet grids */
.container.wide{max-width:1480px}
.container.wide > .panel + .panel{margin-top:20px}
.page-head .inner{max-width:1480px}
.savebar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px;font-size:12.5px;color:var(--muted)}
.savebar.sticky{position:sticky;top:0;z-index:20;background:var(--bg);padding:8px 0;margin-top:-8px}
.save-state{display:inline-flex;align-items:center;gap:6px;font-weight:600;padding:3px 10px;border-radius:999px}
.save-state::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.save-state.ok{color:var(--ok);background:var(--ok-soft)}
.save-state.busy{color:#8a5a00;background:#fff6e0}
.save-state.err{color:var(--err);background:var(--err-soft)}

table.sheet{table-layout:fixed;min-width:900px}
[data-grid="staff"] table.sheet{min-width:640px}
table.sheet th,table.sheet td{white-space:normal}
table.sheet td{vertical-align:top}
table.sheet td.num{padding-top:14px;font-variant-numeric:tabular-nums}
table.sheet td.cell{padding:4px 6px 6px;position:relative;transition:background-color .4s}
table.sheet tbody tr:hover{background:transparent}
table.sheet td.cell textarea{display:block;width:100%;min-height:34px;resize:none;overflow:hidden;border:1px solid transparent;border-radius:6px;padding:6px 8px;font:inherit;font-size:13.5px;line-height:1.45;color:var(--text);background:transparent}
table.sheet td.cell textarea:hover{border-color:var(--border);background:#fff}
table.sheet td.cell textarea:focus{outline:none;border-color:var(--primary);background:#fff;box-shadow:0 0 0 3px rgba(0,100,217,.15)}
table.sheet td.cell:has(textarea[data-field="loco_no"]) textarea{font-weight:600}
table.sheet td.has-tel textarea{padding-right:34px}
table.sheet .tel{position:absolute;right:12px;top:10px;width:24px;height:24px;display:grid;place-items:center;border-radius:6px;color:var(--ok);background:var(--ok-soft)}
table.sheet .tel svg{width:13px;height:13px}
table.sheet .tel[hidden]{display:none}
.stamp{font-size:10.5px;color:#8696a7;padding:1px 8px 0;min-height:14px;line-height:1.3}
td.cell.saving .stamp::after{content:' saving…';color:#8a5a00}
td.cell.flash{background:#eefaf2}
td.cell.err textarea{border-color:var(--err);background:var(--err-soft)}
td.cell.err .stamp::after{content:' ⚠ not saved – hover for reason';color:var(--err)}
table.sheet td.del{text-align:center;padding-top:10px}
.icon-btn{width:28px;height:28px;border:0;border-radius:6px;background:transparent;color:#8696a7;font-size:20px;line-height:1;cursor:pointer}
.icon-btn:hover{background:var(--err-soft);color:var(--err)}
.empty-state{padding:32px;text-align:center;color:var(--muted)}

/* Shell user link */
a.shell-user{background:transparent!important;padding:2px 8px 2px 2px!important;border-radius:999px!important}
a.shell-user:hover{background:rgba(255,255,255,.12)!important}

/* Select / date / loco cells */
table.sheet td.cell select,table.sheet td.cell input{display:block;width:100%;height:34px;border:1px solid transparent;border-radius:6px;padding:0 8px;font:inherit;font-size:13.5px;color:var(--text);background:transparent}
table.sheet td.cell select{appearance:none;-webkit-appearance:none;cursor:pointer;background:transparent url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238696a7' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right 6px center/14px no-repeat;padding-right:24px}
table.sheet td.cell select:hover,table.sheet td.cell input:hover{border-color:var(--border);background-color:#fff}
table.sheet td.cell select:focus,table.sheet td.cell input:focus{outline:none;border-color:var(--primary);background-color:#fff;box-shadow:0 0 0 3px rgba(0,100,217,.15)}
table.sheet td.cell-loco input{font-weight:600;text-transform:uppercase}
table.sheet td.cell :disabled{color:var(--text);cursor:default;opacity:1;background-image:none}
table.sheet td.cell :disabled:hover{border-color:transparent;background-color:transparent}
td.cell.err select,td.cell.err input{border-color:var(--err);background-color:var(--err-soft)}

/* Master sub-tabs */
.subtabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.subtabs a{padding:7px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border);color:var(--muted);font-weight:500;font-size:13.5px}
.subtabs a:hover{text-decoration:none;color:var(--text);border-color:var(--field)}
.subtabs a.active{background:var(--primary);border-color:var(--primary);color:#fff}

/* Dashboard shift-staff strip */
.staff-strip{background:#f0f5fb;border-bottom:1px solid var(--border);padding:10px 20px}
.staff-strip .inner{max-width:1240px;margin:0 auto;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.staff-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-right:4px}
.staff-cards{display:flex;gap:8px;flex-wrap:wrap}
.staff-card{display:flex;align-items:center;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:3px 4px 3px 6px;transition:background-color .4s}
.staff-card.flash,.staff-card .flash{background:#eefaf2}
.staff-card .sf{position:relative;display:flex;align-items:center}
.staff-card input{height:28px;border:1px solid transparent;border-radius:6px;padding:0 6px;font:inherit;font-size:13px;color:var(--text);background:transparent}
.staff-card input:hover{border-color:var(--border)}
.staff-card input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.15)}
.staff-card input::placeholder{color:#a3b0bd}
.sf-name input{width:150px;font-weight:500}
.sf-mobile input{width:118px;font-variant-numeric:tabular-nums}
.staff-card .tel{width:24px;height:24px;display:grid;place-items:center;border-radius:6px;color:var(--ok);background:var(--ok-soft);margin-left:2px}
.staff-card .tel svg{width:13px;height:13px}
.staff-card .tel[hidden]{display:none}
.staff-card .icon-btn{width:24px;height:24px;font-size:17px}
.staff-card .sf.err input,.staff-card .err input{border-color:var(--err);background:var(--err-soft)}
.staff-card .saving input{opacity:.7}
.staff-add{height:32px;padding:0 12px;border:1px dashed var(--field);border-radius:10px;background:transparent;color:var(--primary);font:inherit;font-size:13px;font-weight:600;cursor:pointer}
.staff-add:hover{background:var(--primary-soft);border-color:var(--primary)}
@media(max-width:600px){.sf-name input{width:120px}}

.staff-strip .inner{align-items:flex-start;gap:10px 18px}
.staff-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 10px 4px 4px;border-radius:12px}
.staff-group .staff-label{display:inline-flex;align-items:center;height:28px;padding:0 10px;border-radius:8px;background:var(--shell);color:#fff;font-size:12px;letter-spacing:.04em;margin:0}
.staff-group .staff-add{width:32px;padding:0;font-size:17px;line-height:1}
.staff-group + .staff-group{border-left:1px solid #d5dfea;padding-left:18px;border-radius:0}
@media(max-width:900px){.staff-group + .staff-group{border-left:0;padding-left:4px}}

/* Roomier main tabs */
.tabbar .inner{gap:6px}
.tabbar a{padding:15px 22px;font-size:14.5px;letter-spacing:.01em}
.tabbar a:hover{background:#f5f8fc}
.tabbar a.active::after{left:14px;right:14px}
.tabbar a + a{margin-left:2px}
@media(max-width:700px){.tabbar a{padding:13px 14px}}

/* Staff strip v2: one column per post, one compact row per person */
.staff-strip{padding:10px 20px 12px}
.staff-strip .inner{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:start}
.staff-group{display:block;padding:0;border:1px solid var(--border)!important;border-radius:10px!important;background:var(--surface);overflow:hidden}
.staff-group + .staff-group{padding-left:0}
.staff-head{display:flex;align-items:center;justify-content:space-between;padding:5px 6px 5px 10px;background:#f7f9fc;border-bottom:1px solid var(--border)}
.staff-group .staff-label{height:auto;padding:0;background:none;color:var(--shell);font-size:12px;font-weight:700;letter-spacing:.05em}
.staff-group .staff-add{width:24px;height:24px;border:0;border-radius:6px;background:var(--primary);color:#fff;font-size:16px;line-height:1;padding:0}
.staff-group .staff-add:hover{background:var(--primary-hover)}
.staff-cards{display:flex;flex-direction:column;gap:0}
.staff-card{border:0;border-radius:0;padding:1px 4px 1px 4px;gap:0;background:transparent}
.staff-card + .staff-card{border-top:1px solid #eef1f4}
.staff-card .sf-name{flex:1;min-width:0}
.staff-card .sf-name input{width:100%}
.staff-card .sf-mobile input{width:112px}
.staff-card input{height:26px;font-size:12.5px}
.staff-card .tel{width:22px;height:22px}
.staff-card .icon-btn{width:22px;height:22px;font-size:15px;opacity:.5}
.staff-card:hover .icon-btn{opacity:1}
.staff-empty{padding:5px 10px;font-size:12px;color:#9aa7b4}
.staff-empty[hidden]{display:none}
@media(max-width:900px){.staff-strip .inner{grid-template-columns:1fr}}

/* Staff on Duty side card */
.staff-panel .staff-groups{display:flex;flex-direction:column;gap:10px;padding:12px 14px 14px}
.staff-panel .staff-group{border:1px solid var(--border)!important;border-radius:10px!important;padding:0!important;background:var(--surface)}
.staff-panel .staff-card .sf-mobile input{width:108px}
.staff-panel .staff-card .sf-name input{min-width:0}

/* ===== Layout polish (v2.0) ===== */
:root{--page-w:1400px}
.tabbar .inner,.page-head .inner,.container,.container.wide,footer .inner{max-width:var(--page-w)}
.tabbar{padding:0 20px}
.tabbar .inner{gap:2px}
.tabbar a{padding:14px 18px}
.tabbar a:first-child{margin-left:-18px}

/* Compact page header */
.page-head{padding:10px 20px 12px}
.page-head h1{font-size:19px;margin-top:0}
.crumbs{font-size:11.5px}
.container{padding-top:20px}

/* Panel sub-heading */
.panel-sub{font-weight:400;font-size:12.5px;color:var(--muted);margin-left:6px}

/* Dashboard columns */
.layout.dash{grid-template-columns:minmax(0,1fr) 400px}
.tiles{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}
.tile{min-height:118px;padding:14px}
.tile-foot{margin-top:10px}
.tile-foot svg{width:32px;height:32px;padding:7px}

/* Staff on Duty: one card, divided sections */
.staff-panel .staff-groups{gap:0;padding:6px 0 8px}
.staff-panel .staff-group{border:0!important;border-radius:0!important;background:transparent}
.staff-panel .staff-group + .staff-group{border-top:1px solid var(--border)!important}
.staff-panel .staff-head{background:transparent;border:0;padding:8px 16px 4px 20px;gap:8px;justify-content:flex-start}
.staff-panel .staff-label{font-size:12px;font-weight:700;letter-spacing:.05em;color:var(--shell)}
.staff-count{min-width:18px;height:18px;padding:0 6px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:700;display:inline-grid;place-items:center}
.staff-count:empty{display:none}
.staff-panel .staff-add{margin-left:auto;width:auto;height:24px;padding:0 8px;border:0;border-radius:6px;background:transparent;color:var(--primary);font-size:12.5px;font-weight:600}
.staff-panel .staff-add:hover{background:var(--primary-soft)}
.staff-panel .staff-cards{padding:0 10px 6px 14px}
.staff-panel .staff-cards:empty{display:none}
.staff-panel .staff-card{padding:0 2px}
.staff-panel .staff-card + .staff-card{border-top:1px dashed #edf0f3}

/* Sheet header: keep on one line */
table.sheet thead th{white-space:nowrap}
table.sheet col:first-child{width:72px!important}

@media(max-width:900px){
  .layout.dash{grid-template-columns:1fr}
  .layout.dash > .stack{order:-1}
  .tabbar a:first-child{margin-left:0}
}
@media(max-width:480px){
  .tiles{grid-template-columns:1fr 1fr}
  .tile{min-height:104px}
  .shell-title{font-size:13.5px}
}

/* Align content edges with tabs and header */
.container,.container.wide{max-width:calc(var(--page-w) + 40px)}
.stamp{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:600px){
  .toolbar{gap:10px}
  .toolbar-title{flex:1 1 100%}
  .export .btn,.toolbar > .btn{height:34px;padding:0 12px;font-size:13px}
}

/* Toast */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--shell);color:#fff;padding:10px 16px;border-radius:10px;font-size:13.5px;font-weight:500;box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:100;transition:opacity .4s}
.toast.out{opacity:0}

/* Datetime cells, Now button, read-only labels */
table.sheet td.cell-datetime{position:relative}
table.sheet td.cell-datetime input{font-variant-numeric:tabular-nums;font-size:13px}
.now-btn{position:absolute;right:12px;top:9px;height:24px;padding:0 8px;border:1px solid var(--field);border-radius:6px;background:#fff;color:var(--primary);font:inherit;font-size:11.5px;font-weight:600;cursor:pointer}
.now-btn:hover{background:var(--primary-soft);border-color:var(--primary)}
.now-btn[hidden]{display:none}
table.sheet td.cell-label{padding-top:12px}
.ro{font-size:13.5px;color:var(--text)}
td.cell-label .ro[data-ro="loco_no"]{font-weight:600}
td.cell-label .ro[data-ro="status"]{display:inline-block;padding:2px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:600}
td.cell-label .ro[data-ro="status"]:empty{display:none}
td.cell-label .ro[data-ro="in_division"]{color:var(--muted);font-variant-numeric:tabular-nums}
table.sheet td.cell-datetime:has(.now-btn:not([hidden])) input{padding-right:58px}
table.sheet td.cell-datetime input::-webkit-datetime-edit{padding:0}

/* Master search */
.shell-search{flex:1;max-width:460px;margin:0 16px;position:relative}
.shell-search svg{position:absolute;left:10px;top:50%;width:15px;height:15px;transform:translateY(-50%);color:#9fb1c4}
.shell-search input{width:100%;height:32px;border:1px solid rgba(255,255,255,.14);border-radius:8px;background:rgba(255,255,255,.08);color:#fff;padding:0 12px 0 32px;font:inherit;font-size:13px}
.shell-search input::placeholder{color:#9fb1c4}
.shell-search input:focus{outline:none;background:#fff;color:var(--text);border-color:#fff}
.master-search{display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 10px 10px 16px;margin-bottom:20px}
.master-search svg{width:20px;height:20px;color:var(--muted);flex-shrink:0}
.master-search input{flex:1;height:40px;border:0;font:inherit;font-size:16px;color:var(--text);background:transparent}
.master-search input:focus{outline:none}
.master-search .btn{height:40px}
.sheet-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:20px;margin-bottom:20px}
.container.wide > .panel + .panel,.sheet-grid + .panel{margin-top:20px}
.pill-status{display:inline-block;margin-left:6px;padding:2px 10px;border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:12px;font-weight:600}
td > .pill-status{margin-left:0}
.steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:14px 20px 20px}
.steps li{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--border);border-radius:10px;opacity:.6}
.steps li.done{opacity:1;border-color:#cfe3d6;background:var(--ok-soft)}
.steps .dot{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--border);color:var(--muted);font-size:12px;font-weight:700;flex-shrink:0}
.steps li.done .dot{background:var(--ok);color:#fff}
.steps b{display:block;font-size:13px}
.steps small{color:var(--muted);font-size:12px}
.loco-chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{padding:6px 14px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-weight:600;color:var(--text)}
.chip:hover{border-color:var(--primary);color:var(--primary);text-decoration:none}
table.grid td.nowrap{white-space:nowrap}
table.grid.history td{vertical-align:top}
@media(max-width:900px){
  .sheet-grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr 1fr}
  .shell-search{display:none}
}

/* Recent updates feed */
.head-link{float:right;font-size:13px;font-weight:500}
.feed{list-style:none;padding:6px 0 8px}
.feed li{display:flex;gap:10px;align-items:flex-start;padding:9px 20px}
.feed li + li{border-top:1px solid #f0f2f5}
.avatar.sm{width:28px;height:28px;border-radius:50%;background:#e4ebf3;color:var(--shell);display:grid;place-items:center;font-weight:700;font-size:12px;flex-shrink:0}
.feed li > div{flex:1;min-width:0}
.feed-line{font-size:13px;line-height:1.45}
.feed-line b{font-weight:600}
.feed-val{font-size:12.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feed time{font-size:11.5px;color:#8696a7;white-space:nowrap;padding-top:2px}
.steps li.skip{opacity:.8;background:#f7f8fa;border-style:dashed}
.steps li.skip .dot{background:#dfe4ea}
.toast-err{background:var(--err);max-width:min(640px,calc(100vw - 32px));line-height:1.45}

/* Long column headings wrap instead of overlapping */
table.sheet thead th{white-space:normal;vertical-align:bottom;line-height:1.3;padding-top:10px;padding-bottom:10px;overflow-wrap:anywhere}
table.sheet thead th.num{white-space:nowrap}

/* ===== Spreadsheet look for editable grids (v3.4) ===== */
.table-wrap[data-grid]{max-height:calc(100vh - 230px);overflow:auto;border-top:1px solid #cfd6de}
table.sheet{table-layout:fixed;border-collapse:separate;border-spacing:0}
table.sheet th,table.sheet td{border-right:1px solid #dde3ea;border-bottom:1px solid #dde3ea}
table.sheet thead th{position:sticky;top:0;z-index:3;background:#eef2f6;color:#3b4b5c;font-size:11.5px;font-weight:700;letter-spacing:.03em;
  white-space:normal;overflow-wrap:normal;word-break:normal;line-height:1.3;padding:8px 8px;vertical-align:bottom;border-bottom:1px solid #c5ced8}
table.sheet tbody tr:nth-child(even) td{background:#fafbfd}
table.sheet tbody tr:hover td{background:#f3f7fc}
table.sheet td{background:#fff}
table.sheet td.cell{padding:2px 3px 3px}
table.sheet td.num,table.sheet th.num{position:sticky;left:0;z-index:2;text-align:center;background:#eef2f6;color:#5b6b7c;font-weight:600;border-right:1px solid #c5ced8}
table.sheet thead th.num{z-index:4}
table.sheet td.freeze,table.sheet th.freeze{position:sticky;left:64px;z-index:2;border-right:2px solid #c5ced8}
table.sheet thead th.freeze{z-index:4;background:#eef2f6}
table.sheet tbody tr:nth-child(even) td.freeze{background:#fafbfd}
table.sheet td.cell textarea,table.sheet td.cell select,table.sheet td.cell input{border-radius:2px;min-height:30px;height:auto;padding:5px 6px;border:1px solid transparent}
table.sheet td.cell select,table.sheet td.cell input{height:30px}
table.sheet td.cell textarea:hover,table.sheet td.cell select:hover,table.sheet td.cell input:hover{border-color:transparent;background-color:transparent}
table.sheet td.cell textarea:focus,table.sheet td.cell select:focus,table.sheet td.cell input:focus{border:2px solid #1a73e8;box-shadow:none;background:#fff;padding:4px 5px}
table.sheet .stamp{padding:0 6px;font-size:10px}
table.sheet td.del{padding-top:6px}
.now-btn{top:6px}
table.sheet td.cell-label{padding:8px 8px 4px}

/* View controls: zoom, row height, column resize */
.savebar{gap:10px 16px}
.view-controls{display:inline-flex;gap:8px;align-items:center;flex-wrap:wrap}
.vc-group{display:inline-flex;border:1px solid var(--field);border-radius:8px;overflow:hidden;background:#fff}
.vc-group button,.vc-reset{height:28px;padding:0 10px;border:0;background:#fff;color:var(--text);font:inherit;font-size:12.5px;cursor:pointer}
.vc-group button + button,.vc-group button + span,.vc-group span + button{border-left:1px solid var(--border)}
.vc-group button:hover,.vc-reset:hover{background:var(--primary-soft);color:var(--primary)}
.vc-group button.on{background:var(--primary);color:#fff}
.vc-group button[data-z]{width:30px;padding:0;font-size:16px;font-weight:600}
.vc-zoom{display:inline-grid;place-items:center;min-width:48px;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums}
.vc-reset{border:1px solid var(--field);border-radius:8px;color:var(--muted)}
table.sheet thead th{position:sticky}
.col-resize{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;z-index:5}
table.sheet thead th:last-child .col-resize{right:0} /* the last handle stays inside the table: no scroll bar when the columns fit (10.5) */
.col-resize:hover,.resizing .col-resize:active{background:linear-gradient(90deg,transparent 3px,#1a73e8 3px,#1a73e8 5px,transparent 5px)}
body.resizing{cursor:col-resize;user-select:none}
.table-wrap[data-rows="compact"] td.cell textarea,.table-wrap[data-rows="compact"] td.cell select,.table-wrap[data-rows="compact"] td.cell input{min-height:24px;height:24px;padding-top:2px;padding-bottom:2px}
.table-wrap[data-rows="compact"] td.cell textarea{height:auto}
.table-wrap[data-rows="compact"] .stamp{display:none}
.table-wrap[data-rows="tall"] td.cell textarea{min-height:64px}
.table-wrap[data-rows="tall"] td.cell{padding-top:6px;padding-bottom:6px}

/* Delete button in the last column */
.del-btn{height:26px;padding:0 10px;border:1px solid #e9b3b3;border-radius:6px;background:#fff;color:var(--err);font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.del-btn:hover{background:var(--err-soft);border-color:var(--err)}
table.sheet td.del{text-align:center;vertical-align:middle}
/* Shed picks on the combined view */
.shed-picks{display:inline-flex;gap:4px;padding:3px;border:1px solid var(--field);border-radius:8px;background:#fff}
.shed-picks label{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:6px;font-size:13px;cursor:pointer}
.shed-picks label:has(input:checked){background:var(--primary-soft);color:var(--primary);font-weight:600}
.shed-picks input{accent-color:var(--primary)}

/* ===================== Work pages: slim workbar + full-height sheet (v4) ===================== */
.container.work{padding-top:14px;padding-bottom:16px}
.sheet-panel{display:flex;flex-direction:column;border-radius:10px;overflow:hidden}
.workbar{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;padding:10px 14px;border-bottom:1px solid var(--border);background:#fff}
.wb-title{display:flex;align-items:baseline;gap:10px;margin-right:auto;min-width:0}
.wb-title h1{font-size:18px;font-weight:700;letter-spacing:-.01em;white-space:nowrap}
.wb-count{font-size:13px;color:var(--muted);white-space:nowrap}
.wb-title .save-state{align-self:center;font-size:11.5px;padding:2px 9px}
.mu-miss{display:inline-block;margin-left:4px;padding:0 5px;border-radius:4px;font-size:10.5px;font-weight:600;line-height:16px;background:#fff1d6;color:#8a4b00;border:1px solid #f0c27a;text-decoration:none}
.mu-miss:hover{background:#ffe2a8;text-decoration:none}
.seg{display:inline-flex;background:#eef1f5;border-radius:8px;padding:3px;gap:2px}
.seg a{padding:5px 12px;border-radius:6px;font-size:13px;font-weight:500;color:var(--muted);white-space:nowrap}
.seg a:hover{color:var(--text);text-decoration:none}
.seg a.on{background:#fff;color:var(--text);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.12)}
.wb-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wb-filters .search{position:relative;display:inline-flex}
.wb-filters .search svg{position:absolute;left:9px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:#8696a7}
.wb-filters input[type=search]{width:190px;height:32px;padding:0 10px 0 29px;border:1px solid var(--field);border-radius:7px;font:inherit;font-size:13px}
.wb-filters select{height:32px;border:1px solid var(--field);border-radius:7px;padding:0 8px;font:inherit;font-size:13px;background:#fff}
.wb-filters input:focus,.wb-filters select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.15)}
.wb-filters .clear{font-size:12.5px}
.picks{display:inline-flex;gap:2px;background:#eef1f5;border-radius:8px;padding:3px}
.picks label{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:6px;font-size:12.5px;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap}
.picks input{width:14px;height:14px;margin:0;accent-color:var(--primary)}
.picks label:has(input:checked){background:#fff;color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.wb-actions{display:flex;align-items:center;gap:6px}
.tbtn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;border:1px solid var(--field);border-radius:7px;background:#fff;color:var(--text);font:inherit;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;list-style:none}
.tbtn::-webkit-details-marker{display:none}
.tbtn svg{width:15px;height:15px;color:var(--muted)}
.tbtn:hover{background:#f5f7fa;text-decoration:none}
.tbtn.primary{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:600}
.tbtn.primary:hover{background:var(--primary-hover)}
/* View menu */
.view-menu{position:relative}
.view-menu[open] > summary{background:#eef1f5}
.vm-panel{position:absolute;right:0;top:38px;z-index:30;width:290px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 12px 32px rgba(29,45,62,.18);padding:12px;display:grid;gap:10px}
.vm-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;color:var(--muted)}
.vm-check{justify-content:flex-start;color:var(--text);cursor:pointer}
.vm-check input{accent-color:var(--primary)}
.vm-hint{font-size:11.5px;color:#8696a7;line-height:1.45;border-top:1px solid var(--border);padding-top:8px}
.vm-panel .vc-reset{justify-self:start}
/* Full-height sheet */
.sheet-panel .table-wrap[data-grid]{max-height:calc(100vh - 190px);border-top:0}
.sheet-panel .empty-state{padding:40px}
/* Change info: tooltip + corner mark instead of text under every cell */
.table-wrap[data-stamps="off"] table.sheet .stamp{display:none}
table.sheet td.has-stamp{background-image:linear-gradient(225deg,#9bb4cf 5px,transparent 5px)}
/* Clean date/time cells */
table.sheet td.cell input.is-empty:not(:focus)::-webkit-datetime-edit{opacity:0}
table.sheet td.cell input::-webkit-calendar-picker-indicator{opacity:0;cursor:pointer}
table.sheet td.cell:hover input::-webkit-calendar-picker-indicator,table.sheet td.cell input:focus::-webkit-calendar-picker-indicator{opacity:.6}
.now-btn{opacity:0;transition:opacity .12s}
table.sheet td.cell:hover .now-btn,table.sheet td.cell:focus-within .now-btn{opacity:1}
table.sheet td.cell-datetime:has(.now-btn:not([hidden])) input{padding-right:6px}
table.sheet td.cell-datetime:hover:has(.now-btn:not([hidden])) input{padding-right:58px}
/* Select arrows only on hover (cleaner grid) */
table.sheet td.cell select{background-image:none}
table.sheet td.cell:hover select,table.sheet td.cell select:focus{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238696a7' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}
/* Denser, crisper grid */
table.sheet td.cell textarea,table.sheet td.cell select,table.sheet td.cell input{font-size:13px}
table.sheet thead th{font-size:11px}
@media(max-width:700px){
  .workbar{padding:10px}
  .wb-title{width:100%}
  .wb-filters input[type=search]{width:140px}
  .sheet-panel .table-wrap[data-grid]{max-height:none}
}

/* ---- Exports: saved column groups ---- */
.alert{margin:0 0 16px;padding:10px 14px;border-radius:var(--radius-sm);font-size:13.5px}
.alert-ok{background:var(--ok-soft);color:var(--ok);border:1px solid #cfe3b4}
.link-btn{background:none;border:0;padding:0;font:inherit;color:var(--primary);cursor:pointer}
.link-btn:hover{text-decoration:underline}
.link-btn.danger{color:var(--err)}
.xg-form{margin-bottom:20px}
.xg-row{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.xg-checks{display:flex;flex-wrap:wrap;gap:8px}
.field .xg-check{display:inline-flex;align-items:flex-start;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-weight:400 !important;margin:0 !important}
.field .xg-check:hover{border-color:var(--primary)}
.field .xg-check input{width:16px;height:16px;flex:none;margin:2px 0 0;padding:0;accent-color:var(--primary)}
.xg-check:has(input:checked){border-color:var(--primary);background:var(--primary-soft)}
.xg-check[hidden]{display:none}
.xg-cols{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
.xg-cols .xg-check span{display:flex;flex-direction:column;line-height:1.35}
.xg-cols small{color:var(--muted);font-size:11.5px}
.xg-tools{font-weight:400;font-size:12.5px;margin-left:8px}
.xg-note{color:var(--muted);font-size:12.5px;margin-top:8px}
.xg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;padding:4px 20px 20px}
.xg-card{display:flex;flex-direction:column;gap:10px;border:1px solid var(--border);border-radius:var(--radius);padding:16px;background:var(--surface)}
.xg-card:hover{box-shadow:var(--shadow-hover)}
.xg-name{font-weight:600;font-size:15px}
.xg-chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:var(--shell);color:#fff;font-size:12px;font-weight:600}
.chip-soft{background:var(--primary-soft);color:var(--primary)}
.xg-colist{color:var(--muted);font-size:13px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.xg-colist b{color:var(--text);font-weight:600}
.xg-foot{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:4px}
.xg-admin{margin-left:auto;display:flex;align-items:center;gap:12px;font-size:13px}
.xg-admin form{margin:0}
@media (max-width:700px){.xg-row{grid-template-columns:1fr}.xg-grid{padding:4px 16px 16px;grid-template-columns:1fr}}

/* ---- Board group headings (NR Goods Locos, NR Coaching Locos, ...) ---- */
table.sheet tr.grp-row td{background:#e8eef4;border-top:2px solid #c5ced8;padding:0;height:34px}
table.sheet tr.grp-row .grp-label{position:sticky;left:0;display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;font-weight:700;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--shell)}
table.sheet tr.grp-row .grp-count{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border-radius:10px;background:var(--shell);color:#fff;font-size:11.5px;letter-spacing:0}
table.sheet tr.grp-row .grp-link{font-weight:500;font-size:12px;text-transform:none;letter-spacing:0;margin-left:6px}

/* ---- Dashboard module tiles: links; unbuilt ones greyed ---- */
a.tile,a.tile:hover{text-decoration:none;color:inherit}
.tile.tile-soon{opacity:.6;cursor:default;background:var(--header)}
.tile.tile-soon:hover{box-shadow:none;border-color:var(--border);transform:none}
.tile.tile-soon .tile-foot svg{background:#eef1f4;color:var(--muted)}
#staff{scroll-margin-top:16px}
.pager{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;white-space:nowrap}

/* ---- Next schedule due ---- */
.ro.overdue{color:var(--err);font-weight:600}
.ro.due-soon{color:var(--warn);font-weight:600}

/* ---- Ops Planning marks ---- */
.ro.wait-mark{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:#fff4e5;color:var(--warn);font-weight:600;font-size:12.5px}
.ro.ok-mark{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:var(--ok-soft);color:var(--ok);font-weight:600;font-size:12.5px}
.pill-wait{margin-left:10px;display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:#fff4e5;color:var(--warn);font-size:12.5px;font-weight:600}
.ro.plan-mark{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-weight:600;font-size:12.5px}
.ro.home-mark{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;background:#f3e8ff;color:#6b2fb3;font-weight:600;font-size:12.5px}

/* ---- Plan flags on the Loco No.: T/P, N/S, H/S until the loco reaches its planned location ---- */
td.cell-loco,td.cell-label{position:relative}
.ro.flag{position:absolute;top:5px;right:6px;display:inline-grid;place-items:center;height:18px;padding:0 6px;border-radius:9px;font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#fff;pointer-events:none}
.ro.flag:empty{display:none}
.ro.flag.flag-tp{background:#0a6ed1}
.ro.flag.flag-ns{background:#188918}
.ro.flag.flag-hs{background:#8e3fd6}

/* One dropdown arrow on hover / open too (a later focus rule resets the background shorthand). */
table.sheet td.cell:hover select,table.sheet td.cell select:focus{background-repeat:no-repeat;background-position:right 6px center;background-size:14px}

/* ---- Checkbox cells (Move Together) ---- */
table.sheet td.cell label.check-cell{display:flex;align-items:center;justify-content:center;height:30px;cursor:pointer}
table.sheet td.cell label.check-cell input{width:18px;height:18px;min-height:0;padding:0;margin:0;accent-color:var(--primary);cursor:pointer}
table.sheet td.cell label.check-cell input:disabled{cursor:not-allowed;opacity:.7}
table.sheet td.cell-check{text-align:center;vertical-align:middle}

/* ---- Coupled cell: a tick that opens the coupling details ---- */
table.sheet td.cell-couple{vertical-align:top;padding:6px 8px}
table.sheet td.cell-couple .couple-toggle{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);cursor:pointer;user-select:none;height:24px}
table.sheet td.cell-couple .couple-toggle input{width:16px;height:16px;min-height:0;padding:0;margin:0;accent-color:var(--primary)}
table.sheet td.cell-couple.is-open .couple-toggle{color:var(--text);font-weight:600}
table.sheet td.cell-couple .couple-box{display:none;margin-top:4px;gap:4px;flex-direction:column}
table.sheet td.cell-couple.is-open .couple-box{display:flex}
table.sheet td.cell-couple .cb-item{display:flex;flex-direction:column;gap:1px}
table.sheet td.cell-couple .cb-cap{font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
table.sheet td.cell-couple .cb-item input[type=text],table.sheet td.cell-couple .cb-item select{height:28px;min-height:28px;border:1px solid var(--border);border-radius:6px;padding:2px 6px;background-color:#fff}
table.sheet td.cell-couple label.check-cell{justify-content:flex-start;height:24px}

/* Schedule Status pills */
.ro.overdue,.ro.due-soon,.ro.sched-ok{display:inline-flex;align-items:center;height:24px;padding:0 10px;border-radius:12px;font-size:12.5px;font-weight:600}
.ro.overdue{background:var(--err-soft);color:var(--err)}
.ro.due-soon{background:#fff4e5;color:var(--warn)}
.ro.sched-ok{background:var(--ok-soft);color:var(--ok)}
/* Coupled cell: Type and Together side by side */
table.sheet td.cell-couple .couple-box{display:none;grid-template-columns:1fr auto;gap:4px 8px;align-items:end}
table.sheet td.cell-couple.is-open .couple-box{display:grid}
table.sheet td.cell-couple .cb-item:first-child{grid-column:1 / -1}

/* ---- Master search: loco flags + all schedules ---- */
.loco-flags{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 16px}
.loco-flags .lf-no{font-size:20px;font-weight:700;margin-right:6px}
.ro.flag-inline{display:inline-grid;place-items:center;height:24px;padding:0 10px;border-radius:12px;font-size:12px;font-weight:700;color:#fff}
.ro.flag-inline.flag-tp{background:#0a6ed1}.ro.flag-inline.flag-ns{background:#188918}.ro.flag-inline.flag-hs{background:#8e3fd6}
.sch-all{display:flex;flex-wrap:wrap;gap:6px 14px}
.sch-item{white-space:nowrap;font-size:13px}
.sch-item b{color:var(--muted);font-weight:600;margin-right:2px}
.sch-item.is-latest{color:var(--primary);font-weight:600}
.sch-item.is-latest b{color:var(--primary)}

/* ---- Header date + live 24-hour clock ---- */
.shell-when{display:flex;flex-direction:column;align-items:flex-end;line-height:1.15}
.shell-when .sw-date{font-size:12.5px;color:rgba(255,255,255,.72)}
.shell-when .sw-time{font-size:15px;font-weight:600;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em}
@media(max-width:900px){.shell-when .sw-date{display:none}}

/* ================= Dashboard (v4.7) ================= */
.kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:22px}
.kpi{position:relative;display:flex;flex-direction:column;gap:2px;padding:16px 16px 14px;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);color:var(--text);border-top:3px solid var(--primary);transition:transform .15s,box-shadow .15s}
.kpi:hover{text-decoration:none;transform:translateY(-2px);box-shadow:var(--shadow-hover)}
.kpi-icon{position:absolute;top:14px;right:14px;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary)}
.kpi-num{font-size:30px;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.kpi-label{font-size:13.5px;font-weight:600}
.kpi-sub{font-size:12px;color:var(--muted);line-height:1.35;padding-right:4px}
.kpi-warn{border-top-color:var(--warn)}.kpi-warn .kpi-icon{background:#fff4e5;color:var(--warn)}.kpi-warn .kpi-num{color:var(--warn)}
.kpi-bad{border-top-color:var(--err)}.kpi-bad .kpi-icon{background:var(--err-soft);color:var(--err)}.kpi-bad .kpi-num{color:var(--err)}
.kpi-good{border-top-color:var(--ok)}.kpi-good .kpi-icon{background:var(--ok-soft);color:var(--ok)}
.qlinks{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;padding:14px 20px 20px}
.qlink{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;color:var(--text);background:var(--surface);transition:border-color .15s,background .15s}
.qlink:hover{text-decoration:none;border-color:var(--primary);background:var(--primary-soft)}
.ql-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:var(--primary-soft);color:var(--primary)}
.qlink:hover .ql-icon{background:var(--primary);color:#fff}
.qlink b{display:block;font-size:14px;font-weight:600}
.qlink small{display:block;font-size:12px;color:var(--muted);line-height:1.3}
.attn{list-style:none;margin:0;padding:6px 20px 14px}
.attn li{display:flex;align-items:center;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}
.attn li:last-child{border-bottom:0}
.attn li a{min-width:70px}
.empty-ok{color:var(--ok);font-weight:500}
@media(max-width:1200px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi{padding:14px 12px 12px}.kpi-num{font-size:26px}.kpi-icon{width:32px;height:32px;top:12px;right:12px}.qlinks{padding:12px 16px 16px;grid-template-columns:1fr}.attn{padding:4px 16px 12px}.attn li{flex-wrap:wrap;gap:6px 10px}}
.attn .ro{height:auto;min-height:24px;padding:3px 10px;line-height:1.35;white-space:normal}
.ro.overdue,.ro.due-soon,.ro.sched-ok{height:auto;min-height:24px;padding:3px 10px;line-height:1.35;white-space:normal}

/* ================= Dashboard v2 ================= */
.hero{background:radial-gradient(1200px 400px at 85% -40%,rgba(10,110,209,.55),transparent 60%),linear-gradient(135deg,#15222f 0%,#1d2d3e 55%,#243d57 100%);color:#fff;border-bottom:1px solid rgba(255,255,255,.06)}
.hero-inner{max-width:var(--page-w,1480px);margin:0 auto;padding:28px 20px 30px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.hero-kicker{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#9cc7f2}
.hero-kicker::before{content:"";width:8px;height:8px;border-radius:50%;background:#35d07f;box-shadow:0 0 0 4px rgba(53,208,127,.18)}
.hero h1{margin:8px 0 4px;font-size:28px;font-weight:700;letter-spacing:-.01em}
.hero p{margin:0 0 18px;color:rgba(255,255,255,.72);font-size:14px}
.hero-search{display:flex;align-items:center;gap:10px;width:min(560px,100%);height:48px;padding:0 6px 0 16px;border-radius:12px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(4px);transition:background .15s,border-color .15s}
.hero-search:focus-within{background:#fff;border-color:#fff}
.hero-search svg{color:rgba(255,255,255,.7);flex:none}
.hero-search:focus-within svg{color:var(--muted)}
.hero-search input{flex:1;min-width:0;height:100%;border:0;background:transparent;color:#fff;font:inherit;font-size:15px;outline:none}
.hero-search:focus-within input{color:var(--text)}
.hero-search input::placeholder{color:rgba(255,255,255,.6)}
.hero-search:focus-within input::placeholder{color:#9aa7b4}
.hero-search button{height:36px;padding:0 18px;border:0;border-radius:9px;background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}
.hero-clock{text-align:right;flex:none}
.hc-time{font-size:56px;font-weight:300;line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.hc-date{margin-top:6px;font-size:13px;color:rgba(255,255,255,.7)}

.dash2{padding-top:0}
.pipeline{display:flex;align-items:stretch;gap:6px;margin:-22px 0 22px;position:relative;z-index:1}
.stage{--c:var(--primary);--s:var(--primary-soft);flex:1;min-width:0;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;column-gap:12px;align-items:center;padding:16px 16px 14px;background:var(--surface);border-radius:14px;box-shadow:0 1px 2px rgba(29,45,62,.06),0 8px 24px rgba(29,45,62,.08);color:var(--text);border:1px solid rgba(29,45,62,.05);transition:transform .15s,box-shadow .15s}
.stage:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 2px 4px rgba(29,45,62,.08),0 14px 32px rgba(29,45,62,.14)}
.stage-icon{grid-row:1 / span 2;display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--s);color:var(--c)}
.stage-num{font-size:28px;font-weight:700;line-height:1;color:var(--c);font-variant-numeric:tabular-nums}
.stage-label{font-size:13px;font-weight:600}
.stage-sub{grid-column:1 / -1;margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);font-size:12px;color:var(--muted);line-height:1.35}
.stage-arrow{display:flex;align-items:center;color:#aab6c3;flex:none}
.st-blue{--c:#0a6ed1;--s:#e8f2fd}.st-indigo{--c:#5b4fd6;--s:#efedfd}.st-teal{--c:#0c8a82;--s:#e3f5f3}.st-amber{--c:#c35a00;--s:#fff1e0}.st-green{--c:#1e7b3a;--s:#e8f6ec}.st-slate{--c:#475b70;--s:#eef1f4}

.dash-grid{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:22px;align-items:start}
.dash-main,.dash-side{display:grid;gap:22px}
.sheds3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;padding:14px 20px 20px}
.shedcard{display:flex;flex-direction:column;gap:12px;padding:14px;border:1px solid var(--border);border-radius:12px;color:var(--text);background:linear-gradient(180deg,#fbfcfd,#fff);transition:border-color .15s,box-shadow .15s;min-height:132px}
.shedcard:hover{text-decoration:none;border-color:#b9d4f1;box-shadow:0 6px 18px rgba(29,45,62,.08)}
.sc-head{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto}
.sc-name{font-weight:700;font-size:15px}
.sc-kind{grid-row:2;font-size:11.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.sc-count{grid-row:1 / span 2;grid-column:2;align-self:center;display:grid;place-items:center;min-width:40px;height:40px;padding:0 8px;border-radius:12px;background:var(--shell);color:#fff;font-weight:700;font-size:18px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip-loco{display:inline-flex;align-items:baseline;gap:6px;padding:4px 9px;border-radius:8px;background:#eef3f8;font-size:12.5px}
.chip-loco b{font-weight:700}
.chip-loco i{font-style:normal;font-size:11px;color:var(--muted)}
.chip-loco.is-bad{background:#f3e8ff;color:#6b2fb3}
.chip-more{padding:4px 9px;border-radius:8px;border:1px dashed var(--border);font-size:12px;color:var(--muted)}
.sc-empty{font-size:13px;color:var(--muted)}

.seg-tabs{display:flex;gap:6px;padding:12px 20px 0;border-bottom:1px solid var(--border)}
.seg-tabs button{position:relative;display:inline-flex;align-items:center;gap:8px;padding:10px 14px 12px;border:0;background:none;font:inherit;font-size:13.5px;font-weight:600;color:var(--muted);cursor:pointer}
.seg-tabs button .n{display:inline-grid;place-items:center;min-width:22px;height:20px;padding:0 6px;border-radius:10px;background:#eef1f4;color:var(--muted);font-size:11.5px}
.seg-tabs button.on{color:var(--text)}
.seg-tabs button.on::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--primary)}
.seg-tabs .t-overdue .n{background:var(--err-soft);color:var(--err)}
.seg-tabs .t-due_soon .n{background:#fff4e5;color:var(--warn)}
.seg-tabs .t-awaiting .n{background:#fff4e5;color:var(--warn)}
.attn-table{width:100%}
.attn-table th,.attn-table td{padding:10px 20px}
.all-clear{display:flex;align-items:center;gap:10px;padding:22px 20px;color:var(--ok);font-weight:500}

.mix{display:grid;gap:10px;padding:14px 20px 18px}
.mix-row{display:grid;grid-template-columns:150px 1fr 28px;align-items:center;gap:10px;font-size:12.5px}
.mix-label{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mix-bar{height:8px;border-radius:4px;background:#eef1f4;overflow:hidden}
.mix-bar i{display:block;height:100%;border-radius:4px;background:#0a6ed1}
.mix-bar i.m-fr{background:#8e3fd6}.mix-bar i.m-noshed{background:#aab6c3}
.mix-n{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}

.timeline{list-style:none;margin:0;padding:10px 20px 16px}
.timeline li{position:relative;display:flex;gap:12px;padding:8px 0 8px}
.timeline li::before{content:"";position:absolute;left:4px;top:22px;bottom:-8px;width:2px;background:#eef1f4}
.timeline li:last-child::before{display:none}
.tl-dot{flex:none;width:10px;height:10px;margin-top:5px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}
.tl-body{font-size:13px;line-height:1.4;min-width:0}
.tl-body small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}

@media(max-width:1200px){.dash-grid{grid-template-columns:1fr}.pipeline{flex-wrap:wrap}.stage{flex:1 1 30%}.stage-arrow{display:none}.sheds3{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:760px){
  .hero-inner{flex-direction:column;align-items:stretch;padding:20px 16px 34px}
  .hero-clock{text-align:left;order:-1}.hc-time{font-size:40px}
  .hero h1{font-size:22px}
  .pipeline{gap:10px}.stage{flex:1 1 45%;padding:12px}.stage-num{font-size:24px}.stage-icon{width:36px;height:36px}
  .sheds3{grid-template-columns:1fr;padding:12px 16px 16px}
  .seg-tabs{overflow-x:auto;padding:10px 12px 0}.seg-tabs button{white-space:nowrap;padding:8px 10px 10px}
  .attn-table th:nth-child(2),.attn-table td:nth-child(2),.attn-table th:nth-child(3),.attn-table td:nth-child(3){display:none}
  .attn-table th,.attn-table td{padding:8px 12px}
  .mix-row{grid-template-columns:120px 1fr 24px}
}

.hero-left{flex:1;min-width:0}
/* Staff on Duty: shift + on-duty-now dot */
.staff-card .duty-dot{flex:none;width:8px;height:8px;border-radius:50%;background:#cfd6de;margin-right:2px}
.staff-card.on-duty .duty-dot{background:#20a55a;box-shadow:0 0 0 3px rgba(32,165,90,.18)}
.staff-card .sf-shift input{width:64px;text-align:center;font-variant-numeric:tabular-nums}
.mix-label{max-width:100%}
.hero p.hero-sum{margin-bottom:0}
.hero-inner{align-items:center}
/* Hero train illustration (original SVG, Vande Bharat style) */
.hero{position:relative;overflow:hidden}
.hero-inner{position:relative;z-index:1;min-height:210px;padding-bottom:56px}
.hero-train{position:absolute;right:-20px;bottom:18px;width:min(820px,62%);height:auto;pointer-events:none;opacity:.96;filter:drop-shadow(0 18px 24px rgba(0,0,0,.35))}
.hero-clock{align-self:flex-start;text-shadow:0 2px 12px rgba(0,0,0,.35)}
@media(max-width:760px){.hero-train{width:120%;right:-40%;bottom:30px;opacity:.35}.hero-inner{min-height:0}}

/* ================= UI pass v5.0 ================= */
/* Main tabs: icon + label, active pill */
.tabbar{box-shadow:0 1px 0 var(--border)}
.tabbar .inner{gap:4px;padding:8px 0}
.tabbar a{display:inline-flex;align-items:center;gap:8px;padding:9px 14px!important;border-radius:10px;color:#4d6176;font-weight:500;font-size:14px;margin-left:0!important}
.tabbar a svg{flex:none;opacity:.75}
.tabbar a:hover{background:#f1f5fa;color:var(--text)}
.tabbar a.active{background:var(--primary-soft);color:var(--primary);font-weight:600}
.tabbar a.active svg{opacity:1}
.tabbar a.active::after{display:none}
@media(max-width:700px){.tabbar .inner{padding:6px 0}.tabbar a{padding:8px 11px!important;font-size:13.5px}}

/* Page title band, same family as the dashboard header */
.page-head{background:linear-gradient(135deg,#15222f 0%,#1d2d3e 60%,#243d57 100%);border-bottom:0;padding:16px 20px 18px!important;color:#fff}
.page-head .crumbs,.page-head .crumbs a{color:#9cc7f2}
.page-head h1{color:#fff;font-size:21px!important;font-weight:650;margin-top:3px!important}

/* Panels and tables: softer, more air */
.panel{border-radius:14px;box-shadow:0 1px 2px rgba(29,45,62,.05),0 6px 20px rgba(29,45,62,.06);border:1px solid rgba(29,45,62,.05)}
.panel-head{font-size:15.5px}
table.sheet thead th{background:#f6f8fb;color:#5b6f84;font-size:11.5px;letter-spacing:.05em}
table.sheet tbody tr[data-id]:hover td{background-color:#f7faff}
table.sheet tbody tr[data-id]:hover td.freeze{background-color:#f2f7fe}
.workbar{padding:14px 18px!important}
.wb-title h1{font-size:20px!important}
.subtabs a{border-radius:10px}

/* Coupled cell: one line when coupled, controls only while editing */
table.sheet td.cell-couple.is-open .couple-box{display:none}
table.sheet td.cell-couple.is-editing .couple-box{display:grid}
table.sheet td.cell-couple.is-editing .couple-sum{display:none}
.couple-sum{display:inline-flex;align-items:center;gap:6px;max-width:100%;margin-top:4px;padding:3px 9px;border:1px solid #cfe0f5;border-radius:8px;background:var(--primary-soft);color:var(--primary);font:inherit;font-size:12.5px;cursor:pointer;text-align:left}
.couple-sum b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.couple-sum small{color:#4d6f96;font-size:11.5px;white-space:nowrap}
.couple-sum:hover{border-color:var(--primary)}
table.sheet td.cell-couple .couple-toggle{height:22px;font-size:12.5px}
.couple-sum{flex-wrap:wrap;row-gap:0}
.couple-sum b{flex:none;overflow:visible}

/* Dashboard: loco failures of the month */
.month-nav{margin-left:auto;display:inline-flex;gap:6px}
.month-nav a,.month-nav .off{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;border:1px solid var(--border);font-size:18px;line-height:1;color:var(--text)}
.month-nav a:hover{text-decoration:none;border-color:var(--primary);color:var(--primary)}
.month-nav .off{color:#c3ccd6}
.fail-panel .panel-head{display:flex;align-items:center;gap:8px}
.fail-sum{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;padding:14px 20px 16px}
.fs-big{display:flex;align-items:baseline;gap:8px;padding:6px 18px 6px 0;margin-right:6px;border-right:1px solid var(--border)}
.fs-big span{font-size:34px;font-weight:700;line-height:1;color:var(--shell)}
.fs-big small{color:var(--muted);font-size:13px}
.fs-item{display:flex;flex-direction:column;justify-content:center;min-width:86px;padding:6px 12px;border-radius:10px;background:#f4f7fa}
.fs-item b{font-size:18px;line-height:1.1}
.fs-item small{font-size:11.5px;color:var(--muted)}
.fs-dead{background:var(--err-soft)}.fs-dead b{color:var(--err)}
.fs-wkg{background:var(--ok-soft)}.fs-wkg b{color:var(--ok)}
.fail-table th,.fail-table td{padding:9px 14px;font-size:13px}
@media(max-width:760px){.fs-big{border-right:0;width:100%}.fail-table th:nth-child(3),.fail-table td:nth-child(3){display:none}}
.det-summary .panel-head{display:flex;align-items:center;gap:8px}
.det-summary{margin-bottom:20px}

/* Inline plan flag next to a loco number */
.flag-badge{display:inline-grid;place-items:center;height:17px;padding:0 6px;margin-left:5px;border-radius:9px;font-size:10px;font-weight:700;letter-spacing:.03em;color:#fff;vertical-align:1px;font-style:normal}
.flag-badge.flag-tp{background:#0a6ed1}.flag-badge.flag-ns{background:#188918}.flag-badge.flag-hs{background:#8e3fd6}

/* ---- Master search: Health Summary + Case History ---- */
.health .panel-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.verdict{display:inline-flex;align-items:center;height:26px;padding:0 12px;border-radius:13px;font-size:12.5px;font-weight:600}
.v-good{background:var(--ok-soft);color:var(--ok)}.v-warn{background:#fff4e5;color:var(--warn)}.v-bad{background:var(--err-soft);color:var(--err)}
.hs-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:14px 20px 20px}
.hs{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,#fbfcfd,#fff)}
.hs small{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}
.hs b{font-size:18px;line-height:1.25}
.hs b i{font-style:normal;font-size:12px;color:var(--muted);font-weight:500}
.hs b.hs-text{font-size:14px;font-weight:500;line-height:1.4}
.hs span{font-size:12px;color:var(--muted);line-height:1.35}
.hs-wide{grid-column:1 / -1}
.t-bad{color:var(--err)}.t-warn{color:var(--warn)}
.tl-legend{margin-left:auto;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:11.5px;font-weight:500;color:var(--muted)}
.tl-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:0}
.case{list-style:none;margin:0;padding:12px 20px 18px}
.case li{display:grid;grid-template-columns:92px 22px 1fr;gap:0 10px;position:relative}
.case li::before{content:"";position:absolute;left:112px;top:18px;bottom:-4px;width:2px;background:#e8edf2}
.case li:last-child::before{display:none}
.case time{text-align:right;font-size:12.5px;font-weight:600;color:var(--text);padding-top:8px;font-variant-numeric:tabular-nums}
.case time small{display:block;font-weight:400;color:var(--muted);font-size:11.5px}
.c-dot{width:12px;height:12px;margin:11px auto 0;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 4px #fff,0 0 0 5px #e8edf2;position:relative;z-index:1}
.c-body{padding:6px 0 14px}
.c-body b{font-size:14px}
.c-detail{font-size:12.5px;color:var(--muted);margin-top:2px}
.c-ps{margin-top:6px;display:grid;gap:4px}
.c-ps div{font-size:13px;padding:6px 10px;border-radius:8px;background:#f5f7fa;line-height:1.4}
.c-ps span{display:inline-block;min-width:66px;margin-right:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.k-move,.c-move .c-dot{background:#64748b!important}
.k-plan,.c-plan .c-dot{background:#8e3fd6!important}
.k-shed,.c-shed .c-dot{background:#0c8a82!important}
.k-result,.c-result .c-dot{background:#0a6ed1!important}
.k-failure,.c-failure .c-dot{background:#d0271d!important}
.k-detention,.c-detention .c-dot{background:#e07b00!important}
.k-ops,.c-ops .c-dot{background:#5b4fd6!important}
.c-failure .c-body b{color:#b3170e}
.more-records{margin-top:20px}
.more-records > summary{cursor:pointer;list-style:none;padding:14px 18px;border-radius:12px;background:var(--surface);border:1px dashed #c9d4df;color:var(--primary);font-weight:600;font-size:14px}
.more-records > summary::-webkit-details-marker{display:none}
.more-records > summary::before{content:"▸ ";}
.more-records[open] > summary::before{content:"▾ ";}
.more-records[open] > summary{margin-bottom:20px}
.more-records > .panel + .panel{margin-top:20px}
@media(max-width:900px){.hs-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.hs-grid{grid-template-columns:1fr}.case li{grid-template-columns:70px 18px 1fr}.case li::before{left:86px}.tl-legend{margin-left:0}}

/* ---- Rich text cells ---- */
table.sheet td.cell .rt{min-height:30px;padding:5px 6px;border:1px solid transparent;border-radius:2px;font-size:13px;line-height:1.45;white-space:pre-wrap;word-break:break-word;outline:none;cursor:text}
table.sheet td.cell .rt:focus{border:2px solid #1a73e8;padding:4px 5px;background:#fff}
.rt b{font-weight:700}.rt mark,.ro mark,.wrap mark,.c-ps mark,.hs mark{background:#fff3a0;color:inherit;padding:0 1px;border-radius:2px}
.c-red{color:#d0271d}.c-blue{color:#0a6ed1}.c-green{color:#1e7b3a}.c-amber{color:#c35a00}.c-purple{color:#8e3fd6}
.rt-bar{position:absolute;z-index:60;display:flex;align-items:center;gap:2px;padding:4px;border-radius:10px;background:#1d2d3e;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.rt-bar button{display:grid;place-items:center;min-width:28px;height:28px;padding:0 6px;border:0;border-radius:7px;background:transparent;color:#fff;font:inherit;font-size:13px;cursor:pointer}
.rt-bar button:hover{background:rgba(255,255,255,.14)}
.rt-bar .rt-sw{display:block;width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 2px rgba(255,255,255,.7)}
.rt-bar .rt-hl{background:#fff3a0;color:#1d2d3e;padding:0 4px;border-radius:3px;font-weight:700}
.rt-bar .rt-sep{width:1px;height:18px;background:rgba(255,255,255,.2);margin:0 3px}
/* ---- Row colours ---- */
table.sheet td.num[data-rowcolor]{cursor:pointer}
table.sheet td.num[data-rowcolor]:hover{box-shadow:inset 3px 0 0 var(--primary)}
table.sheet tr.rc-yellow td{background-color:#fff8cc!important}
table.sheet tr.rc-red td{background-color:#fde4e4!important}
table.sheet tr.rc-green td{background-color:#e2f5e8!important}
table.sheet tr.rc-blue td{background-color:#e2eefc!important}
table.sheet tr.rc-purple td{background-color:#efe5fc!important}
.row-pal{position:absolute;z-index:60;display:flex;gap:6px;padding:6px;border-radius:10px;background:#fff;box-shadow:0 8px 24px rgba(29,45,62,.22);border:1px solid var(--border)}
.row-pal button{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #c9d4df;cursor:pointer;font-size:12px;color:#5b6f84;background:#fff}
.rp-yellow{background:#ffe066!important}.rp-red{background:#f28b82!important}.rp-green{background:#81c995!important}.rp-blue{background:#8ab4f8!important}.rp-purple{background:#c58af9!important}
.rt-bar[hidden],.row-pal[hidden]{display:none!important}

/* Safety decisions: follow-up states, case-history colour */
.fu-good{color:#12803a;font-weight:600}
.fu-warn{color:#a15c00;font-weight:600}
.fu-bad{color:#b3170e;font-weight:700}
.k-decision,.c-decision .c-dot{background:#0b7285!important}
.c-decision .c-body b{color:#0b6475}
/* Title strip: same colours as the dashboard banner (design only, layout unchanged) */
.page-head{background:radial-gradient(1200px 400px at 85% -40%,rgba(10,110,209,.55),transparent 60%),linear-gradient(135deg,#15222f 0%,#1d2d3e 55%,#243d57 100%)}
/* Sheets tab (Luckysheet) */
.sheets-bar{flex-wrap:wrap;gap:10px}
.sheet-list{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.sheet-list a{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:600;font-size:13px}
.sheet-list a:hover{text-decoration:none;border-color:var(--primary)}
.sheet-list a.on{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.sheet-conflict{margin:0 16px 12px;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sheet-conflict[hidden]{display:none}
.luckysheet-box{display:block;width:100%;height:calc(100vh - 250px);min-height:560px;border:0;border-top:1px solid var(--border)}
.empty-note{color:var(--muted);text-align:center;padding:40px 16px}
@media(max-width:760px){.luckysheet-box{height:70vh;min-height:420px}}
/* Luckysheet's stylesheet also styles .btn: restore the app's buttons in the Sheets bar */
.sheets-bar .btn{height:40px;border:0;border-radius:var(--radius-sm);background:var(--primary);color:#fff;font-size:14px;font-weight:600;font-family:inherit;padding:0 18px;line-height:normal}
.sheets-bar .btn:hover{background:var(--primary-hover);color:#fff}
.sheets-bar .btn-ghost{background:var(--surface);color:var(--primary);border:1px solid var(--field)}
.sheets-bar .btn-ghost:hover{background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
.sheets-bar .btn{display:inline-flex;align-items:center;justify-content:center;width:auto;margin:0}
/* 12 tabs: keep them all visible on normal desktop widths */
@media(max-width:1760px) and (min-width:701px){.tabbar a{padding:9px 10px!important}.tabbar a svg{display:none}}
@media(max-width:1300px) and (min-width:701px){.tabbar a{padding:9px 8px!important}}
@media(min-width:1761px){.tabbar .inner{max-width:none}}
/* Sheets: full screen button and mode */
.sheets-bar .export{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.sheets-bar .sheet-fs{gap:6px;margin-left:auto}
body.sheet-full{overflow:hidden}
body.sheet-full .sheets-panel{position:fixed;inset:0;z-index:1000;margin:0;border-radius:0;display:flex;flex-direction:column}
body.sheet-full .sheets-panel .sheets-bar{padding:8px 12px}
body.sheet-full .sheets-panel .luckysheet-box{flex:1;min-height:0}
/* Sheets bar: slim toolbar (compact buttons with icons, like a spreadsheet's top bar) */
.sheets-panel .sheets-bar{padding:8px 14px;gap:8px;border-bottom:1px solid var(--border);min-height:0}
.sheets-bar .sheet-list{gap:4px}
.sheets-bar .sheet-list a{height:30px;padding:0 12px;border-radius:6px;font-size:13px;font-weight:600;gap:6px}
.sheets-bar .export{gap:6px}
.sheets-bar .btn{height:30px;padding:0 11px;border-radius:6px;font-size:13px;font-weight:500;gap:6px;box-shadow:none}
.sheets-bar .btn svg{flex:none}
.sheets-bar .btn-ghost{border-color:transparent;background:transparent;color:#3c4a5a}
.sheets-bar .btn-ghost:hover{background:#eef2f7;border-color:transparent;color:var(--text)}
.sheets-bar .btn.sb-danger:hover{background:var(--err-soft);color:var(--err)}
.sheets-bar .btn:not(.btn-ghost){font-weight:600}
.sheets-bar .sheet-fs{border-color:var(--border)!important}
.sheets-bar .sb-state{background:transparent!important;padding:0 6px;font-weight:500;font-size:12.5px;color:var(--muted)!important}
.sheets-bar .sb-state.ok::before{background:#1e8e3e}
.sheets-bar .sb-state.busy::before{background:#c77700}
.sheets-bar .sb-state.err{color:var(--err)!important}
.sheets-bar .sb-state.err::before{background:var(--err)}
/* ---- Sheets home (like Google Drive) and sharing ---- */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.drive .sheets-bar{padding:10px 14px;gap:8px;border-bottom:1px solid var(--border)}
.drive-filter{display:inline-flex;gap:2px;padding:3px;border-radius:8px;background:#eef2f7;margin-left:8px}
.drive-filter button{height:26px;padding:0 12px;border:0;border-radius:6px;background:transparent;font:inherit;font-size:13px;font-weight:500;color:#4d6176;cursor:pointer}
.drive-filter button.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px rgba(29,45,62,.12)}
.drive-search{margin-left:auto;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--field);border-radius:8px;background:var(--surface);color:var(--muted);width:min(280px,100%)}
.drive-search:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px rgba(0,100,217,.12)}
.drive-search input{border:0;outline:0;background:transparent;font:inherit;font-size:13px;width:100%;color:var(--text)}
table.drive-list{width:100%;border-collapse:collapse;font-size:13.5px}
.drive-list th{width:auto;text-align:left;font-size:12px;font-weight:600;color:var(--muted);padding:10px 16px;border-top:0;border-bottom:1px solid var(--border);background:#fafbfd}
.drive-list td{padding:9px 16px;border-top:0;border-bottom:1px solid var(--border);vertical-align:middle}
.drive-list tbody tr:hover{background:#f5f8fc}
.drive-list tbody tr:last-child td{border-bottom:0}
.dl-name a{display:inline-flex;align-items:center;gap:10px;color:var(--text)}
.dl-name a:hover{text-decoration:none;color:var(--primary)}
.dl-file{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#e6f4ea;color:#188038;flex:none}
.dl-tag{display:inline-flex;align-items:center;gap:4px;margin-left:10px;padding:1px 8px;border-radius:999px;background:#eef2f7;color:#4d6176;font-size:11.5px;font-weight:600;vertical-align:middle}
.dl-owner,.dl-when{color:#4d6176;white-space:nowrap}
.dl-access span{display:inline-flex;align-items:center;gap:6px;color:#4d6176;white-space:nowrap}
.da-col,.dl-actions{width:1%;white-space:nowrap;text-align:right}
.dl-actions{opacity:.35;transition:opacity .15s}
.drive-list tr:hover .dl-actions,.dl-actions:focus-within{opacity:1}
.icon-act{display:inline-grid;place-items:center;width:30px;height:30px;border:0;border-radius:6px;background:transparent;color:#4d6176;cursor:pointer;font-size:20px;line-height:1}
.icon-act:hover{background:#e7edf4;color:var(--text)}
.icon-act.ia-danger:hover{background:var(--err-soft);color:var(--err)}
.drive .empty-note{padding:48px 16px}
@media(max-width:760px){.drive-list th:nth-child(3),.drive-list td:nth-child(3),.drive-list th:nth-child(4),.drive-list td:nth-child(4){display:none}.drive-search{margin-left:0;width:100%}.dl-actions{opacity:1}}
/* editor bar */
.sheets-bar .sb-back{padding:0 10px 0 6px}
.sb-title{display:inline-flex;align-items:center;gap:8px;font-size:14px;color:var(--text);padding:0 4px;max-width:360px;overflow:hidden;white-space:nowrap}
.sb-title svg{color:#188038;flex:none}
.sb-title b{overflow:hidden;text-overflow:ellipsis}
.sb-viewonly{display:inline-flex;align-items:center;gap:5px;padding:2px 10px;border-radius:999px;background:#eef2f7;color:#4d6176;font-size:12px;font-weight:600}
.sheets-bar .sb-right{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.sheets-bar .sb-right .sheet-fs{margin-left:0}
/* share dialog */
.share-dlg{margin:auto;width:min(520px,calc(100vw - 32px));border:0;border-radius:14px;padding:0;box-shadow:0 20px 60px rgba(15,30,50,.3);color:var(--text)}
.share-dlg::backdrop{background:rgba(15,25,40,.45)}
.share-dlg .sd-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px 6px}
.share-dlg h2{font-size:18px;font-weight:600;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.share-dlg h3{font-size:13px;font-weight:600;margin:14px 22px 6px;color:#4d6176}
.sd-add{display:flex;gap:8px;padding:8px 22px 0}
.sd-add select,.sd-people select,.sd-general select{height:34px;border:1px solid var(--field);border-radius:8px;background:var(--surface);font:inherit;font-size:13.5px;padding:0 8px;color:var(--text)}
.sd-add #sd-user{flex:1;min-width:0}
.share-dlg .btn{height:34px;padding:0 16px;font-size:13.5px}
.sd-people{list-style:none;margin:0;padding:0 22px;max-height:240px;overflow:auto}
.sd-people li{display:flex;align-items:center;gap:10px;padding:7px 0}
.sd-av{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-weight:700;flex:none;text-transform:uppercase}
.sd-who{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.sd-who small{color:var(--muted);font-size:12px}
.sd-owner{color:var(--muted);font-size:13px;padding-right:8px}
.sd-general{display:flex;gap:10px;align-items:flex-start;padding:0 22px}
.sd-gicon{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#eef2f7;color:#4d6176;flex:none}
.sd-general small{display:block;color:var(--muted);font-size:12px;margin-top:4px}
.sd-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 22px 18px}
.sd-msg{font-size:12.5px;color:#1e7b3a}
.sd-msg.err{color:var(--err)}
/* share dialog: public link */
.sd-public{padding:0 22px}
.sd-public > small{display:block;color:var(--muted);font-size:12px;margin:2px 0 0 48px}
.sd-switch{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:13.5px}
.sd-switch input{position:absolute;opacity:0;width:1px;height:1px}
.sd-switch span{position:relative;width:38px;height:22px;border-radius:999px;background:#c9d2dc;transition:background .15s;flex:none}
.sd-switch span::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s}
.sd-switch input:checked + span{background:var(--primary)}
.sd-switch input:checked + span::after{transform:translateX(16px)}
.sd-switch input:focus-visible + span{box-shadow:0 0 0 3px rgba(0,100,217,.3)}
.sd-publink{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.sd-publink input{flex:1;min-width:0;height:34px;border:1px solid var(--field);border-radius:8px;padding:0 10px;font:inherit;font-size:12.5px;color:var(--text);background:#f7f9fb}
.sd-pubmeta{flex-basis:100%;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}
.sd-linkbtn{border:0;background:none;color:var(--primary);font:inherit;font-size:12.5px;font-weight:600;cursor:pointer;padding:0}
.sd-linkbtn:hover{text-decoration:underline}
.sd-warn{flex-basis:100%;margin:0;padding:8px 10px;border-radius:8px;background:#fff6e0;color:#8a5a00;font-size:12px}
.sd-publink[hidden]{display:none}
/* ---- Files: grid view with previews / list view ---- */
.view-tog{display:inline-flex;gap:2px;padding:3px;border-radius:8px;background:#eef2f7;margin-left:auto}
.view-tog button{display:grid;place-items:center;width:30px;height:26px;border:0;border-radius:6px;background:transparent;color:#4d6176;cursor:pointer}
.view-tog button.on{background:var(--surface);color:var(--primary);box-shadow:0 1px 2px rgba(29,45,62,.12)}
.view-tog + .drive-search{margin-left:0}
.drive.view-grid .drive-list,.drive.view-list .drive-grid{display:none}
.drive-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;padding:18px}
.dcard{position:relative;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden;transition:box-shadow .15s,border-color .15s}
.dcard:hover{border-color:#c7d3e0;box-shadow:0 4px 16px rgba(29,45,62,.10)}
.dcard[hidden]{display:none}
.dc-prev{display:block;height:150px;padding:10px 10px 0;background:#f1f4f8;overflow:hidden;border-bottom:1px solid var(--border)}
.dc-prev:hover{text-decoration:none}
table.pv{width:100%;border-collapse:collapse;table-layout:fixed;background:#fff;font:10px/1.2 Arial,sans-serif;color:#222;box-shadow:0 1px 3px rgba(29,45,62,.12)}
table.pv td{border:1px solid #e3e6ea;padding:2px 3px;height:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:auto}
.pv-empty{display:grid;place-items:center;height:100%;margin-top:-10px;color:#9aa7b4;font-size:12px}
.dc-foot{display:flex;align-items:center;gap:10px;padding:10px 12px}
.dc-meta{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.dc-meta a{color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-meta a:hover{color:var(--primary);text-decoration:none}
.dc-meta small{color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-acc{color:#7a8a9b;display:grid;place-items:center;flex:none}
.dc-tag{position:absolute;top:8px;left:8px;display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:999px;background:rgba(255,255,255,.95);color:#4d6176;font-size:11px;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.dc-actions{position:absolute;top:6px;right:6px;display:flex;gap:2px;padding:2px;border-radius:8px;background:rgba(255,255,255,.96);box-shadow:0 1px 4px rgba(29,45,62,.15);opacity:0;transition:opacity .15s}
.dc-actions:empty{display:none}
.dcard:hover .dc-actions,.dc-actions:focus-within{opacity:1}
@media(hover:none){.dc-actions{opacity:1}}
@media(max-width:760px){.drive-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;padding:12px}.dc-prev{height:110px}.view-tog{margin-left:0}}
/* ---- Files: New menu, uploads, type badges, file viewer ---- */
.new-menu{position:relative}
.new-menu #new-btn svg:last-child{margin-left:-2px;opacity:.85}
.nm-list{position:absolute;top:calc(100% + 6px);left:0;z-index:50;min-width:280px;padding:6px;border-radius:10px;background:var(--surface);box-shadow:0 10px 30px rgba(15,30,50,.18);border:1px solid var(--border)}
.nm-list[hidden]{display:none}
.nm-list button{display:flex;align-items:center;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:8px;background:transparent;font:inherit;font-size:13.5px;font-weight:600;color:var(--text);text-align:left;cursor:pointer}
.nm-list button:hover{background:#f1f5fa}
.nm-list button > span:last-child{display:flex;flex-direction:column;line-height:1.3}
.nm-list small{font-weight:400;color:var(--muted);font-size:12px}
/* type badges */
.dl-file{font-size:9.5px;font-weight:800;letter-spacing:.02em;font-family:Arial,sans-serif}
.ft-sheet{background:#e6f4ea;color:#188038}
.ft-pdf{background:#fde8e7;color:#c5221f}
.ft-doc{background:#e3edfd;color:#1a5bd6}
.ft-xls{background:#e6f4ea;color:#137333}
.ft-ppt{background:#fdeee3;color:#c4520a}
.ft-img{background:#f1e8fd;color:#7b2fd1}
.ft-txt,.ft-other{background:#eef1f4;color:#4d6176}
.ft-zip{background:#fdf5d8;color:#8a6500}
.ft-up{background:#e8f2fd;color:var(--primary)}
.dc-prev.dc-file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:10px}
.dc-prev.dc-file img{max-width:100%;max-height:130px;object-fit:contain;border-radius:4px;box-shadow:0 1px 4px rgba(29,45,62,.18);background:#fff}
.pv-file{display:grid;place-items:center;width:64px;height:78px;border-radius:8px;font:800 15px/1 Arial,sans-serif;letter-spacing:.02em;box-shadow:0 2px 6px rgba(29,45,62,.12)}
.dc-prev.dc-file small{color:var(--muted);font-size:11.5px}
/* viewer of an uploaded file */
.sb-size{color:var(--muted);font-size:12.5px;white-space:nowrap}
.file-view{background:#eef1f5}
.file-img{display:grid;place-items:center;overflow:auto;padding:16px}
.file-img img{max-width:100%;max-height:100%;background:#fff;box-shadow:0 4px 20px rgba(29,45,62,.15)}
.file-none{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;padding:24px}
.file-none p{margin:0;color:var(--muted);max-width:420px}
.file-none p b{color:var(--text)}
/* drag & drop */
.drive{position:relative}
.drop-hint{display:none}
.drive.dropping .drop-hint{position:absolute;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;border:2px dashed var(--primary);border-radius:inherit;background:rgba(232,242,253,.92);color:var(--primary);font-size:15px;pointer-events:none}
/* upload progress panel */
.up-panel{position:fixed;right:20px;bottom:20px;z-index:1200;width:min(380px,calc(100vw - 32px));border-radius:12px;background:var(--surface);box-shadow:0 12px 40px rgba(15,30,50,.25);overflow:hidden}
.up-head{display:flex;align-items:center;justify-content:space-between;padding:8px 8px 8px 14px;background:#1d2d3e;color:#fff;font-size:13.5px}
.up-head .icon-act{color:#fff}.up-head .icon-act:hover{background:rgba(255,255,255,.12);color:#fff}
.up-list{max-height:260px;overflow:auto;padding:6px 14px 10px}
.up-row{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}
.up-row:last-child{border-bottom:0}
.up-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.up-bar{grid-column:1;height:4px;border-radius:2px;background:#e7edf4;overflow:hidden}
.up-bar i{display:block;height:100%;width:0;background:var(--primary);transition:width .2s}
.up-st{grid-row:1 / span 2;grid-column:2;align-self:center;font-size:12px;color:var(--muted);max-width:170px;text-align:right}
.up-st.ok{color:#1e7b3a;font-weight:600}.up-st.err{color:var(--err)}
.panel.drive{overflow:visible}
/* ---- File previews (cards and opened files) ---- */
.dc-prev.pv-loading{background-image:linear-gradient(90deg,#f1f4f8 0,#e6ebf1 50%,#f1f4f8 100%);background-size:200% 100%;animation:pvshine 1.2s linear infinite}
@keyframes pvshine{to{background-position:-200% 0}}
.dc-thumb{display:block}
.dc-thumb-pdf{display:flex;justify-content:center;padding:10px 10px 0}
.dc-thumb-pdf .pv-page{width:100%;height:auto;align-self:flex-start;background:#fff;box-shadow:0 1px 4px rgba(29,45,62,.2)}
.pv-doc{height:100%;background:#fff;box-shadow:0 1px 4px rgba(29,45,62,.15);overflow:hidden;padding:10px 12px}
.pv-doc-in{font:9px/1.35 Georgia,"Times New Roman",serif;color:#222}
.pv-doc-in p{margin:0 0 4px}.pv-doc-in h1,.pv-doc-in h2,.pv-doc-in h3{font-size:11px;margin:0 0 4px}
.pv-doc-in table{border-collapse:collapse;width:100%}.pv-doc-in td{border:1px solid #ccc;padding:1px 2px}
.pv-txt{margin:0;height:100%;padding:8px 10px;background:#fff;box-shadow:0 1px 4px rgba(29,45,62,.15);font:9.5px/1.35 Consolas,monospace;white-space:pre-wrap;overflow:hidden;color:#222}
/* opened Word / Excel */
.file-rich{overflow:auto;position:relative}
.fv-wait{display:grid;place-items:center;height:100%;color:var(--muted)}
.fv-fail{display:grid;place-items:center;height:100%;color:var(--muted);text-align:center;padding:24px}
.file-rich .docx-wrapper{background:#eef1f5!important;padding:20px!important}
.fv-doc{max-width:820px;margin:20px auto;padding:48px 56px;background:#fff;box-shadow:0 2px 10px rgba(29,45,62,.12)}
.fv-sheet{margin:14px;background:#fff;overflow:auto;box-shadow:0 1px 4px rgba(29,45,62,.12)}
.fv-sheet table{border-collapse:collapse;font:12px/1.35 Arial,sans-serif;width:auto}
.fv-sheet td,.fv-sheet th{border:1px solid #dde2e8;padding:3px 8px;white-space:nowrap;width:auto;text-align:left}
.fv-tabs{position:sticky;bottom:0;display:flex;gap:2px;padding:6px 14px;background:#f7f9fb;border-top:1px solid var(--border)}
.fv-tabs button{border:0;background:transparent;padding:4px 12px;border-radius:6px;font:inherit;font-size:13px;cursor:pointer;color:#3c4a5a}
.fv-tabs button.on{background:#fff;box-shadow:0 1px 2px rgba(29,45,62,.15);font-weight:600;color:var(--text)}
/* whole-page thumbnails (Word, text): an A4 page scaled to the card */
.dc-thumb-docx,.dc-thumb-txt{padding:10px 14px 0}
.pv-sheetpage{position:relative;width:100%;height:100%;overflow:hidden;background:#fff;box-shadow:0 1px 4px rgba(29,45,62,.18)}
.pv-a4{position:absolute;top:0;left:0;width:794px;min-height:1123px;padding:64px 72px;transform-origin:0 0;background:#fff;color:#222;font:14px/1.45 Calibri,Arial,sans-serif}
.pv-a4 .pv-doc-in{font:inherit}
.pv-a4 .pv-doc-in p{margin:0 0 8px}
.pv-a4 .pv-doc-in h1{font-size:22px;margin:0 0 10px}.pv-a4 .pv-doc-in h2{font-size:18px;margin:0 0 8px}
.pv-a4 .pv-doc-in table{border-collapse:collapse;width:100%;font-size:12px}
.pv-a4 .pv-doc-in td,.pv-a4 .pv-doc-in th{border:1px solid #bbb;padding:3px 5px;width:auto}
.pv-a4 .pv-txt{margin:0;padding:0;box-shadow:none;height:auto;font:14px/1.5 Consolas,monospace;white-space:pre-wrap;overflow:visible}
table.pv.pv-small{font-size:8px}
table.pv.pv-small td{height:10px;padding:1px 2px}
/* ---- UOR: Excel-like grid (lines around every cell, inputs filling the cells) ---- */
table.sheet.xl{border-collapse:collapse}
table.sheet.xl th,table.sheet.xl td{border:1px solid #d3dae2!important}
table.sheet.xl thead th{background:#f1f3f6;color:#344354;font-size:12px;font-weight:600;text-transform:none;letter-spacing:0;padding:7px 8px;border-bottom:2px solid #b9c3cf!important;vertical-align:bottom}
table.sheet.xl tbody td{vertical-align:top}
table.sheet.xl td.num{background:#f1f3f6;color:#5b6b7c;font-size:12px;text-align:center;padding:7px 4px!important}
table.sheet.xl td.cell{padding:0!important}
table.sheet.xl td.cell input,table.sheet.xl td.cell select,table.sheet.xl td.cell textarea{border:0!important;border-radius:0!important;min-height:30px;height:auto;padding:6px 8px;font-size:13px;line-height:18px;background-color:transparent;box-shadow:none!important}
table.sheet.xl td.cell input,table.sheet.xl td.cell select{height:30px;padding-top:0;padding-bottom:0}
table.sheet.xl td.cell select{padding-right:22px;background-position:right 4px center}
table.sheet.xl td.cell input:hover,table.sheet.xl td.cell select:hover,table.sheet.xl td.cell textarea:hover{background-color:#f3f8ff}
table.sheet.xl td.cell input:focus,table.sheet.xl td.cell select:focus,table.sheet.xl td.cell textarea:focus{outline:2px solid #1a73e8;outline-offset:-2px;background-color:#fff}
table.sheet.xl td.cell-label{padding:6px 8px!important}
table.sheet.xl td.cell-couple{padding:4px 6px!important}
table.sheet.xl td.del{padding:4px!important}
table.sheet.xl tbody tr:hover td.cell{background-color:#fafcff}
table.sheet.xl tr.grp-row td{background:#e8edf3;padding:5px 10px!important}
/* sheet / Excel / CSV thumbnails: 30 rows x 12 columns at full size, shrunk to the card */
.pv-a4.pv-wide{width:960px;min-height:0;padding:0;font:13px/1.2 Arial,sans-serif}
table.pv.pv-full{width:960px;table-layout:fixed;font:13px/1.2 Arial,sans-serif;box-shadow:none}
table.pv.pv-full td{height:21px;padding:2px 5px;border:1px solid #dfe3e8}
.dc-prev:has(> .pv-sheetpage){padding:10px 10px 0}
.dc-thumb-sheet{padding:10px 10px 0}
table.sheet.xl td.cell .rt{border:0;border-radius:0;min-height:30px;padding:6px 8px;line-height:18px}
table.sheet.xl td.cell .rt:hover{background:#f3f8ff}
table.sheet.xl td.cell .rt:focus{border:0;outline:2px solid #1a73e8;outline-offset:-2px;padding:6px 8px;background:#fff}
table.sheet.xl td.num{vertical-align:middle}
table.sheet.xl td.del{padding:2px 4px!important;vertical-align:middle}
table.sheet.xl td.cell-couple{padding:3px 8px!important;line-height:0}
table.sheet.xl td.cell-couple .couple-toggle{display:flex;height:24px;line-height:18px}
table.sheet.xl td.cell-couple .couple-box,table.sheet.xl td.cell-couple .couple-sum{line-height:1.35}
table.sheet.xl td.num{padding:5px 4px!important;line-height:18px}
/* Excel look, all tabs: text keeps 8px from the lines; nothing covers the loco number */
table.sheet.xl td.cell input,table.sheet.xl td.cell select{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
table.sheet.xl td.cell input[list]::-webkit-calendar-picker-indicator{display:none!important;opacity:0}
table.sheet.xl td.cell-loco:has(.ro.flag:not(:empty)) input{padding-right:34px}
table.sheet.xl .ro.flag{top:8px;right:4px;height:15px;padding:0 4px;font-size:9px;border-radius:4px}
table.sheet.xl td.cell-label{white-space:normal}
table.sheet.xl td.cell select{padding-left:8px;padding-right:22px}
table.sheet.xl td.cell-datetime input,table.sheet.xl td.cell-date input{padding-left:8px;padding-right:4px}
table.sheet.xl td.cell-datetime:has(.now-btn:not([hidden])) input{padding-right:54px}
/* Date cells: calendar icon hidden, the calendar opens on a click in the cell */
table.sheet td.cell input[type="date"]::-webkit-calendar-picker-indicator,
table.sheet td.cell input[type="datetime-local"]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}
table.sheet td.cell input[type="date"],table.sheet td.cell input[type="datetime-local"]{cursor:pointer}
/* time cells (RSO tabs, 10.2): no clock icon, tight padding – a click opens the picker */
table.sheet td.cell input[type="time"]::-webkit-calendar-picker-indicator{display:none;-webkit-appearance:none}
table.sheet td.cell input[type="time"]{cursor:pointer;padding-right:2px;min-width:0;text-align:center}
table.sheet td.cell input[type="time"]::-webkit-datetime-edit{padding:0}
/* Loco No. cell: pair badge (CPL / MU) and plan flag side by side, never covering the number */
table.sheet td.cell-loco .cell-tags{position:absolute;top:7px;right:4px;display:flex;align-items:center;gap:3px;pointer-events:none}
table.sheet td.cell-loco .cell-tags .ro.flag{position:static}
table.sheet td.cell-loco .cell-tags .ro.flag:empty{display:none}
.pair-tag{pointer-events:auto;display:inline-grid;place-items:center;height:15px;padding:0 4px;border:0;border-radius:4px;font:700 9px/1 Arial,sans-serif;letter-spacing:.03em;cursor:pointer;color:#fff;background:#475b70}
.pair-tag.pt-multi{background:#0c8a82}
.pair-tag:hover{filter:brightness(1.15)}
.pair-tag:disabled{cursor:default}
table.sheet td.cell-loco:has(.pair-tag) input{padding-right:36px}
table.sheet td.cell-loco:has(.pair-tag):has(.ro.flag:not(:empty)) input{padding-right:66px}
.pair-menu{position:absolute;z-index:70;min-width:230px;padding:6px;border-radius:10px;background:var(--surface);box-shadow:0 10px 30px rgba(15,30,50,.2);border:1px solid var(--border)}
.pair-menu[hidden]{display:none}
.pm-head{padding:4px 8px 6px;font-weight:700;font-size:13px}
.pair-menu button{display:grid;grid-template-columns:14px 1fr;column-gap:8px;align-items:center;width:100%;padding:6px 8px;border:0;border-radius:7px;background:transparent;font:inherit;font-size:13px;text-align:left;cursor:pointer;color:var(--text)}
.pair-menu button small{grid-column:2;color:var(--muted);font-size:11.5px}
.pair-menu button:hover{background:#f1f5fa}
.pm-dot{width:10px;height:10px;border-radius:50%;border:2px solid #9aa7b4}
.pair-menu button.on .pm-dot{border-color:var(--primary);background:var(--primary)}
.pm-sep{height:1px;background:var(--border);margin:4px 2px}
.pair-menu .pm-split{grid-template-columns:1fr;color:var(--err)}
.pair-menu .pm-split small{grid-column:1}
/* Excel look: everything centred in its cell (across and up/down); long text stays left-aligned for reading */
table.sheet.xl th,table.sheet.xl td{vertical-align:middle!important;text-align:center}
table.sheet.xl td.cell input,table.sheet.xl td.cell textarea,table.sheet.xl td.cell select{text-align:center;text-align-last:center}
table.sheet.xl td.cell-label,table.sheet.xl td.cell-label .ro{text-align:center}
table.sheet.xl td.cell-multi,table.sheet.xl td.cell-multi .rt{text-align:left}
table.sheet.xl td.cell label.check-cell{justify-content:center}
table.sheet.xl td.cell-couple{text-align:left}
table.sheet.xl tr.grp-row td{text-align:left}
table.sheet.xl td.cell-datetime input,table.sheet.xl td.cell-date input{text-align:center}
/* CPL / MU badge sits just below the loco number */
table.sheet td.cell-loco .pair-line{display:flex;justify-content:center;margin:-5px 0 4px;line-height:0}
table.sheet td.cell-loco:has(.pair-tag) input{padding-right:8px}
table.sheet td.cell-loco:has(.pair-tag):has(.ro.flag:not(:empty)) input{padding-right:34px}
/* Pairs: one line per loco in every loco column (Loco No., Home Shed, G / P, Schedule, Due), lined up */
table.sheet td.cell-loco .pair-stack{display:flex;flex-direction:column;align-items:center;padding:6px 8px 2px;line-height:18px;font-size:13px;font-weight:700;cursor:text}
table.sheet td.cell-loco:has(.pair-stack) > input{display:none}
table.sheet td.cell-loco.editing:has(.pair-stack) > input{display:block}
table.sheet td.cell-loco.editing .pair-stack{display:none}
table.sheet td.cell-label .ro{white-space:pre-line}
table.sheet.xl tr.pair-row > td{vertical-align:top!important}
table.sheet.xl tr.pair-row td.cell-label{padding:6px 8px!important;line-height:18px}
table.sheet.xl tr.pair-row td.cell-label .ro{line-height:18px}
table.sheet.xl tr.pair-row td.num{padding-top:6px!important}
table.sheet td.cell-loco .pair-line{margin:2px 0 5px}
/* Pair rows: one Wkg / Dead dropdown per loco, on the same lines as the loco numbers */
table.sheet.xl tr.pair-row td.cell-stack{padding:6px 0 0!important}
table.sheet.xl tr.pair-row td.cell-stack select{height:18px!important;min-height:18px;line-height:18px;padding:0 18px 0 6px!important;font-size:12.5px;background-position:right 3px center;background-size:11px}
/* Coupled pair: no CPL label, only a small ⋯ options button that shows on hover */
table.sheet td.cell-loco .pair-tag.pt-coupled{background:transparent;color:#7a8a9b;font-size:13px;height:14px;padding:0 5px;opacity:0;transition:opacity .15s}
table.sheet tr:hover td.cell-loco .pair-tag.pt-coupled,table.sheet td.cell-loco .pair-tag.pt-coupled:focus{opacity:1;background:#eef2f7}

/* A pair column with one shared value (usual for MU) sits in the middle of the cell. */
table.sheet.xl tr.pair-row > td.cell-label:not(:has(.lines)){vertical-align:middle!important}
/* "+" after each number of a pair (38006+ / 32831), hung outside so the numbers stay centred. */
table.sheet td.cell-loco .pair-stack b,table.sheet .ro.pair-lines b{position:relative;display:block}
table.sheet td.cell-loco .pair-stack b:not(:last-child)::after,table.sheet .ro.pair-lines b:not(:last-child)::after{content:"+";position:absolute;left:100%;padding-left:1px}
table.sheet .ro.pair-lines{display:inline-block;font-weight:700;white-space:normal}

/* ---- Station suggestions (Station / Section, Failure Place, boards) ---- */
.sugg{position:fixed;z-index:200;width:320px;max-height:300px;overflow:auto;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-hover);padding:4px}
.sugg .sg-i{display:grid;grid-template-columns:56px 1fr;grid-template-rows:auto auto;column-gap:8px;padding:6px 8px;border-radius:7px;cursor:pointer;line-height:1.3}
.sugg .sg-i b{grid-row:1/3;align-self:center;font-size:13px;color:var(--primary)}
.sugg .sg-i span{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sugg .sg-i small{font-size:11.5px;color:var(--muted)}
.sugg .sg-i small em{font-style:normal;color:var(--ok);font-weight:600}
.sugg .sg-i.on,.sugg .sg-i:hover{background:var(--primary-soft)}

/* ---- Masters → Boards ---- */
.board-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0 0 14px}
.board-chip{display:flex;flex-direction:column;padding:8px 16px;border-radius:10px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-weight:600;font-size:14px;line-height:1.25}
.board-chip small{font-weight:400;font-size:11.5px;color:var(--muted)}
.board-chip:hover{text-decoration:none;border-color:var(--field)}
.board-chip.active{background:var(--primary);border-color:var(--primary);color:#fff}
.board-chip.active small{color:rgba(255,255,255,.8)}
.btn-danger-text{color:var(--err)!important}
.board-sections{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}
.board-sections .bs-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.board-sections input{flex:1;min-width:0;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:13.5px;background:var(--surface);color:var(--text)}
.board-sections .muted{color:var(--muted)}
.board-body{display:grid;grid-template-columns:minmax(0,3fr) minmax(320px,2fr);gap:16px;padding:16px}
.board-map{min-width:0}
.map-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.map-tools [data-zoom-val]{min-width:44px;text-align:center;font-size:13px;color:var(--muted)}
.map-hint{font-size:12px;color:var(--muted);margin-left:6px}
.map-scroll{overflow:auto;max-height:72vh;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}
.map-wrap{position:relative;width:100%;line-height:0;user-select:none}
.map-wrap img{width:100%;height:auto;display:block}
.map-pin{position:absolute;transform:translate(-50%,-100%);border:0;background:none;padding:0;cursor:pointer;line-height:1}
.map-pin span{display:block;position:relative;padding:2px 6px;border-radius:6px;background:var(--err);color:#fff;font-size:11px;font-weight:700;box-shadow:0 2px 6px rgba(0,0,0,.3);margin-bottom:6px}
.map-pin span::after{content:"";position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);border:6px solid transparent;border-bottom:0;border-top-color:var(--err)}
.map-pin:hover span,.map-pin.flash span{background:var(--primary)}
.map-pin:hover span::after,.map-pin.flash span::after{border-top-color:var(--primary)}
body.bd-pinning .map-wrap{cursor:crosshair;outline:3px solid var(--primary);outline-offset:-3px}
body.bd-pinning .map-pin{pointer-events:none;opacity:.6}
.map-pdf{width:100%;height:72vh;border:1px solid var(--border);border-radius:var(--radius-sm)}
.map-note{font-size:12.5px;color:var(--muted);margin:6px 0 0}
.map-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:56px 16px;border:1px dashed var(--field);border-radius:var(--radius-sm);color:var(--muted);font-size:13.5px}
.map-empty b{color:var(--text);font-size:15px}
.board-stations{min-width:0}
.bs-add{display:flex;gap:8px;margin-bottom:10px}
.bs-add input{flex:1;min-width:0;height:36px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:13.5px;text-transform:uppercase;background:var(--surface);color:var(--text)}
.bs-table{width:100%}
.bs-table td{padding:6px 8px!important;font-size:13px;text-align:center;vertical-align:middle}
.bs-table td.left{text-align:left}
.bs-code{border:0;background:none;padding:0;font:inherit;font-weight:700;color:var(--primary);cursor:pointer}
.bs-code:hover{text-decoration:underline}
.bs-on{font-size:12px;color:var(--muted)}
tr.is-pinned .bs-on{color:var(--ok);font-weight:600}
.bs-btn{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:2px 6px;margin-left:3px;font-size:12px;cursor:pointer;color:var(--text)}
.bs-btn:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}
.bs-btn:disabled{opacity:.35;cursor:default}
.bs-btn.bs-del{color:var(--err)}
.bs-table tr.flash td{animation:bsflash 1.4s}
@keyframes bsflash{0%,40%{background:var(--primary-soft)}100%{background:transparent}}
@media (max-width:900px){.board-body{grid-template-columns:1fr}.map-scroll{max-height:60vh}}

.bs-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}
.bs-table{width:100%;border-collapse:collapse;background:var(--surface)}
.bs-table th{background:var(--bg);font-size:12px;font-weight:600;color:var(--muted);padding:8px;border-bottom:1px solid var(--border);white-space:nowrap}
.bs-table td{border-bottom:1px solid var(--border);white-space:nowrap}
.bs-table td.left{white-space:normal;min-width:120px}
.bs-table tr:last-child td{border-bottom:0}
.bs-table td.num{color:var(--muted);width:34px}
.board-body{grid-template-columns:minmax(0,1fr) minmax(360px,460px)}
.board-body{grid-template-columns:minmax(0,1fr) minmax(400px,540px)}

/* ---- Division Map ---- */
.map-scroll.dragging{cursor:grabbing}
.div-map .map-scroll{cursor:grab;background:#fff}
.map-dot{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;border:2px solid transparent;background:transparent;padding:0;cursor:pointer}
.map-dot.jn{width:18px;height:18px;margin:-9px 0 0 -9px}
.map-dot:hover{border-color:var(--primary);background:rgba(10,110,209,.15)}
.map-dot.on{border-color:var(--primary);background:rgba(10,110,209,.25);box-shadow:0 0 0 4px rgba(10,110,209,.25)}
.map-dot.flash{animation:dmpulse 1.4s 2}
@keyframes dmpulse{0%{box-shadow:0 0 0 0 rgba(10,110,209,.7)}100%{box-shadow:0 0 0 18px rgba(10,110,209,0)}}
.dm-list{max-height:62vh;overflow:auto}
.dm-list thead th{position:sticky;top:0;z-index:1}
.dm-jn{display:inline-block;margin-left:5px;padding:0 4px;border-radius:4px;background:var(--primary-soft);color:var(--primary);font-size:10.5px;font-weight:700}
.dm-note{display:block;font-size:11px;color:var(--muted)}
.dm-km{font-size:12px;color:var(--muted);white-space:normal!important;max-width:120px}

/* Main-map circles named only in a section box: their name, shown when zoomed in. */
.map-dot .dm-lbl{display:none;position:absolute;left:14px;top:50%;transform:translateY(-50%);white-space:nowrap;font:600 10px/1.2 Arial,sans-serif;color:#0a5bc4;background:rgba(255,255,255,.85);padding:0 2px;border-radius:2px;pointer-events:none}
.map-wrap.dm-names.dm-zoomed .map-dot.added .dm-lbl{display:block}
.dm-toggle{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.map-dot .dm-lbl{left:9px;top:-3px;transform:rotate(-38deg);transform-origin:0 50%}

/* ---- LMS Map (drawn from the station data) ---- */
.lm-tools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:12px 16px 0}
.lm-tools [data-lm-zoom-val]{min-width:48px;text-align:center;font-size:13px;color:var(--muted)}
.lm-tools input[type=search]{height:32px;min-width:240px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:13px;background:var(--surface);color:var(--text)}
.lm-body{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:12px;padding:12px 16px 16px}
.lm-canvas{height:74vh;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;overflow:hidden;cursor:grab;position:relative}
.lm-canvas.dragging{cursor:grabbing}
.lm-svg{width:100%;height:100%;display:block;user-select:none}
.lm-legend{display:flex;flex-direction:column;gap:7px;font-size:12px;color:var(--text)}
.lm-legend b{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.lm-legend span{display:flex;align-items:center;gap:6px}
.lm-legend svg{flex:none;background:#fff;border-radius:3px}
.lt-single{stroke:#b40000;stroke-width:4;fill:none;stroke-linejoin:round}
.lt-double-o{stroke:#b40000;stroke-width:5;fill:none;stroke-linejoin:round}
.lt-double-i{stroke:#fff;stroke-width:2;fill:none;stroke-linejoin:round}
.lt-doubling-i{stroke:#fff;stroke-width:2;fill:none;stroke-dasharray:6 5}
.lt-new{stroke:#777;stroke-width:4;fill:none;stroke-dasharray:10 7}
.lt-ng{stroke:#b40000;stroke-width:1.6;fill:none}
.lt-elec{stroke:#e0559a;stroke-width:9;fill:none;stroke-dasharray:1 13}
.lm-st{fill:#fff;stroke:#b40000;stroke-width:1.2;cursor:pointer}
.lm-jn{fill:#e000e0;stroke:#fff;stroke-width:1;cursor:pointer}
.lm-lbl{font:7px Arial,sans-serif;fill:#333;display:none;cursor:pointer}
.lm-lbl.jn{font-weight:bold;font-size:9.5px;fill:#c000c0}
.lm-svg.show-st .lm-lbl,.lm-svg.show-jn .lm-lbl.jn{display:block}
.lm-lead{stroke:#999;stroke-width:.5;display:none}
.lm-svg.show-st .lm-lead,.lm-svg.show-jn .lm-lead.jn{display:block}
.lm-hi{fill:none;stroke:var(--primary);stroke-width:3;animation:lmhi 1.2s ease-out 3}
@keyframes lmhi{0%{stroke-opacity:1}100%{stroke-opacity:.2}}
.lm-info{margin:0 16px 16px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px}
.lm-info b{color:var(--primary)}
@media (max-width:900px){.lm-body{grid-template-columns:1fr}.lm-canvas{height:60vh}}
.lm-lbl{font-size:10.5px;font-weight:600;fill:#222}
.lm-lbl.jn{font-size:13.5px;font-weight:700}
.lm-lbl,.lm-svg .lm-lbl{display:block;font-family:Arial,sans-serif;font-weight:600;fill:#222}
.lm-lbl.jn{font-weight:700;fill:#c000c0}
.lm-lead{display:block;stroke:#888;stroke-width:.8px;vector-effect:non-scaling-stroke}
/* LMS Map lines: thicker, and the same thickness on screen at every zoom. */
.lm-svg polyline{vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.lm-svg .lt-single{stroke-width:5px}
.lm-svg .lt-double-o{stroke-width:8px}
.lm-svg .lt-double-i{stroke-width:3px}
.lm-svg .lt-doubling-i{stroke-width:3px;stroke-dasharray:9 7}
.lm-svg .lt-new{stroke-width:5px;stroke-dasharray:14 9;stroke-linecap:butt}
.lm-svg .lt-ng{stroke-width:3px}
.lm-svg .lt-elec{stroke-width:14px;stroke-dasharray:1.5 18;stroke-linecap:butt}
.lm-svg .lm-st{stroke-width:1.6px;vector-effect:non-scaling-stroke}
.lm-legend .lt-single{stroke-width:5}.lm-legend .lt-double-o{stroke-width:8}.lm-legend .lt-double-i,.lm-legend .lt-doubling-i{stroke-width:3}
.lm-legend .lt-new{stroke-width:5}.lm-legend .lt-ng{stroke-width:3}.lm-legend .lt-elec{stroke-width:12;stroke-dasharray:1.5 9}
/* LMS Map: wider lines and bigger station circles for a clear view. */
.lm-svg .lt-single{stroke-width:7px}
.lm-svg .lt-double-o{stroke-width:11px}
.lm-svg .lt-double-i{stroke-width:4px}
.lm-svg .lt-doubling-i{stroke-width:4px;stroke-dasharray:10 8}
.lm-svg .lt-new{stroke-width:7px;stroke-dasharray:16 10}
.lm-svg .lt-ng{stroke-width:4px}
.lm-svg .lt-elec{stroke-width:19px;stroke-dasharray:2 20}
.lm-svg .lm-st{fill:#fff;stroke:#b40000;stroke-width:2.5px;vector-effect:non-scaling-stroke}
.lm-svg .lm-jn{fill:#e000e0;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke}
.lm-legend .lt-single{stroke-width:7}.lm-legend .lt-double-o{stroke-width:11}.lm-legend .lt-double-i,.lm-legend .lt-doubling-i{stroke-width:4}
.lm-legend .lt-new{stroke-width:7}.lm-legend .lt-ng{stroke-width:4}
.lm-legend svg{height:18px}
.lm-hi{stroke-width:3px;vector-effect:non-scaling-stroke}
/* LMS Map: full width at 100% and closer, thinner when zoomed out (--f set by the map). */
.lm-svg .lt-single{stroke-width:calc(7px * var(--f, 1))}
.lm-svg .lt-double-o{stroke-width:calc(11px * var(--f, 1))}
.lm-svg .lt-double-i,.lm-svg .lt-doubling-i{stroke-width:calc(4px * var(--f, 1))}
.lm-svg .lt-new{stroke-width:calc(7px * var(--f, 1))}
.lm-svg .lt-ng{stroke-width:calc(4px * var(--f, 1))}
.lm-svg .lt-elec{stroke-width:calc(19px * var(--f, 1))}
/* LMS Map on the official drawing */
.lm-body.lm-full{grid-template-columns:1fr}
.lm-full .lm-canvas{height:78vh}
.lm-hit{fill:transparent;cursor:pointer}
.lm-hit:hover{fill:rgba(10,110,209,.18)}
.lm-add-dot{fill:#fff;stroke:#b40000;stroke-width:1.5px;vector-effect:non-scaling-stroke}
.lm-svg .lm-lbl{display:block;font-family:Arial,sans-serif;font-weight:600;fill:#333}
.lm-svg .lm-lead{display:block;stroke:#999;stroke-width:.8px;vector-effect:non-scaling-stroke}
.lm-svg .lm-lbl.halo{paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;vector-effect:non-scaling-stroke}
/* LMS Map: added names in the printed lettering (light grey, thin; junctions magenta serif), circles like the printed ones */
.lm-svg .lm-lbl{display:block;font-family:'Segoe UI Light','Segoe UI',Arial,sans-serif;font-weight:300;fill:#8a8a8a;stroke:none}
.lm-svg .lm-lbl.jn{font-family:'Times New Roman',Times,serif;font-weight:400;fill:#ff3cff}
.lm-svg .lm-lead{display:block;stroke:#b0b0b0;stroke-width:.6px;vector-effect:non-scaling-stroke}
.lm-svg .lm-circle{fill:#fff;stroke:#b80000;stroke-width:.8px;vector-effect:non-scaling-stroke}
.lm-full .lm-canvas{background:#fff}
.lm-svg .lm-lbl{fill:#9c9c9c}
.lm-svg .lm-lbl.jn{fill:#ff40ff}
/* LMS Map: details card on the right, highlighted station name */
.lm-body.lm-with-card{grid-template-columns:minmax(0,1fr) 300px}
.lm-with-card .lm-canvas{height:78vh;background:#fff}
.lm-card{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:14px;font-size:13px;align-self:start;max-height:78vh;overflow:auto}
.lm-card-empty{display:flex;flex-direction:column;gap:6px;color:var(--muted)}
.lm-card-empty b{color:var(--text);font-size:14px}
.lm-card-head{display:flex;flex-direction:column;gap:2px;padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--border)}
.lm-card-code{font-size:22px;font-weight:700;color:var(--primary);letter-spacing:.02em}
.lm-card-head b{font-size:15px}
.lm-card dl{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;margin:0}
.lm-card dt{color:var(--muted);font-size:12px}
.lm-card dd{margin:0;font-weight:500}
.lm-card-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.lm-svg .lm-hi-name{fill:rgba(255,214,0,.55);stroke:#f0a000;stroke-width:1.2px;vector-effect:non-scaling-stroke}
.lm-svg .lm-hi{fill:none;stroke:#0a6ed1;stroke-width:3px;vector-effect:non-scaling-stroke}
.lm-svg .lm-lbl.on{fill:#222}
@media (max-width:1000px){.lm-body.lm-with-card{grid-template-columns:1fr}}
/* Interchange points on the maps */
.ip-mark{position:absolute;transform:translate(-50%,-160%);z-index:2;padding:1px 5px;border-radius:4px;background:#e8590c;color:#fff;font:700 10px/1.3 Arial,sans-serif;white-space:nowrap;box-shadow:0 1px 3px rgba(0,0,0,.35);pointer-events:auto;cursor:help}
.ip-mark::after{content:"";position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);border:4px solid transparent;border-bottom:0;border-top-color:#e8590c}
.ip-key{display:inline-block;padding:0 4px;border-radius:3px;background:#e8590c;color:#fff;font:700 10px/1.4 Arial,sans-serif}
.dm-ip{display:inline-block;margin-left:4px;padding:0 4px;border-radius:4px;background:#e8590c;color:#fff;font-size:10px;font-weight:700}
.lm-svg .lm-ip rect{fill:#e8590c}
.lm-svg .lm-ip text{fill:#fff;font:700 3.2px Arial,sans-serif}
.lm-svg .lm-ip-ring{fill:none;stroke:#e8590c;stroke-width:2px;vector-effect:non-scaling-stroke}
/* LMS Map: Jammu division faded */
.lm-svg .lm-grey{opacity:.74;fill:#fff;stroke:#fff;stroke-linecap:round}
.lm-svg .lm-div-name{font:700 9px Arial,sans-serif;fill:#9aa3ad;letter-spacing:1.5px}
.lm-svg .lm-div-sub{font:400 4px Arial,sans-serif;fill:#9aa3ad}
.lm-svg .lm-hi-band{stroke:rgba(255,214,0,.6);stroke-width:5.4;stroke-linecap:round}
/* Division boundary marks (FZR / UMB) highlighted on the maps */
.lm-svg .lm-border-bar{fill:rgba(232,89,12,.18);stroke:#e8590c;stroke-width:2.5px;vector-effect:non-scaling-stroke}
.lm-svg .lm-border-text{fill:rgba(232,89,12,.12);stroke:#e8590c;stroke-width:1.6px;vector-effect:non-scaling-stroke}
.lm-svg .lm-border-link{fill:none;stroke:#e8590c;stroke-width:1.6px;stroke-dasharray:4 3;vector-effect:non-scaling-stroke}
.border-mark{position:absolute;border:2px solid #e8590c;border-radius:4px;background:rgba(232,89,12,.14);pointer-events:auto;cursor:help;box-sizing:border-box}
.border-mark.bar{border-width:2.5px}
/* LMS Map: the clicked / found station's name changes colour (smooth fade, then a soft pulse) */
.lm-svg .lm-hi-text{opacity:0;animation:lmTextIn .45s ease-out forwards,lmTextPulse 1.6s ease-in-out .45s 2}
@keyframes lmTextIn{from{opacity:0}to{opacity:1}}
@keyframes lmTextPulse{0%,100%{opacity:1}50%{opacity:.45}}
.lm-svg .lm-lbl{transition:fill .45s ease}
.lm-svg .lm-lbl.on{fill:#0a6ed1;animation:lmTextPulse 1.6s ease-in-out .45s 2}
.lm-svg .lm-lbl.jn.on{fill:#0a6ed1}
.lm-svg .lm-hi{animation:lmRing .5s ease-out}
@keyframes lmRing{from{stroke-opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(1.8)}to{stroke-opacity:1;transform:scale(1)}}
/* ===== LMS Map v2: original lettering, quiet marks, selection colouring, smooth working ===== */
.lm-canvas{touch-action:none;user-select:none}
.lm-svg .lm-name{fill:none;stroke:#8c8c8c;stroke-width:.9px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.lm-svg .lm-name.jn{stroke:#ff40ff}
.lm-svg .lm-leads .lm-lead{stroke:#a6a6a6;stroke-width:.8px;vector-effect:non-scaling-stroke}
.lm-svg .lm-dim{fill:#fff;opacity:0;animation:lmFade .3s ease-out forwards}
@keyframes lmFade{to{opacity:.32}}
.lm-svg .lm-sel,.lm-svg .lm-near,.lm-svg .lm-hov{opacity:0;animation:lmIn .3s ease-out forwards}
@keyframes lmIn{to{opacity:1}}
.lm-svg .lm-name.sel{stroke:#0a6ed1;stroke-width:1.4px}
.lm-svg .lm-name.soft{stroke:#6aa3eb;stroke-width:1.1px}
.lm-svg .lm-ring{fill:none;stroke:#0a6ed1;stroke-width:2.5px;vector-effect:non-scaling-stroke;animation:lmIn .3s ease-out}
.lm-svg .lm-border-hit{fill:transparent;cursor:help}
.lm-svg .lm-ip{display:none}
.lm-svg.z150 .lm-ip{display:inline}
.lm-svg .lm-ip rect,.lm-svg .lm-ip path{fill:#e8590c}
.lm-svg .lm-ip text{fill:#fff;font:700 2.4px Arial,sans-serif}
.lm-svg .lm-ip-ring{fill:none;stroke:#e8590c;stroke-width:1.6px;vector-effect:non-scaling-stroke}
.lm-svg .lm-div-name{font:700 9px Arial,sans-serif;fill:#b4bac2;letter-spacing:1.5px}
.lm-svg .lm-div-sub{font:400 4px Arial,sans-serif;fill:#b4bac2}
.lm-tip{position:absolute;z-index:3;pointer-events:none;background:#1f2937;color:#fff;font-size:12px;line-height:1.35;padding:5px 9px;border-radius:7px;box-shadow:0 4px 14px rgba(0,0,0,.25);white-space:nowrap}
.lm-tip b{color:#93c5fd;margin-right:4px}
.lm-tip span{display:block;color:#cbd5e1;font-size:11px}
.lm-mini{position:absolute;right:10px;bottom:10px;z-index:2;overflow:hidden;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.15);cursor:crosshair}
.lm-mini img{position:absolute;max-width:none;pointer-events:none;opacity:.85}
.lm-mini-box{position:absolute;border:2px solid #0a6ed1;background:rgba(10,110,209,.12);border-radius:2px;pointer-events:none}
.lm-card{padding:12px 14px}
.lm-card-head{gap:4px}
.lm-card-code{display:flex;align-items:baseline;gap:8px;border:0;background:none;padding:0;font:700 24px/1.1 inherit;color:var(--primary);cursor:copy;text-align:left}
.lm-card-code span{font-size:11px;font-weight:500;color:var(--muted)}
.lm-card-head b em{font-style:normal;font-size:11px;color:#c000c0;margin-left:4px}
.lm-card dl{grid-template-columns:auto 1fr;gap:4px 10px}
.lm-card-line{display:flex;flex-wrap:wrap;gap:4px;margin-top:10px}
.lm-card-line button{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:2px 9px;font-size:11.5px;color:var(--muted);cursor:pointer}
.lm-card-line button.on{border-color:var(--primary);color:var(--primary);background:var(--primary-soft)}
.lm-card-step{display:flex;justify-content:space-between;gap:6px;margin-top:10px}
.lm-card-keys{margin:8px 0 0;font-size:11px;color:var(--muted)}
/* Board pages: sections line (edit by button), the LMS map with the board in green */
.board-sections .bs-text{flex:1;font-weight:600;font-size:13.5px}
.bs-notes{margin:0 16px;padding:6px 10px;border-radius:6px;background:#fff7e6;color:#8a5a00;font-size:12.5px}
.bs-hint-row{padding:6px 16px 0;font-size:12px}
.lm-embed .lm-tools{padding:10px 16px 0}
.board-body-full{grid-template-columns:1fr!important}
.lm-svg .lm-bdim{fill:#fff;opacity:.45}
.lm-svg .lm-name.board{stroke:#0d7a38;stroke-width:1.2px}
.board-sections [hidden]{display:none!important}
/* Station lists (Division Map, boards): fixed columns so headings line up with the data */
.st-list{table-layout:fixed;width:100%}
.st-list col.c-sl{width:42px}.st-list col.c-code{width:88px}.st-list col.c-km{width:96px}.st-list col.c-sec{width:68px}
.st-list th,.st-list td{text-align:left;padding:6px 8px!important;vertical-align:middle;overflow:hidden;text-overflow:ellipsis}
.st-list th.r,.st-list td.r{text-align:right}.st-list th.c,.st-list td.c{text-align:center}
.st-list td.left{white-space:normal}
.st-list td.dm-km{white-space:normal;max-width:none;font-variant-numeric:tabular-nums}
.st-list thead th{position:sticky;top:0;z-index:1;background:var(--bg)}
.lm-list{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:10px;max-height:78vh;min-width:0}
.lm-list-head{display:flex;align-items:baseline;gap:8px;font-size:14px}
.lm-list input[type=search]{height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:13px;background:var(--surface);color:var(--text)}
.lm-list-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}
.lm-list tr[data-lm-row]{cursor:pointer}
.lm-list tr[data-lm-row]:hover td{background:var(--primary-soft)}
.lm-list tr.on td{background:#dbeafe;color:#0a4fa0}
.lm-embed .lm-body.lm-with-card{grid-template-columns:minmax(0,1fr) 380px}
.board-body-full .board-stations{display:none}
/* LMS Map: km search results */
.lm-kmres{position:relative;margin:10px 16px 0;padding:8px 34px 8px 12px;border:1px solid #f0c36d;background:#fff8e6;border-radius:var(--radius-sm);font-size:13px}
.lm-kmres ul{margin:4px 0 0;padding-left:18px}
.lm-kmres li{margin:2px 0}
.lm-kmres li button{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:1px 8px;font-size:12px;color:var(--primary);cursor:pointer}
.lm-kmres em{font-style:normal;color:var(--muted);font-size:12px}
.lm-kmx{position:absolute;right:8px;top:6px;border:0;background:none;font-size:18px;cursor:pointer;color:var(--muted)}
.lm-svg .lm-kmpin{fill:rgba(232,89,12,.25);stroke:#e8590c;stroke-width:2.5px;vector-effect:non-scaling-stroke}
.lm-svg .lm-kmtag{fill:#e8590c;font-family:Arial,sans-serif;font-weight:700}
.view-only-tag{display:inline-flex;align-items:center;height:26px;padding:0 10px;border-radius:999px;background:#fff4e5;color:#9a5b00;border:1px solid #f3c98b;font-size:12px;font-weight:600;margin-right:6px}
/* Compact header: top bar, menu and page title take about half the height they did, so the page content gets the screen. */
.shell{min-height:0!important;height:44px!important;padding-top:0!important;padding-bottom:0!important}
.shell-logo{height:28px!important;min-width:0;padding:0 8px!important;font-size:13px!important;line-height:28px!important}
.shell-title{font-size:14px!important}
.shell-search input{height:32px!important}
.shell-user .avatar{width:28px!important;height:28px!important;line-height:28px!important}
.shell-when .sw-date{font-size:11px!important}.shell-when .sw-time{font-size:14px!important}
.tabbar .inner{min-height:0!important;padding-top:0!important;padding-bottom:0!important}
.tabbar a{padding:7px 12px!important;font-size:13.5px!important}
.page-head{padding:0!important;min-height:0!important}
.page-head .inner{display:flex!important;align-items:baseline;gap:14px;padding-top:8px!important;padding-bottom:8px!important;min-height:0!important}
.page-head h1{font-size:17px!important;margin:0!important;line-height:1.3!important;order:-1}
.page-head .crumbs{font-size:12px!important;margin:0!important}
/* Dashboard banner slimmer; train 30% smaller (was min(820px,62%)). */
@media(min-width:761px){.hero-inner{min-height:140px;padding-top:18px;padding-bottom:22px}.hero-train{width:min(574px,43%);bottom:10px}}
.hero h1{margin:6px 0 2px;font-size:24px}
/* Dashboard pipeline cards: lower height. */
@media(min-width:761px){.stage{padding:10px 14px 9px;column-gap:10px}.stage-icon{width:34px;height:34px;border-radius:10px}.stage-icon svg{width:17px;height:17px}.stage-num{font-size:22px}.stage-label{font-size:12.5px}.stage-sub{margin-top:6px;padding-top:5px;font-size:11.5px}}
/* Full width on every screen size: content uses the whole window (as the header does), with side margins; no fixed 1400 px cap. */
:root{--page-w:100%}
.tabbar .inner,.page-head .inner,.container,.container.wide,footer .inner,.hero-inner,.staff-strip .inner{max-width:none!important}
@media(min-width:761px){.container,.container.wide{padding-left:28px;padding-right:28px}.hero-inner,.page-head .inner,footer .inner{padding-left:48px;padding-right:48px}.tabbar .inner{padding-left:20px;padding-right:20px}}
@media(min-width:1201px){.dash-grid{grid-template-columns:minmax(0,1fr) clamp(380px,24%,560px)}}
/* ===== v9.8 Compact cards and tables on every tab (desktop) ===== */
@media(min-width:761px){
.container{padding-top:14px}
.container.work{padding-top:10px}
/* tool bars of the grids (UOR, Sheds, PPIO/RSO tabs) */
.workbar{padding:7px 14px!important;gap:8px 10px}
.wb-title h1{font-size:18px!important}
.workbar .btn,.workbar .tbtn,.workbar input[type=search],.workbar input[type=text],.workbar select{height:30px!important;min-height:0;font-size:13px}
.workbar .btn{padding:0 11px}
.seg{padding:2px}.seg a{padding:3px 10px;font-size:12.5px}
/* panel tool bars (Ops Planning, Movement Register, Mastersâ€¦) */
.toolbar{padding:8px 16px;gap:8px}
.toolbar-title{font-size:15px}
.filters input,.filters select,.filters .btn,.toolbar > .btn,.export .btn,.toolbar .btn,.tbtn{height:30px!important;font-size:13px}
.export .btn,.toolbar .btn{padding:0 12px}
.subtabs{margin-bottom:10px;gap:5px}.subtabs a{padding:4px 12px;font-size:13px}
.board-chip{padding-top:5px!important;padding-bottom:5px!important}
.hint{margin-top:4px;margin-bottom:8px}
/* sheet tables: shorter rows */
table.sheet thead th{padding-top:5px!important;padding-bottom:5px!important}
table.sheet td{padding-top:1px;padding-bottom:1px}
table.sheet td.cell textarea,table.sheet td.cell select,table.sheet td.cell input,
table.sheet.xl td.cell textarea,table.sheet.xl td.cell select,table.sheet.xl td.cell input{min-height:26px;padding-top:3px;padding-bottom:3px;line-height:18px}
table.sheet td.cell select,table.sheet td.cell input,table.sheet.xl td.cell select,table.sheet.xl td.cell input{height:26px;padding-top:0;padding-bottom:0}
table.sheet td.cell-stack select{height:22px!important;min-height:22px}
table.sheet tr.grp-row td,table.sheet.xl tr.grp-row td{height:26px;padding:0!important}
table.sheet tr.grp-row .grp-label{height:26px;font-size:12px}
table.sheet tr.grp-row .grp-count{height:18px;min-width:20px;font-size:11px}
.ro.overdue,.ro.due-soon,.ro.sched-ok{min-height:20px;padding:1px 8px;font-size:12px}
table.sheet td.cell-loco .cell-tags{top:4px}
/* a pair: numbers stacked, MU / Coupled tag at the right instead of a third line */
table.sheet td.cell-loco .pair-line{position:absolute;right:4px;bottom:3px;margin:0}
table.sheet td.cell-loco .pair-stack{line-height:17px;padding-top:2px;padding-bottom:2px}
/* other tables (Masters, lists) */
table.grid th,table.grid td{padding:6px 12px}
table.grid .empty{padding:20px}
.sheet-panel .empty-state{padding:24px}
/* dashboard */
.panel-head{padding:12px 16px 0;font-size:15px}
.sheds3{gap:10px;padding:10px 16px 14px}
.shedcard{gap:8px;padding:10px 12px;min-height:0;border-radius:10px}
.sc-name{font-size:14px}.sc-kind{font-size:11px}
.sc-count{min-width:32px;height:32px;border-radius:9px;font-size:15px}
.chips{gap:4px}
.chip-loco{padding:2px 7px;font-size:12px;border-radius:6px;gap:4px}
.chip-loco i{font-size:10.5px}
.chip-more{padding:2px 7px;font-size:11.5px}
.dash-main,.dash-side{gap:16px}
.pipeline{margin-bottom:16px}
.dash-grid{gap:16px}
table.sheet td.cell .rt,table.sheet.xl td.cell .rt,table.sheet.xl td.cell .rt:focus{min-height:26px;padding-top:4px;padding-bottom:4px}
table.sheet.xl td.cell-label,table.sheet.xl tr.pair-row td.cell-label,table.sheet td.cell-label,table.sheet td.num{padding-top:4px!important;padding-bottom:4px!important;line-height:18px}
.now-btn{top:2px;height:22px}
table.sheet td.del{padding-top:0!important;padding-bottom:0!important}table.sheet .del-btn{height:22px;width:auto;padding:0 9px;line-height:20px}
.wb-filters{gap:6px}.wb-filters input[type=search]{width:160px}
.wb-filters label{padding-top:2px!important;padding-bottom:2px!important}
.dash2{padding-top:20px}
.wb-filters input[type=search]{width:140px}
.wb-actions .btn,.wb-actions .tbtn{padding:0 9px}
.seg a{padding:3px 9px}
/* Movement Register: a coupled loco on one line (tick + partner chip) */
table.sheet td.cell input[type=checkbox]{height:15px!important;min-height:0!important;width:15px;padding:0!important;display:inline-block}
table.sheet td.cell-couple,table.sheet.xl td.cell-couple{white-space:nowrap;padding-top:2px!important;padding-bottom:2px!important}
table.sheet td.cell-couple .couple-toggle,table.sheet td.cell-couple .couple-sum{display:inline-flex!important;align-items:center;vertical-align:middle;margin:0 2px!important;min-height:0;height:22px}
table.sheet td.cell-couple.is-open .couple-toggle{font-size:0;gap:0}
table.sheet td.cell-couple .couple-sum{padding:0 7px;gap:4px}
table.sheet td.cell-label .ro[data-ro=status]{padding:1px 9px}
}
@media(min-width:1440px){.workbar{flex-wrap:nowrap!important}.wb-title{margin-right:auto;flex:none}.wb-filters{flex-wrap:nowrap}}
.sheet-panel .table-wrap[data-grid]{max-height:calc((100vh - 150px) / var(--z,1))}
/* Sheds heading on one line down to 1200 px wide screens: Excel / Word as icons (name on hover), tighter spacing */
@media(min-width:1200px){.workbar{flex-wrap:nowrap!important}.wb-title{margin-right:auto;flex:none}.wb-filters{flex-wrap:nowrap}}
@media(min-width:1200px) and (max-width:1535px){
.workbar{gap:6px!important;padding-left:12px!important;padding-right:12px!important}
.wb-title{gap:7px}.wb-title h1{font-size:17px!important}.wb-count{font-size:12px}
.wb-title .save-state{font-size:11px;padding:2px 7px}
.seg a{padding:3px 7px;font-size:12px}
.wb-filters{gap:5px}.wb-filters .picks label{padding:2px 6px!important;font-size:12px}
.wb-filters input[type=search]{width:110px}.wb-filters select{max-width:134px}
.wb-actions{gap:4px}.wb-actions a.tbtn{font-size:0;gap:0;padding:0 8px}.wb-actions a.tbtn svg{width:16px;height:16px}
}
/* v9.12 Page bar folded into the card heading (pagebar.js) */
.has-pagebar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 10px}
.has-pagebar .toolbar-title{margin-right:0}
.has-pagebar .head-state{margin-left:auto;display:inline-flex;align-items:center;gap:8px;order:99}
.has-pagebar .head-state .save-state{font-size:11.5px;padding:2px 9px}
.has-pagebar .head-state .tbtn,.has-pagebar .head-state summary{height:30px}
.det-summary .panel-head.has-pagebar .month-nav{margin-left:0}
.subtabs.in-head{margin:0 0 0 6px;gap:4px}
.subtabs.in-head a{padding:3px 11px;font-size:12.5px;border-radius:8px}
.info-tip{display:inline-grid;place-items:center;width:17px;height:17px;margin-left:6px;padding:0;border:1px solid #9fb0c2;border-radius:50%;background:#fff;color:#5b6f84;font:italic 700 11px/1 Georgia,serif;cursor:help;vertical-align:middle}
.info-tip:hover,.info-tip:focus{border-color:var(--primary);color:var(--primary);outline:none}
.tip-pop{position:fixed;z-index:1000;max-width:min(560px,calc(100vw - 16px));padding:9px 12px;border-radius:8px;background:#1d2d3e;color:#fff;font-size:12.5px;line-height:1.5;box-shadow:0 8px 24px rgba(0,0,0,.25);pointer-events:none}
.panel:has(> .has-pagebar){overflow:visible}
.panel:has(> .has-pagebar) > .has-pagebar{position:relative;z-index:30;border-radius:14px 14px 0 0}
.panel:has(> .has-pagebar) > :last-child:not(.has-pagebar){border-radius:0 0 14px 14px}
/* v9.16 A pair shown the same way everywhere: "32483+33144" and an MU tag only for Multi */
.chip-loco .pair-tag,.couple-sum .pair-tag,.pair-mark .pair-tag,.visit-pair .pair-tag,.sheet-grid td .pair-tag{cursor:default;align-self:center;vertical-align:middle;margin-left:2px;pointer-events:none}
.chip-loco .pair-tag{height:14px;font-size:8.5px}
.ro.pair-mark{display:inline-flex;align-items:center;gap:4px;height:auto;min-height:24px;padding:2px 10px;border-radius:12px;background:#e6f4f3;color:#0b5f59;font-size:12.5px}
.ro.pair-mark a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.visit-pair{margin-left:8px;font-size:12.5px;font-weight:500;color:var(--muted)}
.visit-pair a{color:var(--primary)}
table.sheet td.cell-couple .couple-sum small{margin-left:2px}
/* View zoom keeps every table box the same height (all tabs, not only Sheds) */
.table-wrap[data-grid]{max-height:calc((100vh - 230px) / var(--z,1))}
.sheet-panel .table-wrap[data-grid]{max-height:calc((100vh - 150px) / var(--z,1))}
@media(max-width:760px){.sheet-panel .table-wrap[data-grid]{max-height:none}}
/* v9.18 No jumping while a page loads */
.table-wrap[data-grid]{zoom:var(--z,1)}
html[data-grows="compact"] .table-wrap[data-grid]:not([data-rows]) td.cell textarea,html[data-grows="compact"] .table-wrap[data-grid]:not([data-rows]) td.cell select,html[data-grows="compact"] .table-wrap[data-grid]:not([data-rows]) td.cell input{min-height:24px;height:24px;padding-top:2px;padding-bottom:2px}
html[data-grows="compact"] .table-wrap[data-grid]:not([data-rows]) td.cell textarea{height:auto}
html[data-grows="compact"] .table-wrap[data-grid]:not([data-rows]) .stamp{display:none}
html[data-grows="tall"] .table-wrap[data-grid]:not([data-rows]) td.cell textarea{min-height:64px}
html[data-grows="tall"] .table-wrap[data-grid]:not([data-rows]) td.cell{padding-top:6px;padding-bottom:6px}
/* text cells take the height of their text by themselves (no jump when the script measures them) */
table.sheet td.cell textarea{field-sizing:content}
/* Movement Register and Masters: the card reaches down to the footer, like the Sheds card */
.pg-register .table-wrap[data-grid]{max-height:calc((100vh - var(--wrap-top,193px)) / var(--z,1))}
.pg-masters .table-wrap[data-grid]{max-height:calc((100vh - var(--wrap-top,233px)) / var(--z,1))}
/* change info under cells: hidden from the first paint unless turned on in View (was shown until grid.js hid it → rows jumped) */
.table-wrap[data-grid]:not([data-stamps="on"]) table.sheet .stamp{display:none}
html[data-gstamps="on"] .table-wrap[data-grid]:not([data-stamps]) table.sheet .stamp{display:block}
/* v9.20 Master search: compact, tidy */
.pg-search .container{padding-top:12px}
.pg-search .master-search{max-width:720px;padding:4px 4px 4px 12px;margin:0 0 12px;border-radius:10px;box-shadow:0 1px 2px rgba(29,45,62,.06);border:1px solid var(--border)}
.pg-search .master-search svg{width:16px;height:16px}
.pg-search .master-search input{height:32px;font-size:14px}
.pg-search .master-search .btn{height:32px;padding:0 16px;font-size:13px}
/* loco header line */
.pg-search .loco-flags{gap:6px;margin:0 0 12px}
.pg-search .loco-flags .lf-no{font-size:22px;letter-spacing:-.01em;margin-right:8px}
.pg-search .loco-flags .ro{min-height:22px;height:auto;padding:2px 9px;font-size:12px}
/* two cards side by side, same height */
.pg-search .sheet-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-bottom:14px}
.pg-search .panel-head{padding:10px 16px;font-size:14.5px;border-bottom:1px solid var(--border);display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px}
.pg-search .sheet-grid table th,.pg-search .sheet-grid table td{padding:6px 16px;font-size:13px;line-height:1.4;border-top:1px solid #edf1f5}
.pg-search .sheet-grid table tr:first-child th,.pg-search .sheet-grid table tr:first-child td{border-top:0}
.pg-search .sheet-grid table th{width:36%;color:var(--muted);font-weight:500;background:#fafbfd}
.pg-search .sch-all{line-height:1.7}
.pg-search .sch-item{margin-right:10px;white-space:nowrap;font-size:12.5px}
/* Current Visit: a neat vertical timeline */
.pg-search .steps{grid-template-columns:1fr;gap:0;padding:6px 16px 10px;position:relative}
.pg-search .steps li{border:0;background:none!important;border-radius:0;padding:7px 0;gap:12px;align-items:center;opacity:.55;position:relative}
.pg-search .steps li:not(:last-child)::after{content:"";position:absolute;left:11px;top:31px;bottom:-7px;width:2px;background:#e3e9ef}
.pg-search .steps li.done:not(:last-child)::after{background:#9fd3b2}
.pg-search .steps li.done{opacity:1}
.pg-search .steps li.skip{opacity:.7}
.pg-search .steps li > div{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.pg-search .steps b{display:inline;font-size:13px;min-width:110px}
.pg-search .steps small{font-size:12.5px}
.pg-search .steps .dot{width:24px;height:24px;font-size:11.5px;position:relative;z-index:1}
/* Health summary: one row of small tiles */
.pg-search .container.wide > .panel + .panel,.pg-search .sheet-grid + .panel{margin-top:14px}
.pg-search .hs-grid{grid-template-columns:repeat(4,minmax(0,1fr)) minmax(0,1.6fr);gap:10px;padding:12px 16px 14px}
.pg-search .hs{padding:9px 12px;border-radius:10px;gap:2px}
.pg-search .hs small{font-size:10.5px}
.pg-search .hs b{font-size:16px}
.pg-search .hs b.hs-text{font-size:13px}
.pg-search .hs span{font-size:11.5px}
.pg-search .hs.hs-wide{grid-column:auto}
/* Case history legend: each dot stays with its word */
.pg-search .tl-legend{display:block;margin-left:auto;font-size:11.5px;line-height:1.6}
.pg-search .tl-legend i{margin:0 4px 0 12px;width:8px;height:8px}
.pg-search .case{padding:8px 16px 12px}
.pg-search .more-records{margin-top:14px}
/* "Found in Boards" and other result lists */
.pg-search .panel > .table-wrap table.grid th,.pg-search .panel > .table-wrap table.grid td,.pg-search .panel > table.grid th,.pg-search .panel > table.grid td{padding:6px 16px;font-size:13px}
@media(max-width:1100px){.pg-search .hs-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pg-search .sheet-grid{grid-template-columns:1fr}}
.pg-search .sheet-grid table{margin:0;border-collapse:collapse}.pg-search .sheet-grid .panel > table{margin-top:0}
/* v9.22 Ops Loco Position */
.pos-when{font-size:12.5px;color:var(--muted)}
.pos-when b{color:var(--text)}
.pos-when .ro{margin-left:6px}
.seg a small{color:var(--muted);font-weight:500;margin-left:2px}
.pos-q{height:30px;width:170px;border:1px solid var(--field);border-radius:7px;padding:0 10px;font:inherit;font-size:13px}
.pos-hist select{height:30px;border:1px solid var(--field);border-radius:7px;padding:0 8px;font:inherit;font-size:12.5px;background:#fff}
.pos-wrap{max-height:calc(100vh - 210px);overflow:auto}
.pos-table thead th{position:sticky;top:0;z-index:2}
.pos-table td{font-size:13px;padding:5px 12px!important}
.pos-table td.wrap{max-width:420px}
.pos-table .ro{min-height:20px;padding:1px 8px;font-size:12px}
.pos-flag{display:inline-block;margin-right:3px;padding:1px 6px;border-radius:5px;font-size:11px;font-weight:700;background:#eef2f7;color:#475b70}
.pos-flag.f-hs{background:#fde8e7;color:#b42318}
.pos-flag.f-ns{background:#fff4e0;color:#a15c00}
.pos-flag.f-ts{background:#e7f1ff;color:#0a5bb5}
.pos-new{display:inline-block;padding:0 5px;border-radius:4px;background:#f3e8ff;color:#6b2fb3;font-size:10.5px;font-weight:600}
.pos-warn{margin:8px 16px}
.pos-notes ul{margin:0;padding:10px 16px 14px 34px;columns:2 360px;column-gap:28px;font-size:12.5px;line-height:1.6}
.ro.ops-pos{display:inline-flex;align-items:center;min-height:22px;padding:2px 9px;border-radius:12px;background:#fff4e0;color:#8a4b00;font-size:12px;font-weight:600}
.ro.ops-pos:hover{text-decoration:none;background:#ffe9c2}
/* v9.23 Running Interchange */
.ic-table tr.ic-grp td{background:#eef2f6;font-weight:700;font-size:12.5px;padding:5px 12px!important;border-top:2px solid #d5dde6}
.ic-dir{display:inline-block;margin-right:6px;padding:1px 8px;border-radius:10px;font-size:11px;font-weight:700}
.ic-dir.ic-to{background:#e3f4ec;color:#11734b}
.ic-dir.ic-mo{background:#e7f1ff;color:#0a5bb5}
.ic-st{display:inline-block;padding:1px 7px;border-radius:5px;background:#f1f3f6;font-size:11.5px;font-weight:700;color:#3b4b5c}
.ic-times{font-variant-numeric:tabular-nums;color:#3b4b5c}
.ro.ic-mark{display:inline-flex;align-items:center;min-height:22px;padding:2px 9px;border-radius:12px;background:#e7f1ff;color:#0a5bb5;font-size:12px;font-weight:600}
.ro.ic-mark:hover{text-decoration:none;background:#d6e8ff}
/* v9.25 Dashboard Power Position + board filters / conflicts */
.power .panel-head{flex-wrap:wrap}
.pw-top{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:10px 16px 6px}
.pw-big{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border:1px solid var(--border);border-radius:10px;color:var(--text);background:linear-gradient(180deg,#fbfcfd,#fff)}
.pw-big:hover{text-decoration:none;border-color:#b9d4f1}
.pw-big b{font-size:22px;line-height:1.1;font-variant-numeric:tabular-nums}
.pw-big span{font-size:12px;color:var(--muted)}
.pw-big.pw-warn{border-color:#f3c4c0;background:#fff6f5}.pw-big.pw-warn b{color:var(--err)}
.pw-big.pw-ok b{color:var(--ok)}
.pw-chips,.pw-at{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 16px;font-size:12.5px;color:var(--muted)}
.pw-chips a,.pw-at a,.pw-pt a{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:12px;background:#eef2f7;color:#3b4b5c;font-size:12.5px}
.pw-chips a:hover,.pw-at a:hover,.pw-pt a:hover{text-decoration:none;background:#e1e8f0}
.pw-chips b,.pw-at b,.pw-pt b{color:var(--text)}
.pw-sep{width:1px;height:16px;background:var(--border);margin:0 2px}
.pw-chips a.pw-f-hs{background:#fde8e7}.pw-chips a.pw-f-ns{background:#fff4e0}.pw-chips a.pw-f-ts{background:#e7f1ff}
.pw-chips a.pw-bad{background:#fde8e7;color:#b42318}.pw-chips a.pw-soon{background:#fff4e0;color:#8a4b00}
.pw-ic{padding:4px 16px 6px}
.pw-ic-head{font-size:12.5px;color:var(--muted);margin-bottom:6px}
.pw-points{display:grid;grid-template-columns:repeat(auto-fill,minmax(178px,1fr));gap:6px}
.pw-pt{display:flex;align-items:center;gap:4px;padding:5px 8px;border:1px solid var(--border);border-radius:8px;font-size:12px}
.pw-pt > span{font-weight:700;margin-right:auto}
.pw-at{padding-bottom:12px}
.pos-filters{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 10px;font-size:12.5px;color:var(--muted)}
.pos-chip{padding:2px 9px;border-radius:12px;background:#e7f1ff;color:#0a5bb5;font-weight:600}
.pos-clear{font-weight:600}
.pos-conflicts{margin-bottom:14px;border:1px solid #f3c4c0}
.pos-conflicts .panel-head{background:#fff6f5;color:#8f1d14}
.pos-conflicts td{font-size:13px;padding:6px 12px!important;white-space:normal}
@media(max-width:900px){.pw-top{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* v9.28 + Add Loco in the combined Sheds views */
.add-menu{position:relative}
.add-menu > summary{list-style:none;cursor:pointer}
.add-menu > summary::-webkit-details-marker{display:none}
.add-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:40;display:flex;flex-direction:column;gap:6px;min-width:190px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#fff;box-shadow:0 10px 28px rgba(29,45,62,.16)}
.add-panel span{font-size:12px;color:var(--muted)}
.add-panel .tbtn{justify-content:flex-start;width:100%}
.sheet-panel:has(.add-menu[open]),.sheet-panel:has(.view-menu[open]){overflow:visible}
.workbar:has(.add-menu[open]){position:relative;z-index:45}
/* v9.31 Schedule Due on the tables: only the date; the whole cell is red (overdue) / amber (due in 5 days), days on hover */
table.sheet td.cell-label:has(> .ro.overdue){background:#fde8e7!important}
table.sheet td.cell-label:has(> .ro.due-soon){background:#fff4e0!important}
table.sheet td.cell-label > .ro.overdue,table.sheet td.cell-label > .ro.due-soon{display:inline;min-height:0;height:auto;padding:0;border-radius:0;background:none;font-size:13px;font-weight:700}
table.sheet td.cell-label > .ro.overdue{color:#b42318}
table.sheet td.cell-label > .ro.due-soon{color:#8a4b00}
/* v9.33 Interchange trail in Case History */
.k-interchange,.c-interchange .c-dot{background:#0e7490!important}
/* v9.36 System Health */
.health-table td{padding:7px 14px!important;font-size:13px}
.hl-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:0;background:#16a34a}
.hl-warn .hl-dot{background:#d97706}.hl-bad .hl-dot{background:#dc2626}
.hl-warn td:first-child{color:#8a4b00;font-weight:600}.hl-bad td:first-child{color:#b42318;font-weight:700}
.hl-bad{background:#fff6f5}
.health-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 12px;padding:8px 14px;border-radius:10px;border:1px solid #f4d9a8;background:#fff8ec;color:#7a4500;font-size:13px}
.health-bar.hb-bad{border-color:#f3c4c0;background:#fff3f2;color:#8f1d14}
.health-bar span{margin-left:auto;font-weight:600}
.health-bar:hover{text-decoration:none;filter:brightness(.98)}
/* v9.37 Notices: bell in the top bar + page */
.shell-bell{position:relative;display:inline-grid;place-items:center;width:34px;height:34px;border-radius:9px;color:#c9d6e3}
.shell-bell:hover{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}
.shell-bell.has-new{color:#fff}
.bell-n{position:absolute;top:1px;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#dc2626;color:#fff;font-size:10.5px;font-weight:700;line-height:17px;text-align:center}
.notices-table td{padding:7px 12px!important;font-size:13px;vertical-align:top}
.notices-table .hl-dot{margin-top:5px}
.nt-error .hl-dot{background:#dc2626}.nt-warn .hl-dot{background:#d97706}.nt-info .hl-dot{background:#2563eb}
.nt-read{opacity:.55}
.notices-table details summary{cursor:pointer;color:var(--primary);font-size:12px}
.notices-table pre{white-space:pre-wrap;font-size:11.5px;max-height:220px;overflow:auto;background:#f6f8fa;padding:8px;border-radius:6px;margin:4px 0 0}
.head-state form{display:inline}
/* v9.38 Ops Loco Position grouped like the sheet */
.pos-table tr.pos-grp td{background:#eef2f6;font-weight:700;font-size:12.5px;letter-spacing:.02em;padding:6px 12px!important;border-top:2px solid #d5dde6}
.pos-table tr.pos-grp.g-dsl td{background:#fdf3e7;border-top-color:#f0d3a8;color:#7a4500}
.pos-table tr.pos-grp.g-elec td{background:#e9f1fb;border-top-color:#c4d8f0;color:#0a4a91}
.pos-table tr.pos-grp.g-alco td{background:#f3eefb;border-top-color:#d9cbef;color:#5b2a9a}
.pos-table tr.pos-grp.g-lms td{background:#e8f5ef;border-top-color:#bfe3cf;color:#11603d}
.pos-table tr.pos-grp .grp-count{display:inline-grid;place-items:center;min-width:22px;height:18px;margin-left:6px;padding:0 6px;border-radius:9px;background:rgba(0,0,0,.08);font-size:11px}
.pos-tag{display:inline-block;padding:0 5px;border-radius:4px;background:#eef2f7;color:#5b6f84;font-size:10.5px;font-weight:600}
.pos-table tr.pos-grp.g-duty td{background:#fff8e1;border-top-color:#f0dca0;color:#7a5a00}
.pos-table tr.pos-grp .grp-sub{margin-left:6px;font-weight:500;font-size:11.5px;opacity:.8}
.pos-rcol{padding:6px 16px;font-size:12px;color:var(--muted,#5b6f84)}
.grp-type{display:inline-block;margin-left:8px;font-weight:500;font-size:11.5px;opacity:.85;white-space:nowrap}.grp-type b{font-weight:700}.grp-type.grp-zero{opacity:.55}
/* v9.41 Schedule check */
.sc-table td{padding:7px 12px!important;font-size:13px;vertical-align:middle}
.sc-act{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sc-act form{display:inline}
.sc-col{height:28px;border:1px solid var(--field);border-radius:7px;padding:0 6px;font:inherit;font-size:12.5px}
.subtabs a.sc-has:not(.active){border-color:#f0c48a;color:#8a4b00}
.add-hint{display:block;margin-top:2px;font-size:11.5px;color:var(--muted);line-height:1.4}
table.sheet td.cell-loco input::placeholder{color:#b3bfcb;font-weight:400;text-transform:none;font-size:11.5px}
/* v9.49 ?hl= highlight of a loco row (links from Master search) */
@keyframes hlflash{0%,100%{background:#ffe58a}50%{background:#fff7d1}}
tr.hl-row > td{background:#fff3c4!important;animation:hlflash 1.1s ease-in-out 3}
tr.hl-row > td:first-child{box-shadow:inset 4px 0 0 #f5b400}
tr.hl-row td.cell input,tr.hl-row td.cell textarea,tr.hl-row td.cell select{background-color:transparent!important}

/* Ops Planning ↔ Ops sheet (9.52) */
.ro.ops-left{color:#b42318;font-weight:600}
.ro.ops-left a{color:inherit}
.pill-left{background:#fdecea;color:#b42318}
a.pos-ops{background:#e6f4ea;color:#1e7b3a;text-decoration:none;margin-left:4px}

/* Masters → Boards: sections not under any board (9.59) */
.unc-panel{border-left:3px solid #e0a100}
.unc-table td.wrap{white-space:normal;max-width:720px}
.unc-table select{max-width:160px}

/* Master search results: wide, detailed (9.61) */
.search-page{max-width:none}
.sr-summary{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.sr-chip{display:inline-flex;gap:6px;align-items:center;padding:4px 10px;border-radius:999px;background:var(--surface,#fff);border:1px solid var(--border,#dfe5ec);text-decoration:none;color:inherit;font-size:13px}
.sr-chip b{color:var(--accent,#1a6fd1)}
.sr-locos td{vertical-align:top}
.sr-locos td.wrap{white-space:normal;min-width:180px;max-width:360px}
.sr-station{padding:10px 14px;border-top:1px solid var(--border,#eef1f5)}
.sr-st-head{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}
.sr-st-head .head-link{margin-left:auto}
.sr-st-line{margin-top:6px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.sr-st-line small{color:var(--muted,#6b7a8a);margin-right:4px}
.chip.chip-plain{background:#f3f6f9;color:#334;cursor:default}
/* UOR Google Sheet: case history dot, UOR tab "UOR Sheet" cell, loco page reports */
.k-uor,.c-uor .c-dot{background:#7c3aed!important}
.ro.uor-on{color:var(--muted)}
.ro.uor-off{color:var(--warn);font-weight:600}
.ro.uor-off a,.ro.uor-on a{color:inherit}
table.sheet td.cell-label:has(> .ro.uor-off){background:#fff4e0!important}
.uor-flag{display:inline-block;padding:0 7px;border-radius:9px;font-size:12px;font-weight:600;background:var(--primary-soft)}
.uor-flag.f-hs{background:#fde8e7;color:var(--err)}.uor-flag.f-ns{background:#e8f0fe;color:#1d4ed8}.uor-flag.f-ts{background:#fff4e5;color:var(--warn)}
.uor-read{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;margin-right:4px}
/* Planned Locos (UOR sheet list) */
.pl-filter{margin:0 16px 10px;display:inline-flex}
.pl-table td.lines div+div{margin-top:4px}
.pl-table tr.pl-check td{background:#fff8e6}
.pl-note{font-size:12px;color:var(--warn);font-weight:600;margin-top:2px}
/* Available in Division (Ops board electric locos for planning) */
.av-table .av-as{font-size:11.5px;margin-top:2px}
.pos-flag.f-dead{background:#fde8e7;color:var(--err)}
.pos-flag.f-60kmph,.pos-flag[class*="kmph"]{background:#fff4e0;color:var(--warn)}
.pw-chips a.pw-avail{background:#e6f4ea}
.pw-chips a.pw-toplan.pw-warn{background:#fff4e0}
/* v9.68 section count cards – rows=locos */
.grp-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px}
.grp-head .grp-name{font-weight:700}
.cnt-cards{display:inline-flex;flex-wrap:wrap;gap:6px;vertical-align:middle;margin-left:6px}
.grp-head .cnt-cards{margin-left:0}
.cnt-card{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;min-width:58px;padding:3px 9px;border:1px solid rgba(0,0,0,.1);border-radius:8px;background:#fff;color:#1f2d3d;line-height:1.15;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.cnt-card small{font-size:10px;font-weight:600;letter-spacing:.02em;color:#5b6f84;white-space:nowrap}
.cnt-card b{font-size:13.5px;font-weight:700;white-space:nowrap}
.cnt-card.cnt-total{background:#0a4a91;border-color:#0a4a91;color:#fff}
.cnt-card.cnt-total small{color:rgba(255,255,255,.8)}
.cnt-card.cnt-zero{opacity:.5}
.panel-head .cnt-cards{margin:0 8px}
/* v9.70 heading locos in their list: DEAD shown, not counted; fields from the Loco Master */
.pos-table tr.pos-dead td{background:#fdf1f1;color:#8a5a5a}
.pos-table tr.pos-dead td.nowrap>a b,.pos-table tr.pos-dead td.nowrap>b{text-decoration:line-through;text-decoration-color:rgba(176,32,32,.6)}
.pos-table tr.pos-head-loco td{background:#fff9ec}
.pos-tag.pos-tag-dead{background:#b02020;color:#fff;white-space:nowrap}
.pos-master{font-style:italic;color:#7b8a99}
.subtabs-run{display:inline-flex;align-items:center;gap:8px;margin-left:auto;font-size:12.5px}
.subtabs{align-items:center}

/* 10.6: dropdown cells (Wkg/Dead, Current Location …) use the full width – no room kept for the arrow, no "…"; the arrow
   shows on hover over the right edge, a click opens the list – so such columns can be made as narrow as their text */
table.sheet.xl td.cell select{padding-left:3px;padding-right:3px;text-overflow:clip;background-position:right 1px center;background-size:12px}
table.sheet.xl tr.pair-row td.cell.cell-stack select,table.sheet.xl tr td.cell.cell-stack select{padding-left:3px!important;padding-right:3px!important;text-overflow:clip;background-position:right 1px center}
/* 10.9: Sheds view in two parts – ELS/LDH (its own columns) and the trip sheds (the UR position sheet's) */
.sheds-part + .sheds-part{margin-top:14px;border-top:1px solid var(--border)}
.sheds-part-title{font-size:14px;font-weight:600;margin:10px 16px 6px}
/* 10.7: a sheet is exactly as wide as its columns – no stretching to the screen, so narrowing one column never widens the others */
table.sheet.xl{min-width:0!important}
