/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/00-core-base.css
   Current package: Rev. R33.51 - August 2026
   Source lineage: former CSS modules 00-06; original section headers retained below
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Fonts ========================== */
@font-face{
  font-family:"Inter";
  font-style:normal;
  font-weight:400;
  src:url("../fonts/Inter-Regular.woff2") format("woff2");
  font-display:swap;
}

@font-face{
  font-family:"Inter";
  font-style:normal;
  font-weight:600;
  src:url("../fonts/Inter-SemiBold.woff2") format("woff2");
  font-display:swap;
}

@font-face{
  font-family:"Inter";
  font-style:normal;
  font-weight:800;
  src:url("../fonts/Inter-ExtraBold.woff2") format("woff2");
  font-display:swap;
}
/* ========================== Design Tokens ========================== */
:root{
  color-scheme: dark light;

  --bg:#111315;
  --panel:#16181b;
  --panel-2:#111827;
  --ink:#f4f2ee;
  --muted:#a3aab4;
  --muted-2:#cbd5e1;
  --line:rgba(255,255,255,.14);
  --line-strong:rgba(255,255,255,.24);
  --radius:14px;
  --radius-sm:9px;
  --shadow:0 12px 26px rgba(0,0,0,.30);
  --shadow-soft:0 8px 18px rgba(0,0,0,.22);
  --ring:#e87979;
  --accent:#b91c1c;

  --blue:#0ea5e9;
  --blue-2:#3b82f6;
  --sky:#7dd3fc;
  --green:#22c55e;
  --teal:#14b8a6;
  --yellow:#facc15;
  --amber:#f59e0b;
  --orange:#fb923c;
  --red:#ef4444;
  --purple:#9333ea;
  --violet:#a855f7;

  /* Shared header glow */
  --bar-start:#0ea5e9;
  --bar-end:#facc15;
  --bar-sheen:rgba(255,255,255,.12);
  --glow-outer-a:rgba(14,165,233,.32);
  --glow-outer-b:rgba(250,204,21,.22);
  --dual-glow-md:0 0 14px 4px var(--glow-outer-a), 0 0 24px 8px var(--glow-outer-b);
  --dual-glow-sm:0 0 10px 3px var(--glow-outer-a), 0 0 18px 6px var(--glow-outer-b);

  /* Row chip styling used across the dash */
  --row-label-bg:
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015)),
    rgba(15,20,26,.22);
  --row-value-bg:
    linear-gradient(180deg, rgba(255,255,255,.065), rgba(255,255,255,.02)),
    rgba(15,20,26,.42);
  --row-label-border:rgba(255,255,255,.105);
  --row-value-border:rgba(255,255,255,.16);

  /* Layout sizing */
  --gap:10px;
  --pad:8px;
  --title-pad-y:3px;
  --title-pad-x:10px;

  /* Bubbles panel stays deliberately taller */
  --stage-min-h:440px;
  --stage-h:52vh;
  --stage-max-h:680px;

  /* Instruments */
  --wind-card-h:262px;
  --ltg-card-h:262px;
  --wind-canvas:182px;
  --ltg-w:170px;
  --ltg-h:108px;
  --tube-card-h:130px;
  --tube-h:72px;
  --tube-w:22px;

  /* Hazards */
  --hz-red:#ef4444;
  --hz-amber:#f59e0b;
  --hz-yellow:#facc15;
  --hz-blue:#3b82f6;
  --hz-indigo:#6366f1;
  --hz-green:#22c55e;

  /* Moon pill sizing */
  --moon-pill-pad-y:.22rem;
  --moon-pill-pad-x:.60rem;
  --moon-pill-min-h:27px;
}

@media (prefers-color-scheme: light){
  :root{
    --bg:#f4f6f8;
    --panel:#ffffff;
    --panel-2:#f8fafc;
    --ink:#111827;
    --muted:#667085;
    --muted-2:#334155;
    --line:rgba(15,23,42,.12);
    --line-strong:rgba(15,23,42,.20);
    --shadow:0 10px 24px rgba(15,23,42,.12);
    --shadow-soft:0 6px 16px rgba(15,23,42,.10);
    --row-label-bg:linear-gradient(180deg, rgba(0,0,0,.035), rgba(0,0,0,.015)), rgba(255,255,255,.78);
    --row-value-bg:linear-gradient(180deg, rgba(0,0,0,.025), rgba(0,0,0,.01)), rgba(255,255,255,.86);
    --row-label-border:rgba(15,23,42,.10);
    --row-value-border:rgba(15,23,42,.14);
  }
}

/* ========================== R33.25/R33.26 Integrated Visual Uniformity Tokens ========================== */
:root{
  --wx-uniform-card-bg:
    linear-gradient(180deg, rgba(255,255,255,.060), rgba(255,255,255,.020)),
    rgba(10,16,24,.58);
  --wx-uniform-card-border:rgba(255,255,255,.155);
  --wx-uniform-card-shadow:
    inset 0 1px 0 rgba(255,255,255,.060),
    inset 0 -1px 0 rgba(0,0,0,.22),
    0 7px 18px rgba(0,0,0,.22);
  --wx-uniform-chip-bg:
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.025)),
    rgba(13,20,30,.62);
  --wx-uniform-chip-border:rgba(255,255,255,.165);
  --wx-uniform-chip-shadow:
    inset 0 1px 0 rgba(255,255,255,.060),
    0 3px 9px rgba(0,0,0,.20);
  --wx-uniform-radius:14px;
  --wx-uniform-radius-sm:11px;




/* ========================== R33.26 Unified Card Surface Tokens ========================== */

  --wx-surface-radius:16px;
  --wx-surface-radius-sm:12px;
  --wx-surface-border:rgba(255,255,255,.185);
  --wx-surface-border-strong:rgba(255,255,255,.235);
  --wx-surface-bg:
    radial-gradient(120% 110% at 50% -18%, rgba(125,211,252,.075), transparent 52%),
    linear-gradient(180deg, rgba(255,255,255,.060), rgba(255,255,255,.022)),
    rgba(9,15,23,.64);
  --wx-surface-bg-soft:
    linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.020)),
    rgba(11,18,28,.58);
  --wx-surface-shadow:
    inset 0 1px 0 rgba(255,255,255,.075),
    inset 0 -1px 0 rgba(0,0,0,.28),
    0 12px 26px rgba(0,0,0,.24),
    0 0 22px rgba(14,165,233,.055);
  --wx-surface-shadow-soft:
    inset 0 1px 0 rgba(255,255,255,.060),
    0 7px 18px rgba(0,0,0,.20);
  --wx-title-surface:
    linear-gradient(180deg, rgba(255,255,255,.080), rgba(255,255,255,.030)),
    rgba(9,16,25,.56);
  --wx-title-border:rgba(255,255,255,.18);
  --wx-instrument-shadow:
    inset 0 1px 0 rgba(255,255,255,.095),
    inset 0 -1px 0 rgba(0,0,0,.32),
    0 15px 34px rgba(0,0,0,.28),
    0 0 30px rgba(var(--wx-inst-a, 125,211,252), .13),
    0 0 38px rgba(var(--wx-inst-b, 34,197,94), .09);
  --wx-instrument-bg:
    radial-gradient(115% 105% at 50% -12%, rgba(var(--wx-inst-a, 125,211,252), .18), transparent 54%),
    radial-gradient(90% 95% at 100% 10%, rgba(var(--wx-inst-b, 34,197,94), .105), transparent 52%),
    linear-gradient(180deg, rgba(255,255,255,.055), rgba(255,255,255,.018)),
    rgba(7,13,22,.78);


/* ========================== R33.30 Instrument Light/Ring Tokens ========================== */

  --wx-instrument-well-radius:18px;
  --wx-instrument-well-border:rgba(255,255,255,.145);
  --wx-instrument-well-bg:
    radial-gradient(circle at 50% 44%, rgba(255,255,255,.115), rgba(var(--wx-inst-a,125,211,252),.135) 31%, rgba(var(--wx-inst-b,34,197,94),.060) 52%, rgba(6,12,22,.18) 70%, transparent 78%);
  --wx-instrument-well-shadow:
    inset 0 1px 0 rgba(255,255,255,.070),
    inset 0 -16px 30px rgba(0,0,0,.16),
    0 0 22px rgba(var(--wx-inst-a,125,211,252),.115),
    0 0 34px rgba(var(--wx-inst-b,34,197,94),.070);
  --wx-instrument-well-ring:
    radial-gradient(circle at 50% 50%, transparent 57%, rgba(255,255,255,.080) 58%, transparent 60%),
    radial-gradient(circle at 50% 50%, transparent 70%, rgba(var(--wx-inst-a,125,211,252),.080) 71%, transparent 73%);



/* ========================== R33.30 Outer Panel Red Glow Tokens ========================== */

  --wx-outer-red-bg:
    radial-gradient(120% 100% at 50% -14%, rgba(239,68,68,.105), transparent 56%),
    radial-gradient(90% 80% at 100% 0%, rgba(185,28,28,.060), transparent 58%),
    var(--wx-surface-bg);
  --wx-outer-red-shadow:
    var(--wx-surface-shadow),
    0 0 18px rgba(239,68,68,.075),
    0 0 38px rgba(185,28,28,.060);
  --wx-instrument-red-bg:
    radial-gradient(115% 95% at 50% -12%, rgba(239,68,68,.090), transparent 54%),
    var(--wx-instrument-bg);
  --wx-instrument-red-shadow:
    var(--wx-instrument-shadow),
    0 0 18px rgba(239,68,68,.080),
    0 0 38px rgba(185,28,28,.055);





