:root{--bg:#071116;--panel:#0c1a20;--panel2:#10242c;--line:#203741;--text:#eef7f6;--muted:#94aaa8;--teal:#19b59f;--green:#31c36b;--amber:#f0b541;--blue:#4aa3ff;--red:#f16d6d}
*{box-sizing:border-box}
html{background:var(--bg)}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;min-height:100vh}
button,input,select{font:inherit}
header{position:sticky;top:0;z-index:5;display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px 22px;background:rgba(7,17,22,.97);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
h1{margin:0;font-size:clamp(1.35rem,3vw,2rem);letter-spacing:.03em}
header p{margin:5px 0 0;color:var(--muted)}
.header-actions,.modal-actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{border:1px solid var(--line);border-radius:10px;padding:10px 13px;color:var(--text);background:var(--panel2);text-decoration:none;font-weight:800;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;justify-content:center;text-align:center}
.btn:focus-visible,.mode-btn:focus-visible,.sum:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(74,163,255,.55);outline-offset:2px}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.primary{background:var(--teal);color:#04110f;border-color:transparent}
.btn.complete{background:var(--blue);color:#05111c;border-color:transparent}
.btn.dispatch{background:#596c77;border-color:#7d919c}
.btn.ghost{background:transparent}
.btn.install{background:#e6f6f2;color:#06221d;border-color:transparent}
main{padding:18px;width:100%;margin:auto}
.connection-status{display:block;margin-top:6px;color:#ffd782;font-size:.8rem}
.connection-status.is-live{color:#9ef0bd}
.status-age{color:var(--muted);font-size:.8rem;margin:0 0 12px}
.toolbar .search-label{flex:1}
.toolbar .search-label input{width:100%}
.door.pooled{border-left-color:var(--teal)}
.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.mode-btn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;min-height:72px}
.mode-btn.active{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);background:#0c2427}
.mode-icon{font-size:1.7rem}
.mode-btn strong{display:block;font-size:1rem}
.mode-btn small{display:block;color:var(--muted);font-weight:600;margin-top:3px}
.view-banner{margin:0 0 12px;border:1px solid var(--line);border-radius:12px;background:#0a171d;padding:10px 13px}
.view-banner div{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap}
.view-banner strong{text-transform:uppercase;letter-spacing:.08em;font-size:.83rem;color:#d9f7f2}
.view-banner span{color:var(--muted);font-size:.9rem}
.summary{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}
.sum{appearance:none;text-align:left;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer}
.sum strong{display:block;font-size:1.65rem}
.sum span{color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.1em}
.sum-available{border-bottom:3px solid var(--green)}
.sum-loading{border-bottom:3px solid var(--amber)}
.sum-loading-complete{border-bottom:3px solid var(--blue)}
.toolbar{display:flex;gap:12px;justify-content:space-between;align-items:end;margin:10px 0 16px}
.toolbar label{font-size:.8rem;color:var(--muted);display:grid;gap:5px}
.toolbar input,.toolbar select,dialog input{background:#08171d;color:var(--text);border:1px solid var(--line);border-radius:9px;padding:11px;font-size:16px;min-width:180px;min-height:44px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.door{background:var(--panel);border:1px solid var(--line);border-left:7px solid #40525a;border-radius:13px;padding:13px;min-width:0;display:flex;flex-direction:column}
.door.available{border-left-color:var(--green)}
.door.loading{border-left-color:var(--amber)}
.door.loading-complete{border-left-color:var(--blue)}
.door-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.door-num{font-size:1.5rem;font-weight:950}
.badge{font-size:.72rem;padding:5px 8px;border-radius:999px;background:#172b33;white-space:nowrap;font-weight:800}
.door.available .badge{color:#9ef0bd}
.door.loading .badge{color:#ffd782}
.door.loading-complete .badge{color:#a8d3ff}
.details{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:13px 0 7px}
.details div{background:#09181e;border-radius:9px;padding:9px;min-width:0}
.details small{display:block;color:var(--muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.06em}
.details b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.08rem;margin-top:2px}
.door-helper{color:var(--muted);font-size:.78rem;line-height:1.3;margin:0 0 10px;min-height:2.1em}
.door-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:auto}
.door-actions .btn{flex:1;padding:9px;min-height:42px;font-size:.82rem}
.door-actions .big-action{min-height:50px;font-size:.9rem}
.waiting-label{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;padding:8px;border:1px dashed #29414c;border-radius:9px;color:var(--muted);font-size:.78rem;text-align:center}
body[data-mode="driver"] .door{min-height:225px}
body[data-mode="driver"] .door-num{font-size:1.7rem}
body[data-mode="driver"] .details b{font-size:1.18rem}
.activity{margin-top:22px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px}
.section-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px}
.section-title h2{margin:0;font-size:1rem;text-transform:uppercase;letter-spacing:.12em}
.section-title span{color:var(--muted)}
.event{display:grid;grid-template-columns:90px 78px 1.1fr 1fr 1fr;gap:8px;padding:9px 2px;border-bottom:1px solid #172a32;font-size:.84rem;align-items:center}
.event:last-child{border:0}
.muted{color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text);width:min(94vw,480px);padding:0}
dialog::backdrop{background:rgba(0,0,0,.72)}
#modalContent{padding:20px}
#modalContent h3{margin-top:0;font-size:1.4rem}
#modalContent p{line-height:1.45}
#modalContent label{display:grid;gap:6px;margin:14px 0;color:var(--muted);font-size:.85rem}
#modalContent input{width:100%;font-size:20px;font-weight:800;padding:13px}
.modal-note{font-size:.82rem;color:var(--muted)}
.modal-actions{padding:14px 20px;border-top:1px solid var(--line);justify-content:flex-end}
#toast{position:fixed;right:18px;bottom:18px;z-index:10;background:#13252c;border:1px solid var(--line);padding:11px 14px;border-radius:10px;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;max-width:min(92vw,420px)}
#toast.show{opacity:1;transform:none}
@media(max-width:720px){
 header{position:static;align-items:flex-start;flex-direction:column;padding:13px 12px}.header-actions{width:100%}.header-actions .btn{flex:1;padding-inline:8px;font-size:.82rem}
 main{padding:10px}.mode-switch{gap:7px}.mode-btn{padding:11px;min-height:68px;gap:8px}.mode-icon{font-size:1.4rem}.mode-btn small{font-size:.68rem}.mode-btn strong{font-size:.88rem}
 .summary{grid-template-columns:repeat(4,1fr);gap:5px}.sum{padding:9px 7px;text-align:center}.sum strong{font-size:1.35rem}.sum span{font-size:.58rem;letter-spacing:.03em}
 .toolbar{align-items:stretch;flex-direction:column;gap:8px}.toolbar input,.toolbar select{width:100%}
 .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.door{padding:10px;border-left-width:5px;min-height:0}.door-num{font-size:1.3rem!important}.badge{font-size:.6rem;padding:4px 6px}.details{grid-template-columns:1fr;margin:8px 0 6px}.details div{padding:7px}.details b{font-size:1rem!important}.door-helper{font-size:.69rem;min-height:2.6em;margin-bottom:7px}.door-actions{display:grid;grid-template-columns:1fr}.door-actions .big-action{min-height:50px;font-size:.78rem;padding:8px 5px}.waiting-label{font-size:.68rem;min-height:40px}
 .event{grid-template-columns:68px 72px 1fr;font-size:.76rem}.event .hide-mobile{display:none}
 .activity{padding:10px}.section-title h2{font-size:.83rem}
}
@media(max-width:390px){.grid{grid-template-columns:1fr}.summary{grid-template-columns:repeat(2,1fr)}.door-helper{min-height:0}.mode-btn small{display:none}}


/* Mode-specific attention alerts */
@keyframes door-attention-flash {
  0%, 100% { box-shadow: 0 0 0 2px rgba(255,255,255,.06), 0 0 0 rgba(255,255,255,0); filter: brightness(1); }
  50% { box-shadow: 0 0 0 3px currentColor, 0 0 24px currentColor; filter: brightness(1.35); }
}
body[data-mode="desk"] .door.available.attention-flash {
  color: var(--green);
  animation: door-attention-flash 1s ease-in-out infinite;
}
body[data-mode="driver"] .door.loading-complete.attention-flash {
  color: var(--blue);
  animation: door-attention-flash 1s ease-in-out infinite;
}
body[data-mode="desk"] .door.available.attention-flash .door-top,
body[data-mode="desk"] .door.available.attention-flash .details,
body[data-mode="desk"] .door.available.attention-flash .door-helper,
body[data-mode="desk"] .door.available.attention-flash .door-actions,
body[data-mode="driver"] .door.loading-complete.attention-flash .door-top,
body[data-mode="driver"] .door.loading-complete.attention-flash .details,
body[data-mode="driver"] .door.loading-complete.attention-flash .door-helper,
body[data-mode="driver"] .door.loading-complete.attention-flash .door-actions { color: var(--text); }
@media (prefers-reduced-motion: reduce) {
  .door.attention-flash { animation: none !important; box-shadow: 0 0 0 3px currentColor, 0 0 18px currentColor; }
}

/* Out of Service state */
.sum-out-of-service{border-bottom:3px solid var(--red);background:#2a1114}
.door.out-of-service{border:3px solid #ff5252;border-left-width:10px;background:#2a0d10;box-shadow:inset 0 0 0 2px rgba(255,82,82,.16)}
.door.out-of-service .door-num{color:#fff}
.door.out-of-service .badge{background:#ff3d3d;color:#fff;font-weight:950;letter-spacing:.04em}
.oos-warning{display:flex;align-items:center;justify-content:center;gap:10px;background:#d71920;color:#fff;border-radius:9px;padding:10px;margin-bottom:10px;text-align:left}
.oos-warning .oos-icon{font-size:1.7rem}
.oos-warning strong{display:block;font-size:1rem;letter-spacing:.08em}
.oos-warning small{display:block;font-weight:900;letter-spacing:.05em;margin-top:2px}
.danger-wait{border:2px solid #ff5252!important;background:#3a1115!important;color:#fff!important;font-size:.95rem!important;font-weight:950!important;letter-spacing:.08em}
.btn.service-off{background:#4a171b;border-color:#a93c43;color:#ffd9dc;flex-basis:100%}
.btn.service-on{background:#173c27;border-color:#2e9154;color:#d9ffe7;flex-basis:100%}
.modal-danger{background:#431318;border:1px solid #a83a43;color:#fff;border-radius:10px;padding:13px;margin-bottom:12px}
.modal-danger b{font-size:1.05rem}
.modal-danger p{margin:.4rem 0 0;color:#ffd8db}
.btn.danger-action{background:#d71920;color:#fff;border-color:#ff6268}
body[data-mode="driver"] .door.out-of-service{min-height:245px}
@media(max-width:720px){.summary{grid-template-columns:repeat(5,1fr)}.sum-out-of-service span{font-size:.52rem}.oos-warning{padding:8px;gap:7px}.oos-warning .oos-icon{font-size:1.4rem}.oos-warning strong{font-size:.82rem}.oos-warning small{font-size:.62rem}.door.out-of-service{border-left-width:7px}}
@media(max-width:520px){.summary{grid-template-columns:repeat(3,1fr)}}

/* Card quick-edit */
.door[data-door-card]{cursor:default}
.edit-hint{display:block;margin:-2px 0 9px;color:#6f8a88;font-size:.66rem;font-weight:700;letter-spacing:.02em}
.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#modalContent select{width:100%;background:#08171d;color:var(--text);border:1px solid var(--line);border-radius:9px;padding:11px;font-size:16px;min-height:44px}
.check-row{display:flex!important;grid-template-columns:none!important;align-items:center;gap:10px!important;color:var(--text)!important;background:#111f25;border:1px solid var(--line);border-radius:10px;padding:11px;margin-top:14px!important}
.check-row input{width:22px!important;height:22px;min-height:0!important;margin:0;accent-color:#f16d6d}
@media(max-width:520px){.edit-grid{grid-template-columns:1fr}.edit-hint{font-size:.62rem}}

/* Reliable mobile card editing */
.card-edit-btn{display:none;border:1px solid var(--line);background:#10242c;color:var(--muted);border-radius:8px;min-height:38px;padding:7px 10px;margin:0 0 8px;font-weight:800;font-size:.75rem}
@media (hover:none), (pointer:coarse){
  .door[data-door-card]{-webkit-touch-callout:none;user-select:none}
  .edit-hint{color:#9bb4b1}
  .card-edit-btn{display:inline-flex;align-items:center;justify-content:center;align-self:flex-start}
}


/* Shared nightly Excel archive browser */
.archives-modal{width:min(760px,94vw);max-height:82vh;padding:0;border:1px solid var(--line);border-radius:16px;background:var(--panel);color:var(--text)}
.archives-modal::backdrop{background:rgba(0,0,0,.68);backdrop-filter:blur(3px)}
.archives-dialog{padding:18px}
.archives-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding-bottom:14px;border-bottom:1px solid var(--line)}
.archives-head h3{margin:0 0 4px;font-size:1.25rem}
.archives-head p{margin:0;color:var(--muted);font-size:.88rem}
.archives-list{display:grid;gap:8px;padding-top:14px;max-height:60vh;overflow:auto}
.archive-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border:1px solid var(--line);border-radius:11px;background:#09181e;color:var(--text);text-decoration:none}
.archive-row:hover{border-color:var(--teal);background:#0c2328}
.archive-row strong{display:block;font-size:1rem}
.archive-row small{display:block;color:var(--muted);margin-top:3px;word-break:break-word}
.archive-download{color:#b7efe6;font-weight:800;font-size:.82rem;white-space:nowrap}
.archive-error{color:#ffb7b7}
@media (max-width:620px){.archive-row{align-items:flex-start;flex-direction:column}.archive-download{white-space:normal}.archives-head{align-items:center}}
