/* OceanCAD: structure shared by every product. Each product's skin sets the variables and its own chrome in vendors.css. */
:root {
  --bg: #1b1f24; --panel: #22272e; --panel-2: #2b323b; --line: #3a4350; --fg: #e6e9ee; --fg-dim: #9aa4b1; --accent: #4aa3ff;
  --font: 'Segoe UI', Tahoma, Arial, sans-serif; --mono: Consolas, 'Courier New', monospace; --radius: 3px; --size: 13px;
  --title-bg: #2b323b; --title-fg: #fff; --row-hover: rgba(255,255,255,.06); --sel: rgba(74,163,255,.25);
  --ok: #2e8b57; --warn: #c9a400; --bad: #c0392b;
}
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--fg); font: var(--size)/1.35 var(--font); }
#app { height: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
input, select, textarea { background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--radius); padding: 4px 6px; color: var(--fg); }
input:focus, select:focus, textarea:focus { outline: 1px solid var(--accent); }
button { background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--radius); padding: 4px 9px; cursor: pointer; color: var(--fg); }
button:hover { border-color: var(--accent); }
button.primary { background: var(--accent); border-color: var(--accent); color: #fff; }
button.danger { background: var(--bad); border-color: var(--bad); color: #fff; }
button:disabled { opacity: .5; cursor: default; }
a { color: var(--accent); }
.mono { font-family: var(--mono); }
.dim { color: var(--fg-dim); }
.small { font-size: 11px; }
.right { text-align: right; }
.nowrap { white-space: nowrap; }
.row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.grow { flex: 1; }
.hidden { display: none !important; }

/* --- gate and picker ------------------------------------------------------ */
.gate { min-height: 100%; display: grid; place-items: center; padding: 40px 16px; background: radial-gradient(1200px 600px at 20% 0%, #24313f, #11151a); }
.gate-card { width: min(720px, 100%); background: #1a2029; border: 1px solid #30394a; border-radius: 6px; padding: 28px 32px; box-shadow: 0 20px 60px rgba(0,0,0,.4); }
.gate h1 { margin: 0 0 4px; font-size: 22px; letter-spacing: .04em; }
.gate .sub { color: var(--fg-dim); margin-bottom: 18px; }
.agency-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 12px; }
.agency-card { border: 1px solid #30394a; border-radius: 6px; padding: 14px; background: #202834; display: flex; flex-direction: column; gap: 8px; }
.agency-card .product { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--fg-dim); }
.agency-card .label { font-weight: 600; font-size: 15px; }
.agency-card .seats { display: flex; gap: 8px; margin-top: 4px; }
.agency-card.tyler { border-left: 4px solid #1e6fd9; } .agency-card.premierone { border-left: 4px solid #2ec4f1; } .agency-card.hexagon { border-left: 4px solid #0b5fb0; }
.agency-card.spillman { border-left: 4px solid #a6caf0; } .agency-card.centralsquare { border-left: 4px solid #f97316; } .agency-card.zoll { border-left: 4px solid #c62828; }
.agency-card.mark43 { border-left: 4px solid #2563eb; } .agency-card.axon { border-left: 4px solid #f7d117; }
.problems { margin-top: 18px; padding: 10px 12px; border: 1px solid #6b5a1a; background: #2a2412; border-radius: 4px; font-size: 12px; }
.problems li { margin: 2px 0; }

/* --- CAD shell ------------------------------------------------------------ */
.cad { height: 100%; display: flex; flex-direction: column; overflow: hidden; }
.chrome { flex: none; }
.workspace { flex: 1; min-height: 0; display: grid; gap: 4px; padding: 4px; }
.pane { background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); display: flex; flex-direction: column; min-height: 0; min-width: 0; overflow: hidden; }
.pane > .title { flex: none; background: var(--title-bg); color: var(--title-fg); padding: 3px 8px; font-size: 12px; font-weight: 600; letter-spacing: .02em; display: flex; align-items: center; gap: 8px; }
.pane > .title .count { font-weight: 400; opacity: .8; }
.pane > .body { flex: 1; min-height: 0; overflow: auto; }
.pane > .foot { flex: none; border-top: 1px solid var(--line); padding: 4px 6px; }
.tabs { display: flex; gap: 2px; flex: none; border-bottom: 1px solid var(--line); background: var(--panel-2); }
.tabs button { border: 0; border-radius: 0; background: transparent; padding: 5px 10px; color: var(--fg-dim); border-bottom: 2px solid transparent; }
.tabs button.on { color: var(--fg); border-bottom-color: var(--accent); }
.tabs button .badge { background: var(--bad); color: #fff; border-radius: 8px; padding: 0 5px; font-size: 10px; margin-left: 4px; }

table.grid { width: 100%; border-collapse: collapse; font-size: 12px; }
table.grid th { text-align: left; padding: 3px 6px; background: var(--panel-2); border-bottom: 1px solid var(--line); position: sticky; top: 0; font-weight: 600; white-space: nowrap; }
table.grid td { padding: 3px 6px; border-bottom: 1px solid rgba(255,255,255,.04); vertical-align: top; }
table.grid tr.clickable { cursor: pointer; }
table.grid tr.clickable:hover { background: var(--row-hover); }
table.grid tr.selected { background: var(--sel); }
table.grid tr.flag { animation: blink 1.2s steps(2, start) infinite; }
@keyframes blink { to { background: rgba(255, 80, 80, .18); } }
.pri { display: inline-block; min-width: 26px; text-align: center; padding: 0 4px; border-radius: 2px; color: #fff; font-weight: 700; font-size: 11px; }
.status-chip { display: inline-block; min-width: 34px; text-align: center; padding: 1px 5px; border-radius: 2px; color: #fff; font-weight: 700; font-size: 11px; letter-spacing: .04em; }
.timer { font-family: var(--mono); font-size: 11px; }
.timer.over { color: #ff6b6b; font-weight: 700; }

.detail { padding: 8px 10px; display: flex; flex-direction: column; gap: 8px; }
.detail .head { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.detail .head .num { font-family: var(--mono); font-size: 16px; font-weight: 700; }
.unit-response { min-width: 0; border: 1px solid var(--line); border-radius: var(--radius); }
.unit-response-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; padding: 6px 8px; background: var(--panel-2); }
.unit-response-head label { margin-left: auto; display: flex; align-items: center; gap: 4px; }
.unit-response-scroll { max-width: 100%; overflow-x: auto; }
.unit-response-scroll:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.response-grid td, .response-grid th { white-space: nowrap; }
.response-grid .response-role { display: block; color: var(--fg-dim); max-width: 155px; overflow: hidden; text-overflow: ellipsis; }
.response-grid .response-cleared { color: var(--fg-dim); }
.response-legend { padding: 5px 8px; border-top: 1px solid var(--line); }
.kv { display: grid; grid-template-columns: max-content 1fr; gap: 2px 12px; font-size: 12px; }
.kv dt { color: var(--fg-dim); }
.kv dd { margin: 0; }
.log { font-family: var(--mono); font-size: 11.5px; display: flex; flex-direction: column; gap: 1px; }
.log .line { display: grid; grid-template-columns: 52px 76px 1fr; gap: 8px; padding: 1px 0; }
.log .line .kind-note { color: var(--fg); } .log .line .kind-status { color: #7fc8ff; } .log .line .kind-assign, .log .line .kind-clear { color: #ffd166; }
.log .line .kind-create { color: #9be29b; } .log .line .kind-close { color: #ff8a80; } .log .line .kind-check, .log .line .kind-message { color: #d7b8ff; }
.form { display: grid; grid-template-columns: 110px 1fr; gap: 6px 8px; align-items: center; padding: 8px 10px; }
.form label { color: var(--fg-dim); font-size: 12px; }
.form .full { grid-column: 1 / -1; }
.form textarea { min-height: 70px; resize: vertical; }
.actions { display: flex; gap: 6px; flex-wrap: wrap; padding: 6px 10px; }
.chips { display: flex; gap: 4px; flex-wrap: wrap; }
.chip { border: 1px solid var(--line); border-radius: 10px; padding: 0 8px; font-size: 11px; }
.empty { padding: 14px; color: var(--fg-dim); text-align: center; }
.card { border: 1px solid var(--line); border-radius: var(--radius); padding: 8px 10px; margin: 6px 8px; background: var(--panel-2); }
.card h4 { margin: 0 0 4px; font-size: 13px; }
.warnbox { background: #3a2a0f; border: 1px solid #8a6d1c; color: #ffe08a; padding: 6px 8px; border-radius: var(--radius); font-size: 12px; }
.badbox { background: #3a1414; border: 1px solid #8a2c2c; color: #ffb3b3; padding: 6px 8px; border-radius: var(--radius); font-size: 12px; }
.okbox { background: #12331f; border: 1px solid #2e8b57; color: #b8f0cc; padding: 6px 8px; border-radius: var(--radius); font-size: 12px; }

.cmd { display: flex; align-items: center; gap: 8px; padding: 4px 8px; background: var(--panel-2); border-top: 1px solid var(--line); flex: none; }
.cmd .prompt { font-family: var(--mono); font-weight: 700; color: var(--accent); }
.cmd input { flex: 1; font-family: var(--mono); background: var(--bg); }
.cmd-out { font-family: var(--mono); font-size: 11.5px; white-space: pre-wrap; padding: 4px 8px; max-height: 110px; overflow: auto; border-top: 1px solid var(--line); color: var(--fg-dim); background: var(--panel-2); }
.cmd-out .err { color: #ff8a80; } .cmd-out .ok { color: var(--fg); }

.statusbar { display: flex; gap: 14px; align-items: center; padding: 2px 8px; font-size: 11px; background: var(--panel-2); border-top: 1px solid var(--line); flex: none; }
.statusbar .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--bad); display: inline-block; margin-right: 4px; }
.statusbar .dot.on { background: var(--ok); }

.banner { flex: none; padding: 6px 12px; font-weight: 700; display: flex; gap: 12px; align-items: center; }
.toasts { position: fixed; right: 12px; bottom: 44px; display: flex; flex-direction: column; gap: 6px; z-index: 50; max-width: 380px; }
.toast { background: #202834; border: 1px solid var(--line); border-left: 4px solid var(--accent); padding: 8px 10px; border-radius: 4px; box-shadow: 0 8px 20px rgba(0,0,0,.4); font-size: 12px; }
.toast.warn { border-left-color: var(--warn); } .toast.bad { border-left-color: var(--bad); } .toast.ok { border-left-color: var(--ok); }
.toast .by { color: var(--fg-dim); font-size: 11px; }

.me-status { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 8px; }
.me-status button { padding: 10px 6px; font-weight: 700; color: #fff; border: 0; }
.me-status button.on { outline: 3px solid #fff; }
.me-status button.big { grid-column: span 2; }

.modal-bg { position: fixed; inset: 0; background: rgba(0,0,0,.55); display: grid; place-items: center; z-index: 10000; padding: 16px; }
.modal { width: min(640px, 92vw); max-height: 88vh; overflow: auto; background: var(--panel); border: 1px solid var(--line); border-radius: 6px; }
.modal .title { background: var(--title-bg); color: var(--title-fg); padding: 6px 10px; font-weight: 600; display: flex; justify-content: space-between; }
.panemap, .ovmap { isolation: isolate; }
.toasts { z-index: 11000; }

@media (max-width: 1100px) { .workspace { grid-template-columns: 1fr !important; grid-template-rows: none !important; grid-template-areas: none !important; overflow: auto; } .workspace > .pane { grid-area: auto !important; min-height: 240px; } }

/* --- what the products do differently ---------------------------------------- */
.tabs.wrap { flex-wrap: wrap; }
.det { font-family: var(--mono); font-size: 11px; padding: 0 5px; border-radius: 3px; background: var(--sel); color: var(--fg); margin-left: 4px; }
.det.big { font-size: 13px; padding: 1px 7px; font-weight: 700; }
.flagmark { color: #ff9800; margin-left: 4px; font-size: 13px; cursor: help; }
.premise-banner { padding: 5px 8px; border-left: 4px solid #ff9800; background: rgba(255,152,0,.12); border-radius: var(--radius); margin: 0 0 6px; font-size: 12px; }
.premise-banner.pk-hazard, .premise-banner.pk-weapons { border-left-color: #ff5252; background: rgba(255,82,82,.14); }
.premise-banner.pk-medical { border-left-color: #b388ff; background: rgba(179,136,255,.14); }
.premise-banner.pk-history, .premise-banner.pk-keyholder, .premise-banner.pk-info { border-left-color: #64b5f6; background: rgba(100,181,246,.12); }
.verify { padding: 6px 8px; border: 1px dashed var(--line); border-radius: var(--radius); display: flex; flex-direction: column; gap: 4px; }
.recommend h4 { margin: 0 0 6px; }
.times { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.times .off { opacity: .5; }
.sig { display: inline-flex; gap: 3px; margin-left: 6px; vertical-align: middle; }
.sig i { font-style: normal; font-size: 9px; letter-spacing: .06em; padding: 0 4px; border-radius: 2px; border: 1px solid var(--line); color: var(--fg-dim); }
.sig i.on { background: var(--ok); border-color: var(--ok); color: #fff; }
.sig i.on.lts { background: #1e6fd9; border-color: #1e6fd9; }
.sig i.on.gun { background: var(--bad); border-color: var(--bad); animation: sigpulse 1s infinite alternate; }
@keyframes sigpulse { from { opacity: 1; } to { opacity: .55; } }
.log.timeline .line { grid-template-columns: 62px 1fr; position: relative; padding-left: 16px; }
.log.timeline .line::before { content: ''; position: absolute; left: 4px; top: 6px; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.log.timeline .line::after { content: ''; position: absolute; left: 7px; top: 14px; bottom: -4px; width: 1px; background: var(--line); }
.log.timeline .line:last-child::after { display: none; }
.log.timeline .line > span:nth-child(2) { grid-column: 2; font-size: 10px; }
.log.timeline .line > span:nth-child(3) { grid-column: 2; }
.log.timeline .line.row-signal::before, .log.timeline .line.row-premise::before { background: var(--bad); }
.fkeys { display: flex; gap: 2px; padding: 2px 4px; background: var(--panel-2); border-top: 1px solid var(--line); font-size: 11px; overflow-x: auto; }
.fkeys button { padding: 2px 8px; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; white-space: nowrap; font-size:11px; }
.fkeys button b { color: var(--accent); margin-right: 3px; }
.fkeys button:hover { border-color: var(--accent); }
.searchbar { display: flex; gap: 4px; align-items: center; margin-left: 12px; }
.searchbar input { min-width: 260px; }
.flock-hit { border-left: 4px solid #f7d117; }
.flock-hit.acked { border-left-color: var(--line); opacity: .8; }
table.grid.radio td { white-space: nowrap; }
table.grid.radio td:nth-child(5), table.grid.radio td:nth-child(6) { white-space: normal; }

/* --- windows: the desktop products ------------------------------------------- */
.ovdesk { position: relative; flex: 1; min-height: 0; overflow: auto; background: var(--bg); }
.ovwin { position: absolute; display: flex; flex-direction: column; background: var(--panel); border: 1px solid var(--line); box-shadow: 0 6px 24px rgba(0,0,0,.35); min-width: 240px; min-height: 120px; overflow: hidden; }
.ovwin.maximized { left: 0 !important; top: 0 !important; width: 100% !important; height: 100% !important; }
.ovwin.active { border-color: var(--accent); }
.ovwin-title { display: flex; align-items: center; gap: 6px; padding: 3px 6px; background: var(--title-bg); color: var(--title-fg); font-weight: 600; font-size: 12px; cursor: move; user-select: none; flex: none; }
.ovwin.active .ovwin-title { filter: brightness(1.08); }
.ovwin-btn { border: 1px solid var(--line); background: var(--panel-2); color: var(--fg); width: 18px; height: 16px; line-height: 12px; padding: 0; font-size: 11px; border-radius: 2px; }
.ovwin-body { flex: 1; min-height: 0; overflow: auto; display: flex; flex-direction: column; }
.ovwin-body > .pane { flex: 1; min-height: 0; }
.ovwin-grip { position: absolute; right: 0; bottom: 0; width: 14px; height: 14px; cursor: nwse-resize; background: linear-gradient(135deg, transparent 50%, var(--fg-dim) 50%, var(--fg-dim) 60%, transparent 60%, transparent 75%, var(--fg-dim) 75%, var(--fg-dim) 85%, transparent 85%); }
.ovdesk-tray { position: absolute; left: 0; right: 0; bottom: 0; display: flex; gap: 4px; padding: 2px 4px; background: var(--panel-2); border-top: 1px solid var(--line); z-index: 5000; }
.ovdesk-tray button { font-size: 11px; padding: 1px 8px; }

/* --- the live map ---------------------------------------------------------------- */
.panemap { display: flex; flex-direction: column; min-height: 240px; }
.maptools { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 3px 8px; font-size: 11px; background: var(--panel-2); border-bottom: 1px solid var(--line); flex: none; }
.maptools label { display: inline-flex; align-items: center; gap: 3px; }
.maptools button.on { background: var(--accent); color: #fff; border-color: var(--accent); }
.ovmap { position: relative; flex: 1; min-height: 200px; background: #0b1013; }
.ovmap-canvas { position: absolute; inset: 0; }
.ovmap.light .ov-tiles { filter: saturate(.85) brightness(1.05); }
.ovmap.dark .ov-tiles { filter: brightness(.82) saturate(.8); }
.ovmap-broken { position: absolute; inset: 0; display: grid; place-items: center; color: #ccc; }
.ov-marker { background: none; border: 0; }
.ov-unit { position: relative; transform: translate(-50%, -50%); display: flex; align-items: center; gap: 3px; white-space: nowrap; font: 700 10px/1 var(--font); color: #fff; text-shadow: 0 0 3px #000, 0 0 3px #000; }
.ov-unit .arrow { width: 0; height: 0; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 16px solid var(--c); filter: drop-shadow(0 0 2px #000); display: inline-block; }
.ov-unit b { padding: 1px 4px; background: rgba(0,0,0,.6); border-radius: 3px; border-left: 3px solid var(--c); }
.ov-unit i { font-style: normal; font-size: 9px; opacity: .85; }
.ov-unit.gun b { border-left-color: #ff1744; box-shadow: 0 0 6px #ff1744; }
.ov-call { position: relative; transform: translate(-50%, -100%); white-space: nowrap; font: 700 10px/1 var(--font); color: #fff; text-shadow: 0 0 3px #000, 0 0 3px #000; display: flex; flex-direction: column; align-items: center; }
.ov-call .pin { width: 12px; height: 12px; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); background: var(--c); border: 2px solid #fff; box-shadow: 0 0 4px #000; }
.ov-call b { margin-top: 2px; padding: 1px 4px; background: rgba(0,0,0,.65); border-radius: 3px; }
.ov-call i { font-style: normal; font-size: 9px; opacity: .85; }
.ov-call.pending .pin { animation: sigpulse .8s infinite alternate; }
.ov-call.selected .pin { transform: rotate(-45deg) scale(1.4); }
.ov-cam { width: 9px; height: 9px; border-radius: 2px; background: #f7d117; border: 1px solid #000; transform: translate(-50%, -50%); opacity: .85; }
.ov-cam.obstructed, .ov-cam.damaged, .ov-cam.destroyed { background: #888; }
.ov-hit { transform: translate(-50%, -50%); font: 700 10px/1 var(--font); color: #000; background: #f7d117; padding: 2px 5px; border-radius: 3px; border: 1px solid #000; white-space: nowrap; animation: sigpulse .6s infinite alternate; }
.ov-hit i { display: block; font-style: normal; font-weight: 400; font-size: 9px; }

/* --- reports, analytics, hospitals, involvements ------------------------------------ */
.modal.report { width: min(960px, 96vw); }
.report-body { padding: 8px 10px; display: flex; flex-direction: column; gap: 10px; }
.report-section { border-top: 1px solid var(--line); padding-top: 6px; display: flex; flex-direction: column; gap: 4px; }
.report-actions { border-top: 1px solid var(--line); padding-top: 8px; }
.modal.report { width: min(1120px, 97vw); height: min(900px, 94vh); display: flex; flex-direction: column; overflow: hidden; }
.report-toolbar, .report-notice, .report-actions { padding: 9px 12px; flex-shrink: 0; }
.report-workspace { display: flex; min-height: 0; flex: 1; }
.report-tabs { flex: 0 0 170px; display: flex; flex-direction: column; gap: 3px; padding: 8px; background: var(--panel-2); border-right: 1px solid var(--line); overflow-y: auto; }
.report-tabs button { text-align: left; white-space: normal; padding: 8px; }
.report-tabs button.on { background: var(--accent); color: var(--on-accent, #fff); }
.report-document .report-workspace { flex-direction: column; }
.report-document .report-tabs { flex: 0 0 auto; flex-direction: row; flex-wrap: wrap; border-right: 0; border-bottom: 1px solid var(--line); }
.report-document .report-tabs button { flex: 0 1 auto; }
.report-body { flex: 1; min-width: 0; overflow: auto; padding: 16px; }
.report-fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.report-body h3 { margin: 0 0 12px; }
.report-body section { min-width: 0; }
.report-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.report-fields { grid-auto-flow: row; }
.report-fields .report-compact input,.report-fields .report-compact select { max-width: 150px; }
.report-body .report-section { margin-bottom: 16px; }
.report-fields input, .report-fields select, .report-fields textarea, .report-full { width: 100%; max-width: 100%; box-sizing: border-box; }
.report-field-label { display: block; font-weight: 600; margin: 5px 0; }
.report-wide { grid-column: 1 / -1; }
.report-repeat { padding: 10px; margin: 8px 0; background: var(--panel-2); border: 1px solid var(--line); overflow-wrap: anywhere; }
.report-facts { display: grid; grid-template-columns: 130px minmax(0, 1fr); gap: 5px 12px; }
.report-facts dt { color: var(--fg-dim); }.report-facts dd { margin: 0; overflow-wrap: anywhere; }
.required { color: var(--danger, #c84646); }
/* Clinical documentation workspace; product navigation keeps its own vendor styling. */
.modal.report.report-document { background:var(--panel); color:var(--fg); font:13px/1.45 Arial,Helvetica,sans-serif; border-radius:8px; box-shadow:0 20px 70px #0006; }
.report-document .report-toolbar { background:var(--panel-2); gap:8px; flex-wrap:wrap; }
.report-document .report-notice { background:var(--panel-2); color:var(--fg); border-top:1px solid var(--ok); }
.report-document .report-notice.badbox { background:var(--panel-2); color:var(--fg); }
.report-document .report-notice.warnbox { background:var(--panel-2); color:var(--fg); }
.report-document .report-body { background:var(--bg); padding:22px 26px; }
.report-document .report-body h3 { font-size:20px; letter-spacing:-.4px; margin:0 0 3px; color:var(--fg); }
.report-document .report-body section>p { margin:0 0 18px; }
.report-document .report-tabs { background:var(--panel); gap:4px; padding:10px 14px; }
.report-document .report-tabs button { border:0; border-radius:5px; padding:7px 10px; background:transparent; color:var(--fg-dim); font-size:12px; }
.report-document .report-tabs button.on { background:var(--sel); color:var(--fg); box-shadow:inset 0 -2px var(--accent); font-weight:700; }
.report-document input,.report-document select,.report-document textarea { color:var(--fg); background:var(--panel); border:1px solid var(--line); border-radius:4px; padding:9px 10px; font:13px/1.4 Arial,Helvetica,sans-serif; }
.report-document input:focus,.report-document select:focus,.report-document textarea:focus { outline:2px solid var(--accent); outline-offset:1px; }
.report-document input:disabled,.report-document select:disabled,.report-document textarea:disabled { opacity:1; color:var(--fg-dim); background:var(--panel-2); }
.report-document button { border-radius:4px; }
.report-document .dim { color:var(--fg-dim); }
.pcr-patient-banner { flex-shrink:0; display:flex; align-items:center; justify-content:space-between; gap:18px; padding:15px 22px; border-top:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--panel-2); }
.pcr-eyebrow { display:block; color:var(--fg-dim); font-size:10px; letter-spacing:1.4px; font-weight:700; margin-bottom:3px; }
.pcr-patient-banner strong { display:block; font-size:21px; font-weight:700; overflow-wrap:anywhere; }
.pcr-patient-meta { display:flex; gap:25px; flex-wrap:wrap; font-size:10px; text-transform:uppercase; color:var(--fg-dim); }
.pcr-patient-meta b { display:block; margin-top:3px; font-size:13px; text-transform:none; color:var(--fg); }
.pcr-identity,.pcr-section-card { background:var(--panel); border:1px solid var(--line); border-radius:7px; padding:18px 20px; margin-bottom:16px; box-shadow:0 2px 4px #28456105; }
.pcr-card-heading { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.pcr-card-heading>span { font-size:11px; color:var(--fg-dim); background:var(--panel-2); border-radius:20px; padding:4px 10px; }
.pcr-section-card h4,.pcr-identity h4 { margin:0 0 12px; font-size:14px; color:var(--fg); }
.pcr-card-heading h4 { margin:0; }.pcr-person-card { padding-top:8px; }.pcr-person-card+.pcr-person-card { border-top:2px solid #c98271; margin-top:16px; }
.report-document .report-fields { gap:14px 20px; }.report-document .report-field-label { color:var(--fg-dim); font-size:12px; margin:0 0 6px; }
.pcr-contacts { border-top:1px solid var(--line); margin-top:18px; padding-top:12px; }.pcr-contacts summary { cursor:pointer; font-weight:600; color:var(--fg-dim); }
.report-clinical .pcr-remove { justify-self:start; color:var(--fg); background:var(--panel); border:1px solid var(--bad); padding:5px 9px; }
.report-document .report-actions { background:var(--panel); gap:8px; flex-wrap:wrap; }
.report-clinical .pcr-identity { padding:14px 18px; margin-bottom:10px; }
.pcr-identity>p { margin:7px 0; font-size:11px; }
.pcr-demographics { display:grid; grid-template-columns:minmax(180px,1fr) 76px 95px 145px; align-items:end; gap:12px; }
.pcr-demographics label { font-size:11px; color:var(--fg-dim); }.pcr-demographics input,.pcr-demographics select { display:block; width:100%; margin-top:5px; }
.pcr-identity-details { margin:12px 0 8px; font-size:11px; color:var(--fg-dim); }.pcr-identity-details summary { cursor:pointer; }.pcr-identity-details .report-fields { margin:10px 0; }
.pcr-chief { padding:0 2px 16px; }.pcr-chief textarea { min-height:76px; height:76px; resize:vertical; border-left:3px solid var(--accent); }.pcr-chief .report-field-label { font-size:13px; color:var(--fg); margin-bottom:7px; }
.pcr-section-card { padding:14px 18px; margin-bottom:12px; }.pcr-section-card h4 { margin-bottom:10px; }
.pcr-contact-section { padding:0 8px 14px; }.pcr-contact-section .pcr-contacts { margin:0; }
@media(max-width:750px) { .pcr-demographics { grid-template-columns:1fr 76px 95px; }.pcr-demographics>label:last-child { grid-column:1/-1; }.pcr-demographics>label:last-child input { max-width:180px; } }
@media(max-width:750px) { .pcr-patient-banner { align-items:flex-start; flex-direction:column; gap:8px; padding:10px 14px; }.pcr-patient-banner strong { font-size:17px; }.report-document .report-body { padding:14px; }.pcr-identity,.pcr-section-card { padding:14px; }.pcr-patient-meta { gap:15px; } }
.law-sources { display: flex; flex-direction: column; gap: 4px; margin: 8px 0; }
.law-result { padding: 8px; border-bottom: 1px solid var(--line); }.law-result summary { cursor: pointer; }.law-result p { white-space: pre-wrap; }
@media(max-width: 750px) { .report-workspace { flex-direction: column; }.report-tabs { flex: 0 0 auto; flex-direction: row; overflow-x: auto; }.report-tabs button { flex: 0 0 auto; }.report-fields { grid-template-columns: minmax(0,1fr); }.report-facts { grid-template-columns: 90px minmax(0,1fr); } }
@media print { body.printing-report * { visibility: hidden; } body.printing-report .report-overlay, body.printing-report .report-overlay * { visibility: visible; } body.printing-report .report-overlay { position: absolute; inset: 0; display: block; padding: 0; background: white; } body.printing-report .modal.report { display: block; width: 100%; height: auto; max-height: none; color: #000; background: white; border: 0; overflow: visible; } body.printing-report .report-tabs, body.printing-report .report-toolbar, body.printing-report .report-actions, body.printing-report .report-notice, body.printing-report .report-overlay button { display: none; } body.printing-report .report-workspace, body.printing-report .report-body { display: block; overflow: visible; } body.printing-report .report-body section { display: block !important; break-inside: avoid; margin-bottom: 24px; } body.printing-report input, body.printing-report textarea, body.printing-report select { color: #000; background: white; border-color: #bbb; } }
.involvements { border-top: 1px solid var(--line); padding-top: 6px; display: flex; flex-direction: column; gap: 3px; }
.involvements .inv .chip { font-size: 9px; }
.stats .tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 6px; padding: 6px 10px; }
.stats .tile { background: var(--panel-2); border: 1px solid var(--line); border-radius: var(--radius); padding: 8px; display: flex; flex-direction: column; align-items: center; }
.stats .tile b { font-size: 20px; font-variant-numeric: tabular-nums; }
.stats .tile span { font-size: 11px; color: var(--fg-dim); }
.stats .bars { display: flex; align-items: flex-end; gap: 2px; height: 90px; }
.stats .bar { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; font-size: 9px; color: var(--fg-dim); }
.stats .bar i { width: 100%; background: var(--accent); min-height: 1px; display: block; }
.stats .hbar { display: grid; grid-template-columns: 160px 1fr 30px; align-items: center; gap: 6px; font-size: 11px; margin: 2px 0; }
.stats .hbar i { display: block; height: 10px; background: var(--accent); border-radius: 2px; }
.hospital.hs-diversion { border-left: 4px solid #c9a400; }
.hospital.hs-closed { border-left: 4px solid #c0392b; }
.hospital.hs-open { border-left: 4px solid #2e8b57; }
.hospital-board { padding:10px; }.hospital-intro>b { font-size:17px; }.hospital-intro p { margin:6px 0 14px; font-size:12px; color:var(--fg-dim); }
.hospital-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }.hospital-heading b { font-size:14px; }.hospital { margin-bottom:10px; padding:13px; }
.hospital-counts { display:flex; flex-wrap:wrap; gap:8px 18px; margin:10px 0 5px; font-size:11px; }.hospital-counts b { font-size:17px; }.hospital meter { width:100%; height:8px; }
.hospital-services,.hospital-controls { margin-top:10px; border-top:1px solid var(--line); padding-top:8px; }.hospital summary,.hospital-ledger summary { cursor:pointer; font-size:12px; font-weight:600; }
.hospital-service-list { display:flex; flex-wrap:wrap; gap:5px; padding:9px 0; }.hospital-service-list span { padding:3px 7px; border:1px solid var(--line); background:var(--panel-2); border-radius:3px; font-size:11px; }
.hospital-controls>.row { gap:5px; flex-wrap:wrap; margin-top:8px; }.hospital-policy { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; padding:10px; border:1px solid var(--line); }.hospital-policy input[type=number],.hospital-policy select { width:100%; display:block; margin-top:4px; }.hospital-policy label { font-size:12px; }.hospital-ledger { margin-top:15px; }.hospital-ledger .row { flex-wrap:wrap; gap:5px; }

/* The classic four-pane workspace, for any product that still lays out that way. */
.workspace > .pane-queue { grid-area: queue; } .workspace > .pane-units { grid-area: units; } .workspace > .pane-detail { grid-area: detail; } .workspace > .pane-side { grid-area: side; }
/* Laptop resource and self-dispatch workspaces. */
.resource-desk,.selfdispatch-desk{display:flex;flex-direction:column;min-height:0;height:100%;overflow:hidden}
.resource-desk>.body{flex:1;overflow:auto;padding:8px}
.resource-heading{align-items:center;gap:6px}.resource-heading>b:first-child{font-size:14px}
.resource-crew{margin:8px 0}.resource-members{padding:8px 0;display:flex;flex-wrap:wrap;gap:4px}
.resource-empty{padding:16px}.resource-tag{display:block;font-size:11px;font-weight:600;color:var(--accent)}
.resource-editor{width:min(800px,94vw);max-height:90vh;overflow:auto}.resource-editor .form{grid-template-columns:150px minmax(0,1fr)}
.resource-choices{max-height:200px;overflow:auto;border:1px solid var(--line);padding:6px;display:flex;flex-direction:column;gap:5px}
.resource-choices label{display:flex;align-items:center;gap:6px;cursor:pointer}.resource-role-list{display:flex;flex-direction:column;gap:4px;margin-top:8px}
.sd-own{padding:8px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.sd-own>.row{flex-wrap:wrap;gap:6px}.sd-current{display:block;width:100%;text-align:left;margin-top:6px;border-left:3px solid var(--accent);white-space:normal}
.sd-status{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.sd-status button{font-size:11px;padding:4px 7px}.sd-status button.on{border-color:var(--accent);box-shadow:inset 0 -2px var(--accent)}
.sd-queue{flex:1;min-height:100px;overflow:auto}.sd-queue .grid td{vertical-align:top}.sd-attach{padding:8px;border-top:1px solid var(--line);background:var(--panel-2)}
.sd-attach .row{gap:6px}.sd-attach .dim{margin-bottom:5px}.sd-attach select{max-width:220px}
.selfdispatch-desk>.actions{gap:4px}.selfdispatch-desk>.actions input{min-width:100px}.selfdispatch-desk>.actions select{max-width:180px}
.resource-desk-modal{width:min(1080px,96vw);height:min(760px,92vh);display:flex;flex-direction:column;max-height:92vh}
.resource-desk-modal>.title{flex:none}.resource-modal-body{flex:1;min-height:0;overflow:hidden}
.resource-desk-modal .resource-editor{height:auto}.resource-card .actions select{max-width:180px}
/* Sound controls inherit each product's terminal chrome and remain reachable on laptop screens. */
.audio-modal{width:min(820px,94vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}
.audio-modal>.title{flex:none}.audio-desk{padding:14px;overflow:auto;min-height:0;display:flex;flex-direction:column;gap:12px}
.audio-summary>b{margin-right:10px}.audio-summary p,.audio-desk>p{margin:5px 0 0}
.audio-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.audio-toolbar label,.audio-event-table label{display:inline-flex;align-items:center;gap:5px}
.audio-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}
.audio-controls fieldset{min-width:0;padding:12px;border:1px solid var(--line);display:flex;flex-direction:column;gap:10px;background:var(--panel-2)}
.audio-controls legend{font-weight:600}.audio-controls select{width:100%;min-width:0}.audio-slider{display:grid;grid-template-columns:1fr auto;gap:5px}.audio-slider input{grid-column:1/-1;width:100%;padding:0}
.audio-event-table td{vertical-align:top;padding:7px}.audio-event-table td:first-child{white-space:nowrap;width:225px}
.audio-readout{padding:10px;border-left:3px solid var(--accent);background:var(--panel-2);display:flex;flex-direction:column;gap:5px;overflow-wrap:anywhere}
.audio-status{white-space:nowrap}
.character-picker{width:min(1080px,100%)}.character-picker-heading{justify-content:space-between;align-items:flex-start;gap:20px}.character-picker-heading .row{gap:12px;align-items:center}
.character-card{position:relative;border-top:4px solid var(--line,#56657b)}.character-card.selected{border-color:#3675c5}.character-card h2{margin:12px 0 6px;font-size:21px}.character-card .label{font-size:14px;font-weight:400}
.character-facts{display:grid;grid-template-columns:65px 1fr;gap:7px;font-size:13px;margin:16px 0}.character-facts dt{color:var(--fg-dim,#8290a3)}.character-facts dd{margin:0}
.character-capabilities{display:flex;gap:5px;flex-wrap:wrap;min-height:24px;margin-bottom:15px}.character-picker>.small{margin-top:18px;line-height:1.5}
@media(max-width:650px){.audio-controls{grid-template-columns:minmax(0,1fr)}.audio-event-table td:first-child{white-space:normal;width:auto}}

.report-document>.title { background:var(--title-bg); color:var(--title-fg); padding:10px 13px; font-size:12px; }
.report-document-banner { display:flex; flex-shrink:0; align-items:center; justify-content:space-between; gap:20px; padding:16px 22px; background:var(--panel-2); border-bottom:1px solid var(--line); }
.report-document-banner strong { font-size:22px; color:var(--fg); }.report-document-id { text-align:right; color:var(--fg); }.report-document-id>span,.report-document-id>b,.report-document-id>small { display:block; }.report-document-id>span { font-size:9px; letter-spacing:1px; }.report-document-id>b { font-size:15px; }.report-document-id>small { font-size:10px; }
.report-section-card { background:var(--panel); border:1px solid var(--line); border-radius:6px; padding:18px; }
.report-document .report-body h4 { color:var(--fg); }.report-document .report-body .report-repeat { border-radius:5px; background:var(--panel-2); }
.report-document .report-body .report-section { background:var(--panel); border:1px solid var(--line); border-radius:6px; padding:14px; margin-top:14px; }
.report-document .report-body .grid { background:var(--panel); color:var(--fg); }.report-document .report-body .grid th { background:var(--panel-2); color:var(--fg); }
.report-document .report-body section>h3 { padding-bottom:8px; margin-bottom:8px; border-bottom:2px solid var(--line); }
.report-document .report-full { margin-bottom:14px; }
.hospital.hs-diversion meter::-webkit-meter-optimum-value { background:#d3a629; }.hospital.hs-closed meter::-webkit-meter-optimum-value { background:#b44b42; }

/* Native controls and editable report surfaces use the active V1 product palette.
   Printable report documents are generated separately on white paper. */
body.theme-premierone,body.theme-centralsquare,body.theme-zoll,body.theme-axon,body.theme-caliber,body.theme-smartcop { color-scheme:dark; }
body.theme-tyler,body.theme-hexagon,body.theme-spillman,body.theme-mark43,body.theme-phoenix,body.theme-rims,body.theme-southern { color-scheme:light; }
select option,select optgroup { background:var(--panel); color:var(--fg); }
input::placeholder,textarea::placeholder { color:var(--fg-dim); opacity:1; }
.report-document .report-notice.badbox { border-color:var(--bad); }
.report-document .report-notice.warnbox { border-color:var(--warn); }
.report-document input:read-only,.report-document textarea:read-only { background:var(--panel-2); color:var(--fg-dim); }

.report-directory-help { color:var(--fg-dim); font-size:11px; line-height:1.45; margin-top:4px; }
.report-directory-help p { margin:3px 0; }
.report-directory-help p[role=status] { color:var(--fg); }
.report-directory-help button { margin-top:5px; font-size:11px; }