/* ========================== Borderless Diffused Panel Glow Tokens ========================== */

  --wx-header-diffuse-shadow:
    var(--shadow),
    0 0 26px rgba(14,165,233,.26),
    0 0 64px rgba(250,204,21,.16),
    0 18px 44px rgba(0,0,0,.20);
  --wx-stage-diffuse-shadow:
    var(--shadow),
    0 0 26px rgba(125,211,252,.24),
    0 0 64px rgba(34,197,94,.145),
    0 18px 44px rgba(0,0,0,.20);
  --wx-trends-panel-bg:
    radial-gradient(120% 100% at 50% -14%, rgba(56,189,248,.115), transparent 55%),
    radial-gradient(92% 85% at 100% 0%, rgba(250,204,21,.082), transparent 58%),
    var(--wx-surface-bg);
  --wx-trends-panel-shadow:
    var(--wx-surface-shadow),
    0 0 30px rgba(56,189,248,.20),
    0 0 68px rgba(250,204,21,.12);
  --wx-calc-panel-bg:
    radial-gradient(120% 100% at 50% -14%, rgba(34,197,94,.105), transparent 55%),
    radial-gradient(92% 85% at 100% 0%, rgba(14,165,233,.082), transparent 58%),
    var(--wx-surface-bg);
  --wx-calc-panel-shadow:
    var(--wx-surface-shadow),
    0 0 30px rgba(34,197,94,.18),
    0 0 68px rgba(14,165,233,.115);
  --wx-rain-panel-bg:
    radial-gradient(120% 100% at 50% -14%, rgba(56,189,248,.125), transparent 55%),
    radial-gradient(92% 85% at 100% 0%, rgba(14,165,233,.090), transparent 58%),
    var(--wx-surface-bg);
  --wx-rain-panel-shadow:
    var(--wx-surface-shadow),
    0 0 30px rgba(56,189,248,.21),
    0 0 68px rgba(14,165,233,.13);


/* ========================== R33.31 Lower Data-Card Uniformity Tokens ========================== */

  --wx-data-card-radius:13px;
  --wx-data-card-border:rgba(255,255,255,.185);
  --wx-data-card-bg:
    radial-gradient(110% 120% at 50% -22%, rgba(239,68,68,.050), transparent 50%),
    radial-gradient(90% 90% at 100% 0%, rgba(14,165,233,.050), transparent 55%),
    linear-gradient(180deg, rgba(255,255,255,.066), rgba(255,255,255,.020)),
    rgba(8,14,23,.64);
  --wx-data-card-shadow:
    inset 0 1px 0 rgba(255,255,255,.070),
    inset 0 -1px 0 rgba(0,0,0,.24),
    0 8px 18px rgba(0,0,0,.22),
    0 0 18px rgba(239,68,68,.045);
  --wx-data-card-hover-shadow:
    inset 0 1px 0 rgba(255,255,255,.082),
    inset 0 -1px 0 rgba(0,0,0,.24),
    0 10px 22px rgba(0,0,0,.25),
    0 0 20px rgba(239,68,68,.070),
    0 0 18px rgba(14,165,233,.050);
  --wx-data-chip-radius:999px;
  --wx-data-chip-border:rgba(255,255,255,.18);
  --wx-data-chip-bg:
    linear-gradient(180deg, rgba(255,255,255,.085), rgba(255,255,255,.026)),
    rgba(11,18,29,.64);
  --wx-data-chip-shadow:
    inset 0 1px 0 rgba(255,255,255,.065),
    0 4px 10px rgba(0,0,0,.20);
  --wx-data-note-border:rgba(255,255,255,.18);
  --wx-data-note-bg:
    linear-gradient(180deg, rgba(255,255,255,.065), rgba(255,255,255,.020)),
    rgba(8,14,23,.58);



/* ========================== R33 Drawer Polish Tokens ========================== */

  --wx-drawer-bg:
    radial-gradient(115% 95% at 12% -8%, rgba(239,68,68,.115), transparent 54%),
    radial-gradient(95% 85% at 100% 0%, rgba(14,165,233,.105), transparent 58%),
    linear-gradient(180deg, rgba(255,255,255,.070), rgba(255,255,255,.024)),
    rgba(8,13,22,.94);
  --wx-drawer-border:rgba(255,255,255,.20);
  --wx-drawer-shadow:
    inset 1px 0 0 rgba(255,255,255,.080),
    0 22px 54px rgba(0,0,0,.46),
    0 0 40px rgba(239,68,68,.090),
    0 0 44px rgba(14,165,233,.070);
  --wx-drawer-section-bg:
    radial-gradient(110% 95% at 50% -18%, rgba(255,255,255,.070), transparent 48%),
    linear-gradient(180deg, rgba(255,255,255,.060), rgba(255,255,255,.020)),
    rgba(9,16,26,.64);
  --wx-drawer-section-border:rgba(255,255,255,.165);
  --wx-drawer-control-bg:
    linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.025)),
    rgba(11,18,29,.68);
  --wx-drawer-control-border:rgba(255,255,255,.170);


/* ========================== R33.43 Uniform Visual System Tokens ==========================
   Shared glass/card rhythm adapted from the local home dashboard styling.
   CSS-only tokens; no data or behavior changes.
   ========================================================= */

  --wx43-glass-edge:
    inset 0 1px 0 rgba(255,255,255,.105),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 4px 12px rgba(0,0,0,.14);
  --wx43-panel-depth:
    inset 0 1px 0 rgba(255,255,255,.075),
    inset 0 -1px 0 rgba(0,0,0,.22),
    0 10px 26px rgba(0,0,0,.23);
  --wx43-title-depth:
    inset 0 1px 0 rgba(255,255,255,.095),
    inset 0 -1px 0 rgba(0,0,0,.14),
    0 4px 12px rgba(0,0,0,.16);
  --wx43-chip-bg:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.18), transparent 34%),
    linear-gradient(135deg, rgba(125,211,252,.15), rgba(45,212,191,.075) 54%, rgba(129,140,248,.085)),
    rgba(15,23,42,.34);
  --wx43-title-bg:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.145), transparent 34%),
    linear-gradient(90deg, rgba(30,41,59,.44), rgba(15,23,42,.26)),
    rgba(15,23,42,.30);
  --wx43-card-bg:
    radial-gradient(120% 90% at 16% 0%, rgba(255,255,255,.060), transparent 50%),
    linear-gradient(180deg, rgba(15,23,42,.50), rgba(15,23,42,.26));
  --wx43-row-label-bg:
    linear-gradient(180deg, rgba(255,255,255,.044), rgba(255,255,255,.014)),
    rgba(15,20,26,.20);
  --wx43-row-value-bg:
    linear-gradient(180deg, rgba(255,255,255,.060), rgba(255,255,255,.020)),
    rgba(15,20,26,.34);
  --wx43-soft-text:rgba(236,248,255,.96);
  --wx43-muted-text:rgba(203,213,225,.82);
  --wx43-risk-neutral:linear-gradient(180deg, rgba(71,85,105,.56), rgba(51,65,85,.42));
  --wx43-risk-ok:linear-gradient(180deg, rgba(22,163,74,.54), rgba(21,128,61,.40));
  --wx43-risk-info:linear-gradient(180deg, rgba(37,99,235,.54), rgba(29,78,216,.40));
  --wx43-risk-caution:linear-gradient(180deg, rgba(202,138,4,.58), rgba(161,98,7,.42));
  --wx43-risk-warn:linear-gradient(180deg, rgba(234,88,12,.58), rgba(194,65,12,.44));
  --wx43-risk-danger:linear-gradient(180deg, rgba(220,38,38,.60), rgba(153,27,27,.46));


/* ========================== R33.44 Lower Panel Uniformity Tokens ========================== */

  --wx44-lower-panel-bg:
    radial-gradient(120% 95% at 50% -18%, rgba(var(--wx44-a,125,211,252),.115), transparent 56%),
    radial-gradient(90% 85% at 100% 0%, rgba(var(--wx44-b,34,197,94),.075), transparent 58%),
    var(--wx43-card-bg);
  --wx44-lower-panel-shadow:
    var(--wx43-panel-depth),
    0 0 24px rgba(var(--wx44-a,125,211,252),.120),
    0 0 46px rgba(var(--wx44-b,34,197,94),.070);
  --wx44-lower-body-bg:
    radial-gradient(120% 100% at 50% -18%, rgba(var(--wx44-a,125,211,252),.075), transparent 54%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.016)),
    rgba(7,13,22,.58);
  --wx44-lower-body-shadow:
    inset 0 1px 0 rgba(255,255,255,.065),
    inset 0 -1px 0 rgba(0,0,0,.22),
    0 8px 20px rgba(0,0,0,.21);
  --wx44-lower-item-bg:
    radial-gradient(110% 100% at 50% -22%, rgba(255,255,255,.055), transparent 50%),
    linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.014)),
    rgba(9,16,27,.52);
  --wx44-lower-item-shadow:
    inset 0 1px 0 rgba(255,255,255,.060),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 5px 14px rgba(0,0,0,.18),
    0 0 12px rgba(var(--wx44-a,125,211,252),.060);
  --wx44-lower-title-bg:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.145), transparent 34%),
    linear-gradient(90deg, rgba(var(--wx44-a,125,211,252),.180), rgba(15,23,42,.265)),
    rgba(15,23,42,.30);
  --wx44-lower-chip-bg:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.150), transparent 34%),
    linear-gradient(90deg, rgba(var(--wx44-a,125,211,252),.155), rgba(var(--wx44-b,34,197,94),.080)),
    rgba(15,23,42,.34);
  --wx44-lower-muted:rgba(203,213,225,.80);


