:root{--bg:#07111f;--panel:#101f31;--panel2:#0b1727;--text:#f3f7fb;--muted:#9fb0c3;--border:#29405a;--accent:#c73b32;--green:#49b675;--amber:#e1ad45}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif}body{padding:0}a{color:inherit}.topbar{position:sticky;top:0;z-index:5;background:#0d1928;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:14px 22px}.topbar nav{display:flex;gap:8px;flex-wrap:wrap}.topbar a{padding:9px 12px;border-radius:9px;text-decoration:none;background:#21364d}.topbar a.active{background:var(--accent)}.page{padding:20px;max-width:1500px;margin:auto}.page h1{margin:0 0 4px}.sub{color:var(--muted);margin:0 0 18px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:16px;margin-bottom:16px}.toolbar{display:grid;grid-template-columns:2fr repeat(4,1fr);gap:10px}.toolbar.devices{grid-template-columns:2fr 1fr auto}.toolbar input,.toolbar select,input,select,textarea{width:100%;border:1px solid var(--border);border-radius:9px;background:var(--panel2);color:var(--text);padding:11px;font:inherit}button{border:0;border-radius:9px;padding:10px 13px;background:var(--accent);color:white;font-weight:700;cursor:pointer}.secondary{background:#263b52}.danger{background:#8f2f2a}.table-wrap{overflow:auto}.grid-table{width:100%;border-collapse:collapse}.grid-table th,.grid-table td{padding:10px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.grid-table th{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.grid-table tr.excluded{opacity:.6}.actions{display:flex;gap:6px;flex-wrap:wrap}.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.pager div{display:flex;gap:8px}.badge{display:inline-block;border:1px solid var(--border);padding:3px 7px;border-radius:999px;font-size:.8rem}.badge.active{border-color:var(--green);color:var(--green)}.badge.excluded{border-color:var(--amber);color:var(--amber)}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);display:grid;place-items:center;padding:20px;z-index:20}.overlay[hidden]{display:none!important}.card{width:min(950px,96vw);max-height:92vh;overflow:auto;background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:20px}.login-card{width:min(430px,94vw)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{display:grid;gap:6px;color:var(--muted)}.form-grid .wide{grid-column:1/-1}.modal-head{display:flex;justify-content:space-between;gap:12px;align-items:start}.modal-head h2{margin:0}.status{min-height:24px;color:var(--muted);white-space:pre-wrap}.device-name{font-weight:700}.unmapped{color:var(--amber)}@media(max-width:900px){.toolbar,.toolbar.devices,.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.topbar{align-items:flex-start;gap:10px;flex-direction:column}.grid-table{min-width:900px}}
.admin-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.admin-link-card{display:flex;flex-direction:column;gap:7px;padding:18px;border:1px solid var(--border,#334155);border-radius:14px;text-decoration:none;color:inherit;background:rgba(255,255,255,.025)}.admin-link-card:hover{border-color:#718096;background:rgba(255,255,255,.05)}.admin-link-card strong{font-size:19px}.admin-link-card span{color:#9fb0bf}.health-good{border-color:#2f855a}.health-warn{border-color:#b7791f}

.active-admin-list{display:grid;gap:10px}.active-admin-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:16px;align-items:center;padding:14px;border:1px solid var(--border,#334155);border-radius:12px;background:rgba(255,255,255,.025)}.active-admin-row div:first-child{display:grid;gap:4px}.active-admin-row span,.active-admin-row small{color:#9fb0bf}.active-admin-elapsed{font-size:26px;font-weight:800;font-variant-numeric:tabular-nums}.button-link{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:9px;text-decoration:none;color:inherit;border:1px solid var(--border,#475569)}@media(max-width:700px){.active-admin-row{grid-template-columns:1fr}.active-admin-elapsed{font-size:22px}}

.danger-zone{border-color:#8f2f2a}.danger-zone h2{color:#ff9b94}.danger-zone .danger{font-size:1.05rem;padding:12px 18px}
.announcement-admin{display:grid;grid-template-columns:1fr auto;gap:16px;padding:16px 0;border-bottom:1px solid var(--border)}.announcement-admin strong{font-size:1.2rem;margin-right:8px}.announcement-admin p{white-space:pre-wrap}.announcement-admin small{color:var(--muted)}

.csv-import-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.csv-import-row input[type=file]{padding:9px}@media(max-width:700px){.csv-import-row{grid-template-columns:1fr}}

/* v1.1.11 incident participation editor */
.participation-editor{margin-top:18px;padding-top:16px;border-top:1px solid var(--border)}.participation-editor h3{margin:0}.participation-users{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:9px;margin-top:12px}.participation-user{display:flex;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--border);border-radius:11px;background:var(--panel2);color:var(--text)}.participation-user input{width:auto;margin-top:3px}.participation-user span{display:grid;gap:2px}.participation-user small{color:var(--muted)}

.station-editor{border:1px solid rgba(127,127,127,.25);border-radius:18px;padding:16px;margin:14px 0}.station-editor .actions a{align-self:center}

/* v1.4.1 department logo uploader */
.department-logo-preview{margin-top:8px;min-height:130px;display:flex;align-items:center;justify-content:center;border:1px dashed rgba(127,127,127,.45);border-radius:16px;background:rgba(127,127,127,.06);padding:14px}
.department-logo-preview img{max-width:220px;max-height:150px;object-fit:contain}

/* v1.4.1 incident date filtering */
.date-filter-row{margin-top:10px;align-items:end}
.date-filter-row label{display:flex;flex-direction:column;gap:5px}

/* v1.4.1 member statistics */
.simple-chart svg{width:100%;height:auto;max-height:320px}
.mini-bar-row{display:grid;grid-template-columns:minmax(120px,1.5fr) 4fr 60px;gap:10px;align-items:center;margin:8px 0}
.mini-track{height:12px;border-radius:999px;background:rgba(127,127,127,.18);overflow:hidden}
.mini-track i{display:block;height:100%;background:currentColor;opacity:.7}
.mini-bar-row.is-me{font-weight:800}
.analytics-two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.stat-list p{margin:.5rem 0}
@media(max-width:800px){.analytics-two{grid-template-columns:1fr}}

/* v1.4.1 polished personal statistics charts */
.stat-chart-panel{overflow:hidden}
.chart-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:8px}
.chart-head h2{margin-bottom:2px}
.monthly-response-chart{padding:8px 4px 0}
.monthly-response-chart svg{width:100%;height:auto;min-height:280px;overflow:visible}
.chart-grid-line{stroke:currentColor;stroke-opacity:.10;stroke-width:1}
.chart-axis-label{fill:currentColor;opacity:.5;font-size:15px}
.chart-area{fill:currentColor;opacity:.07}
.chart-line{fill:none;stroke:currentColor;stroke-width:5;stroke-linejoin:round;stroke-linecap:round}
.chart-point{fill:var(--panel,#fff);stroke:currentColor;stroke-width:4}
.chart-value{fill:currentColor;font-size:20px;font-weight:800}
.chart-month{fill:currentColor;font-size:17px;font-weight:650;opacity:.78}
.rank-response-chart{padding-top:6px}
.mini-bar-row{grid-template-columns:minmax(160px,1.5fr) 4fr 64px;padding:7px 10px;border-radius:12px}
.mini-bar-row:nth-child(odd){background:rgba(127,127,127,.045)}
.mini-bar-row.is-me{background:rgba(127,127,127,.14);outline:1px solid rgba(127,127,127,.18)}
.mini-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-label em{font-style:normal;opacity:.58;font-weight:700}
.mini-label small{margin-left:7px;padding:2px 7px;border-radius:999px;background:currentColor;color:var(--panel,#fff);font-size:.68rem}
.mini-track{height:15px}
.mini-track i{border-radius:999px}
@media(max-width:700px){
  .monthly-response-chart svg{min-width:760px}
  .monthly-response-chart{overflow-x:auto}
  .mini-bar-row{grid-template-columns:minmax(120px,1.6fr) 3fr 42px}
}

/* v1.4.1 unlinked incident participation */
.participation-divider{margin:16px 0 8px;padding-top:14px;border-top:1px solid rgba(127,127,127,.22)}
.participation-user.unlinked-device{background:rgba(127,127,127,.045)}
.participation-user.unlinked-device small{word-break:break-word}

/* v1.4.1 full unlinked device selection */
.participation-user.unlinked-device.incident-device{background:rgba(127,127,127,.10)}
.participation-divider small{font-weight:400;opacity:.7}

/* v1.4.1 unified personnel directory */
.personnel-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:14px}
.personnel-card{border:1px solid rgba(127,127,127,.18);border-radius:16px;padding:16px;background:rgba(127,127,127,.035)}
.personnel-title{display:flex;gap:10px;align-items:center;margin-bottom:12px}.personnel-title .p-name{font-size:1.15rem;font-weight:750}
.form-grid.compact{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.device-chip-list{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.device-chip{border:1px solid rgba(127,127,127,.22);border-radius:999px;padding:6px 10px}.device-chip small{opacity:.55}
.button-link{text-decoration:none;display:inline-flex;align-items:center}

/* v1.7.0 member events and announcements */
.page{width:min(1500px,calc(100% - 32px));max-width:none;margin:0 auto;padding:clamp(16px,2vw,34px) 0}
.large-calendar,.large-announcements{display:grid;gap:clamp(12px,1.4vw,22px)}
.member-event-card,.member-announcement-card{display:grid;grid-template-columns:auto minmax(0,1fr);gap:clamp(12px,1.5vw,24px);padding:clamp(16px,2vw,30px);border:1px solid var(--border);border-radius:18px;background:var(--panel2,#111d2a);min-width:0}
.member-card-icon{font-size:clamp(28px,3vw,48px);line-height:1}
.member-card-content{min-width:0}
.member-card-content h2{font-size:clamp(21px,2vw,34px);line-height:1.15;margin:0 0 8px;text-transform:none;letter-spacing:normal;color:inherit}
.member-card-content p{font-size:clamp(16px,1.15vw,20px);line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}
.member-event-time{font-size:clamp(17px,1.35vw,23px);font-weight:800;font-variant-numeric:tabular-nums}
.member-event-location{margin-top:7px;color:var(--muted);font-size:clamp(15px,1.1vw,19px);overflow-wrap:anywhere}
.member-announcement-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.member-announcement-head time{flex:0 0 auto;color:var(--muted);font-size:.9rem}
@media(max-width:700px){
  .page{width:min(100% - 20px,1500px)}
  .member-event-card,.member-announcement-card{grid-template-columns:1fr}
  .member-card-icon{font-size:30px}
  .member-announcement-head{display:grid;gap:2px}
  .topbar{align-items:flex-start;gap:10px;flex-wrap:wrap}
  .topbar nav{display:flex;flex-wrap:wrap;gap:8px}
}

/* v1.7.0 Google Photos setup flow */
.photos-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0}
.photos-step{border:1px solid var(--border);border-radius:14px;padding:12px;background:var(--panel2,#111d2a);display:grid;gap:5px}
.photos-step strong{font-size:1rem}.photos-step span{color:var(--muted);font-size:.9rem;line-height:1.35}
@media(max-width:750px){.photos-steps{grid-template-columns:1fr}}
.analytics-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:14px 0 22px}.metric-card-lite{border:1px solid var(--border);border-radius:14px;padding:14px;background:var(--panel2,#111d2a);display:grid;gap:5px}.metric-card-lite span{color:var(--muted)}.metric-card-lite strong{font-size:1.7rem}.table-wrap{overflow-x:auto}.table-wrap code{white-space:normal;word-break:break-word}

/* v2.1.0 responder statistics and incident detail */
.grid-table tr.is-me td{font-weight:700;background:rgba(59,130,246,.08)}
.incident-responder-list{display:grid;gap:7px;margin:6px 0 18px}
.incident-responder-row{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:9px 11px;border:1px solid rgba(127,127,127,.18);border-radius:10px;background:rgba(127,127,127,.05)}
.incident-responder-row span{opacity:.72}
@media(max-width:640px){.incident-responder-row{align-items:flex-start;flex-direction:column;gap:2px}}

/* v2.1.16 accessibility */
.skip-link{position:fixed!important;left:12px;top:8px;z-index:100000;padding:10px 14px;background:#fff;color:#111;border:2px solid #111;border-radius:8px;transform:translateY(-150%);transition:transform .15s}
.skip-link:focus{transform:translateY(0)}
:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid #fbbf24!important;outline-offset:3px!important}
button,a.button-link,input,select,textarea{min-height:44px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media(forced-colors:active){.badge,.choice,.panel,.nav-launch-card{border:1px solid CanvasText}.dot.active{forced-color-adjust:auto}}
.reorder-controls{position:absolute;left:8px;bottom:7px;display:flex;gap:3px;opacity:0;transition:opacity .12s;z-index:4}
.nav-launch-card:focus-within .reorder-controls,.nav-launch-card:hover .reorder-controls{opacity:1}
.reorder-controls button{min-width:36px;min-height:36px;padding:2px 8px}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* v2.1.16 participation source */
.participation-source{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:.82rem;font-weight:800;border:1px solid currentColor}
.participation-source.automatic{color:#166534;background:rgba(34,197,94,.10)}
.participation-source.manual{color:#92400e;background:rgba(245,158,11,.12)}
.participation-source.automatic_manual{color:#1d4ed8;background:rgba(59,130,246,.10)}
.incident-responder-row>span:first-child{display:flex;flex-direction:column}.incident-responder-row small{opacity:.7;margin-top:2px}

/* v2.1.16 collapsible My Incident Participation */
.participation-details{padding:0;overflow:hidden}
.participation-details>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:18px 20px;user-select:none}
.participation-details>summary::-webkit-details-marker{display:none}
.participation-details>summary::before{content:'▸';font-size:1.1rem;transition:transform .15s ease}
.participation-details[open]>summary::before{transform:rotate(90deg)}
.participation-details>summary span:first-child{display:flex;flex-direction:column;gap:4px}
.participation-details>summary strong{font-size:1.15rem}
.participation-details>summary small{font-weight:400;opacity:.72}
.participation-details .details-state{margin-left:auto;font-size:.85rem;font-weight:800;opacity:.7}
.participation-details[open] .details-state{font-size:0}
.participation-details[open] .details-state::after{content:'Hide';font-size:.85rem}
.participation-details-body{border-top:1px solid rgba(127,127,127,.16);padding:18px 20px 20px}
@media(max-width:640px){.participation-details>summary{align-items:flex-start;padding:16px}.participation-details-body{padding:14px}}

/* v2.1.16 Station Command Home webhook */
.integration-subsection{margin-top:22px;padding-top:18px;border-top:1px solid rgba(127,127,127,.2);display:grid;gap:12px}
.integration-subsection h3{margin:0;font-size:1.15rem}
.integration-subsection label:not(.check-row){display:grid;gap:6px}

.announcement-admin.is-hidden{opacity:.58}.announcement-admin.is-hidden strong{text-decoration:line-through}
.events-four-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:1050px}.events-month-head{text-align:center;font-weight:900;color:var(--muted);padding:6px}.events-month-day{min-height:145px;border:1px solid var(--border);border-radius:10px;padding:7px;background:var(--card2);overflow:hidden}.events-month-day.today{outline:2px solid #60a5fa;outline-offset:-2px}.events-month-date{display:block;margin-bottom:5px}.events-month-day article{display:grid;gap:2px;border-left:4px solid #22c55e;background:rgba(255,255,255,.05);padding:5px 7px;border-radius:7px;margin-bottom:5px}.events-month-day article b,.events-month-day article span,.events-month-day article small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.events-month-day article span,.events-month-day article small{font-size:.78rem;color:var(--muted)}

/* VB.2.3.5 — personnel account activity */
.personnel-account-meta{
  margin-top:10px;
  padding:9px 11px;
  border:1px solid var(--border);
  border-radius:10px;
  background:rgba(255,255,255,.025);
  color:var(--muted);
  font-size:.88rem;
  line-height:1.45;
}
.personnel-account-meta strong{color:var(--text)}
.account-detail-grid{
  display:grid;
  grid-template-columns:minmax(200px,1.5fr) minmax(150px,.8fr) minmax(110px,.5fr);
  gap:12px;
  margin-top:8px;
}
.account-detail-grid>div{display:grid;gap:4px}
.account-detail-grid small{color:var(--muted);font-weight:700}
.account-detail-grid code{overflow-wrap:anywhere}
@media(max-width:700px){
  .account-detail-grid{grid-template-columns:1fr}
  .personnel-account-meta{font-size:.82rem}
}

/* VB.2.3.5 — readable/filterable security events */
.security-filter-grid{
  display:grid;
  grid-template-columns:minmax(220px,1.7fr) minmax(170px,.8fr) minmax(150px,.65fr) minmax(120px,.45fr);
  gap:10px;
  margin:12px 0 8px;
}
.security-filter-grid label{display:grid;gap:5px}
.security-filter-actions{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.security-table th:nth-child(1){min-width:165px}
.security-table th:nth-child(2){min-width:145px}
.security-table th:nth-child(3){min-width:220px}
.security-table th:nth-child(4){min-width:220px}
.security-table th:nth-child(5){min-width:190px}
.security-time{white-space:nowrap}
.security-event{
  display:inline-flex;
  align-items:center;
  border-radius:999px;
  padding:4px 8px;
  font-weight:800;
  font-size:.82rem;
  border:1px solid var(--border);
}
.security-ok{background:rgba(34,197,94,.13);border-color:rgba(34,197,94,.42)}
.security-danger{background:rgba(239,68,68,.13);border-color:rgba(239,68,68,.45)}
.security-warn{background:rgba(245,158,11,.13);border-color:rgba(245,158,11,.45)}
.security-neutral{background:rgba(148,163,184,.09)}
.security-event-code{display:block;color:var(--muted);margin-top:4px}
.security-detail-stack{display:grid;gap:4px}
.security-detail{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px;align-items:start}
.security-detail b{color:var(--muted);font-size:.77rem;text-transform:uppercase;letter-spacing:.04em}
.security-detail span,.security-detail{overflow-wrap:anywhere}
.security-source{display:grid;gap:4px}.security-source small{color:var(--muted)}
@media(max-width:900px){
  .security-filter-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:600px){
  .security-filter-grid{grid-template-columns:1fr}
  .security-table{min-width:920px}
}


/* VB.2.3.5 — collapsible/readable security and application audit logs */
.collapsible-log-panel{padding:0;overflow:hidden}
.collapsible-log-panel details{margin:0}
.collapsible-log-panel summary{
  list-style:none;
  cursor:pointer;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:18px 20px;
  user-select:none;
}
.collapsible-log-panel summary::-webkit-details-marker{display:none}
.collapsible-log-panel summary>span:first-child{display:grid;gap:4px}
.collapsible-log-panel summary strong{font-size:1.35rem}
.collapsible-log-panel summary small{color:var(--muted);font-weight:400}
.collapsible-log-panel summary::after{
  content:'▾';
  margin-left:auto;
  font-size:1rem;
  color:var(--muted);
  transition:transform .16s ease;
}
.collapsible-log-panel details:not([open]) summary::after{transform:rotate(-90deg)}
.collapsible-log-panel summary .badge{margin-left:8px;margin-right:8px}
.log-panel-body{padding:0 20px 20px;border-top:1px solid var(--border)}
.audit-table th:nth-child(1){min-width:165px}
.audit-table th:nth-child(2){min-width:190px}
.audit-table th:nth-child(3){min-width:210px}
.audit-table th:nth-child(4){min-width:360px}
.audit-detail-grid{display:grid;gap:5px}
.audit-detail{
  display:grid;
  grid-template-columns:minmax(90px,auto) minmax(0,1fr);
  gap:8px;
  align-items:start;
}
.audit-detail b{
  color:var(--muted);
  font-size:.77rem;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.audit-detail span{overflow-wrap:anywhere}
@media(max-width:700px){
  .collapsible-log-panel summary{padding:14px}
  .log-panel-body{padding:0 14px 14px}
  .collapsible-log-panel summary strong{font-size:1.12rem}
  .collapsible-log-panel summary small{font-size:.78rem}
  .audit-table{min-width:900px}
}

.address-note-editor{border:1px solid var(--border);border-radius:14px;padding:14px;margin:10px 0;background:var(--panel)}

/* VB.2.3.5 device import */
.device-import-body{padding-top:14px}
.device-import-results{margin-top:14px}
.checkbox-label{display:flex!important;align-items:center;gap:10px;min-height:44px}
.checkbox-label input[type="checkbox"]{width:20px;height:20px;flex:0 0 auto}
