:root{
  --bg0:#0b1020;
  --bg1:#0f172a;
  --line:rgba(255,255,255,.08);
  --text:#ffffff;
  --text-soft:rgba(255,255,255,.78);
  --text-muted:rgba(255,255,255,.62);
  --placeholder:rgba(255,255,255,.55);
}
*{ -webkit-tap-highlight-color: transparent; }
body.app-bg{
  background: radial-gradient(1200px 800px at 10% -10%, rgba(96,165,250,.25), transparent 60%),
              radial-gradient(900px 700px at 110% 0%, rgba(34,197,94,.18), transparent 60%),
              linear-gradient(180deg, var(--bg0), var(--bg1));
  color: var(--text);
  min-height: 100vh;
}
.app-topbar{
  position: sticky; top:0; z-index:1000;
  background: rgba(15,23,42,.78);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--line);
  padding: .65rem 0;
}
.brand-mark{
  width:36px;height:36px;border-radius:12px;
  background: linear-gradient(135deg, rgba(96,165,250,.95), rgba(34,197,94,.85));
  display:flex;align-items:center;justify-content:center;
  font-weight:800;color:#0b1020;letter-spacing:.5px;
}
.brand-title{ font-weight:800; line-height:1.1; }
.brand-sub{ font-size:.78rem; color: var(--text-muted); margin-top:-2px; }
.app-card{
  background: linear-gradient(180deg, rgba(17,28,51,.92), rgba(15,26,49,.92));
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: 0 12px 35px rgba(0,0,0,.35);
}
.app-card-link{ text-decoration:none; color:inherit; transition: transform .08s ease, border-color .08s ease; }
.app-card-link:active{ transform: scale(.99); border-color: rgba(96,165,250,.35); }
.app-alert{
  border-radius:14px;border:1px solid var(--line);
  background: rgba(17,28,51,.7); color: var(--text);
}
.btn-ghost{
  border:1px solid var(--line);
  color: rgba(229,231,235,.92);
  background: rgba(255,255,255,.03);
}
.btn-ghost:hover{ background: rgba(255,255,255,.06); color:#fff; }
.btn-primary-soft{
  border:1px solid rgba(96,165,250,.35);
  color: rgba(229,231,235,.95);
  background: rgba(96,165,250,.16);
}
.btn-primary-soft:hover{ background: rgba(96,165,250,.24); color:#fff; }
.btn-danger-soft{
  border:1px solid rgba(239,68,68,.35);
  color: rgba(229,231,235,.95);
  background: rgba(239,68,68,.12);
}
.btn-danger-soft:hover{ background: rgba(239,68,68,.20); color:#fff; }
.form-control, .form-select{
  background: rgba(255,255,255,.04) !important;
  border:1px solid var(--line) !important;
  color: var(--text) !important;
  border-radius: 14px !important;
}
.form-control::placeholder{ color: var(--placeholder) !important; opacity:1; }
.form-select::placeholder{ color: var(--placeholder) !important; opacity:1; }
.form-control:focus, .form-select:focus{
  box-shadow: 0 0 0 .2rem rgba(96,165,250,.18) !important;
  border-color: rgba(96,165,250,.35) !important;
}
.input-group-lg>.form-control{ border-radius:14px 0 0 14px !important; }
.input-group-lg>.btn{ border-radius:0 14px 14px 0 !important; }
.app-hr{ border-color: var(--line); opacity:1; }
.app-kv{
  display:flex; align-items:flex-start; justify-content:space-between; gap:1rem;
  padding:.55rem .65rem; border:1px solid var(--line); border-radius:14px;
  background: rgba(255,255,255,.02);
}
.app-kv .k{ color: var(--text-soft); font-size:.86rem; }
.app-kv .v{ text-align:right; }
.app-log{
  padding:.65rem .75rem; border:1px solid var(--line); border-radius:14px;
  background: rgba(255,255,255,.02);
}
.app-metric-row{
  display:flex; align-items:center; justify-content:space-between;
  padding:.65rem .75rem; border:1px solid var(--line); border-radius:14px;
  background: rgba(255,255,255,.02);
}
.table.table-dark{
  --bs-table-bg: transparent;
  --bs-table-striped-bg: rgba(255,255,255,.03);
  --bs-table-hover-bg: rgba(96,165,250,.06);
  --bs-table-border-color: rgba(255,255,255,.08);
}


/* Google Map container */
.app-map{height:260px;border-radius:14px;border:1px solid rgba(255,255,255,.08);overflow:hidden;background:rgba(255,255,255,.03);}
@media (min-width: 992px){.app-map{height:320px;}}

.text-muted{ color: var(--text-muted) !important; }