/* ========================== R33.45 Visual Correction Tokens ========================== */

  --wx45-top-outline-opacity:.78;
  --wx45-top-outline-width:1.25px;
  --wx45-outline-blue-yellow:linear-gradient(90deg, rgba(14,165,233,.86), rgba(250,204,21,.74));
  --wx45-outline-yellow-blue:linear-gradient(90deg, rgba(250,204,21,.78), rgba(14,165,233,.80));
  --wx45-outline-blue-green:linear-gradient(90deg, rgba(14,165,233,.82), rgba(34,197,94,.70));
  --wx45-risk-neutral:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(148,163,184,.18), rgba(51,65,85,.18)),
    rgba(15,23,42,.22);
  --wx45-risk-ok:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(34,197,94,.24), rgba(20,184,166,.13)),
    rgba(6,78,59,.18);
  --wx45-risk-info:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(14,165,233,.24), rgba(59,130,246,.13)),
    rgba(15,23,42,.20);
  --wx45-risk-caution:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(250,204,21,.25), rgba(245,158,11,.13)),
    rgba(113,63,18,.16);
  --wx45-risk-warn:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(249,115,22,.25), rgba(245,158,11,.13)),
    rgba(124,45,18,.17);
  --wx45-risk-danger:
    radial-gradient(circle at 18% 18%, rgba(255,255,255,.13), transparent 36%),
    linear-gradient(135deg, rgba(239,68,68,.27), rgba(248,113,113,.13)),
    rgba(127,29,29,.18);
}

