:root{
  --bg:#0b0c10; --panel:#111317; --card:#171a20; --light:#1e222a; --ring:#2b313b;
  --text:#e7e9ee; --muted:#a9afbf; --primary:#3abff8;
  --suspected:#f1c40f; --symptoms:#e67e22; --confirmed:#e74c3c;
}
*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0; font-family:Inter,system-ui,Segoe UI,Roboto,Arial,sans-serif; color:var(--text);
  background:linear-gradient(180deg,#0b0c10,#0d1016 40%,#0b0c10)
}
a{color:var(--primary); text-decoration:none}

.app-header,.app-footer{padding:12px 16px; text-align:center}
.app-header h1{margin:8px 0 4px; font-size:28px}
.tagline{margin:0; color:var(--muted); font-size:14px}
.app-footer{font-size:13px; color:var(--muted)}

.layout{display:grid; grid-template-columns:340px 1fr; gap:16px; padding:16px}
@media (max-width: 900px){ .layout{grid-template-columns:1fr} .mapwrap{height:60vh} }

.card{
  background:var(--card); border:1px solid var(--ring); border-radius:16px; padding:16px;
  box-shadow:0 8px 24px rgba(0,0,0,.3)
}
.card.light{background:var(--light)}
.mt{margin-top:12px}
.panel{position:sticky; top:16px; align-self:start}
.mapwrap{padding:0; overflow:hidden}
#map{width:100%; height:70vh; border-radius:14px}

.field{display:flex; flex-direction:column; gap:6px; margin:10px 0}
.field input,.field select{
  background:#0f1217; color:var(--text); border:1px solid var(--ring);
  border-radius:10px; padding:10px 12px; outline:none
}
.field input:focus,.field select:focus{border-color:var(--primary)}
.row{display:flex; align-items:center}
.gap{gap:8px}

.btn{
  appearance:none; border:1px solid var(--ring); background:var(--panel); color:var(--text);
  padding:10px 12px; border-radius:12px; cursor:pointer; transition:.15s transform,.15s background
}
.btn:hover{transform:translateY(-1px); background:#141820}
.btn.primary{background:var(--primary); color:#051923; border:none; font-weight:700}
.btn.primary:hover{filter:brightness(1.05)}

.muted{color:var(--muted); font-size:12px}
.small{color:var(--muted); font-size:12px}

.legend h3{font-size:14px; margin:8px 0; color:var(--muted)}
.legend ul{list-style:none; padding:0; margin:0; display:flex; gap:10px; flex-wrap:wrap}
.dot{display:inline-block; width:10px; height:10px; border-radius:50%; vertical-align:middle; margin-right:6px}
.dot-suspected{background:var(--suspected)}
.dot-symptoms{background:var(--symptoms)}
.dot-confirmed{background:var(--confirmed)}

.toast{
  position:absolute; left:50%; bottom:16px; transform:translateX(-50%);
  padding:10px 14px; border-radius:12px; font-size:14px; background:#0f1217; border:1px solid var(--ring);
  box-shadow:0 8px 24px rgba(0,0,0,.3)
}
.hidden{display:none}
