:root{
  --bg: #4899c2;
  --bg-grid: #b8c8cc;
  --panel: #17485a;
  --panel-2: #6fbece;
  --border: rgba(199, 227, 247, 0.16);
  --text: #e7f1f8;
  --text-dim: #99caf6;
  --text-faint: #a7c0d8;

  --teal: #2fe6b8;
  --teal-dim: rgba(47,230,184,0.14);
  --amber: #ffc056;
  --amber-dim: rgba(255,192,86,0.14);
  --orange: #ff8a3d;
  --orange-dim: rgba(255,138,61,0.14);
  --red: #ff4d5e;
  --red-dim: rgba(255,77,94,0.16);

  --font-display: "Space Grotesk", sans-serif;
  --font-body: "Inter", sans-serif;
  --font-data: "JetBrains Mono", monospace;
}

*{ box-sizing: border-box; }

body{
  margin:0;
  background:
    radial-gradient(ellipse at 12% -15%, rgba(47,230,184,0.13), transparent 42%),
    radial-gradient(ellipse at 90% 5%, rgba(234,168,76,0.08), transparent 35%),
    linear-gradient(rgba(105,167,169,.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(105,167,169,.035) 1px, transparent 1px),
    var(--bg);
  background-size:auto, auto, 34px 34px, 34px 34px, auto;
  color:var(--text);
  font-family:var(--font-body);
  min-height:100vh;
}

[hidden]{ display:none !important; }
.public-landing{ --landing-ink:#203a34; --landing-muted:#62736d; --landing-green:#24634f; --landing-green-dark:#194b3b; --landing-line:#dce4dd; --landing-paper:#f7f7f2; min-height:100vh; background:var(--landing-paper); color:var(--landing-ink); font-family:"Source Sans 3","Segoe UI",sans-serif; }
.landing-header{ display:flex; align-items:center; justify-content:space-between; gap:24px; max-width:1240px; min-height:82px; margin:0 auto; padding:14px 32px; }
.landing-brand{ display:flex; align-items:center; gap:11px; color:var(--landing-ink); text-decoration:none; }
.landing-brand img{ width:40px; height:40px; object-fit:contain; }
.landing-brand b,.landing-brand small{ display:block; }
.landing-brand b{ font:700 18px "Source Sans 3","Segoe UI",sans-serif; letter-spacing:-.02em; }
.landing-brand small{ margin-top:1px; color:var(--landing-muted); font-size:12px; }
.landing-nav{ display:flex; align-items:center; gap:30px; }
.landing-nav a{ color:#465b53; font-size:14px; text-decoration:none; transition:color .18s ease; }
.landing-nav a:hover{ color:var(--landing-green); }
.landing-signin,.landing-primary,.landing-register,.landing-footer button{ min-height:44px; padding:0 19px; border:1px solid var(--landing-green); border-radius:6px; background:var(--landing-green); color:#fff; font:600 14px "Source Sans 3","Segoe UI",sans-serif; cursor:pointer; transition:background .18s ease,border-color .18s ease,transform .18s ease; }
.landing-signin:hover,.landing-primary:hover,.landing-footer button:hover{ border-color:var(--landing-green-dark); background:var(--landing-green-dark); }
.landing-hero{ position:relative; display:flex; align-items:flex-end; min-height:540px; margin:0; padding:0; overflow:hidden; background:#19382e; color:#fff; }
.landing-photo{ position:absolute; inset:0; z-index:0; overflow:hidden; background:#dce5de; }
.landing-photo__empty,.landing-photo img{ position:absolute; inset:0; width:100%; height:100%; }
.landing-photo__empty{ background:linear-gradient(135deg,#d8e5dc,#edf0e8); }
.landing-photo img{ display:block; object-fit:cover; object-position:center; }
.landing-photo::after{ position:absolute; inset:45% 0 0; background:linear-gradient(transparent,rgba(21,43,35,.44)); content:""; }
.landing-hero__shade{ position:absolute; inset:0; z-index:1; background:linear-gradient(90deg,rgba(12,31,25,.84) 0%,rgba(17,39,32,.67) 42%,rgba(17,39,32,.13) 100%),linear-gradient(0deg,rgba(12,31,25,.28),transparent 55%); }
.landing-hero__copy{ position:relative; z-index:2; width:min(1240px,100%); max-width:none; margin:0 auto; padding:104px 32px 88px; }
.landing-eyebrow{ margin:0 0 17px; color:#c6e1cc; font:600 14px "Source Sans 3","Segoe UI",sans-serif; letter-spacing:.025em; }
.landing-hero h1{ max-width:13ch; margin:0; color:#fff; font:600 clamp(44px,5.1vw,68px)/1.06 "Lora",Georgia,serif; letter-spacing:-.045em; }
.landing-hero__copy > p:not(.landing-eyebrow){ max-width:520px; margin:20px 0 28px; color:#eef3ef; font-size:17px; line-height:1.6; }
.landing-actions{ display:flex; flex-wrap:wrap; gap:11px; }
.landing-primary,.landing-register{ min-height:48px; padding:0 20px; font-size:15px; }
.landing-register{ border-color:rgba(255,255,255,.72); background:rgba(15,35,29,.26); color:#fff; }
.landing-register:hover{ border-color:#fff; background:rgba(15,35,29,.7); }
.landing-hero__stamp{ position:absolute; z-index:2; right:max(32px,calc((100vw - 1176px)/2)); bottom:28px; display:flex; align-items:center; gap:9px; margin:0; color:#fff; font:500 14px "Source Sans 3","Segoe UI",sans-serif; text-shadow:0 1px 8px rgba(0,0,0,.4); }
.landing-levels,.landing-services{ max-width:1240px; margin:0 auto; padding:48px 32px 54px; }
.landing-section-heading{ max-width:680px; margin-bottom:25px; }
.landing-section-heading .landing-eyebrow{ margin-bottom:8px; }
.landing-section-heading h2{ margin:0; color:var(--landing-ink); font:600 clamp(28px,3.2vw,38px)/1.2 "Lora",Georgia,serif; letter-spacing:-.025em; }
.landing-section-heading > p:not(.landing-eyebrow){ margin:10px 0 0; color:var(--landing-muted); font-size:16px; line-height:1.55; }
.landing-level-list{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.landing-level{ min-height:142px; padding:20px 20px 18px; border:1px solid var(--landing-line); border-top:3px solid #318264; border-radius:7px; background:#fff; }
.landing-level b{ color:#27694f; font:600 17px "Source Sans 3","Segoe UI",sans-serif; }
.landing-level p{ margin:8px 0 0; color:var(--landing-muted); font-size:15px; line-height:1.5; }
.landing-level--normal{ border-top-color:#318264; }
.landing-level--alert{ border-top-color:#c39332; }
.landing-level--alert b{ color:#946d1c; }
.landing-level--warning{ border-top-color:#c56c36; }
.landing-level--warning b{ color:#9b4c22; }
.landing-level--critical{ border-top-color:#b84a4d; }
.landing-level--critical b{ color:#96393e; }
.landing-services{ padding-top:6px; padding-bottom:64px; }
.landing-service-list{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 38px; }
.landing-service-list article{ display:flex; gap:17px; padding:19px 0; border-top:1px solid var(--landing-line); }
.landing-service-list h3{ margin:0; color:var(--landing-ink); font:600 18px "Source Sans 3","Segoe UI",sans-serif; }
.landing-service-list p{ margin:4px 0 0; color:var(--landing-muted); font-size:15px; line-height:1.5; }
.landing-hotlines{ max-width:1240px; margin:0 auto; padding:0 32px 64px; scroll-margin-top:20px; }
.landing-hotlines .landing-section-heading{ max-width:760px; }
.landing-hotline-grid{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.landing-hotline{ display:flex; min-width:0; min-height:132px; flex-direction:column; align-items:flex-start; padding:18px 20px; border:1px solid var(--landing-line); border-radius:7px; background:#fff; color:var(--landing-ink); text-decoration:none; transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease; }
.landing-hotline:hover{ transform:translateY(-2px); border-color:#9db7a5; box-shadow:0 8px 20px rgba(32,58,52,.08); }
.landing-hotline span{ color:var(--landing-muted); font-size:14px; font-weight:600; }
.landing-hotline strong{ margin:5px 0; color:var(--landing-green); font:600 27px/1.15 "Source Sans 3","Segoe UI",sans-serif; }
.landing-hotline small{ color:var(--landing-muted); font-size:13px; line-height:1.4; }
.landing-hotline--urgent{ border-color:#e4c5bd; background:#fffaf8; }
.landing-hotline--urgent strong{ color:#a63832; }
.landing-footer{ display:flex; align-items:center; justify-content:space-between; gap:16px; padding:20px max(32px,calc((100vw - 1176px)/2)); border-top:1px solid var(--landing-line); color:var(--landing-muted); font-size:14px; }
.landing-footer button{ min-height:40px; }
.landing-brand:focus-visible,.landing-nav a:focus-visible,.landing-signin:focus-visible,.landing-primary:focus-visible,.landing-register:focus-visible,.landing-hotline:focus-visible,.landing-footer button:focus-visible{ outline:3px solid #9cbca7; outline-offset:3px; }
.auth-back{ margin:0 0 24px; padding:0; border:0; background:none; color:var(--text-faint); font:11px var(--font-data); cursor:pointer; }
.auth-back:hover{ color:var(--teal); }
.auth-shell{ min-height:100vh; display:grid; place-items:center; padding:24px; background:linear-gradient(135deg, rgba(7,21,28,.36), rgba(47,230,184,.08)); }
.auth-card{ width:min(440px, 100%); padding:42px; background:rgba(13,35,43,.96); border:1px solid rgba(47,230,184,.28); border-radius:10px; box-shadow:0 24px 80px rgba(0,0,0,.42); }
.auth-card__brand{ display:flex; align-items:center; gap:12px; font:700 12px var(--font-data); letter-spacing:.14em; color:var(--teal); }
.auth-card__brand .topbar__mark{ width:36px; height:36px; font-size:24px; border-radius:8px; }
.auth-kicker{ margin:34px 0 10px; color:var(--teal); font:500 10px var(--font-data); letter-spacing:.12em; }
.auth-card h1{ margin:0; font:700 34px var(--font-display); letter-spacing:-.5px; }
.auth-copy{ margin:8px 0 28px; color:var(--text-dim); font-size:13px; line-height:1.6; }
.auth-card label{ display:block; margin:16px 0; color:var(--text-dim); font:500 11px var(--font-data); text-transform:uppercase; letter-spacing:.05em; }
.auth-card input{ display:block; width:100%; margin-top:8px; padding:14px; color:var(--text); background:#07171d; border:1px solid var(--border); border-radius:5px; font:14px var(--font-body); outline:none; }
.auth-card select,.auth-card textarea{ display:block; width:100%; margin-top:8px; padding:14px; color:var(--text); background:#07171d; border:1px solid var(--border); border-radius:5px; font:14px var(--font-body); outline:none; }
.auth-card textarea{ min-height:72px; resize:vertical; }
.terms-label{ display:flex !important; align-items:flex-start; gap:8px; text-transform:none !important; letter-spacing:0 !important; line-height:1.4; }
.terms-label input{ width:auto; margin:2px 0 0; }
.terms-label a{ color:var(--teal); }
.terms-details{ margin:8px 0 14px; color:var(--text-dim); font-size:11px; line-height:1.5; }
.terms-details summary{ color:var(--teal); cursor:pointer; }
.terms-details p{ margin:7px 0 0; }
.auth-card input:focus,.auth-card select:focus,.auth-card textarea:focus{ border-color:var(--teal); box-shadow:0 0 0 3px var(--teal-dim); }
.auth-card form button{ width:100%; margin-top:10px; padding:13px; border:0; border-radius:6px; background:var(--teal); color:#06231e; font:700 12px var(--font-data); text-transform:uppercase; cursor:pointer; }
.auth-card form button:hover{ background:#72f2d0; transform:translateY(-1px); }
.auth-card form button:focus-visible,.auth-switch:focus-visible,.forecast-tab:focus-visible,.forecast-fullscreen-btn:focus-visible{ outline:2px solid var(--teal); outline-offset:3px; }
.auth-switch{ display:block; margin:20px auto 0; padding:0; border:0; background:transparent; color:var(--text-dim); font:12px var(--font-data); cursor:pointer; }
.auth-switch:hover{ color:var(--teal); }
.auth-error{ min-height:18px; margin:12px 0 0; color:var(--red); font-size:12px; text-align:center; }
.auth-error.is-success{ color:var(--teal); }
.auth-card form .auth-resend-verification{ display:block; width:auto; margin:10px auto 0; padding:8px; border:0; border-radius:0; background:transparent; color:var(--teal); font:12px var(--font-data); text-transform:none; cursor:pointer; }
.auth-card form .auth-resend-verification:hover{ background:transparent; text-decoration:underline; }
.auth-verification-message{ color:var(--red); font-size:13px; line-height:1.5; text-align:center; }
.auth-verification-message.is-success{ color:var(--teal); }
.auth-verify-email{ display:block; width:100%; margin-top:12px; padding:13px; border:0; border-radius:6px; background:var(--teal); color:#06231e; font:700 12px var(--font-data); text-transform:uppercase; cursor:pointer; }
.auth-verify-email:hover{ background:#72f2d0; }
.auth-forgot-password,.auth-card form .auth-flow-back{ display:block; margin:12px auto; padding:6px; border:0; background:transparent; color:var(--text-dim); font:12px var(--font-data); cursor:pointer; }
.auth-forgot-password:hover,.auth-card form .auth-flow-back:hover{ color:var(--teal); text-decoration:underline; }
.auth-card form .auth-flow-message{ min-height:18px; color:var(--red); font-size:12px; line-height:1.5; text-align:center; text-transform:none; letter-spacing:0; }
.auth-card form .auth-flow-message.is-success{ color:var(--teal); }

.scanline-overlay{ position:fixed; inset:0; pointer-events:none; z-index:50; background:repeating-linear-gradient(to bottom, rgba(255,255,255,.012) 0, rgba(255,255,255,.012) 1px, transparent 1px, transparent 3px); mix-blend-mode:overlay; }

/* ── Topbar ─────────────────────────────────────────────── */
.topbar{ display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:16px; padding:24px clamp(20px, 4vw, 56px); border-bottom:1px solid var(--border); background:rgba(7,21,28,.72); backdrop-filter:blur(14px); }
.topbar__brand{ display:flex; align-items:center; gap:14px; }
.topbar__mark{
  font-family: var(--font-display); font-size: 30px; color: var(--teal);
  border-radius: 10px;
  padding: 20px 22px 22px;
  background: var(--teal-dim);
}
.topbar__brand h1{
  border-radius: 8px;
  padding: 18px 20px;
  box-shadow: 0 10px 30px rgba(0,0,0,.12);
}
.stat-card:hover,.panel:hover,.gauge-panel:hover{ border-color:rgba(47,230,184,.3); }
.topbar__sub{ margin: 2px 0 0; color: var(--text-dim); font-size: 12.5px; }

.topbar__meta{ display:flex; gap: 28px; flex-wrap: wrap; }
.meta-item{ display:flex; flex-direction:column; gap:4px; }
.meta-item__label{
  font-size: 10.5px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--text-faint);
}
.meta-item__value{
  font-family: var(--font-data); font-size: 13.5px; color: var(--text);
  display:flex; align-items:center; gap:6px;
}
.device-status-reason{ max-width: 260px; color: var(--text-dim); font-size: 11px; line-height: 1.4; }

.dot{ width:8px; height:8px; border-radius:50%; display:inline-block; }
.dot--online{ background: var(--teal); box-shadow: 0 0 8px var(--teal); }
.dot--offline{ background: var(--red); box-shadow: 0 0 8px var(--red); }
.dot--unknown{ background: var(--text-faint); }

/* ── Layout ─────────────────────────────────────────────── */
.layout{
  display: grid;
  grid-template-columns: 340px 1fr;
  gap: 20px;
  padding: 24px 32px 8px;
  max-width: 1320px;
  margin: 0 auto;
}
.stat-grid{
  grid-column: 2;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}
.chart-panel{ grid-column: 1 / -1; }
.history-panel{ grid-column: 1 / -1; }
.forecast-panel{ grid-column: 1 / -1; }

@media (max-width: 900px){
  .layout{ grid-template-columns: minmax(0, 1fr); padding:20px 16px 8px; }
  .layout > *,.stat-grid{ min-width:0; }
  .stat-grid{ grid-column: 1; grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* ── Gauge panel (signature element) ───────────────────── */
.gauge-panel{
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 22px;
  display:flex; flex-direction:column; gap: 16px;
}
.gauge-panel__head{ display:flex; align-items:center; justify-content:space-between; }
.gauge-panel__head h2{ font-family: var(--font-display); font-size:15px; margin:0; color: var(--text-dim); font-weight:600;}

.status-pill{
  display:flex; align-items:center; gap:6px;
  font-family: var(--font-data); font-size: 12px; font-weight:700;
  padding: 5px 10px; border-radius: 999px;
  background: var(--teal-dim); color: var(--teal);
  border: 1px solid rgba(47,230,184,0.3);
  transition: all .3s ease;
}
.status-pill--alert{ background: var(--amber-dim); color: var(--amber); border-color: rgba(255,192,86,0.35); }
.status-pill--warning{ background: var(--orange-dim); color: var(--orange); border-color: rgba(255,138,61,0.35); }
.status-pill--critical{ background: var(--red-dim); color: var(--red); border-color: rgba(255,77,94,0.4); animation: pulse 1.4s infinite; }
.gauge-panel__head .status-pill{ min-width:108px; justify-content:center; text-transform:uppercase; letter-spacing:.06em; }

@keyframes pulse{
  0%,100%{ box-shadow: 0 0 0 rgba(255,77,94,0); }
  50%{ box-shadow: 0 0 14px rgba(255,77,94,0.55); }
}

.gauge{ display:flex; align-items:flex-end; gap: 18px; padding: 8px 4px 0; }
.gauge__tube{
  position: relative;
  width: 92px; height: 260px;
  border-radius: 14px;
  background: #081420;
  border: 1px solid var(--border);
  overflow: hidden;
  box-shadow: inset 0 0 22px rgba(0,0,0,0.55);
}
.gauge__fill{
  position:absolute; left:0; right:0; bottom:0;
  background: linear-gradient(180deg, var(--teal), #17a888);
  transition: height 1.1s cubic-bezier(.4,0,.2,1), background 0.6s ease;
}
.gauge__fill.level--alert{ background: linear-gradient(180deg, var(--amber), #c98928); }
.gauge__fill.level--warning{ background: linear-gradient(180deg, var(--orange), #c85a1c); }
.gauge__fill.level--critical{ background: linear-gradient(180deg, var(--red), #b21f2e); }

.gauge__wave{
  position:absolute; top:-6px; left:-25%; width:150%; height:12px;
  background: rgba(255,255,255,0.35);
  border-radius: 50%;
  animation: bob 2.6s ease-in-out infinite;
}
@keyframes bob{
  0%,100%{ transform: translateY(0) scaleX(1); }
  50%{ transform: translateY(3px) scaleX(1.04); }
}

.gauge__threshold{
  position:absolute; left:0; right:0; height:0;
  border-top: 1px dashed rgba(231,241,248,0.28);
  z-index: 3;
}
.gauge__threshold span{
  position:absolute; left: 100px; top:-8px; white-space:nowrap;
  font-family: var(--font-data); font-size: 10px; color: var(--text-faint);
  opacity:.55; transition:opacity .3s ease, text-shadow .3s ease;
}
.gauge__threshold--critical span{ color: var(--red); }
.gauge__threshold--warning span{ color: var(--orange); }
.gauge__threshold--alert span{ color: var(--amber); }
.gauge__threshold.is-active{ border-top-color:currentColor; border-top-width:2px; }
.gauge__threshold.is-active span{ opacity:1; font-weight:700; text-shadow:0 0 10px currentColor; }
.gauge__threshold--critical.is-active{ color:var(--red); }
.gauge__threshold--warning.is-active{ color:var(--orange); }
.gauge__threshold--alert.is-active{ color:var(--amber); }

.gauge__legend{
  display:grid; grid-template-columns:repeat(4, 1fr); gap:8px;
  padding:10px 0 2px; border-top:1px solid var(--border);
}
.gauge__legend-item{
  justify-content:center; min-width:0; padding:5px 6px; opacity:.42;
  font-size:9px; transition:opacity .3s ease, transform .3s ease, box-shadow .3s ease;
}
.gauge__legend-item.is-active{ opacity:1; transform:translateY(-1px); }

.gauge__readout{ display:flex; flex-direction:column; }
.gauge__value{ font-family: var(--font-display); font-size: 46px; font-weight:700; line-height:1; }
.gauge__unit{ font-family: var(--font-data); color: var(--text-dim); font-size: 13px; }

.status-message{
  margin: 0; padding-top: 10px; border-top: 1px solid var(--border);
  font-size: 13px; color: var(--text-dim); line-height:1.5;
}

/* ── Stat cards ─────────────────────────────────────────── */
.stat-card{
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 16px 18px;
  display:flex; flex-direction:column; gap: 4px;
  position: relative;
}
.stat-card__label{ font-size: 11px; text-transform:uppercase; letter-spacing:.06em; color: var(--text-faint); }
.stat-card__label em{ font-style:normal; color: var(--teal); opacity:.85; }
.stat-card__value{ font-family: var(--font-display); font-size: 28px; font-weight:700; margin-top:2px; }
.stat-card__unit{ font-family: var(--font-data); font-size: 11.5px; color: var(--text-dim); }
.stat-card__meta{ margin-top: 6px; font-size: 11px; color: var(--text-faint); font-family: var(--font-data); }

.stat-card__bar{ height:5px; border-radius:3px; background: rgba(255,255,255,0.06); margin-top:8px; overflow:hidden; }
.stat-card__bar-fill{ height:100%; width:0%; background: var(--teal); transition: width .8s ease, background .5s ease; }

.stat-card--breakdown{ grid-column: span 2; }
.breakdown-list{ list-style:none; margin: 6px 0 0; padding:0; display:flex; flex-direction:column; gap:8px; }
.breakdown-list li{ display:flex; justify-content:space-between; font-size:12.5px; color: var(--text-dim); }
.breakdown-list b{ font-family: var(--font-data); color: var(--text); }
.breakdown-list b[data-status="ALERT"]{ color: var(--amber); }
.breakdown-list b[data-status="WARNING"]{ color: var(--orange); }
.breakdown-list b[data-status="CRITICAL"]{ color: var(--red); }
.breakdown-list b[data-status="NORMAL"]{ color: var(--teal); }

@media (max-width: 560px){
  .auth-card{ padding:30px 24px; }
  .topbar{ padding:20px; }
  .topbar__meta{ gap:14px 20px; }
  .stat-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .stat-card{ min-width:0; padding:12px; gap:3px; border-radius:10px; }
  .stat-card__label{ font-size:9px; letter-spacing:.04em; }
  .stat-card__value{ font-size:23px; }
  .stat-card__unit,.stat-card__meta{ font-size:10px; overflow-wrap:anywhere; }
  .stat-card--breakdown{ grid-column:1 / -1; }
  .breakdown-list li{ font-size:11px; }
  .gauge__legend{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .forecast-panel .panel__head{ align-items:flex-start; flex-direction:column; gap:10px; }
  .forecast-controls{ width:100%; min-width:0; justify-content:space-between; gap:8px; }
  .history-panel .history-mobile-hint{ display:block; }
  .history-panel .table-scroll table{ min-width:460px; }
}

/* ── Generic panel ──────────────────────────────────────── */
.panel{
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 18px 20px 20px;
}
.panel__head{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom: 12px; }
.panel__head h2{ font-family: var(--font-display); font-size: 14.5px; margin:0; color: var(--text-dim); font-weight:600; }
.panel__hint{ font-size: 11px; color: var(--text-faint); font-family: var(--font-data); }

/* ── History table ──────────────────────────────────────── */
.table-scroll{ max-height: 300px; overflow:auto; -webkit-overflow-scrolling:touch; }
.history-mobile-hint{ display:none; margin:-4px 0 10px; color:var(--text-faint); font-size:10px; }
table{ width:100%; border-collapse: collapse; font-size: 12.5px; }
thead th{
  text-align:left; position: sticky; top:0; background: var(--panel);
  color: var(--text-faint); font-weight:600; text-transform:uppercase;
  font-size: 10.5px; letter-spacing:.05em; padding: 6px 10px; border-bottom: 1px solid var(--border);
}
tbody td{ padding: 8px 10px; border-bottom: 1px solid rgba(126,172,204,0.08); font-family: var(--font-data); color: var(--text); }
tbody tr:hover{ background: rgba(255,255,255,0.02); }
.tag{ padding:2px 8px; border-radius:6px; font-size:10.5px; font-weight:700; }
.tag--NORMAL{ background: var(--teal-dim); color: var(--teal); }
.tag--ALERT{ background: var(--amber-dim); color: var(--amber); }
.tag--WARNING{ background: var(--orange-dim); color: var(--orange); }
.tag--CRITICAL{ background: var(--red-dim); color: var(--red); }

/* ── Weather Forecast ──────────────────────────────────── */
.panel__head{ display: flex; align-items: center; justify-content: space-between; }

.forecast-controls{
  display: flex;
  align-items: center;
  gap: 12px;
}

.forecast-date{
  font-size: 11px;
  color: var(--text-faint);
  font-family: var(--font-data);
}

.forecast-tabs{
  display: flex;
  gap: 8px;
}
.forecast-tab{
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-dim);
  font-family: var(--font-data);
  font-size: 11px;
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 200ms;
}
.forecast-tab:hover{
  border-color: var(--teal);
  color: var(--teal);
}
.forecast-tab--active{
  background: rgba(47, 230, 184, 0.1);
  border-color: var(--teal);
  color: var(--teal);
}

.forecast-fullscreen-btn{
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-dim);
  font-size: 14px;
  padding: 6px 10px;
  border-radius: 6px;
  cursor: pointer;
  transition: all 200ms;
}
.forecast-fullscreen-btn:hover{
  border-color: var(--teal);
  color: var(--teal);
}

.forecast-container{
  overflow-x: auto;
  overflow-y: hidden;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  padding: 8px 0;
}

.forecast-grid{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  gap: 12px;
  padding: 8px 0;
  min-width: min-content;
}
.forecast-card{
  background: rgba(15, 32, 51, 0.5);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 12px;
  text-align: center;
  font-size: 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 90px;
  flex-shrink: 0;
}
.forecast-card:hover{ background: rgba(15, 32, 51, 0.8); border-color: var(--teal); }
.forecast-time{ font-family: var(--font-data); font-weight: 600; color: var(--text-dim); font-size: 11px; }
.forecast-icon{ font-size: 24px; }
.forecast-temp{ font-weight: 600; color: var(--text); }
.forecast-rain{ color: var(--teal); font-weight: 600; }
.forecast-label{ font-size: 10px; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.05em; }
.forecast-source{ margin-top: 12px; padding-top: 8px; border-top: 1px solid rgba(126,172,204,0.2); font-size: 9px; color: var(--text-faint); letter-spacing: 0.04em; text-transform: uppercase; text-align: center; }

/* ── Fullscreen modal ──────────────────────────────────── */
.forecast-modal{
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(7, 16, 25, 0.95);
  z-index: 1000;
  padding: 20px;
  overflow-y: auto;
}
.forecast-modal--active{
  display: flex;
  flex-direction: column;
}
.forecast-modal__header{
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 12px;
}
.forecast-modal__close{
  background: transparent;
  border: none;
  color: var(--text);
  font-size: 24px;
  cursor: pointer;
}
.forecast-modal__content{
  overflow-x: auto;
  flex: 1;
}

.foot{
  text-align:center; color: var(--text-faint); font-size: 11.5px;
  padding: 22px 20px 40px;
}
.foot a{ color: var(--text-dim); }

/* ── Command sidebar ───────────────────────────────────── */
.sidebar{ position:fixed; z-index:60; inset:0 auto 0 0; width:248px; display:flex; flex-direction:column; padding:28px 16px 20px; background:rgba(7,21,28,.94); border-right:1px solid var(--border); box-shadow:12px 0 38px rgba(0,0,0,.14); }
.sidebar__brand{ display:flex; align-items:center; gap:10px; padding:0 10px 30px; color:var(--text); font:700 12px var(--font-data); letter-spacing:.1em; }
.sidebar__brand .topbar__mark{ width:34px; height:34px; padding:0; font-size:22px; border-radius:7px; }
.sidebar__brand small{ display:block; margin-top:4px; color:var(--text-faint); font-size:8px; letter-spacing:.12em; }
.sidebar__nav{ display:flex; flex-direction:column; gap:5px; }
.sidebar-link{ display:flex; align-items:center; gap:12px; width:100%; padding:12px 12px; border:1px solid transparent; border-radius:6px; background:transparent; color:var(--text-dim); font:500 12px var(--font-body); text-align:left; cursor:pointer; }
.sidebar-link span{ width:18px; color:var(--text-faint); font-size:17px; text-align:center; }
.sidebar-link:hover,.sidebar-link--active{ background:var(--teal-dim); border-color:rgba(47,230,184,.2); color:var(--teal); }
.sidebar-link--active span{ color:var(--teal); }
.sidebar-badge{ margin-left:auto; color:var(--teal); font:700 8px var(--font-data); letter-spacing:.08em; }
.sidebar__status{ display:flex; align-items:center; gap:10px; margin-top:auto; padding:14px 12px; border-top:1px solid var(--border); color:var(--text); font-size:11px; }
.sidebar__status small{ display:block; margin-top:4px; color:var(--text-faint); font-size:10px; }
.logout-button{ margin-left:auto; padding:7px 9px; border:1px solid var(--border); border-radius:5px; background:transparent; color:var(--text-dim); font:10px var(--font-data); text-transform:uppercase; cursor:pointer; white-space:nowrap; }
.logout-button:hover{ border-color:var(--red); color:var(--red); }
#dashboardApp > .topbar,#dashboardApp > .layout,#dashboardApp > .foot{ margin-left:248px; }
#dashboardApp > .layout{ max-width:none; }
.sidebar-toggle{ display:none; }
.sidebar-toggle{ position:fixed; z-index:70; top:18px; left:220px; display:grid; place-items:center; width:34px; height:34px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--teal); font-size:16px; cursor:pointer; transition:left .25s ease, background .2s; }
.sidebar-toggle:hover{ background:var(--teal-dim); }
.sidebar--hidden{ visibility:hidden; pointer-events:none; }
#dashboardApp > .topbar,#dashboardApp > .layout,#dashboardApp > .foot,.utility-view{ transition:margin-left .25s ease; }
#dashboardApp.sidebar-collapsed > .topbar,#dashboardApp.sidebar-collapsed > .layout,#dashboardApp.sidebar-collapsed > .foot,#dashboardApp.sidebar-collapsed .utility-view{ margin-left:0; }
#dashboardApp.sidebar-collapsed .sidebar{ transform:translateX(-100%); }
#dashboardApp.sidebar-collapsed .sidebar-toggle{ left:18px; }

/* ── Utility views ──────────────────────────────────────── */
.utility-view{ margin:0 0 0 248px; padding:42px clamp(20px, 5vw, 72px); min-height:calc(100vh - 100px); max-width:1120px; }
.notification-consent{ display:flex; align-items:center; justify-content:space-between; gap:20px; margin:18px 24px 0 272px; padding:16px 20px; border:1px solid rgba(47,230,184,.35); border-radius:8px; background:var(--panel); }
.notification-consent b{ color:var(--text); font-size:13px; }
.notification-consent p{ margin:5px 0 0; color:var(--text-dim); font-size:11px; line-height:1.5; }
.notification-consent__actions{ display:flex; flex-shrink:0; gap:8px; }
.notification-consent__actions button{ min-height:34px; padding:0 12px; border:1px solid var(--border); border-radius:6px; background:transparent; color:var(--text); font:600 11px var(--font-body); cursor:pointer; }
.notification-consent__actions button:first-child{ border-color:var(--teal); background:var(--teal-dim); color:var(--teal); }
.notification-consent__actions button:disabled{ opacity:.6; cursor:wait; }
.utility-view__head{ display:flex; align-items:flex-start; justify-content:space-between; gap:24px; padding-bottom:28px; border-bottom:1px solid var(--border); }
.utility-view__head h2{ margin:0; font:700 34px var(--font-display); letter-spacing:-.5px; }
.utility-view__head p:not(.auth-kicker){ margin:8px 0 0; color:var(--text-dim); font-size:13px; }
.alert-summary{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin:24px 0; }
.alert-summary > div,.hotline-card,.settings-list{ background:var(--panel); border:1px solid var(--border); border-radius:8px; }
.alert-summary > div{ padding:20px; }
.alert-summary b{ display:block; color:var(--teal); font:700 25px var(--font-display); }
.alert-summary span{ display:block; margin-top:5px; color:var(--text-dim); font-size:11px; }
.alert-feed{ display:flex; flex-direction:column; gap:8px; }
.alert-entry{ display:flex; align-items:center; gap:16px; padding:15px 18px; background:var(--panel); border:1px solid var(--border); border-radius:7px; }
.alert-entry b,.alert-entry small{ display:block; }
.alert-entry b{ font-size:13px; }
.alert-entry small{ margin-top:5px; color:var(--text-dim); font-size:11px; }
.empty-state{ padding:30px; border:1px dashed var(--border); color:var(--text-dim); text-align:center; font-size:13px; }
.hotline-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-top:28px; }
.hotline-card{ display:flex; align-items:flex-start; gap:14px; padding:22px; color:var(--text); text-decoration:none; transition:transform .2s,border-color .2s; }
.hotline-card:hover{ transform:translateY(-3px); border-color:var(--teal); }
.hotline-card__icon{ display:grid; place-items:center; width:38px; height:38px; border-radius:50%; background:var(--teal-dim); color:var(--teal); font-size:19px; }
.hotline-card b,.hotline-card strong,.hotline-card small{ display:block; }
.hotline-card b{ color:var(--text-dim); font-size:11px; }
.hotline-card strong{ margin:8px 0 5px; font:700 24px var(--font-display); }
.hotline-card small{ color:var(--text-faint); font-size:10px; line-height:1.4; }
.hotline-card--primary{ border-color:rgba(255,77,94,.4); }
.hotline-card--primary .hotline-card__icon{ background:var(--red-dim); color:var(--red); }
.weather-satellite{ margin-top:24px; padding-bottom:24px; border-bottom:1px solid var(--border); }
.weather-satellite__head{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:12px; }
.weather-satellite__head b,.weather-satellite__head small{ display:block; }
.weather-satellite__head b{ color:var(--text); font-size:14px; }
.weather-satellite__head small{ margin-top:5px; color:var(--text-faint); font-size:11px; }
.weather-satellite__head a{ color:var(--teal); font-size:11px; text-decoration:none; white-space:nowrap; }
.weather-satellite__head a:hover{ text-decoration:underline; }
.weather-satellite img{ display:block; width:100%; height:min(60vh,560px); min-height:260px; object-fit:contain; background:#071018; border:1px solid var(--border); border-radius:8px; }
.weather-satellite__note{ margin:8px 0 0; color:var(--text-faint); font-size:10px; }
.weather-news-toolbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:20px; color:var(--text-faint); }
.weather-news-refresh{ display:grid; place-items:center; width:38px; height:38px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); font-size:20px; cursor:pointer; }
.weather-news-refresh:hover{ border-color:var(--teal); color:var(--teal); }
.weather-news-list{ display:grid; margin-top:10px; }
.weather-news-item{ display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:20px; padding:18px 0; border-bottom:1px solid var(--border); }
.weather-news-item__source,.weather-news-item__title{ display:block; }
.weather-news-item__source{ margin-bottom:6px; color:var(--teal); font-size:10px; text-transform:uppercase; }
.weather-news-item__title{ color:var(--text); font-size:15px; font-weight:650; line-height:1.45; text-decoration:none; }
.weather-news-item__title:hover{ color:var(--teal); }
.weather-news-item__date{ padding-top:2px; color:var(--text-faint); font-size:11px; white-space:nowrap; }
.flood-report-toolbar{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin:20px 0; color:var(--text-faint); font-size:11px; }
.flood-report-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.flood-report-actions button{ min-height:36px; padding:0 11px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); font:600 11px var(--font-body); cursor:pointer; }
.flood-report-actions button:hover{ border-color:var(--teal); color:var(--teal); }
.flood-report-filters{ display:flex; align-items:flex-end; justify-content:space-between; gap:20px; margin:0 0 18px; padding-bottom:16px; border-bottom:1px solid var(--border); }
.flood-report-filters label{ color:var(--text-dim); font-size:11px; }
.flood-report-filters label[for="reportPeriod"]{ display:grid; gap:6px; }
.flood-report-filters select{ min-width:200px; min-height:36px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:var(--panel); color:var(--text); font:500 12px var(--font-body); }
.flood-report-alert-filter{ display:flex; align-items:center; gap:8px; min-height:36px; cursor:pointer; }
.flood-report-alert-filter input{ width:16px; height:16px; accent-color:var(--teal); }
.flood-report-overview{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; margin:18px 0; border:1px solid var(--border); background:var(--border); }
.flood-report-overview > div{ min-width:0; padding:14px; background:var(--panel); }
.flood-report-overview small,.flood-report-overview b{ display:block; }
.flood-report-overview small{ color:var(--text-faint); font-size:10px; }
.flood-report-overview b{ margin-top:7px; color:var(--text); font-size:14px; overflow-wrap:anywhere; }
.flood-report-status-value--alert{ color:var(--amber)!important; }
.flood-report-status-value--warning{ color:var(--orange)!important; }
.flood-report-status-value--critical{ color:var(--red)!important; }
.flood-report-period-summary{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin:18px 0; }
.flood-report-period-summary > div{ padding:13px; border-left:2px solid var(--teal); background:var(--panel); }
.flood-report-period-summary small,.flood-report-period-summary b{ display:block; }
.flood-report-period-summary small{ color:var(--text-faint); font-size:10px; }
.flood-report-period-summary b{ margin-top:6px; color:var(--text); font-size:15px; }
.flood-report-scope{ margin:0 0 10px; color:var(--text-faint); font-size:10px; }
.flood-report-status-message{ margin:0 0 20px; color:var(--text-dim); font-size:12px; line-height:1.5; }
.flood-report-table-wrap{ overflow:auto; border:1px solid var(--border); }
.flood-report-table{ width:100%; border-collapse:collapse; color:var(--text); font-size:11px; }
.flood-report-table th,.flood-report-table td{ padding:10px 12px; border-bottom:1px solid var(--border); text-align:left; white-space:nowrap; }
.flood-report-table th{ position:sticky; top:0; background:var(--panel); color:var(--text-dim); font-size:10px; text-transform:uppercase; }
.flood-report-table tbody tr:last-child td{ border-bottom:0; }
.flood-report-empty{ padding:24px!important; color:var(--text-faint); text-align:center!important; }
.settings-list{ overflow:hidden; margin-top:28px; }
.admin-users{ margin-top:28px; padding:22px; background:var(--panel); border:1px solid var(--border); border-radius:8px; }
.admin-notification-panel{ margin-top:24px; }
.admin-notification-launcher{ display:flex; align-items:center; gap:14px; width:100%; padding:18px; border:1px solid rgba(47,230,184,.28); border-radius:8px; background:var(--panel); color:var(--text); text-align:left; cursor:pointer; }
.admin-notification-launcher:hover{ border-color:var(--teal); }
.admin-notification-launcher__icon{ display:grid; place-items:center; flex:none; width:40px; height:40px; border-radius:50%; background:var(--teal-dim); color:var(--teal); font-size:19px; }
.admin-notification-launcher b,.admin-notification-launcher small{ display:block; }
.admin-notification-launcher b{ font-size:13px; }
.admin-notification-launcher small{ margin-top:5px; color:var(--text-dim); font-size:11px; line-height:1.5; }
.admin-notification-launcher__arrow{ margin-left:auto; color:var(--teal); font-size:24px; }
.admin-notification-form{ display:grid; gap:14px; margin-top:12px; padding:20px; border:1px solid var(--border); border-radius:8px; background:var(--panel); }
.admin-notification-form h3{ margin:0; font:700 18px var(--font-display); }
.admin-notification-form label{ display:grid; gap:6px; color:var(--text-dim); font-size:11px; }
.admin-notification-form input,.admin-notification-form select,.admin-notification-form textarea{ width:100%; padding:10px 12px; border:1px solid var(--border); border-radius:5px; background:var(--bg); color:var(--text); font:12px var(--font-body); }
.admin-notification-form textarea{ resize:vertical; line-height:1.5; }
.admin-notification-expiry{ margin:0; color:var(--text-faint); font-size:10px; line-height:1.5; }
.admin-notification-feedback{ min-height:16px; margin:0; color:var(--teal); font-size:11px; }
.admin-notification-feedback:empty{ display:none; }
.admin-notification-feedback[data-error="true"]{ color:var(--red); }
.admin-notification-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.admin-notification-actions button{ min-height:36px; padding:0 14px; border:1px solid var(--border); border-radius:5px; background:transparent; color:var(--text); font:600 11px var(--font-body); cursor:pointer; }
.admin-notification-actions button[type="submit"]{ border-color:var(--teal); background:var(--teal-dim); color:var(--teal); }
.admin-notification-actions button:disabled{ opacity:.6; cursor:wait; }
.custom-alert-notice{ position:fixed; z-index:90; top:16px; right:16px; display:flex; align-items:flex-start; gap:16px; width:min(420px,calc(100vw - 32px)); padding:16px; border:1px solid rgba(47,230,184,.45); border-radius:8px; background:var(--panel); box-shadow:0 12px 36px rgba(0,0,0,.3); }
.custom-alert-notice > div{ flex:1; min-width:0; }
.custom-alert-notice b{ display:block; color:var(--text); font-size:13px; }
.custom-alert-notice p{ margin:6px 0 0; color:var(--text-dim); font-size:12px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; }
.custom-alert-notice button{ flex:none; margin-left:auto; padding:0 4px; border:0; background:transparent; color:var(--text-faint); font-size:22px; line-height:1; cursor:pointer; }
.admin-users__head{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px; }
.admin-users__head h3{ margin:0; font:700 18px var(--font-display); }
.admin-users__head p{ margin:5px 0 0; color:var(--text-dim); font-size:12px; }
.admin-users__toolbar{ display:flex; align-items:center; gap:12px; margin-bottom:14px; }
.admin-users__toolbar input{ flex:1; min-width:180px; padding:10px 12px; border:1px solid var(--border); border-radius:5px; background:var(--bg); color:var(--text); font:12px var(--font-body); }
.admin-users__toolbar span{ color:var(--text-dim); font:10px var(--font-data); white-space:nowrap; }
.admin-zoom{ display:flex; align-items:center; gap:6px; margin-left:auto; }
.admin-zoom button{ width:28px; height:28px; border:1px solid var(--border); border-radius:4px; background:var(--bg); color:var(--text); font:700 16px var(--font-data); cursor:pointer; }
.admin-zoom button:hover{ border-color:var(--teal); color:var(--teal); }
.admin-zoom span{ min-width:40px; text-align:center; }
.admin-user-table-wrap{ overflow-x:auto; }
.admin-user-table{ width:100%; border-collapse:collapse; min-width:760px; }
.admin-user-table th{ padding:10px 12px; color:var(--text-faint); border-bottom:1px solid var(--border); font:10px var(--font-data); text-align:left; text-transform:uppercase; }
.admin-user-table td{ padding:13px 12px; border-bottom:1px solid var(--border); vertical-align:top; }
.admin-user-table td:first-child{ min-width:190px; }
.admin-user-row div{ display:grid; gap:4px; min-width:0; }
.admin-user-row b{ overflow-wrap:anywhere; font-size:13px; }
.admin-user-row small{ color:var(--text-dim); font:11px var(--font-data); text-transform:uppercase; }
.admin-user-row details{ margin-top:8px; }
.admin-user-row summary{ color:var(--teal); font:10px var(--font-data); cursor:pointer; text-transform:uppercase; }
.admin-user-row details small{ display:block; max-width:520px; margin-top:8px; color:var(--text-dim); white-space:pre-line; text-transform:none; line-height:1.6; }
.admin-user-actions{ display:flex !important; flex-wrap:wrap; gap:6px; min-width:220px; }
.admin-role-button{ padding:8px 10px; border:1px solid var(--teal); border-radius:5px; background:transparent; color:var(--teal); font:700 10px var(--font-data); text-transform:uppercase; cursor:pointer; white-space:nowrap; }
.admin-role-button:hover{ background:var(--teal-dim); }
.admin-role-button--danger{ border-color:var(--red); color:var(--red); }
.admin-role-button--danger:hover{ background:var(--red-dim); }
.setting-row{ display:flex; align-items:center; justify-content:space-between; gap:24px; padding:20px 22px; border-bottom:1px solid var(--border); color:var(--text); }
.setting-row:last-child{ border-bottom:0; }
.setting-row b,.setting-row small{ display:block; }
.setting-row small{ margin-top:5px; color:var(--text-dim); font-size:11px; }
.setting-row select,.setting-value{ padding:9px 12px; border:1px solid var(--border); border-radius:5px; background:var(--bg); color:var(--text); font:11px var(--font-data); }
.setting-row input{ accent-color:var(--teal); width:18px; height:18px; }
.admin-simulator-setting{ border:1px solid rgba(47,230,184,.25); background:rgba(47,230,184,.04); }

body[data-theme="light"]{ --bg:#eef5f3; --bg-grid:#d6e5e1; --panel:#ffffff; --panel-2:#f5fbf9; --border:rgba(25,72,76,.15); --text:#123238; --text-dim:#557477; --text-faint:#759092; background:radial-gradient(ellipse at 10% -10%, rgba(47,180,156,.13), transparent 40%),linear-gradient(rgba(25,92,87,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(25,92,87,.04) 1px,transparent 1px),var(--bg); background-size:auto,34px 34px,34px 34px,auto; }
body[data-theme="light"] .sidebar,body[data-theme="light"] .topbar{ background:rgba(255,255,255,.88); }
body[data-theme="light"] .gauge__tube,body[data-theme="light"] .auth-card input{ background:#e8f2ef; }

@media (max-width:900px){
  .landing-hero{ min-height:500px; }
  .landing-hero__copy{ padding-right:24px; padding-left:24px; }
  .landing-hero h1{ font-size:clamp(40px,6vw,56px); }
  .landing-hero__copy > p:not(.landing-eyebrow){ font-size:16px; }
  .landing-hero__stamp{ right:24px; }
  .landing-levels,.landing-services{ padding-right:24px; padding-left:24px; }
  .landing-hotlines{ padding-right:24px; padding-left:24px; }
  .landing-level-list{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .landing-hotline-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sidebar{ transform:translateX(-100%); transition:transform .25s ease; }
  .sidebar--open{ transform:translateX(0); }
  .sidebar-toggle{ left:18px; width:38px; height:38px; font-size:18px; }
  #dashboardApp > .topbar,#dashboardApp > .layout,#dashboardApp > .foot,.utility-view{ margin-left:0; }
  #dashboardApp > .notification-consent{ margin:18px 18px 0; }
  #dashboardApp > .topbar{ padding-left:72px; }
  #dashboardApp.sidebar-collapsed .sidebar{ transform:translateX(-100%); }
}
@media (max-width:700px){
  .notification-consent{ align-items:stretch; flex-direction:column; }
  .notification-consent__actions{ flex-wrap:wrap; }
  .landing-header{ min-height:72px; padding:12px 20px; }
  .landing-brand img{ width:36px; height:36px; }
  .landing-brand small{ font-size:11px; }
  .landing-nav{ gap:17px; }
  .landing-nav a{ font-size:13px; }
  .landing-signin{ min-height:40px; padding:0 14px; }
  .landing-hero{ display:flex; min-height:540px; margin-top:0; padding:0; }
  .landing-hero__copy{ width:100%; max-width:none; padding:86px 20px 92px; }
  .landing-hero h1{ font-size:clamp(40px,9vw,54px); }
  .landing-hero__copy > p:not(.landing-eyebrow){ max-width:520px; margin:16px 0 22px; font-size:16px; }
  .landing-hero__stamp{ right:20px; bottom:22px; font-size:13px; }
  .landing-levels,.landing-services{ padding:42px 20px; }
  .landing-hotlines{ padding:0 20px 46px; }
  .landing-section-heading h2{ font-size:30px; }
  .landing-level-list,.landing-service-list{ grid-template-columns:1fr; }
  .landing-hotline-grid{ grid-template-columns:1fr; }
  .landing-hotline{ min-height:0; padding:16px 18px; }
  .landing-level{ min-height:0; padding:17px 18px; }
  .landing-service-list{ column-gap:0; }
  .landing-footer{ align-items:flex-start; flex-direction:column; padding:18px 20px; }
  .utility-view__head{ display:block;   }
  @media (max-width:420px){
    .landing-header{ align-items:flex-start; flex-direction:column; gap:10px; }
    .landing-nav{ width:100%; justify-content:space-between; gap:10px; }
    .landing-nav a{ font-size:12px; }
    .landing-actions{ align-items:stretch; flex-direction:column; }
    .landing-actions button{ width:100%; }
    .landing-hero{ min-height:560px; }
    .landing-hero__copy{ padding:78px 18px 96px; }
    .landing-hero__stamp{ right:18px; bottom:20px; }
  }
  .utility-view__head .status-pill{ display:inline-flex; margin-top:18px; }
  .alert-summary{ grid-template-columns:1fr; }
  .hotline-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .hotline-card{ min-width:0; padding:14px; gap:9px; }
  .hotline-card strong{ font-size:19px; }
  .weather-satellite__head{ align-items:flex-start; flex-direction:column; }
  .weather-satellite img{ height:360px; min-height:220px; }
  .weather-news-item{ grid-template-columns:1fr; gap:6px; }
  .weather-news-item__date{ white-space:normal; }
  .flood-report-overview{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .flood-report-period-summary{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .flood-report-toolbar{ align-items:flex-start; flex-direction:column; }
  .flood-report-filters{ align-items:flex-start; flex-direction:column; gap:8px; }
  .setting-row{ align-items:flex-start; flex-direction:column; gap:14px; }
}
@media print{
  @page{ margin:14mm; }
  body{ background:#fff!important; color:#111!important; }
  body *{ visibility:hidden; }
  #dashboardApp{ display:none!important; }
  .utility-view:not(#floodReportView){ display:none!important; }
  #floodReportView,#floodReportView *{ visibility:visible; }
  #floodReportView{ display:block!important; position:absolute; inset:0; max-width:none; margin:0; padding:0; background:#fff!important; color:#111!important; }
  #floodReportView .utility-view__head{ padding-bottom:12px; border-color:#999; }
  #floodReportView .utility-view__head h2,#floodReportView .utility-view__head p:not(.auth-kicker){ color:#111!important; }
  #floodReportView .auth-kicker,#floodReportView .flood-report-toolbar,#floodReportView .flood-report-status-message{ color:#333!important; }
  .flood-report-actions,.flood-report-filters{ display:none!important; }
  .flood-report-overview{ border-color:#888; background:#888; }
  .flood-report-overview > div{ background:#fff!important; }
  .flood-report-overview small,.flood-report-overview b,.flood-report-table{ color:#111!important; }
  .flood-report-table-wrap{ overflow:visible; border-color:#888; }
  .flood-report-table{ font-size:9px; }
  .flood-report-table th,.flood-report-table td{ padding:6px; border-color:#bbb; white-space:normal; }
  .flood-report-table th{ position:static; background:#eee!important; }
  .flood-report-table tr{ break-inside:avoid; }
}