/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/01-base-header-status-cards.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Reset & Base ========================== */
*{ box-sizing:border-box; }
html{ min-height:100%; }
body{
  min-height:100%;
  margin:0;
  color:var(--ink);
  background:
    radial-gradient(1200px 600px at 18% -10%, rgba(14,165,233,.12), transparent 52%),
    radial-gradient(1000px 540px at 82% -8%, rgba(250,204,21,.10), transparent 50%),
    var(--bg);
  font-family:Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  font-size:15px;
  line-height:1.35;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.container{
  width:min(98%, 1920px);
  margin:0 auto;
  padding:0 6px;
}
.main{ min-width:0; }
button,input,select,textarea{ font:inherit; }
button{ cursor:pointer; }
a{ color:inherit; }
code{ color:#e5e7eb; }
.tiny{ font-size:.82rem; }
.muted{ color:var(--muted); }
.ico{ margin-right:.45rem; display:inline-block; transform:translateY(1px); }
.hidden,[hidden]{ display:none !important; }




/* ========================== Buttons / Pills ========================== */
.pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.35rem;
  min-height:27px;
  padding:.24rem .56rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.30);
  color:#f8fafc;
  background:
    linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.02)),
    rgba(17,24,39,.70);
  box-shadow:0 2px 8px rgba(0,0,0,.24), inset 0 0 0 1px rgba(255,255,255,.07);
  text-shadow:0 1px 0 rgba(0,0,0,.45);
  font-weight:800;
  line-height:1;
  white-space:nowrap;
}
.pill--sm{ min-height:25px; padding:.20rem .50rem; font-size:.78rem; }
.pill.transparent{ background:rgba(255,255,255,.07); color:#e2e8f0; }
.pill.units.metric,
.pill.units:not(.imperial){ background:linear-gradient(135deg,#3b82f6,#0ea5e9); color:#fff; border-color:rgba(147,197,253,.70); }
.pill.units.imperial{ background:linear-gradient(135deg,#ef4444,#f97316); color:#fff; border-color:rgba(252,165,165,.70); }

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.45rem;
  padding:.48rem .72rem;
  border-radius:10px;
  border:1px solid var(--line-strong);
  background:rgba(255,255,255,.05);
  color:var(--ink);
  text-decoration:none;
}
.btn.primary{ background:linear-gradient(135deg,var(--accent),#ef4444); color:#fff; border-color:transparent; }
.btn.secondary{ background:rgba(55,65,81,.75); color:#e5e7eb; }
.btn:focus-visible,
.pill:focus-visible,
.foot-link:focus-visible,
.input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline:3px solid var(--ring);
  outline-offset:2px;
}
.btn.busy{ pointer-events:none; opacity:.72; }
.btn.busy .spinner{
  width:16px;
  height:16px;
  border:2px solid rgba(255,255,255,.38);
  border-top-color:#fff;
  border-radius:50%;
  display:inline-block;
  animation:spin .8s linear infinite;
}
@keyframes spin{ to{ transform:rotate(360deg); } }

/* ========================== Title Bar ========================== */
.title3d{
  position:relative;
  margin:6px 0 5px;
  perspective:1200px;
}
.title3d-inner{
  position:relative;
  transform-style:preserve-3d;
  padding:8px 12px;
  border-radius:14px;
  overflow:hidden;
  background:
    linear-gradient(180deg, var(--bar-sheen), transparent 55%),
    linear-gradient(135deg, var(--bar-start), var(--bar-end));
  border:1px solid rgba(255,255,255,.18);
  box-shadow:var(--shadow), var(--dual-glow-md), inset 0 0 0 1px rgba(255,255,255,.16);
}
.title3d h1{
  margin:0;
  text-align:center;
  line-height:1.04;
  letter-spacing:.25px;
  font-size:clamp(1.04rem, 2.1vw, 1.52rem);
}
.title3d .sub{
  margin:3px 0 0;
  text-align:center;
  color:#04121f;
  opacity:.90;
  font-weight:800;
  letter-spacing:.12px;
  font-size:clamp(.78rem, 1.4vw, .95rem);
}
.title3d .gloss{
  position:absolute;
  inset:0;
  pointer-events:none;
  border-radius:inherit;
  background:radial-gradient(110% 55% at 50% -22%, rgba(255,255,255,.50), transparent 60%);
}
.title3d h1 .t-brand{
  color:var(--yellow);
  font-style:italic;
  font-weight:900;
  margin-right:.35ch;
  text-shadow:0 0 8px rgba(31,41,55,.55), 0 0 2px rgba(31,41,55,.90);
  -webkit-text-stroke:.35px rgba(17,24,39,.70);
}
.title3d h1 .t-title{
  color:var(--blue);
  font-weight:900;
  text-shadow:0 0 8px rgba(31,41,55,.55), 0 0 2px rgba(31,41,55,.90);
  -webkit-text-stroke:.35px rgba(17,24,39,.70);
}
.title3d h1 .t-sun{
  margin:0 .42ch;
  transform:translateY(1px);
  filter:drop-shadow(0 0 6px rgba(250,204,21,.46)) drop-shadow(0 0 10px rgba(14,165,233,.25));
}
.title3d .sub .sub-ico{ margin-right:.45ch; transform:translateY(1px); }

/* ========================== Status Bar ========================== */
.status-bar{
  position:relative;
  isolation:isolate;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  flex-wrap:wrap;
  margin:0 0 6px;
  padding:5px 8px;
  border-radius:12px;
  background:
    linear-gradient(180deg, var(--bar-sheen), transparent 42%),
    linear-gradient(135deg, var(--bar-end), var(--bar-start));
  box-shadow:var(--shadow-soft), var(--dual-glow-sm), inset 0 0 0 1px rgba(255,255,255,.08);
  backdrop-filter:blur(6px) saturate(130%);
}
.status-bar > *{ position:relative; z-index:1; }
.status-left,
.status-right{
  display:flex;
  align-items:center;
  gap:6px;
  flex-wrap:wrap;
}
.status-right{ margin-left:auto; }
.top-clock{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:3px 7px;
  border-radius:8px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(15,20,26,.36);
  color:#f8fafc;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), inset 0 -1px 0 rgba(0,0,0,.25), 0 1px 2px rgba(0,0,0,.30);
  font-variant-numeric:tabular-nums;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
}
.top-clock::before{ content:"🕒"; transform:translateY(1px); opacity:.95; }
.top-clock--sm{ font-size:.84rem; }
#topClockTime{ letter-spacing:.12px; }
#status{ color:#f8fafc; }
#moonPill{
  font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji", Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  padding:var(--moon-pill-pad-y) var(--moon-pill-pad-x);
  min-height:var(--moon-pill-min-h);
}
.status-bar #dayStatusPill.day{ background:linear-gradient(135deg,#fde047,#f97316); color:#0b1520; text-shadow:0 1px 0 rgba(255,255,255,.25); }
.status-bar #dayStatusPill.dawn{ background:linear-gradient(135deg,#fca5a5,#f59e0b); color:#0b1520; }
.status-bar #dayStatusPill.dusk{ background:linear-gradient(135deg,#fb923c,#a78bfa); color:#0b1520; }
.status-bar #dayStatusPill.night{ background:linear-gradient(135deg,#0f172a,#1e293b); color:#e5e7eb; }
.status-bar .pill.live{ background:linear-gradient(135deg,#34d399,#22c55e); color:#0b1520; border-color:#22c55e; text-shadow:0 1px 0 rgba(255,255,255,.35); }
.status-bar #hazDupPill{
  --hz-chip:var(--hz-red);
  color:#0b1520;
  background:linear-gradient(135deg,var(--hz-chip), color-mix(in oklab, var(--hz-chip) 70%, black));
  border-color:color-mix(in oklab, var(--hz-chip) 80%, #fff 12%);
}
#hazDupPill.hz-warning,#hazDupPill[data-sev="warning"]{ --hz-chip:var(--hz-red); }
#hazDupPill.hz-watch,#hazDupPill[data-sev="watch"]{ --hz-chip:var(--hz-amber); }
#hazDupPill.hz-advisory,#hazDupPill[data-sev="advisory"]{ --hz-chip:var(--hz-yellow); }
#hazDupPill.hz-wind,#hazDupPill[data-sev="wind"]{ --hz-chip:var(--hz-blue); }
#hazDupPill.hz-flood,#hazDupPill[data-sev="flood"]{ --hz-chip:var(--hz-indigo); }
#hazDupPill.hz-clear,#hazDupPill[data-sev="clear"]{ --hz-chip:var(--hz-green); }
#hazDupPill.none{ color:#e5e7eb; background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.35); }

/* ========================== Shared Card Language ========================== */
.glow-outer{ box-shadow:var(--shadow), var(--dual-glow-sm); }

.ribbon .ribbon-title{
  grid-column:1 / -1;
  justify-self:center;
}
.ribbon-title .title-ico{ margin-right:2px; transform:translateY(1px); }
.ribbon-title .title-text{
  display:inline-block;
  background:linear-gradient(90deg, var(--c1,var(--blue)), var(--c2,var(--yellow)));
  -webkit-background-clip:text;
  background-clip:text;
  -webkit-text-fill-color:transparent;
  color:transparent;
}
.ribbon-title--tight{ margin-bottom:6px; }
.ribbon-title--glass::after{ display:none; }
.ribbon-title .glass-ico svg{ width:18px; height:18px; display:block; }
#fc7StatusPill.pill,
#hazStatusPill.pill,
#quakesStatusPill.pill{ margin-left:8px; }

/* Shared recessed rows */
.ribbon-item,
.gauge-rows .kv,
.nowcast-row .kv{
  min-width:0;
}
.ribbon-label,
.gauge-rows .kv .k,
.nowcast-row .kv .k{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  min-height:22px;
  min-width:0;
  padding:3px 7px;
  border:1px solid var(--row-label-border);
  border-radius:8px;
  background:var(--row-label-bg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055), inset 0 -1px 0 rgba(0,0,0,.20);
  color:#e8eaee;
  font-size:.82rem;
  line-height:1;
  font-weight:850;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ribbon-value,
.gauge-rows .kv .v,
.nowcast-row .kv .v{
  display:inline-flex;
  align-items:center;
  justify-content:flex-start;
  min-height:22px;
  min-width:0;
  width:100%;
  padding:3px 9px;
  border:1px solid var(--row-value-border);
  border-radius:9px;
  background:var(--row-value-bg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08), inset 0 -1px 0 rgba(0,0,0,.28), 0 1px 2px rgba(0,0,0,.30);
  color:#f4f6f8;
  font-size:.98rem;
  line-height:1;
  font-weight:900;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ribbon-unit{ margin-left:4px; opacity:.92; font-size:.88em; }
@media (hover:hover){
  .ribbon-value:hover,
  .gauge-rows .kv .v:hover,
  .nowcast-row .kv .v:hover{
    border-color:rgba(255,255,255,.23);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.10), inset 0 -1px 0 rgba(0,0,0,.30), 0 2px 6px rgba(0,0,0,.34);
  }
}

/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/02-stage-bubbles-top-panels.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Stage + Bubbles ========================== */
.bubble-wrap{
  display:block;
  margin:6px 0 8px;
}
.stage{
  position:relative;
  min-height:var(--stage-min-h);
  height:clamp(var(--stage-min-h), var(--stage-h), var(--stage-max-h));
  margin-bottom:var(--gap);
  border-radius:var(--radius);
  overflow:hidden;
  border:1px solid rgba(255,255,255,.13);
  background:#1a1a1d center/cover no-repeat;
  box-shadow:var(--shadow), var(--dual-glow-md), inset 0 0 0 1px rgba(255,255,255,.05);
}
.stage::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(120% 100% at 50% -10%, rgba(0,0,0,.40), transparent 45%),
    linear-gradient(180deg, rgba(0,0,0,.16), rgba(0,0,0,.10));
}
#stage .bg-layer{
  position:absolute;
  inset:0;
  z-index:0;
  opacity:0;
  pointer-events:none;
  background:center / cover no-repeat;
  transition:opacity .9s ease;
  filter:saturate(1.05) contrast(1.03);
}
#stage .bg-layer.show{ opacity:1; }
.bubble{
  position:absolute;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  text-align:center;
  padding:14px 12px;
  border:2px solid transparent;
  overflow:hidden;
  filter:saturate(1.1);
  transform:translate3d(0,0,0);
  will-change:transform;
  backface-visibility:hidden;
  container-type:inline-size;
  box-shadow:0 16px 40px rgba(0,0,0,.35);
}
.bubble-inner{
  width:86%;
  height:86%;
  border-radius:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:6px 8px;
  margin:auto;
  text-align:center;
}
.bubble .value{
  max-width:92%;
  color:#fff;
  font-weight:900;
  font-size:clamp(26px, 18cqw, 60px);
  line-height:1.02;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  text-shadow:0 2px 10px rgba(0,0,0,.30), 0 0 1px rgba(0,0,0,.35);
}
.bubble .unit{ color:#e8e9ee; font-weight:800; opacity:.95; font-size:clamp(12px, 7cqw, 20px); text-shadow:0 1px 4px rgba(0,0,0,.35); }
.bubble .label{ margin-top:4px; font-weight:900; font-size:clamp(11px, 7cqw, 16px); letter-spacing:.2px;  overflow:hidden; text-overflow:ellipsis; }

/* ========================== Top Data Panels ========================== */
.ribbon-panels{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:var(--gap);
  align-items:stretch;
  margin-bottom:var(--gap);
}
.ribbon{
  position:relative;
  isolation:isolate;
  display:grid !important;
  grid-template-rows:auto 1fr;
  align-content:stretch;
  gap:6px;
  min-height:178px;
  padding:var(--pad);
  overflow:hidden;
}
.ribbon::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  border-radius:inherit;
  padding:1.4px;
  background:linear-gradient(to right, var(--c1,var(--blue)), var(--c2,var(--yellow)));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite:exclude;
  opacity:.82;
}
.ribbon > *{ position:relative; z-index:1; }
.ribbon-body-card{
  width:100% !important;
  max-width:none !important;
  min-height:0 !important;
  height:100%;
  margin:0 !important;
  padding:8px 10px !important;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.10);
  background:
    radial-gradient(120% 120% at 50% 60%, rgba(0,0,0,.42), rgba(0,0,0,.10) 66%, transparent 78%),
    rgba(0,0,0,.24);
  box-shadow:inset 0 0 34px 12px rgba(14,165,233,.10), inset 0 0 34px 12px rgba(250,204,21,.08), 0 6px 16px rgba(0,0,0,.18);
  display:grid;
  gap:5px;
  align-content:center;
}
.ribbon-left,
.ribbon-right{ display:contents; }
.ribbon-item{
  display:grid !important;
  grid-template-columns:minmax(12ch, 34%) minmax(0, 1fr);
  align-items:center;
  column-gap:8px;
  row-gap:3px;
  margin:0;
}
.spark{
  grid-column:1 / -1;
  width:78px;
  height:18px;
  margin:1px auto 0;
  display:block;
  overflow:visible;
}
.spark path.line{ fill:none; stroke-width:1.8; stroke-linecap:round; }
.spark path.fill{ opacity:.10; }
.spark rect.bg{ fill:rgba(255,255,255,.03); stroke:rgba(255,255,255,.08); }
.spark .grid line{ shape-rendering:crispEdges; }
.spark .grid line.minor{ stroke:rgba(255,255,255,.10); stroke-width:.6; }
.spark .grid line.major{ stroke:rgba(255,255,255,.16); stroke-width:.8; }
#spark-out-temp path.line{ stroke:var(--red); }
#spark-out-hum path.line{ stroke:var(--amber); }
#spark-dew path.line{ stroke:#FFD54F; }
#spark-feels path.line{ stroke:#4FC3F7; }
#spark-out-temp path.fill{ fill:var(--red); }
#spark-out-hum path.fill{ fill:var(--amber); }
#spark-dew path.fill{ fill:#FFD54F; }
#spark-feels path.fill{ fill:#4FC3F7; }

#outdoorReadingsRibbon,
#outdoorRibbon{ --c1:#0ea5e9; --c2:#facc15; }
#rainRibbon{ --c1:#facc15; --c2:#0ea5e9; }
#outdoorReadingsRibbon #outTempVal{ color:#ff4747 !important; }
#outdoorReadingsRibbon #outHumVal{ color:#f59e0b !important; }
#dewVal{ color:#FFD54F !important; }
#feelsVal{ color:#4FC3F7 !important; }

/* Precipitation rows use the same row system */
#rainRibbon .ribbon-body-card{
  grid-template-columns:1fr !important;
  gap:4px;
}
#rainRibbon .ribbon-item{
  grid-template-columns:minmax(13ch, 34%) minmax(0, 1fr) !important;
}
#rainRibbon .ribbon-label,
#rainRibbon .ribbon-value{ min-height:22px; }

/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/03-instruments.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Instruments ========================== */
.gauges-grid{
  display:flex !important;
  flex-direction:column;
  gap:var(--gap);
  align-items:stretch;
  margin-bottom:var(--gap);
}

.gauges-bottom{
  display:grid !important;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:var(--gap);
  width:100%;
}

/* Small tube cards */
.tube-card{
  display:grid !important;
  grid-template-rows:auto 1fr auto;
  align-items:center;
  justify-items:center;
  gap:3px;
  min-height:var(--tube-card-h) !important;
  height:var(--tube-card-h) !important;
  max-height:var(--tube-card-h) !important;
  padding:6px !important;
}
.tube-title{ font-size:.78rem !important; line-height:1; padding:3px 8px !important; margin:0 auto 2px !important; }
.tube{
  --height:var(--tube-h);
  position:relative;
  width:var(--tube-w);
  height:var(--tube-h) !important;
  margin:0 auto !important;
  border-radius:8px;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.58);
  background:linear-gradient(90deg, rgba(255,255,255,.20), rgba(255,255,255,.08) 52%, rgba(255,255,255,.20));
  box-shadow:inset 0 -10px 18px rgba(0,0,0,.28), 0 8px 18px rgba(0,0,0,.16);
}
.fill{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:0%;
  transition:height .45s cubic-bezier(.25,.9,.25,1);
  border-top:1px solid rgba(255,255,255,.80);
}
.fill.rain{ background:linear-gradient(180deg, #38bdf8, transparent); }
.fill.uv{ background:linear-gradient(180deg, #9333ea, transparent); }
.fill.solar{ background:linear-gradient(180deg, #facc15, transparent); }
.tube-value{ width:100%; margin:0 !important; padding:0 !important; text-align:center; font-size:.78rem !important; line-height:1; font-weight:900; }
.tube-card.rain{ border-color:rgba(56,189,248,.46) !important; box-shadow:var(--shadow-soft), 0 0 10px 3px rgba(56,189,248,.24), inset 0 0 28px 10px rgba(56,189,248,.18) !important; }
.tube-card.uv{ border-color:rgba(168,85,247,.46) !important; box-shadow:var(--shadow-soft), 0 0 10px 3px rgba(147,51,234,.24), inset 0 0 28px 10px rgba(147,51,234,.18) !important; }
.tube-card.solar{ border-color:rgba(253,224,71,.46) !important; box-shadow:var(--shadow-soft), 0 0 10px 3px rgba(250,204,21,.24), inset 0 0 28px 10px rgba(250,204,21,.18) !important; }
.tube-card.rain .tube-title{ --title-glow:rgba(59,130,246,.28); --title-border:rgba(59,130,246,.50); }
.tube-card.uv .tube-title{ --title-glow:rgba(168,85,247,.30); --title-border:rgba(168,85,247,.55); }
.tube-card.solar .tube-title{ --title-glow:rgba(245,158,11,.30); --title-border:rgba(245,158,11,.55); }
/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/04-forecast-hazards-quakes.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Forecast / Hazards / Quakes ========================== */
.hazards-quakes-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:var(--gap);
  align-items:stretch;
  padding:0;
  margin-bottom:var(--gap);
}
.hzq-span-2{ grid-column:1 / -1; }
#forecast7Panel{ --c1:#0ea5e9; --c2:#22c55e; min-height:0; }
#hazardsPanel{ --c1:#ef4444; --c2:#facc15; }
#quakesPanel{ --c1:#60a5fa; --c2:#ef4444; }
#forecast7Panel .ribbon-body-card,
#hazardsPanel .ribbon-body-card,
#quakesPanel .ribbon-body-card{
  box-shadow:inset 0 0 42px 15px color-mix(in oklab, var(--c1) 14%, transparent), inset 0 0 42px 15px color-mix(in oklab, var(--c2) 12%, transparent), 0 6px 16px rgba(0,0,0,.18);
}
.forecast7-grid,
#forecast7Panel .forecast7-grid{
  display:grid;
  grid-template-columns:repeat(7, minmax(0, 1fr));
  gap:6px;
  align-items:stretch;
}
.fct-tile,
#forecast7Panel .fct-tile{
  display:grid;
  grid-template-rows:auto auto auto auto;
  gap:3px;
  text-align:center;
  padding:6px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.10);
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015)), rgba(17,24,39,.32);
  box-shadow:0 0 10px 3px rgba(14,165,233,.11), 0 0 10px 3px rgba(34,197,94,.10), inset 0 0 0 1px rgba(255,255,255,.05);
  transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;
}
.fct-tile:hover{ transform:translateY(-1px); border-color:rgba(255,255,255,.22); }
.fct-tile .dow{ color:#cfe8ff; font-size:.78rem; font-weight:900; letter-spacing:.2px; }
.fct-tile .wx-ico{ font-size:1.15rem; filter:drop-shadow(0 0 6px rgba(255,255,255,.18)); }
.fct-tile .hi-lo{ font-size:.80rem; font-weight:900; font-variant-numeric:tabular-nums; }
.fct-tile .hi{ color:#ef4444; }
.fct-tile .lo{ color:#60a5fa; }
.fct-tile .pop{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  justify-self:center;
  padding:.14rem .42rem;
  border-radius:999px;
  font-weight:900;
  font-size:.76rem;
  color:#0b1520;
  background:linear-gradient(135deg, rgba(14,165,233,.86), rgba(34,197,94,.86));
  border:1px solid rgba(255,255,255,.16);
}

/* Hazards */
.haz-note-wrap{ margin:0 0 6px; }
.panel-note{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:.42rem .52rem;
  margin:0;
  padding:6px 8px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.02)), rgba(0,0,0,.22);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.06), 0 6px 14px rgba(0,0,0,.16);
  font-size:.84rem;
  line-height:1.18;
  font-weight:750;
}
.panel-note .note-ico{ font-size:1em; filter:drop-shadow(0 0 6px rgba(255,255,255,.22)); }
.panel-note a{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:2px 8px;
  border-radius:8px;
  color:#0b1520;
  text-decoration:none;
  font-weight:900;
  line-height:1;
  white-space:nowrap;
  border:1px solid rgba(255,255,255,.24);
}
.panel-note a[target="_blank"]::after{ content:"↗"; margin-left:4px; font-weight:900; font-size:.85em; opacity:.85; }
.panel-note--hazards{ border-color:rgba(239,68,68,.35); box-shadow:0 0 12px 4px rgba(239,68,68,.14), 0 0 12px 4px rgba(250,204,21,.12), inset 0 0 0 1px rgba(255,255,255,.06); }
.panel-note--hazards .note-ico{ color:#fca5a5; }
.panel-note--hazards a{ background:linear-gradient(135deg,#f59e0b,#ef4444); }
.panel-note--quakes{ border-color:rgba(96,165,250,.35); box-shadow:0 0 12px 4px rgba(96,165,250,.14), 0 0 12px 4px rgba(239,68,68,.12), inset 0 0 0 1px rgba(255,255,255,.06); }
.panel-note--quakes .note-ico{ color:#93c5fd; }
.panel-note--quakes a{ background:linear-gradient(135deg,#60a5fa,#ef4444); }
.hazard-chips{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:6px;
  margin:0 0 6px;
}
.hazard-chips .pill{
  --hz-chip:#3b82f6;
  background:linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.02)), var(--hz-chip);
  color:#fff;
  border-color:color-mix(in oklab, var(--hz-chip) 78%, #fff 12%);
  box-shadow:0 2px 8px rgba(0,0,0,.22), 0 0 10px 3px color-mix(in oklab, var(--hz-chip) 22%, transparent), inset 0 0 0 1px rgba(255,255,255,.06);
}
.hazard-chips .pill.hz-warning{ --hz-chip:var(--hz-red); }
.hazard-chips .pill.hz-watch{ --hz-chip:var(--hz-amber); }
.hazard-chips .pill.hz-advisory{ --hz-chip:var(--hz-yellow); color:#0b1520; text-shadow:none; }
.hazard-chips .pill.hz-wind{ --hz-chip:var(--hz-blue); }
.hazard-chips .pill.hz-flood{ --hz-chip:var(--hz-indigo); }
.hazard-chips .pill.hz-clear{ --hz-chip:var(--hz-green); }
.hazard-chips .pill.none{ color:#e5e7eb; background:rgba(255,255,255,.10); border-color:rgba(255,255,255,.25); }
.nowcast-row{
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:5px 10px;
}
.nowcast-row .kv{
  display:grid;
  grid-template-columns:minmax(10ch, 40%) minmax(0, 1fr);
  align-items:center;
  column-gap:8px;
}
.nowcast-row .kv .k,
.nowcast-row .kv .v{ font-size:.82rem; }

/* Quakes */
.quakes-strip{
  position:relative;
  display:flex;
  flex-wrap:nowrap;
  gap:8px;
  align-items:stretch;
  overflow-x:auto;
  overflow-y:hidden;
  padding:5px 6px 6px;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.03);
  scrollbar-width:thin;
  mask-image:linear-gradient(to right, transparent 0, #000 18px, #000 calc(100% - 18px), transparent 100%);
}
.quakes-strip::-webkit-scrollbar{ height:8px; }
.quakes-strip::-webkit-scrollbar-track{ background:rgba(255,255,255,.06); border-radius:10px; }
.quakes-strip::-webkit-scrollbar-thumb{ background:rgba(255,255,255,.22); border-radius:10px; }
.quakes-strip::-webkit-scrollbar-thumb:hover{ background:rgba(255,255,255,.32); }
.q-row{
  display:grid;
  grid-template-rows:auto 1fr;
  gap:5px;
  margin:4px 0 6px;
}
#quakesPanel .q-row:first-of-type{ --qglow:rgba(168,85,247,.24); --qglow-border:rgba(168,85,247,.40); }
#quakesPanel .q-row:last-of-type{ --qglow:rgba(59,130,246,.24); --qglow-border:rgba(59,130,246,.40); }
.q-label.small{
  justify-self:start;
  padding:3px 8px;
  border-radius:8px;
  border:1px solid var(--qglow-border, rgba(255,255,255,.14));
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.02)), rgba(17,24,39,.45);
  color:#eaf2ff;
  box-shadow:inset 0 0 26px 9px var(--qglow, rgba(96,165,250,.20)), 0 4px 10px rgba(0,0,0,.18);
  font-size:.78rem;
  font-weight:900;
  line-height:1;
}
.q-row .quakes-strip{ box-shadow:inset 0 0 36px 13px var(--qglow, rgba(96,165,250,.16)), 0 6px 14px rgba(0,0,0,.16); }
.q-chip,
.quake-chip{
  box-sizing:border-box;
  display:grid;
  grid-template-columns:max-content 1fr max-content;
  align-items:start;
  column-gap:8px;
  row-gap:6px;
  min-width:clamp(170px, 26vw, 260px);
  padding:8px 10px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.05), 0 5px 12px rgba(0,0,0,.14), 0 0 12px 4px var(--qglow, rgba(96,165,250,.16));
}
.q-head{
  grid-column:1 / -1;
  display:grid;
  grid-template-columns:max-content 1fr max-content;
  align-items:center;
  column-gap:8px;
}
.q-mag{
  justify-self:start;
  display:inline-flex;
  align-items:center;
  padding:.18rem .48rem .16rem;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.18);
  background:#a7f3d0;
  color:#111827;
  font-weight:900;
  line-height:1;
}
.q-mag.m4{ background:#fde68a; }
.q-mag.m5{ background:#fb923c; }
.q-mag.m6{ background:#f87171; }
.q-mag::after{ content:" — Mag — "; margin:0 8px; color:#000; font-weight:900; }
.q-place{
  grid-column:1 / -1;
  margin-top:1px;
  color:#e5e7eb;
  font-size:.88rem;
  font-weight:850;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.q-meta span:first-child{ display:none; }
.q-meta span:last-child{ display:block; color:#a3a3a3; font-size:.80rem; white-space:nowrap; }

/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/05-drawers-footer-utilities.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Drawers / Forms ========================== */
.drawer{
  position:fixed;
  top:0;
  right:0;
  bottom:0;
  left:auto;
  z-index:50;
  width:min(560px, 96vw);
  height:100vh;
  transform:translateX(100%);
  transition:transform .28s cubic-bezier(.2,.8,.2,1), opacity .22s ease;
}
.drawer.open{ transform:none; }
.drawer-panel{
  position:relative;
  height:100%;
  display:grid;
  grid-template-rows:auto 1fr auto;
  gap:12px;
  padding:16px;
  overflow:hidden;
  border-top-left-radius:22px;
  border-bottom-left-radius:22px;
  border:1px solid var(--wx-drawer-border);
  border-right:0;
  background:var(--wx-drawer-bg);
  box-shadow:var(--wx-drawer-shadow);
  backdrop-filter:blur(18px) saturate(150%);
}
.drawer-panel::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  pointer-events:none;
  background:linear-gradient(90deg, rgba(239,68,68,.86), rgba(14,165,233,.70), rgba(250,204,21,.66));
  opacity:.88;
  filter:blur(.25px);
}
.drawer-panel::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(80% 45% at 100% 0%, rgba(255,255,255,.055), transparent 64%);
  opacity:.85;
}
.drawer-head,
.drawer-body,
.drawer-foot{ position:relative; z-index:1; }
.drawer-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:12px 13px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.15);
  background:linear-gradient(180deg, rgba(255,255,255,.070), rgba(255,255,255,.020)), rgba(7,13,22,.56);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.075), 0 8px 18px rgba(0,0,0,.18);
}
.drawer-head h3{
  display:flex;
  align-items:center;
  gap:9px;
  margin:0 !important;
  color:#f8fafc;
  font-size:1.02rem;
  font-weight:900;
  letter-spacing:.18px;
}
.drawer-head h3 span[aria-hidden="true"]{
  display:inline-grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:10px;
  background:linear-gradient(180deg, rgba(239,68,68,.22), rgba(239,68,68,.08));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10), 0 0 16px rgba(239,68,68,.12);
}
.drawer-body{
  overflow:auto;
  min-height:0;
  padding:2px 2px 4px;
  scrollbar-width:thin;
  scrollbar-color:rgba(248,250,252,.35) transparent;
}
.drawer-body::-webkit-scrollbar{ width:9px; }
.drawer-body::-webkit-scrollbar-track{ background:transparent; }
.drawer-body::-webkit-scrollbar-thumb{
  border-radius:999px;
  border:2px solid transparent;
  background:rgba(248,250,252,.30);
  background-clip:content-box;
}
.drawer-section{
  margin:0 0 12px;
  padding:12px;
  border-radius:16px;
  border:1px solid var(--wx-drawer-section-border);
  background:var(--wx-drawer-section-bg);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.065), 0 9px 20px rgba(0,0,0,.18);
}
.drawer-section-title{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 0 10px;
  color:#e5e7eb;
  font-size:.80rem;
  font-weight:900;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.drawer-section-title span[aria-hidden="true"]{
  display:inline-grid;
  place-items:center;
  width:24px;
  height:24px;
  border-radius:9px;
  background:rgba(255,255,255,.055);
}
.drawer-option-grid{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
}
.drawer-check{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:40px;
  padding:9px 10px;
  border-radius:13px;
  border:1px solid var(--wx-drawer-control-border);
  background:var(--wx-drawer-control-bg);
  color:#e5e7eb;
  font-size:.88rem;
  font-weight:780;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.055);
}
.drawer-check input{
  width:17px;
  height:17px;
  flex:0 0 auto;
  accent-color:#ef4444;
}
.drawer-check:hover{
  border-color:rgba(239,68,68,.32);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.070), 0 0 16px rgba(239,68,68,.065);
}
.field{ display:grid; gap:7px; margin-bottom:10px; }
.drawer-section .field:last-child{ margin-bottom:0; }
.range-row label,
.drawer .field > label{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  color:#cbd5e1;
  font-size:.82rem;
  font-weight:850;
}
.range-row label span:last-child{
  color:#f8fafc;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
.input,select,textarea{
  width:100%;
  min-width:0;
  padding:.62rem .74rem;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.18);
  background:var(--panel);
  color:var(--ink);
}
html body .drawer .input,
html body .drawer select,
html body .drawer textarea{
  background:var(--wx-drawer-control-bg) !important;
  border-color:var(--wx-drawer-control-border) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.060), 0 4px 12px rgba(0,0,0,.14);
}
html body .drawer input[type="range"]{
  width:100% !important;
  height:30px;
  padding:.34rem .22rem;
  accent-color:#ef4444;
}
.range-row output{ color:var(--ink); font-size:.82rem; font-weight:850; }
.pre{ white-space:pre-wrap; overflow:auto; font-size:.84rem; line-height:1.3; padding:10px; }
.input.invalid,select.invalid,.input[aria-invalid="true"],select[aria-invalid="true"]{
  border-color:#ef4444;
  background:linear-gradient(180deg, rgba(127,29,29,.20), transparent);
  box-shadow:0 0 0 1px rgba(239,68,68,.32) inset, 0 0 0 3px rgba(239,68,68,.18), 0 10px 24px rgba(0,0,0,.22);
}
.drawer-foot{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  padding:10px;
  border-radius:16px;
  border:1px solid rgba(255,255,255,.13);
  background:linear-gradient(180deg, rgba(255,255,255,.050), rgba(255,255,255,.015)), rgba(7,13,22,.52);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.060);
}
.drawer-foot .btn{
  justify-content:center;
  min-height:40px;
  padding:.64rem .78rem;
  border-radius:13px;
  font-size:.88rem;
  font-weight:900;
}
#closeDrawer,#closeAbout,#aboutToSettings{
  background:linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.025)), rgba(11,18,29,.70) !important;
  color:#e5e7eb !important;
  border-color:rgba(255,255,255,.18) !important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.070), 0 6px 14px rgba(0,0,0,.18) !important;
}
#closeDrawer:hover,#closeAbout:hover,#aboutToSettings:hover{
  background:linear-gradient(180deg, rgba(239,68,68,.18), rgba(239,68,68,.055)), rgba(11,18,29,.72) !important;
  border-color:rgba(239,68,68,.36) !important;
}
.backdrop{
  position:fixed;
  inset:0;
  z-index:40;
  opacity:0;
  pointer-events:none;
  background:radial-gradient(90% 70% at 75% 50%, rgba(239,68,68,.12), transparent 55%), rgba(0,0,0,.56);
  transition:opacity .22s ease;
  backdrop-filter:blur(3px);
}
.backdrop.show{ opacity:1; pointer-events:auto; }
.toast{
  position:fixed;
  left:50%;
  bottom:16px;
  z-index:80;
  display:none;
  transform:translateX(-50%);
  padding:.58rem .78rem;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.14);
  background:linear-gradient(180deg, rgba(255,255,255,.075), rgba(255,255,255,.025)), rgba(17,24,39,.94);
  color:#fff;
  box-shadow:var(--shadow);
}
.toast.show{ display:block; }
/* ========================== About Drawer ========================== */
.about-grid,
.about-card-stack{
  display:flex;
  flex-direction:column;
  gap:12px;
  padding:2px;
}
.about-section{
  position:relative;
  overflow:hidden;
  min-width:0;
  padding:13px 14px;
  border-radius:17px;
  border:1px solid var(--wx-drawer-section-border);
  background:var(--wx-drawer-section-bg);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.070),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 8px 20px rgba(0,0,0,.17);
}
.about-section::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:1px;
  pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(255,255,255,.26), transparent);
  opacity:.55;
}
.about-section.full{ grid-column:auto; }
.about-section h4{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
  margin:0;
  color:#f8fafc;
  font-size:.96rem;
  font-weight:900;
  letter-spacing:.2px;
  line-height:1.15;
}
.about-section ul,
.about-section p{
  margin:0;
  color:var(--ink);
  font-size:.92rem;
  line-height:1.48;
}
.about-section ul{
  padding-left:18px;
}
.about-section li + li{
  margin-top:5px;
}
.about-section li strong{
  color:#f9fafb;
}
.about-section:not(.about-section-header){
  display:grid;
  grid-template-columns:minmax(118px, .34fr) minmax(0, 1fr);
  gap:12px 14px;
  align-items:start;
}
.about-section-header{
  display:grid;
  grid-template-columns:1fr;
  gap:10px;
  align-items:center;
  justify-items:center;
  text-align:center;
  min-height:112px;
  background:
    radial-gradient(80% 95% at 78% 20%, rgba(14,165,233,.15), transparent 58%),
    radial-gradient(90% 85% at 12% -18%, rgba(239,68,68,.105), transparent 56%),
    var(--wx-drawer-section-bg);
}
.about-header-subtitle{
  position:relative;
  z-index:1;
  max-width:34em;
  margin:0;
  color:#cbd5e1;
  font-weight:700;
  letter-spacing:.01em;
  line-height:1.35;
}
.about-logo{
  position:relative;
  display:grid;
  place-items:center;
  margin:0;
  padding:8px;
  border-radius:14px;
  overflow:visible;
}
.about-logo::before{
  content:"";
  position:absolute;
  inset:2px;
  z-index:0;
  pointer-events:none;
  border-radius:inherit;
  background:
    radial-gradient(60% 60% at 50% 35%, rgba(14,165,233,.18), rgba(14,165,233,.10) 34%, rgba(14,165,233,.04) 58%, transparent 78%);
  box-shadow:
    inset 0 10px 30px rgba(14,165,233,.24),
    inset 0 2px 10px rgba(14,165,233,.14),
    0 0 16px rgba(14,165,233,.10);
}
.about-logo-text{
  width:min(348px, 88%);
  min-width:0;
  min-height:74px;
  padding:10px 12px;
}
.about-logo-mark{
  position:relative;
  z-index:1;
  margin:0;
  color:#e0f2fe;
  font-size:clamp(1.85rem, 5.8vw, 3.25rem);
  font-weight:900;
  letter-spacing:.02em;
  line-height:.95;
  text-align:center;
  text-shadow:0 0 18px rgba(34,211,238,.22), 0 4px 22px rgba(0,0,0,.35);
}
.about-logo-mark span{
  color:#86efac;
  -webkit-text-stroke:1px rgba(226,232,240,.38);
  text-shadow:0 0 18px rgba(34,197,94,.25);
}
#aboutDrawer:not(.disclaimer-only) #disclaimer{
  display:none !important;
}
.about-section-credits{
  border-color:rgba(125,211,252,.30);
  background:
    radial-gradient(90% 120% at 16% -18%, rgba(34,197,94,.12), transparent 56%),
    radial-gradient(90% 100% at 88% 12%, rgba(14,165,233,.13), transparent 58%),
    var(--wx-drawer-section-bg);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.085),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 8px 20px rgba(0,0,0,.17),
    0 0 18px rgba(34,211,238,.10);
}
.about-section-credits h4{
  color:#dbeafe;
}
.about-credit-lines{
  display:grid;
  gap:4px;
  min-width:0;
}
.about-credit-lines p{
  margin:0;
  color:#dbeafe;
  font-weight:800;
  letter-spacing:.01em;
}
.about-credit-lines strong{
  color:#f8fafc;
}
.about-credit-tech{
  display:inline-flex;
  width:max-content;
  max-width:100%;
  min-height:24px;
  align-items:center;
  padding:3px 9px;
  border-radius:999px;
  color:#bbf7d0 !important;
  background:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.14), transparent 34%),
    linear-gradient(135deg, rgba(34,197,94,.16), rgba(20,184,166,.10) 52%, rgba(14,165,233,.08)),
    rgba(6,78,59,.22);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.09),
    inset 0 -1px 0 rgba(0,0,0,.14),
    0 0 10px rgba(34,197,94,.08);
}

