/* Los Santos CAD/MDT - retro "Visual MCT" terminal theme.
   Win2k-era chrome: grey bevels, navy titlebar, chunky F-key toolbar,
   monospace data returns - organized with modern color-coded alert chips. */

* { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --chrome:    #d4d0c8;
  --chrome-dk: #808080;
  --chrome-lt: #ffffff;
  --navy:      #0a246a;
  --navy-lt:   #a6caf0;
  --ink:       #1a1a1a;
  --red:       #c00000;
  --amber:     #b36b00;
  --green:     #0a6b1d;
  --blue:      #0b46a3;
  --mono:      Consolas, 'Courier New', monospace;
}

html, body { height: 100%; }
body {
  font-family: Tahoma, 'Segoe UI', Verdana, sans-serif;
  font-size: 13px;
  color: var(--ink);
  background: #3a6ea5;   /* classic desktop teal-blue */
}
body.plain { background: #10141c; }

.bevel-out { border: 2px solid; border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt); }

/* ── Window chrome ─────────────────────────────────────────────────────────── */
.mct-window {
  display: flex; flex-direction: column;
  height: 100vh;
  background: var(--chrome);
  border: 2px solid; border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt);
}

.mct-titlebar {
  display: flex; align-items: center; gap: 6px;
  background: linear-gradient(90deg, var(--navy), #3a6ea5 70%, var(--navy-lt));
  color: #fff; font-weight: bold; font-size: 12px;
  padding: 3px 8px; flex: 0 0 auto;
}
.mct-titlebar-right { margin-left: auto; display: flex; gap: 14px; font-weight: normal; }
.mct-titlebar-clock { font-family: var(--mono); }

/* ── Function-key toolbar ──────────────────────────────────────────────────── */
.mct-toolbar {
  display: flex; gap: 3px; padding: 4px; flex: 0 0 auto;
  background: var(--chrome);
  border-bottom: 1px solid var(--chrome-dk);
  overflow-x: auto;
}
.fkey {
  display: flex; flex-direction: column; align-items: center;
  min-width: 66px; padding: 3px 6px 4px;
  background: var(--chrome); cursor: pointer;
  border: 2px solid; border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt);
  font-family: inherit; font-size: 11px; color: var(--ink);
}
.fkey:active, .fkey.pressed { border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk); background: #c8c4bc; }
.fkey:disabled { color: #888; cursor: default; }
.fkey .fk { align-self: flex-start; font-size: 9px; font-weight: bold; color: var(--red); }
.fkey .fi { font-size: 15px; line-height: 1.1; }
.fkey .fl { font-size: 10px; white-space: nowrap; }
.fkey-panic { border-color: #ff6b6b #7a0000 #7a0000 #ff6b6b; background: #e8b0b0; margin-left: auto; }
.fkey-panic .fl { color: var(--red); font-weight: bold; }

/* ── Alert strip ───────────────────────────────────────────────────────────── */
.mct-alertbar { flex: 0 0 auto; }
.alert-line {
  display: flex; align-items: center; gap: 10px;
  padding: 5px 10px; font-weight: bold; font-size: 12px;
  border-bottom: 1px solid var(--chrome-dk);
}
.alert-panic { background: #ffd800; color: #7a0000; animation: alertflash 0.8s step-end infinite; }
.alert-bolo  { background: #ffe9c2; color: #6b4a00; }
.alert-anpr  { background: #ffd6d6; color: #7a0000; }
.alert-line .btn { margin-left: auto; }
@keyframes alertflash { 0% { background: #ffd800; } 50% { background: #ff5252; color: #fff; } }

/* ── Body: nav + main ──────────────────────────────────────────────────────── */
.mct-body { display: flex; flex: 1 1 auto; min-height: 0; }

.mct-nav {
  flex: 0 0 172px; overflow-y: auto;
  background: var(--chrome);
  border-right: 2px solid; border-right-color: var(--chrome-lt);
  padding: 4px; display: flex; flex-direction: column;
}
.nav-group { font-size: 9px; font-weight: bold; color: #555; padding: 8px 6px 2px; letter-spacing: 0.08em; }
.mct-nav a {
  display: block; padding: 4px 8px; margin: 1px 0;
  color: var(--ink); text-decoration: none; font-size: 12px;
  border: 1px solid transparent;
}
.mct-nav a:hover { border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt); }
.mct-nav a.on { background: var(--navy); color: #fff; }
.mct-nav .badge {
  background: var(--red); color: #fff; font-size: 10px; font-weight: bold;
  padding: 0 5px; margin-left: 4px;
}
.nav-foot { margin-top: auto; padding: 8px 6px; border-top: 1px solid var(--chrome-dk); }
.nav-user { font-weight: bold; font-size: 12px; }
.nav-fac { font-size: 10px; color: #555; margin-bottom: 6px; }

.mct-main { flex: 1 1 auto; overflow-y: auto; padding: 10px; background: #e8e6e0; }

/* ── Status bar ────────────────────────────────────────────────────────────── */
.mct-statusbar {
  display: flex; gap: 0; flex: 0 0 auto; font-size: 11px;
  background: var(--chrome); border-top: 1px solid var(--chrome-lt);
}
.mct-statusbar > span {
  padding: 3px 10px;
  border: 1px solid; border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk);
  margin: 2px 1px; font-family: var(--mono); white-space: nowrap;
}
.sb-spring { flex: 1 1 auto; border: none !important; }
.sb-status { font-weight: bold; }
.sb-link { color: var(--green); }
.sb-link.down { color: var(--red); }

/* ── Panels / typography ───────────────────────────────────────────────────── */
.panel {
  background: #fff; margin-bottom: 10px;
  border: 2px solid; border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk);
}
.panel-title {
  background: var(--navy); color: #fff;
  font-size: 11px; font-weight: bold; letter-spacing: 0.06em;
  padding: 4px 8px;
}
.panel-title:not(:first-child) { margin-top: 10px; }
.panel > *:not(.panel-title) { margin: 8px; }
.panel-count { float: right; font-family: var(--mono); }

.page-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; flex-wrap: wrap; gap: 8px; }
.page-head h1 { font-size: 16px; color: var(--navy); letter-spacing: 0.03em; }

.mono { font-family: var(--mono); }
.prewrap { white-space: pre-wrap; }
.empty { color: #777; padding: 10px; font-style: italic; }

/* ── Tables ────────────────────────────────────────────────────────────────── */
.tbl { width: calc(100% - 16px); border-collapse: collapse; font-size: 12px; }
.tbl th {
  background: var(--chrome); text-align: left; font-size: 10px; letter-spacing: 0.05em;
  padding: 4px 6px; border: 1px solid var(--chrome-dk);
}
.tbl td { padding: 4px 6px; border: 1px solid #c8c8c8; vertical-align: top; }
.tbl tr:nth-child(even) td { background: #f4f3f0; }
.tbl a { color: var(--blue); }
.row-uof td { background: #fff0f0 !important; }
.row-disabled td { color: #999; text-decoration: line-through; }

.kv { width: calc(100% - 16px); border-collapse: collapse; font-size: 12px; }
.kv th { text-align: right; width: 110px; color: #555; padding: 3px 10px 3px 0; vertical-align: top; font-weight: normal; }
.kv td { padding: 3px 0; }
.kv .th-red { color: var(--red); font-weight: bold; }

/* ── Chips / plates ────────────────────────────────────────────────────────── */
.chip {
  display: inline-block; font-size: 10px; font-weight: bold;
  padding: 1px 6px; border: 1px solid #999; background: #eee; color: #333;
  font-family: var(--mono); letter-spacing: 0.03em;
}
.chip-red   { background: #ffd6d6; border-color: var(--red); color: var(--red); }
.chip-amber { background: #ffe9c2; border-color: var(--amber); color: var(--amber); }
.chip-grey  { background: #eee; }

.prio-1 { background: #e4e4e4; border-color: #888; color: #444; }
.prio-2 { background: #ffe9c2; border-color: var(--amber); color: var(--amber); }
.prio-3 { background: #ffd6d6; border-color: var(--red); color: var(--red); animation: none; }

.status-pending    { background: #ffd6d6; border-color: var(--red); color: var(--red); }
.status-dispatched { background: #d6e4ff; border-color: var(--blue); color: var(--blue); }
.status-enroute    { background: #d6f4ff; border-color: #0b7fa3; color: #0b7fa3; }
.status-onscene    { background: #d9f4d9; border-color: var(--green); color: var(--green); }
.status-code4      { background: #d9f4ec; border-color: #0a6b5d; color: #0a6b5d; }
.status-closed     { background: #e4e4e4; border-color: #888; color: #555; }

.us-available { background: #d9f4d9; border-color: var(--green); color: var(--green); }
.us-busy      { background: #d6e4ff; border-color: var(--blue); color: var(--blue); }
.us-code5     { background: #ecd6ff; border-color: #6b0ba3; color: #6b0ba3; }
.us-code6     { background: #ffe9c2; border-color: var(--amber); color: var(--amber); }
.us-code7     { background: #e4e4e4; border-color: #888; color: #555; }
.us-code8     { background: #ffd6d6; border-color: var(--red); color: var(--red); }
.us-code99    { background: var(--red); border-color: #7a0000; color: #fff; animation: alertflash 0.8s step-end infinite; }

.rep-draft     { background: #e4e4e4; border-color: #888; color: #555; }
.rep-submitted { background: #d6e4ff; border-color: var(--blue); color: var(--blue); }
.rep-approved  { background: #d9f4d9; border-color: var(--green); color: var(--green); }
.rep-rejected  { background: #ffd6d6; border-color: var(--red); color: var(--red); }

.plate {
  display: inline-block; font-family: var(--mono); font-weight: bold;
  background: #ffd800; color: #111; border: 1px solid #111;
  padding: 0 6px; letter-spacing: 0.08em;
}

/* ── Forms / buttons ───────────────────────────────────────────────────────── */
input[type=text], input[type=password], input[type=number], input[type=date],
input[type=datetime-local], select, textarea {
  font-family: inherit; font-size: 12px; padding: 4px 6px;
  border: 2px solid; border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk);
  background: #fff; width: 100%;
}
textarea { font-family: var(--mono); resize: vertical; }
label { display: block; font-size: 10px; font-weight: bold; color: #444; letter-spacing: 0.04em; }
label input, label select, label textarea { margin-top: 2px; font-weight: normal; }

.btn {
  display: inline-block; cursor: pointer; text-decoration: none;
  font-family: inherit; font-size: 11px; font-weight: bold; color: var(--ink);
  background: var(--chrome); padding: 4px 12px;
  border: 2px solid; border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt);
}
.btn:active { border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk); }
.btn-primary { background: var(--navy); color: #fff; border-color: #4a6ab0 #051233 #051233 #4a6ab0; }
.btn-danger { background: #a33; color: #fff; border-color: #d77 #611 #611 #d77; }
.btn-ghost { background: transparent; border-color: transparent; }
.btn-sm { padding: 1px 6px; font-size: 10px; }
.btn-block { width: 100%; text-align: center; }
.btn-row { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }

.stack-form { display: flex; flex-direction: column; gap: 8px; }
.form-row { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; }
.form-row > label { flex: 0 0 auto; }
.form-row > .grow, .grow { flex: 1 1 auto; }
.inline-form { display: flex; gap: 6px; align-items: center; margin: 8px; flex-wrap: wrap; }
.inline-form input, .inline-form select { width: auto; }
.inline-form .grow { flex: 1 1 auto; }
.chk { display: flex; align-items: center; gap: 5px; font-size: 11px; }
.chk input { width: auto; }
.filter-bar { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.filter-bar input, .filter-bar select { width: auto; }

.flash { padding: 6px 10px; font-weight: bold; font-size: 12px; margin-bottom: 10px; border: 2px solid; }
.flash-error { background: #ffd6d6; border-color: var(--red); color: var(--red); }
.flash-success { background: #d9f4d9; border-color: var(--green); color: var(--green); }

/* ── Dispatch board ────────────────────────────────────────────────────────── */
.board-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 10px; }
.panel-newcall { grid-column: 1 / -1; }
@media (max-width: 1100px) { .board-grid { grid-template-columns: 1fr; } }

.calls-list { display: flex; flex-direction: column; gap: 6px; max-height: 60vh; overflow-y: auto; }
.call-card {
  border: 2px solid var(--chrome-dk); background: #fdfdfb;
  padding: 6px 8px; font-size: 12px;
}
.call-card.prio3 { border-color: var(--red); background: #fff6f6; }
.call-card-head { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.call-card-head .cid { font-family: var(--mono); font-weight: bold; }
.call-card-loc { font-weight: bold; margin: 2px 0; }
.call-card-det { color: #444; font-size: 11px; }
.call-card-units { margin-top: 4px; display: flex; gap: 4px; flex-wrap: wrap; align-items: center; }
.call-card-units .chip { background: #d6e4ff; border-color: var(--blue); color: var(--blue); }
.call-card-actions { margin-top: 4px; display: flex; gap: 4px; flex-wrap: wrap; }

.duty-box { border-top: 1px solid var(--chrome-dk); padding-top: 8px; }

/* ── Call detail ───────────────────────────────────────────────────────────── */
.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
@media (max-width: 1000px) { .detail-grid { grid-template-columns: 1fr; } }

.call-log { max-height: 50vh; overflow-y: auto; font-size: 12px; }
.log-line { display: flex; gap: 8px; padding: 2px 0; border-bottom: 1px dotted #ccc; }
.log-time { color: #777; flex: 0 0 auto; font-size: 11px; }
.log-actor { font-weight: bold; flex: 0 0 auto; }
.log-detail { flex: 1 1 auto; }
.log-status .log-detail { color: var(--blue); font-weight: bold; }
.log-close .log-detail, .log-created .log-detail { color: var(--navy); font-weight: bold; }
.log-assign .log-detail, .log-unassign .log-detail { color: #0a6b5d; }

/* ── NCIC query ────────────────────────────────────────────────────────────── */
.query-bar { display: flex; gap: 6px; margin-bottom: 4px; }
.query-bar select { width: auto; }
.query-hint { font-size: 10px; color: #666; margin: 2px 0 10px; }
.query-split { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
@media (max-width: 1000px) { .query-split { grid-template-columns: 1fr; } }
.query-return { font-size: 12px; padding: 8px; min-height: 120px; background: #0c1420; color: #cde3cd; }
.query-return .empty { color: #6a7a6a; }
.query-return h4 { color: #ffd800; font-size: 11px; margin: 8px 0 3px; border-bottom: 1px solid #2a3a4a; }
.query-return h4:first-child { margin-top: 0; }
.query-return table { width: 100%; border-collapse: collapse; }
.query-return td { padding: 1px 6px 1px 0; vertical-align: top; }
.query-return td:first-child { color: #7da77d; width: 120px; }
.query-return .ret-flag { color: #ff5252; font-weight: bold; }
.query-return .ret-ok { color: #6bff8a; }
.query-return .ret-warn { color: #ffd800; }
.query-alert {
  padding: 8px 12px; font-weight: bold; margin-bottom: 8px;
  border: 2px solid var(--red); background: #ffd6d6; color: var(--red);
  animation: alertflash 1s step-end infinite;
}
.query-actions { margin-top: 8px; display: flex; gap: 6px; flex-wrap: wrap; }

/* ── BOLO cards ────────────────────────────────────────────────────────────── */
.bolo-card { background: #fff; border: 2px solid var(--amber); margin-bottom: 8px; }
.bolo-card.bolo-off { border-color: #aaa; opacity: 0.7; }
.bolo-head { display: flex; gap: 8px; align-items: center; padding: 5px 8px; background: #fff6e4; flex-wrap: wrap; }
.bolo-card.bolo-off .bolo-head { background: #eee; }
.bolo-meta { font-size: 10px; color: #777; }
.bolo-cancel { margin-left: auto; }
.bolo-body { padding: 6px 8px; font-size: 12px; }

/* ── Stats bars / misc ─────────────────────────────────────────────────────── */
.bar-cell { width: 30%; }
.bar { height: 10px; background: var(--navy); min-width: 2px; }
.phonetic { display: flex; flex-wrap: wrap; gap: 4px; margin: 8px; }
.pager { display: flex; gap: 4px; margin: 10px 0; flex-wrap: wrap; }
.pager a { padding: 2px 8px; border: 1px solid var(--chrome-dk); background: #fff; text-decoration: none; color: var(--ink); font-family: var(--mono); font-size: 11px; }
.pager a.on { background: var(--navy); color: #fff; }

/* ── Icons (inline Tabler SVGs injected by lib/icons.js) ───────────────────── */
.icon { width: 16px; height: 16px; vertical-align: -3px; }
.icon-sm { width: 13px; height: 13px; vertical-align: -2px; }
.icon-red { color: var(--red); }
.fkey .fi .icon { width: 18px; height: 18px; vertical-align: 0; }
.alert-line .icon { width: 15px; height: 15px; }
.query-alert .icon { width: 15px; height: 15px; }

/* ── Status popup ──────────────────────────────────────────────────────────── */
.mct-popup[hidden] { display: none !important; }   /* the explicit flex below would otherwise beat [hidden] */
.mct-popup {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
  background: var(--chrome); padding: 0 0 8px; z-index: 100; width: 260px;
  border: 2px solid; border-color: var(--chrome-lt) var(--chrome-dk) var(--chrome-dk) var(--chrome-lt);
  box-shadow: 4px 4px 0 rgba(0,0,0,0.4);
  display: flex; flex-direction: column; gap: 4px;
}
.mct-popup-title { background: var(--navy); color: #fff; font-size: 11px; font-weight: bold; padding: 4px 8px; margin-bottom: 4px; }
.mct-popup .btn { margin: 0 8px; text-align: left; }

/* ── In-game CEF close button (injected by cefbridge.js; absent on the public
   website since cefbridge.js no-ops when window.cef doesn't exist) ─────────── */
#mdt-cef-close {
  position: fixed; top: 6px; right: 6px; z-index: 10000;
  width: 26px; height: 22px;
  background: #c00000; color: #fff; font-weight: bold; font-size: 13px; line-height: 1;
  font-family: Tahoma, sans-serif;
  border: 2px solid; border-color: #ff8080 #7a0000 #7a0000 #ff8080;
  cursor: pointer;
}
#mdt-cef-close:hover { background: #e00000; }
#mdt-cef-close:active { border-color: #7a0000 #ff8080 #ff8080 #7a0000; }

/* ── Login / boot screens ──────────────────────────────────────────────────── */
.boot-screen { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; }
.boot-window { width: 460px; height: auto; min-height: 0; }
.boot-body { padding: 14px; }
.boot-banner {
  background: #0c1420; color: #6bff8a; font-family: var(--mono);
  font-size: 12px; padding: 10px; margin-bottom: 12px;
  border: 2px solid; border-color: var(--chrome-dk) var(--chrome-lt) var(--chrome-lt) var(--chrome-dk);
  overflow-x: auto;
}
.boot-form { display: flex; flex-direction: column; gap: 8px; }
.boot-form input { font-family: var(--mono); }
.boot-foot { font-size: 10px; color: #666; margin-top: 12px; text-align: center; }
