:root{--bg:#0f1419;--panel:#1a222c;--line:#2c3744;--text:#e6edf3;--muted:#8b98a5;--accent:#3b82f6;
--sheriff:#2f6fed;--fire:#e5483b;--ems:#22b573;--disaster:#f59e0b;--crime:#a855f7;--alert:#06b6d4}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,Segoe UI,sans-serif}
a{color:var(--accent)}
.rp-banner{background:#7c2d12;color:#fff;text-align:center;padding:4px 8px;font-size:12px;font-weight:600}
.top{display:flex;justify-content:space-between;align-items:center;background:var(--panel);border-bottom:1px solid var(--line);padding:8px 16px;flex-wrap:wrap;gap:8px}
.top .brand{font-weight:700;font-size:18px;color:var(--text);text-decoration:none}.top small{color:var(--muted);font-weight:400}
.top nav{display:flex;gap:14px;align-items:center}.who{color:var(--muted)}
main{max-width:760px;margin:20px auto;padding:0 12px}main.wide{max-width:1200px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:16px;margin-bottom:16px}
.narrow{max-width:380px}
h1,h2{margin:.2em 0 .5em}
label{display:block;margin:8px 0;color:var(--muted);font-size:13px}
input,select,textarea,button{font:inherit}
input:not([type=checkbox]),select,textarea{width:100%;background:#0b1015;color:var(--text);border:1px solid var(--line);border-radius:6px;padding:7px 9px;margin-top:3px}
button{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:8px 14px;cursor:pointer}
button.alt{background:#374556}button.danger{background:#b3261e}button.sm{padding:3px 9px;font-size:12px}
button:disabled{opacity:.5}
.check{display:flex;gap:6px;align-items:center;color:var(--text)}
.row{display:flex;gap:10px;align-items:end}.row>*{flex:1}
.inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.inline input,.inline select{width:auto}
.err{color:#ff8a80}.ok{color:#7ee2a8;word-break:break-all}.muted{color:var(--muted)}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:6px;border-bottom:1px solid var(--line);vertical-align:middle}
td input,td select{margin:0}.nowrap{white-space:nowrap}
fieldset{border:1px solid var(--line);border-radius:6px}.cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:10px}
hr{border:0;border-top:1px solid var(--line);margin:16px 0}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.toolbar input[type=search]{width:220px;margin:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.tab{background:#243040;color:var(--text);border-radius:6px;padding:6px 12px;text-decoration:none;font-size:14px}
.tab.active{background:var(--accent)}
button.tab.cat-sheriff.active{background:var(--sheriff)}button.tab.cat-fire.active{background:var(--fire)}button.tab.cat-ems.active{background:var(--ems)}
button.tab.cat-disaster.active{background:var(--disaster)}button.tab.cat-crime.active{background:var(--crime)}button.tab.cat-alert.active{background:var(--alert)}
.list{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:12px}
.ev{background:var(--panel);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:8px;padding:10px 12px}
.ev.cat-sheriff{border-left-color:var(--sheriff)}.ev.cat-fire{border-left-color:var(--fire)}.ev.cat-ems{border-left-color:var(--ems)}
.ev.cat-disaster{border-left-color:var(--disaster)}.ev.cat-crime{border-left-color:var(--crime)}.ev.cat-alert{border-left-color:var(--alert)}
.ev.pri-1{box-shadow:0 0 0 1px #e5483b inset}
.ev h3{margin:6px 0 2px}.ev p{margin:3px 0;white-space:pre-wrap}.loc{color:var(--muted)}
.ev-head{display:flex;gap:6px;flex-wrap:wrap;align-items:center;font-size:12px}
.ev-head time,.cn{color:var(--muted)}.ev-head time{margin-left:auto}
.badge{background:#334155;border-radius:10px;padding:1px 8px}
.badge.cat-sheriff{background:var(--sheriff)}.badge.cat-fire{background:var(--fire)}.badge.cat-ems{background:var(--ems)}
.badge.cat-disaster{background:var(--disaster);color:#000}.badge.cat-crime{background:var(--crime)}.badge.cat-alert{background:var(--alert);color:#000}
.actions{display:flex;gap:6px;margin-top:8px}
dialog{background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;width:min(520px,94vw)}
dialog::backdrop{background:#000a}
#toasts{position:fixed;right:12px;bottom:12px;display:flex;flex-direction:column;gap:8px;z-index:50;max-width:340px}
.toast{background:var(--panel);border:1px solid var(--line);border-left:6px solid var(--accent);border-radius:8px;padding:10px 12px;cursor:pointer;box-shadow:0 4px 16px #0008}
.toast.cat-sheriff{border-left-color:var(--sheriff)}.toast.cat-fire{border-left-color:var(--fire)}.toast.cat-ems{border-left-color:var(--ems)}
.toast.cat-disaster{border-left-color:var(--disaster)}.toast.cat-crime{border-left-color:var(--crime)}.toast.cat-alert{border-left-color:var(--alert)}
.toast.pri-1{animation:flash 1s 3}@keyframes flash{50%{background:#5b1a16}}
@media(max-width:700px){.cols{grid-template-columns:1fr}table{display:block;overflow-x:auto}}
.btnlink{background:var(--accent);color:#fff;padding:6px 14px;border-radius:6px;text-decoration:none}
.modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:18px}
.module{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;background:var(--panel);border:1px solid var(--line);border-top:5px solid var(--accent);color:var(--text);padding:12px 14px}
.module.active{outline:2px solid #fff6}
.module .m-label{font-weight:600}.module .m-count{font-size:32px;font-weight:700;line-height:1.1}.module .m-sub{font-size:12px;color:var(--muted)}
.module.cat-sheriff{border-top-color:var(--sheriff)}.module.cat-fire{border-top-color:var(--fire)}.module.cat-ems{border-top-color:var(--ems)}
.module.cat-disaster{border-top-color:var(--disaster)}.module.cat-crime{border-top-color:var(--crime)}.module.cat-alert{border-top-color:var(--alert)}
table.clickable tbody tr{cursor:pointer}table.clickable tbody tr:hover,table.clickable tbody tr:focus{background:#243040;outline:0}
table.clickable tr.pri-1 td:first-child{border-left:4px solid #e5483b}
table.detail th{width:110px;color:var(--muted);font-weight:500}.desc{white-space:pre-wrap}

@media(max-width:700px){
  button{min-height:42px}
  button.sm{min-height:38px}
  main{margin:12px auto;padding:0 10px}
  main.wide{width:100%}
  .top{padding:8px 10px;align-items:flex-start}
  .top nav{gap:8px;flex-wrap:wrap;justify-content:flex-end}
  .who{width:100%;text-align:right}
  .toolbar{gap:8px}
  .toolbar input[type=search]{width:100%;flex:1 1 100%;min-height:42px}
  .toolbar h1,.toolbar h2{font-size:1.2rem}
  .toolbar button,.toolbar .tab{min-height:40px}
  .modules{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .module{min-width:0;padding:10px}
  .module .m-count{font-size:28px}
  .list{grid-template-columns:minmax(0,1fr);gap:8px}
  .ev{min-width:0}
  .ev-head time{margin-left:0}
  .actions{flex-wrap:wrap}
  .actions button{min-height:40px;flex:1 1 auto}
  .cols{grid-template-columns:1fr}
  .row{align-items:stretch;flex-direction:column;gap:4px}
  .row>*{width:100%}
  .inline{align-items:stretch}
  .inline input,.inline select{width:100%}
  .inline button{min-height:42px}
  table{display:block;max-width:100%;overflow-x:auto}
  table.clickable{display:block;overflow:visible}
  table.clickable thead{display:none}
  table.clickable tbody{display:grid;gap:8px}
  table.clickable tbody tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 10px;padding:8px 10px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:8px}
  table.clickable tbody tr.pri-1{border-left-color:#e5483b}
  table.clickable tbody td{display:flex;min-width:0;gap:6px;align-items:baseline;padding:5px 2px;overflow-wrap:anywhere;border-bottom:1px solid var(--line)}
  table.clickable tbody td::before{content:attr(data-label) ': ';flex:0 0 auto;color:var(--muted);font-size:11px;font-weight:600}
  table.clickable tbody td:nth-child(6),table.clickable tbody td:nth-child(7){grid-column:1/-1}
  table.detail{display:table;overflow:visible;min-width:0}
  table.detail th,table.detail td{padding:7px 4px;overflow-wrap:anywhere}
  table.detail th{width:90px}
  dialog{width:calc(100vw - 20px);max-width:none;max-height:calc(100dvh - 20px);overflow-y:auto;padding:14px}
  dialog button{min-height:42px}
  #toasts{left:8px;right:8px;bottom:8px;max-width:none}
  .toast{font-size:14px}
}

@media(max-width:380px){
  .modules{grid-template-columns:1fr 1fr}
  .module .m-label{font-size:13px}
  .module .m-sub{font-size:11px}
  .top nav{justify-content:flex-start}
  .who{text-align:left}
  table.clickable tbody tr{grid-template-columns:minmax(0,1fr)}
  table.clickable tbody td:nth-child(6),table.clickable tbody td:nth-child(7){grid-column:auto}
}