#disclaimer,
.about-section-disclaimer{
  border-color:rgba(239,68,68,.27);
  background:
    radial-gradient(100% 100% at 50% -20%, rgba(239,68,68,.105), transparent 55%),
    var(--wx-drawer-section-bg);
}
#disclaimer h4{
  color:#fecaca;
}
#disclaimer p{
  line-height:1.5;
}
#aboutDrawer.disclaimer-only .about-section:not(#disclaimer),
#aboutDrawer.disclaimer-only #aboutToSettings{
  display:none !important;
}
#aboutDrawer.disclaimer-only .about-grid{
  display:block !important;
}
#aboutDrawer.disclaimer-only #disclaimer{
  display:block !important;
  margin-top:0 !important;
}
#aboutDrawer.disclaimer-only #disclaimer h4{
  margin-bottom:10px;
}
@media (max-width:620px){
  .about-grid,
  .about-card-stack{
    gap:10px;
  }
  .about-section,
  .about-section:not(.about-section-header){
    display:grid;
    grid-template-columns:1fr;
    gap:8px;
    padding:11px;
  }
  .about-section ul,
  .about-section p{
    font-size:.86rem;
    line-height:1.40;
  }
  .about-section ul{
    padding-left:17px;
  }
  .about-section-header{
    grid-template-columns:1fr;
    justify-items:center;
    text-align:center;
    min-height:auto;
  }
  .about-logo-text{
    width:min(290px, 86vw);
    min-height:66px;
    padding:8px 10px;
  }
  .about-logo-mark{
    font-size:clamp(1.7rem, 10vw, 2.75rem);
  }
}

/* ========================== Footer ========================== */
.site-footer{
  position:relative;
  margin-top:8px;
  border-top:1px solid rgba(255,255,255,.12);
  color:#e5e7eb;
  background:linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.02)), rgba(17,24,39,.80);
  box-shadow:0 -8px 24px rgba(0,0,0,.20);
  backdrop-filter:blur(10px) saturate(140%);
}
.site-footer::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:-2px;
  height:2px;
  background:linear-gradient(90deg, rgba(14,165,233,.75), rgba(250,204,21,.75));
  opacity:.75;
  filter:blur(.5px);
}
.site-footer .foot-wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:8px 6px;
}
.foot-left{ display:flex; flex-direction:column; gap:2px; }
.foot-title{ color:#f8fafc; font-size:.92rem; font-weight:900; letter-spacing:.25px; }
.foot-rev{ display:inline-block; margin-left:.35rem; font-size:.68em; font-weight:800; letter-spacing:.08em; color:rgba(226,232,240,.72); vertical-align:baseline; }
.foot-sub{ color:#aeb7c2; font-size:.82rem; }
.foot-right{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}
.foot-link{
  position:relative;
  display:inline-flex;
  align-items:center;
  gap:4px;
  padding:0;
  border:0;
  background:transparent;
  color:#e2e8f0;
  text-decoration:none;
  font-weight:850;
}
.foot-link::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:-2px;
  height:2px;
  background:linear-gradient(90deg,var(--bar-start),var(--bar-end));
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .18s ease-out;
}
.foot-link:hover::after{ transform:scaleX(1); }
.foot-sep{ opacity:.28; }

/* ========================== Animation / Accessibility ========================== */
.pulse{ animation:pulseGlow 900ms ease-out 1; }
@keyframes pulseGlow{
  0%{ filter:drop-shadow(0 0 0 rgba(255,255,255,0)); transform:translateZ(0) scale(1); }
  35%{ filter:drop-shadow(0 0 10px rgba(255,255,255,.45)); transform:translateZ(0) scale(1.02); }
  100%{ filter:drop-shadow(0 0 0 rgba(255,255,255,0)); transform:translateZ(0) scale(1); }
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ scroll-behavior:auto !important; }
  #stage .bg-layer,
  .fill,
  .drawer,
  .backdrop,
  .foot-link::after{ transition:none !important; }
}
@media (prefers-contrast:more){
  .pill,
  .ribbon-label,
  .ribbon-value,
  .gauge-rows .kv .k,
  .gauge-rows .kv .v,
  .nowcast-row .kv .k,
  .nowcast-row .kv .v{ border-color:#fff; }
}
@media (forced-colors:active){
  .ribbon::after,
  .title3d .gloss,
  .site-footer::before{ display:none !important; }
  .ribbon-title .title-text{ background:none !important; -webkit-text-fill-color:ButtonText !important; color:ButtonText !important; }
  .spark rect.bg{ fill:Canvas; stroke:ButtonFace; }
  .spark .grid line{ stroke:GrayText; }
}

/* ========================== R33.45 Drawer / Footer Uniformity ========================== */
html body .drawer-panel{
  border:0 !important;
  background:
    radial-gradient(115% 95% at 12% -8%, rgba(14,165,233,.100), transparent 54%),
    radial-gradient(95% 85% at 100% 0%, rgba(34,197,94,.075), transparent 58%),
    linear-gradient(180deg, rgba(255,255,255,.060), rgba(255,255,255,.022)),
    rgba(8,13,22,.94) !important;
  box-shadow:
    inset 1px 0 0 rgba(255,255,255,.075),
    0 22px 54px rgba(0,0,0,.46),
    0 0 42px rgba(14,165,233,.080),
    0 0 44px rgba(34,197,94,.055) !important;
}
html body .drawer-section,
html body .about-section{
  border:0 !important;
  background:var(--wx44-lower-item-bg) !important;
  box-shadow:var(--wx44-lower-item-shadow) !important;
}
html body .drawer-section-title,
html body .about-section h4{
  color:var(--wx43-soft-text) !important;
  text-shadow:none !important;
}
html body .drawer-check,
html body .drawer .input,
html body .drawer select,
html body .drawer textarea,
html body .drawer-foot .btn{
  border:0 !important;
  background:var(--wx43-row-value-bg) !important;
  box-shadow:var(--wx43-glass-edge) !important;
}
html body .site-footer{
  border:0 !important;
  background:
    radial-gradient(110% 90% at 50% 0%, rgba(14,165,233,.070), transparent 54%),
    linear-gradient(180deg, rgba(255,255,255,.044), rgba(255,255,255,.016)),
    rgba(10,16,25,.82) !important;
  box-shadow:
    0 -8px 24px rgba(0,0,0,.20),
    inset 0 1px 0 rgba(255,255,255,.070),
    0 0 22px rgba(14,165,233,.065) !important;
}
html body .site-footer::before{
  height:1px !important;
  background:linear-gradient(90deg, transparent, rgba(125,211,252,.44), rgba(34,197,94,.24), transparent) !important;
  filter:none !important;
  opacity:.80 !important;
}

html body .foot-link::after{ display:none !important; }

/* ========================== R33.49 Navigation Pill Refinement ========================== */
html body .foot-right{
  align-items:center !important;
  gap:7px !important;
}
html body .foot-sep{
  opacity:.26 !important;
  margin:0 1px !important;
}
html body .foot-link{
  min-height:28px !important;
  padding:5px 12px !important;
  gap:6px !important;
  border-radius:999px !important;
  border:1px solid rgba(125,211,252,.22) !important;
  color:rgba(239,247,255,.94) !important;
  background:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.18), transparent 34%),
    linear-gradient(135deg, rgba(14,165,233,.16), rgba(20,184,166,.095) 52%, rgba(99,102,241,.10)),
    rgba(15,23,42,.30) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.105),
    inset 0 -1px 0 rgba(0,0,0,.16),
    0 2px 9px rgba(0,0,0,.16),
    0 0 12px rgba(125,211,252,.085) !important;
  text-shadow:none !important;
  line-height:1 !important;
  font-weight:850 !important;
  letter-spacing:.01em !important;
  transition:transform .16s ease, box-shadow .16s ease, border-color .16s ease, background .16s ease;
}
html body .foot-link:hover{
  transform:translateY(-1px);
  border-color:rgba(125,211,252,.34) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.13),
    inset 0 -1px 0 rgba(0,0,0,.16),
    0 4px 12px rgba(0,0,0,.18),
    0 0 16px rgba(125,211,252,.12) !important;
}
html body .foot-link:active{
  transform:translateY(0);
}
html body .foot-link--settings{
  color:rgba(220,252,231,.96) !important;
  border-color:rgba(74,222,128,.28) !important;
  background:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.18), transparent 34%),
    linear-gradient(135deg, rgba(34,197,94,.18), rgba(20,184,166,.12) 52%, rgba(14,165,233,.085)),
    rgba(6,78,59,.30) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.105),
    inset 0 -1px 0 rgba(0,0,0,.16),
    0 2px 9px rgba(0,0,0,.16),
    0 0 14px rgba(74,222,128,.10) !important;
}
html body .foot-link--disclaimer{
  color:rgba(254,249,195,.95) !important;
  border-color:rgba(250,204,21,.24) !important;
  background:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.17), transparent 34%),
    linear-gradient(135deg, rgba(250,204,21,.14), rgba(20,184,166,.075) 52%, rgba(14,165,233,.075)),
    rgba(45,36,12,.22) !important;
}
html body .foot-link--about{
  color:rgba(219,234,254,.96) !important;
  border-color:rgba(96,165,250,.24) !important;
  background:
    radial-gradient(circle at 20% 18%, rgba(255,255,255,.17), transparent 34%),
    linear-gradient(135deg, rgba(59,130,246,.15), rgba(20,184,166,.080) 52%, rgba(129,140,248,.090)),
    rgba(15,23,42,.28) !important;
}
html body .foot-link span[aria-hidden="true"]{
  display:inline-grid;
  place-items:center;
  width:1.15em;
  flex:0 0 auto;
}
@media (max-width:540px){
  html body .foot-right{
    gap:6px !important;
  }
  html body .foot-link{
    min-height:27px !important;
    padding:5px 10px !important;
    font-size:.82rem !important;
  }
}
@media (prefers-reduced-motion:reduce){
  html body .foot-link{
    transition:none !important;
  }
  html body .foot-link:hover{
    transform:none !important;
  }
}
/* =========================================================
   Guimbal WX — Public WWW Synced-Data Dashboard
   File: css/06-responsive-early-overrides.css
   Version: V2-R33 Visual Correction Pass 45 - July 2026
   Copyright: © Andrew Tunnera 2025-2026. All rights reserved.
   Role: Active runtime file
   ========================================================= */

/* ========================== Fallbacks ========================== */
@supports not (background: color-mix(in oklab, red 50%, white)){
  .title3d-inner{ background:linear-gradient(180deg, var(--bar-sheen), transparent 55%), linear-gradient(135deg, var(--bar-start), var(--bar-end)); }
  .status-bar{ background:linear-gradient(180deg, var(--bar-sheen), transparent 40%), linear-gradient(135deg, var(--bar-end), var(--bar-start)); }
  #forecast7Panel .ribbon-body-card,
  #hazardsPanel .ribbon-body-card,
  #quakesPanel .ribbon-body-card{ box-shadow:var(--shadow-soft); }
  .hazard-chips .pill{ border-color:rgba(255,255,255,.22); }
}

/* ========================== Responsive Layout ========================== */
@media (max-width:1200px){
  :root{
    --stage-min-h:410px;
    --stage-h:50vh;
    --wind-card-h:252px;
    --ltg-card-h:252px;
    --wind-canvas:172px;
    --ltg-w:162px;
    --ltg-h:102px;
  }
  .ribbon-panels{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  #rainRibbon{ grid-column:1 / -1; }
  .forecast7-grid,
  #forecast7Panel .forecast7-grid{ grid-template-columns:repeat(5, minmax(0, 1fr)); }
}
@media (max-width:980px){
  .tube-card.solar{ grid-column:1 / -1; }
  .hazards-quakes-row{ grid-template-columns:1fr; }
  .hzq-span-2{ grid-column:auto; }
  .forecast7-grid,
  #forecast7Panel .forecast7-grid{ grid-template-columns:repeat(4, minmax(0, 1fr)); }
}
@media (max-width:760px){
  :root{
    --stage-min-h:380px;
    --stage-h:48vh;
    --wind-card-h:232px;
    --ltg-card-h:232px;
    --tube-card-h:118px;
    --tube-h:60px;
  }
  body{ font-size:14px; }
  .container{ width:100%; padding:0 6px; }
  .title3d-inner{ padding:8px 10px; }
  .status-bar{ justify-content:center; }
  .status-left,
  .status-right{ justify-content:center; margin-left:0; }
  #rainRibbon,
  .tube-card.solar{ grid-column:auto; }
  .ribbon{ min-height:0; }
  
  .nowcast-row{ grid-template-columns:1fr; }
  .forecast7-grid,
  #forecast7Panel .forecast7-grid{ grid-template-columns:repeat(3, minmax(0, 1fr)); }
  .site-footer .foot-wrap{ flex-direction:column; align-items:flex-start; }
}
@media (max-width:540px){
  :root{
    --stage-min-h:350px;
    --stage-h:46vh;
    --wind-canvas:158px;
    --ltg-w:150px;
    --ltg-h:94px;
  }
  .ribbon-label,
  .gauge-rows .kv .k,
  .nowcast-row .kv .k{ font-size:.78rem; }
  .ribbon-value,
  .gauge-rows .kv .v,
  .nowcast-row .kv .v{ font-size:.88rem; }
  .forecast7-grid,
  #forecast7Panel .forecast7-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
  .drawer-panel{ padding:14px; }
  .drawer-body{ padding:6px 4px; }
  .drawer-foot{ flex-wrap:wrap; }
  .foot-right{ gap:8px; }
}
@media (max-width:420px){
  :root{ --stage-min-h:330px; --stage-h:44vh; }
  .ribbon-value,
  .gauge-rows .kv .v,
  .nowcast-row .kv .v{ justify-content:center; text-align:center; }
  .about-logo img{ width:clamp(98px, 56%, 238px); }
}


.status-bar .pill,
#fc7StatusPill,
#hazStatusPill,
#quakesStatusPill,
#status{
  background-color:rgba(255,255,255,.08);
  border-color:rgba(255,255,255,.22);
}

.pill.transparent{
  background-color:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.18);
}

.skip-link{
  position:absolute;
  left:-9999px;
  top:auto;
  width:1px;
  height:1px;
  overflow:hidden;
}

.skip-link:focus{
  position:fixed;
  left:16px;
  top:16px;
  width:auto;
  height:auto;
  padding:8px 12px;
  background:#0ea5e9;
  color:#fff;
  border-radius:6px;
  z-index:9999;
}


:root{
  --wx-split-card-h:246px;
  --wx-split-visual-col:minmax(140px,42%);
  --wx-split-data-col:minmax(230px,48%);
  --wx-split-gap:14px;
  --wx-split-wind-size:172px;
  --wx-split-lightning-w:174px;
  --wx-split-lightning-h:110px;
}


@media (min-width:761px) and (max-width:1180px){
  :root{
    --wx-split-card-h:232px;
    --wx-split-wind-size:154px;
    --wx-split-lightning-w:156px;
    --wx-split-lightning-h:98px;
    --wx-split-gap:12px;
  }
}

/* ---------- Tall sparkline split rows ---------- */
:root{
  --wx-spark-tall-w:clamp(150px,12vw,210px);
  --wx-spark-tall-h:54px;
  --wx-spark-left-col:minmax(9.5rem,38%);
  --wx-spark-right-col:minmax(150px,1fr);
  --wx-spark-row-gap:5px;
  --wx-spark-col-gap:10px;
}







html body #outdoorReadingsRibbon .ribbon-item .spark,
html body #outdoorRibbon .ribbon-item .spark{
  
  
  
  
  
  
  
  
  display:block !important;
  overflow:visible !important;
  box-sizing:border-box !important;
  
  
  
  
  
}







/* ---------- Rain Intensity embedded in Precipitation ---------- */


html body #rainRibbon.rain-has-intensity .ribbon-body-card{
  display:grid !important;
  
  
  column-gap:var(--wx-rain-embed-gap) !important;
  
  
  
  padding:9px 10px !important;
}

html body #rainRibbon.rain-has-intensity .ribbon-left,
html body #rainRibbon.rain-has-intensity .ribbon-right{
  display:contents !important;
}

html body #rainRibbon.rain-has-intensity .ribbon-item{
  grid-column:1 !important;
  display:grid !important;
  grid-template-columns:minmax(12.5ch,38%) minmax(0,1fr) !important;
  align-items:center !important;
  column-gap:8px !important;
  margin:0 !important;
  min-width:0 !important;
}

html body #rainRibbon.rain-has-intensity .tube-card.rain{
  grid-column:2 !important;
  grid-row:1 / span 6 !important;
  align-self:stretch !important;
  justify-self:stretch !important;
  width:100% !important;
  
  
  
  margin:0 !important;
  
  display:grid !important;
  
  
  
  
  
  
  
  
  box-sizing:border-box !important;
}

html body #rainRibbon.rain-has-intensity .tube-card.rain .tube-title{
  
  
  
  margin:0 !important;
  border-radius:7px !important;
  
  
  
}

html body #rainRibbon.rain-has-intensity .tube-card.rain .tube{
  
  
  
  
  margin:0 auto !important;
  border-radius:9px !important;
}

html body #rainRibbon.rain-has-intensity .tube-card.rain .tube-value{
  
  
  font-weight:900 !important;
  margin:0 !important;
  
  max-width:100% !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  border-radius:7px !important;
  background:rgba(15,20,26,.30) !important;
  border:1px solid rgba(255,255,255,.12) !important;
}

