.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
/* ============================================================
   AQUORYX HUB — site styles
   All colors & fonts come from CSS variables that the Admin
   panel controls (see render.js applyTheme()).
   ============================================================ */
:root{
  --dark:#071C33; --navy:#0B2A4A; --accent:#17C3B2; --accent2:#2DD4BF;
  --light:#F4F8FB; --text:#33475B; --white:#fff;
  /* semantic surfaces (dark mode overrides these) */
  --bg:#fff; --surface:#fff; --tint:var(--light); --line:#e4ecf2;
  --heading:var(--dark); --muted:#5b7186; --field:#fbfdfe; --field-line:#d5e0e9;
  /* editable sizes (set by Admin via render.js) */
  --logo-h:40px; --wwd-icon:2.6rem; --why-icon:2rem; --svc-icon:2.6rem;
  --tech-h:34px; --dhc-icon:1.25rem;
  --font-display:"Sora",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-body:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --radius:14px; --shadow:0 10px 30px rgba(7,28,51,.10);
  --maxw:1320px; --site-header-h:72px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
body{font-family:var(--font-body);color:var(--text);background:var(--bg);line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--accent);text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent2);outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--heading);line-height:1.2;letter-spacing:-.01em}
.container{max-width:var(--maxw);margin:0 auto;padding:0 clamp(18px,3.2vw,44px)}
.icon{display:inline-flex;width:1em;height:1em;vertical-align:-.12em}
.icon svg{width:100%;height:100%}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:60;background:var(--dark);box-shadow:0 2px 14px rgba(0,0,0,.25)}
.site-header .container{max-width:none;padding:0 clamp(16px,2.6vw,42px)}
.hdr{display:flex;align-items:center;gap:clamp(10px,1.6vw,24px)}
.main-nav{flex:1;min-width:0;display:flex;justify-content:center;overflow:hidden}
.main-nav ul{display:flex;flex-wrap:nowrap;min-width:0}
.main-nav li{white-space:nowrap}
.hdr .btn{white-space:nowrap;flex:none}
.theme-toggle{flex:none}
.hdr-tools{display:flex;align-items:center;gap:8px;flex:none}
.hdr-tools .lang-btn,.hdr-tools .theme-toggle{height:40px;border-radius:10px}
.brand{flex:none}
.hdr{display:flex;align-items:center;gap:26px;height:max(72px,calc(var(--logo-h) + 16px))}
.brand img,.brand .logo-mark{height:var(--logo-h);width:auto}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:800;font-size:1.25rem;letter-spacing:.02em;color:#fff}
.brand .b{color:var(--accent2)}
.brand img,.brand .logo-mark{width:40px;height:40px}
.main-nav{margin-left:auto}
.main-nav ul{display:flex;gap:4px;list-style:none}
.main-nav a{display:block;padding:10px 13px;color:#cfe0ee;font-weight:600;font-size:.95rem;border-radius:8px;position:relative}
.main-nav a:hover{color:#fff}
.main-nav a.active{color:var(--accent2)}
.main-nav a.active::after{content:"";position:absolute;left:13px;right:13px;bottom:4px;height:2px;background:var(--accent2);border-radius:2px}
.btn{display:inline-flex;align-items:center;gap:9px;font-family:var(--font-display);font-weight:700;font-size:.95rem;padding:12px 22px;border-radius:10px;border:2px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}
.btn:hover{transform:translateY(-2px)}
.btn-accent{background:var(--accent);color:#04241f}
.btn-accent:hover{background:var(--accent2)}
.btn-ghost{border-color:rgba(255,255,255,.55);color:#fff;background:transparent}
.btn-ghost:hover{border-color:var(--accent2);color:var(--accent2)}
.btn-dark{background:var(--dark);color:#fff}
.nav-toggle{display:none;margin-left:auto;background:none;border:0;color:#fff;font-size:1.6rem;cursor:pointer;padding:6px}

/* ---------- hero ---------- */
.hero{position:relative;background:var(--dark);color:#dbe9f4;overflow:hidden}
.hero-bg{position:absolute;inset:0}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(7,28,51,.88) 0%,rgba(7,28,51,.55) 46%,rgba(7,28,51,.25) 100%)}
.hero-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.9}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,28,51,.94) 0%,rgba(7,28,51,.78) 42%,rgba(7,28,51,.15) 100%)}
.hero-inner{position:relative;z-index:2;padding:96px 0 110px;max-width:680px}
.hero h1{color:#fff;font-size:clamp(2.4rem,5.4vw,4rem);font-weight:800}
.hero h1 .b{color:var(--accent2)}
.hero .sub{font-family:var(--font-display);color:#fff;font-size:clamp(1.05rem,2.2vw,1.45rem);font-weight:600;margin-top:10px}
.pulse-rule{width:64px;height:3px;background:var(--accent);border-radius:2px;margin:18px 0;position:relative;overflow:hidden}
.pulse-rule::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,#fff,transparent);animation:pulse 2.6s linear infinite}
@keyframes pulse{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.hero p{max-width:480px;color:#c3d5e4}
.hero-ctas{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap}

/* page hero (inner pages) */
.page-hero{background:linear-gradient(120deg,var(--dark),var(--navy));color:#c3d5e4;padding:64px 0 56px}
.page-hero h1{color:#fff;font-size:clamp(1.9rem,4vw,2.7rem)}
.page-hero p{max-width:560px;margin-top:8px}

/* ---------- stats band ---------- */
.stats{background:var(--navy);color:#fff;padding:34px 0}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.stat{display:flex;align-items:center;gap:16px;padding:10px 18px;border-left:1px solid rgba(255,255,255,.12)}
.stat:first-child{border-left:0}
.stat .icon{font-size:2.3rem;color:var(--accent2)}
.stat b{display:block;font-family:var(--font-display);font-size:2rem;font-weight:800;line-height:1.1}
.stat span{color:#b7c9d9;font-size:.9rem;line-height:1.35;display:block}

/* ---------- sections ---------- */
.section{padding:76px 0}
.section.tint{background:var(--tint)}
.section-head{text-align:center;margin-bottom:46px}
.section-head h2{font-size:clamp(1.5rem,3vw,2rem);text-transform:uppercase;letter-spacing:.06em}
.section-head .pulse-rule{margin:14px auto 0}
.left .section-head{text-align:left}
.left .section-head .pulse-rule{margin:14px 0 0}

/* what we do */
.wwd-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.wwd{background:var(--surface);padding:34px 26px;text-align:center;transition:box-shadow .2s ease,transform .2s ease}
.wwd:hover{box-shadow:var(--shadow);transform:translateY(-3px);position:relative;z-index:1}
.wwd .icon{font-size:var(--wwd-icon);color:var(--accent)}
.wwd h3{font-size:1.05rem;margin:14px 0 8px}
.wwd p{font-size:.92rem;color:var(--muted)}

/* featured projects + datahub card */
.feat-wrap{display:grid;grid-template-columns:1.55fr 1fr;gap:28px;align-items:start}
.proj-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 4px 14px rgba(7,28,51,.06);transition:transform .2s ease,box-shadow .2s ease;display:flex;flex-direction:column}
.card:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.card img{aspect-ratio:3/2;object-fit:cover;width:100%}
.card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.card h3{font-size:1rem}
.card p{font-size:.88rem;color:var(--muted);flex:1}
.card .more{font-weight:700;font-size:.85rem;display:inline-flex;align-items:center;gap:6px}
.tag{align-self:flex-start;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);background:rgba(23,195,178,.1);padding:3px 9px;border-radius:20px}

.feat-wrap{align-items:stretch}
.datahub-card{background:linear-gradient(160deg,var(--navy),var(--dark));border-radius:var(--radius);color:#fff;padding:26px;box-shadow:var(--shadow);display:flex;flex-direction:column}
.datahub-card .dh-mini{flex:1;min-height:220px}
.datahub-card .btn{margin-top:auto;justify-content:center}
.datahub-card h3{color:#fff;font-size:1.25rem;letter-spacing:.04em;text-transform:uppercase}
.dh-feats{list-style:none;margin:18px 0}
.dh-feats li{display:flex;align-items:center;gap:12px;padding:11px 4px;border-bottom:1px solid rgba(255,255,255,.1);font-weight:600;font-size:.95rem}
.dh-feats .icon{color:var(--accent2);font-size:var(--dhc-icon)}
.datahub-card img{border-radius:10px;margin:6px 0 16px;aspect-ratio:6/5;object-fit:cover}

/* tech strip */
.tech-strip{display:flex;flex-wrap:nowrap;justify-content:space-evenly;align-items:flex-start;gap:clamp(14px,3vw,54px);width:100%;overflow-x:auto;padding:6px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.tech-strip::-webkit-scrollbar{display:none}
.tech-item{display:flex;flex-direction:column;align-items:center;gap:10px;margin:0;flex:0 0 auto}
.tech-item figcaption{font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--muted);white-space:nowrap}
.tech-item:hover figcaption{color:var(--accent)}
.tech-strip .t{font-family:var(--font-display);font-weight:800;font-size:1.15rem;color:#7c93a8;padding:10px 6px;transition:color .2s}
.tech-strip .t:hover{color:var(--heading)}
.tech-strip img.t{background:none;border:0;padding:0;box-shadow:none;transition:transform .18s ease,filter .18s ease}
.tech-item:hover img.t{transform:translateY(-3px) scale(1.05)}
[data-theme="dark"] .tech-strip img.t{filter:drop-shadow(0 0 5px rgba(255,255,255,.5)) drop-shadow(0 0 16px rgba(125,211,252,.3))}
[data-theme="dark"] .tech-item:hover img.t{filter:drop-shadow(0 0 7px rgba(255,255,255,.7)) drop-shadow(0 0 20px rgba(45,212,191,.45))}
[data-theme="dark"] .tech-item figcaption{color:#A9BFD1}

/* why band */
.why{background:var(--dark);color:#fff}
.why .section-head h2{color:#fff}
.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px 30px}
.why-item{display:flex;gap:14px}
.why-item .icon{font-size:var(--why-icon);color:var(--accent2);flex:none;margin-top:2px}
.why-item h3{color:#fff;font-size:1rem;margin-bottom:4px}
.why-item p{color:#b7c9d9;font-size:.9rem}
/* why-item reused on light surfaces (About values) — theme-aware */
.about-values .why-item h3{color:var(--heading)}
.about-values .why-item p{color:var(--muted)}
.map-note{margin-top:18px;color:var(--muted);font-size:.9rem}
.cmap-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:20px;background:
  radial-gradient(circle at 30% 30%, rgba(23,195,178,.16), transparent 55%),
  radial-gradient(circle at 72% 68%, rgba(56,189,248,.14), transparent 50%),
  linear-gradient(150deg,#0B2A4A,#071C33)}
.cmap-ph::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);background-size:34px 34px}
.cmap-pin{position:relative;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:rgba(23,195,178,.15);color:var(--accent2)}
.cmap-pin .icon{font-size:1.5rem}
.cmap-pin::after{content:"";position:absolute;inset:-8px;border-radius:50%;border:2px solid rgba(45,212,191,.5);animation:iotping 1.8s ease-out infinite}
.cmap-ph b{position:relative;color:#EAF3FA;font-family:var(--font-display);font-size:.95rem}
.cmap-ph a{position:relative;color:var(--accent2);font-weight:700;font-size:.82rem}
.cmap-ph a:hover{text-decoration:underline}
.contact-map{margin-top:18px;height:260px;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:#0d2138;position:relative;flex:1;min-height:220px}
.contact-map .maplibregl-map{position:absolute!important;inset:0;width:100%!important;height:100%!important}
.info-card{display:flex;flex-direction:column}
[data-theme="dark"] .contact-map{border-color:var(--dk-line)}

/* ---------- generic content pages ---------- */
.split{display:grid;grid-template-columns:1.1fr 1fr;gap:44px;align-items:center}
.split img{border-radius:var(--radius);box-shadow:var(--shadow)}
.prose p{margin-bottom:14px}
.kv{background:var(--light);border-left:4px solid var(--accent);padding:16px 18px;border-radius:0 10px 10px 0;margin:10px 0}
.kv b{font-family:var(--font-display);color:var(--heading)}

.svc-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.service-block{display:grid;grid-template-columns:76px 1fr;gap:20px;padding:30px 28px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);scroll-margin-top:96px;position:relative;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}
.service-block::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--accent),var(--accent2));opacity:0;transition:opacity .2s}
.service-block:hover{transform:translateY(-4px);box-shadow:var(--shadow)}
.service-block:hover::before{opacity:1}
.svc-side{display:flex;flex-direction:column;align-items:center;gap:10px}
.svc-num{font-family:var(--font-display);font-weight:800;font-size:.78rem;letter-spacing:.08em;color:var(--accent);opacity:.85}
.svc-icon{width:64px;height:64px;border-radius:16px;background:linear-gradient(140deg,rgba(23,195,178,.14),rgba(45,212,191,.05));border:1px solid rgba(23,195,178,.25);display:flex;align-items:center;justify-content:center}
.svc-icon .icon{font-size:var(--svc-icon);color:var(--accent)}
.service-block h3{font-size:1.18rem;margin-bottom:6px}
.service-block .lead{font-weight:600;color:var(--heading);margin-bottom:8px}
.service-block .details{font-size:.94rem;color:var(--muted);line-height:1.7}
.svc-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.svc-tag{font-size:.72rem;font-weight:700;letter-spacing:.03em;color:var(--accent);background:rgba(23,195,178,.1);border:1px solid rgba(23,195,178,.22);padding:4px 11px;border-radius:100px}

.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.team-card{text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 20px;box-shadow:0 4px 14px rgba(7,28,51,.05)}
.team-card img{width:110px;height:110px;border-radius:50%;object-fit:cover;margin:0 auto 14px;border:3px solid var(--accent2)}
.team-card h3{font-size:1rem}
.team-card .role{color:var(--accent);font-weight:700;font-size:.82rem;margin:4px 0 8px}
.team-card p{font-size:.85rem;color:var(--muted)}

/* projects page */
.projects-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}
.proj-detail{max-width:860px}
.proj-detail img{border-radius:var(--radius);margin:18px 0}

/* ---------- datahub page ---------- */
.dh-layout{display:grid;grid-template-columns:290px 1fr;gap:0;min-height:640px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.dh-side{background:var(--dark);color:#dbe9f4;padding:22px}
.dh-side h3{color:#fff;font-size:1rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px}
.layer-toggle{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-weight:600;font-size:.92rem;user-select:none}
.layer-toggle:hover{background:rgba(255,255,255,.06)}
.layer-toggle input{accent-color:var(--accent);width:16px;height:16px}
.dot{width:11px;height:11px;border-radius:50%;flex:none;box-shadow:0 0 0 3px rgba(255,255,255,.12)}
.station-list{margin-top:18px;border-top:1px solid rgba(255,255,255,.12);padding-top:14px;max-height:330px;overflow:auto}
.station-item{padding:9px 10px;border-radius:8px;cursor:pointer;font-size:.88rem}
.station-item:hover{background:rgba(255,255,255,.07)}
.station-item b{display:block;color:#fff}
.station-item span{color:#9ab3c7;font-size:.8rem}
.map-wrap{position:relative;min-height:640px;background:#0d2138}
.map-wrap #map,.map-wrap #fieldMap{position:absolute!important;inset:0;width:100%!important;height:100%!important}
.map-wrap #fieldMap .maplibregl-map{position:absolute!important;inset:0;width:100%!important;height:100%!important}
.maplibregl-popup-content{position:relative;font-family:var(--font-body)!important;border-radius:14px!important;padding:10px 13px 9px!important;box-shadow:0 10px 26px rgba(7,28,51,.28)!important;border:1px solid var(--line);background:var(--surface)!important;color:var(--text);font-size:.8rem;line-height:1.45;overflow:hidden}
.maplibregl-popup-content::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent2))}
.maplibregl-popup-content b{font-family:var(--font-display);color:var(--heading);font-size:.85rem}
.maplibregl-popup-close-button{position:absolute!important;width:20px!important;height:20px!important;top:8px!important;right:8px!important;border-radius:50%!important;font-size:14px!important;line-height:18px!important;font-weight:700;color:var(--muted)!important;background:var(--tint)!important;border:1px solid var(--line)!important;padding:0!important;display:flex;align-items:center;justify-content:center;transition:all .15s;cursor:pointer}
.maplibregl-popup-close-button:hover{background:var(--accent)!important;color:#04241f!important;border-color:var(--accent)!important}
/* compact sensor popup internals (DataHub page) */
.iot-pop b{display:block;padding-right:18px}
.iot-pop .loc{display:block;color:var(--muted);font-size:.68rem}
.iot-pop .badge{display:inline-block;font-size:.58rem;font-weight:800;letter-spacing:.05em;padding:2px 6px;border-radius:20px;margin:4px 0}
.iot-pop .vals{font-weight:700;font-size:.82rem}
.iot-pop .time{color:var(--muted);font-size:.64rem;margin-top:2px}
/* MINI popup — home card: name + temp/hum only */
.pop-mini .maplibregl-popup-content{border-radius:12px!important;padding:7px 11px 6px!important}
.pop-mini .maplibregl-popup-content::before{height:2px}
.pop-mini .maplibregl-popup-close-button{width:17px!important;height:17px!important;top:6px!important;right:6px!important;font-size:12px!important;line-height:15px!important}
.iot-mini b{display:block;font-family:var(--font-display);font-size:.76rem;color:var(--heading);padding-right:16px}
.iot-mini span{display:block;font-weight:700;font-size:.8rem;color:var(--accent);margin-top:1px}

/* ---------- contact ---------- */
.contact-wrap{display:grid;grid-template-columns:1.3fr 1fr;gap:34px}
.form-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:30px;box-shadow:var(--shadow)}
.field{margin-bottom:16px}
.field label{display:block;font-weight:700;font-size:.85rem;color:var(--heading);margin-bottom:6px}
.field input,.field textarea,.field select{width:100%;padding:12px 14px;border:1.5px solid var(--field-line);border-radius:9px;font:inherit;background:var(--field);color:var(--text)}
.field textarea{min-height:130px;resize:vertical}
.field input:focus,.field textarea:focus{border-color:var(--accent)}
.info-card{background:linear-gradient(160deg,var(--navy),var(--dark));color:#fff;border-radius:var(--radius);padding:30px}
.info-card h3{color:#fff;margin-bottom:16px}
.info-line{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.1);font-size:.95rem}
.info-line .icon{color:var(--accent2);font-size:1.3rem}
.info-line a{color:#fff}

/* ---------- footer ---------- */
.site-footer{background:var(--dark);color:#b7c9d9;margin-top:80px}
.ft{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:34px;padding:56px 0 40px}
.ft h4{color:#fff;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:14px}
.ft ul{list-style:none}
.ft li{margin-bottom:9px}
.ft a{color:#b7c9d9;font-size:.92rem}
.ft a:hover{color:var(--accent2)}
.ft .brand{margin-bottom:10px}
.ft .tagline{color:var(--accent2);font-weight:700;font-size:.85rem;margin-bottom:10px}
.ft p{font-size:.9rem}
.socials{display:flex;gap:10px;margin-top:16px}
.socials a{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);display:inline-flex;align-items:center;justify-content:center;font-size:1.05rem}
.socials a:hover{background:var(--accent);color:#04241f}
.ft-partners{border-top:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:18px 34px;padding:22px 0}
.ft-partner{display:inline-flex;align-items:center;justify-content:center;gap:14px;min-width:0}
.ft-partner-label{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#7f97ab;white-space:nowrap}
.ft-partner-mark{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:4px 0;border-radius:8px}
.ft-partner-mark img{display:block;width:auto;height:var(--partner-logo-h,42px);max-width:min(240px,55vw);object-fit:contain;filter:none}
.ft-partner-mark:focus-visible{outline:3px solid var(--accent2);outline-offset:5px}
.ft-partner-mark:hover img{opacity:.92}
.ft-partners+.ft-bottom{border-top:1px solid rgba(255,255,255,.1)}
.ft-bottom{border-top:1px solid rgba(255,255,255,.1);text-align:center;padding:18px 0;font-size:.85rem;color:#7f97ab}
.admin-link{opacity:.45}
.admin-link:hover{opacity:1}

/* reveal on scroll */
.reveal{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}



/* ---------- DataHub subtabs + ultrasonic view ---------- */
.dh-subtabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap;scroll-margin-top:96px}
.dh-subtab{display:inline-flex;align-items:center;gap:9px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font:inherit;font-weight:700;font-size:.9rem;padding:11px 20px;border-radius:12px;cursor:pointer;transition:all .15s}
.dh-subtab .icon{font-size:1.1rem}
.dh-subtab:hover{border-color:var(--accent);color:var(--accent)}
.dh-subtab.active{background:var(--dark);border-color:var(--dark);color:#fff}
.dh-subtab.active .icon{color:var(--accent2)}
.ultra-note{color:var(--muted);font-size:.92rem;margin-bottom:20px;max-width:720px}
.ultra-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}
.ultra-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 4px 14px rgba(7,28,51,.05)}
.ultra-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px}
.ultra-head .uid{font-size:.66rem;font-weight:800;letter-spacing:.08em;color:var(--muted);background:var(--tint);padding:3px 8px;border-radius:6px}
.ultra-head h3{font-size:1.05rem;margin:5px 0 2px}
.ultra-head .uloc{font-size:.76rem;color:var(--muted)}
.ubadge{font-size:.64rem;font-weight:800;letter-spacing:.06em;padding:5px 11px;border-radius:100px;white-space:nowrap;flex:none}
.ubadge.off{background:rgba(148,163,184,.15);color:#64748b}
.ubadge.on{background:rgba(23,195,178,.14);color:#0d9488}
.ulevel{text-align:center;margin:6px 0 12px}
.ulevel .ulabel{display:block;font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.ulevel b{font-family:var(--font-display);font-size:2.2rem;color:var(--accent);line-height:1}
.ulevel b i{font-style:normal;font-size:.85rem;color:var(--muted);margin-left:4px}
.uviz{position:relative;height:150px;border-radius:12px;background:linear-gradient(180deg,#0B2A4A,#071C33);overflow:hidden;border:1px solid var(--line)}
.usensor{position:absolute;top:8px;left:50%;transform:translateX(-50%);width:34px;height:13px;background:#0F3355;border:1.5px solid rgba(45,212,191,.5);border-radius:4px;z-index:3}
.ubeam{position:absolute;top:21px;left:50%;width:2px;height:66%;background:linear-gradient(to bottom,rgba(45,212,191,.85),rgba(45,212,191,.05));transform:translateX(-50%);animation:iotping-beam 1.6s ease-in-out infinite;z-index:2;transition:height .8s ease}
@keyframes iotping-beam{0%,100%{opacity:1}50%{opacity:.35}}
.uwater{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,rgba(23,195,178,.35),rgba(23,195,178,.15));transition:height .8s ease}
.uwater svg{position:absolute;top:-14px;left:0;width:200%;height:22px;animation:uwave 4s linear infinite}
@keyframes uwave{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
.umeta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px}
.umeta div{background:var(--tint);border:1px solid var(--line);border-radius:10px;padding:9px 12px}
.umeta span{display:block;font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.umeta b{font-size:.92rem;color:var(--heading)}
[data-theme="dark"] .ultra-card{box-shadow:0 4px 14px rgba(0,0,0,.35)}

.card.clickable{cursor:pointer}
.card.clickable:hover{transform:translateY(-4px);box-shadow:var(--shadow)}

/* ---------- project category filter ---------- */
.cat-filter{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:26px}
.cat-chip{border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font:inherit;font-weight:700;font-size:.82rem;padding:8px 16px;border-radius:100px;cursor:pointer;transition:all .15s}
.cat-chip:hover{border-color:var(--accent);color:var(--accent)}
.cat-chip.active{background:var(--accent);border-color:var(--accent);color:#04241f}

/* ---------- content blocks (custom pages + project details) ---------- */
.blocks{max-width:840px;margin:0 auto}
.blk-h{font-size:clamp(1.3rem,3vw,1.7rem);margin-top:36px}
.blk-h:first-child{margin-top:0}
.blocks .pulse-rule{margin:12px 0 20px}
.blk-text p{margin-bottom:14px;line-height:1.75}
.blk-text a{font-weight:600}
.blk-img{margin:26px auto;max-width:100%}
.blk-img img{width:100%;border-radius:var(--radius);box-shadow:var(--shadow);display:block}
.blk-img.align-left{margin-left:0}
.blk-img.align-right{margin-right:0}
.blk-img figcaption,.blk-video figcaption,.blk-gallery figcaption{text-align:center;font-size:.84rem;color:var(--muted);margin-top:9px}
.blk-video{margin:26px 0}
.video-embed{position:relative;width:100%;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);background:#000}
.video-embed iframe,.video-embed video{position:absolute;inset:0;width:100%;height:100%;border:0}
.blk-quote{border-left:4px solid var(--accent);background:var(--tint);padding:20px 24px;border-radius:0 12px 12px 0;margin:26px 0;font-size:1.05rem}
.blk-quote p{margin-bottom:6px;font-style:italic}
.blk-quote cite{color:var(--muted);font-style:normal;font-size:.88rem;font-weight:600}
.blk-btn{margin:26px 0;text-align:center}
.blk-hr{border:0;border-top:1px solid var(--line);margin:34px 0}
.blk-cols{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin:22px 0}
.blk-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;margin:26px 0}
.blk-gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px;box-shadow:0 4px 14px rgba(7,28,51,.12)}

/* ---------- project detail ---------- */
.hero-tag{background:rgba(45,212,191,.15);color:var(--accent2);margin-bottom:14px;display:inline-block}
.proj-detail-body>.blk-img:first-child{margin-top:0}
.proj-nav{display:flex;justify-content:space-between;align-items:center;gap:14px;max-width:840px;margin:44px auto 0;padding-top:22px;border-top:1px solid var(--line);flex-wrap:wrap}
.proj-nav a{font-weight:700;font-size:.92rem;display:inline-flex;align-items:center;gap:7px}
.proj-nav a:first-child .icon{transform:rotate(180deg)}

/* ---------- theme toggle ---------- */
.theme-toggle{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.15);color:#fff;width:40px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-size:1.15rem;cursor:pointer;transition:background .15s}
.theme-toggle:hover{background:rgba(255,255,255,.18);color:var(--accent2)}

/* ---------- live mini-map (home DataHub card) ---------- */
.dh-mini{border-radius:10px;overflow:hidden;margin:14px 0;background:#0d2138;position:relative}
.dh-mini .maplibregl-canvas{border-radius:10px}
.dh-mini-load{display:grid;place-items:center;height:100%;color:#9ab3c7;font-size:.9rem}
.dh-mini-load a{color:var(--accent2)}
.dh-live-status{display:flex;align-items:center;gap:8px;font-size:.82rem;color:#9ab3c7;margin:-4px 0 12px}
.dh-live-status .icon{color:#f59e0b;font-size:1rem}
.dh-live-status.ok .icon{color:var(--accent2)}
.datahub-card>img{width:100%;border-radius:10px;margin:14px 0}

/* ---------- DataHub card tabs & panels ---------- */
.dh-feats{list-style:none;margin:14px 0 12px}
.dh-tab{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:9px;padding:8px 10px;font:inherit;font-weight:600;font-size:.92rem;color:#dbe9f4;cursor:pointer;text-align:left;transition:background .15s,color .15s}
.dh-tab:hover{background:rgba(255,255,255,.07)}
.dh-tab.active{background:rgba(23,195,178,.14);color:var(--accent2)}
.dh-tab .icon{color:var(--accent2);flex:none}
.dh-panels{position:relative;border-radius:10px;overflow:hidden;margin:12px 0;background:#0d2138}
.dh-panel{position:absolute;inset:0;width:100%;height:100%;display:none}
.dh-panels .maplibregl-map{position:absolute!important;inset:0;width:100%!important;height:100%!important}
.dh-panel.active{display:block}
.dh-panel#dhMini .maplibregl-map,.dh-panel .maplibregl-canvas{border-radius:10px}
.dh-list{display:flex;flex-direction:column;gap:2px;padding:14px;height:100%;overflow:auto}
.dh-row{display:flex;justify-content:space-between;gap:12px;padding:9px 10px;border-radius:8px;font-size:.86rem}
.dh-row:nth-child(odd){background:rgba(255,255,255,.04)}
.dh-row b{color:#fff;font-weight:700}
.dh-row span{color:#9ab3c7;text-align:right}
.dh-row.om b{color:var(--accent2)}
.dh-src{margin-top:auto;padding:8px 10px 0;font-size:.72rem;color:#7c93a8}
.dh-chips{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px;height:100%;align-content:center}
.dh-chip{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09);border-radius:12px;padding:14px 12px;text-align:center}
.dh-chip b{display:block;font-family:var(--font-display);font-size:1.25rem;color:var(--accent2)}
.dh-chip span{font-size:.72rem;color:#9ab3c7}
.datahub-card .dh-panels{flex:1;min-height:220px}

/* ---------- globe toggle ---------- */
.aq-globe-btn{width:29px;height:29px;font-size:15px;line-height:1;border:0;background:#fff;cursor:pointer;border-radius:4px}
.aq-globe-btn.on{background:var(--accent)}
.aq-globe-btn:disabled{opacity:.4;cursor:not-allowed}

/* ---------- field tools v2 ---------- */
.ft-stabs{display:flex;gap:6px;margin-bottom:12px}
.ft-stab{flex:1;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);font:inherit;font-weight:800;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;padding:8px;border-radius:10px;cursor:pointer}
.ft-stab.active{background:var(--dark);border-color:var(--dark);color:#fff}
.ft-optrow{display:flex;align-items:center;gap:10px;margin-top:10px}
.ft-optrow>span{font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);flex:none;width:64px}
.ft-colors{display:flex;gap:5px;align-items:center;flex-wrap:wrap}
.ft-sw{width:20px;height:20px;border-radius:50%;border:2px solid var(--line);cursor:pointer;padding:0}
.ft-sw.active{border-color:var(--heading);transform:scale(1.15)}
.ft-colors input[type=color]{width:24px;height:24px;border:0;background:none;padding:0;cursor:pointer}
.ft-icons{display:flex;gap:4px;flex-wrap:wrap}
.ft-ic{width:28px;height:28px;border-radius:8px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;padding:4px}
.ft-ic svg{width:100%;height:100%;display:block}
.ft-ic.active{border-color:var(--accent);background:rgba(23,195,178,.1)}
.ft-pt{width:30px;height:30px;cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.45))}
.ft-pt svg{width:100%;height:100%;display:block}
.dotc{width:10px;height:10px;border-radius:50%;flex:none;display:inline-block}
.ft-bms{display:flex;flex-direction:column;gap:6px}
.ft-bm{border:1.5px solid var(--line);background:var(--surface);color:var(--text);font:inherit;font-weight:700;font-size:.82rem;padding:9px 12px;border-radius:10px;cursor:pointer;text-align:left}
.ft-bm:hover{border-color:var(--accent)}
.ft-bm.active{background:var(--accent);border-color:var(--accent);color:#04241f}
.ft-visrow{display:flex;align-items:center;gap:9px;padding:7px 0;font-size:.86rem;font-weight:600;color:var(--text);cursor:pointer;border-bottom:1px solid var(--line)}
.ft-visrow input{accent-color:var(--accent);width:16px;height:16px}
.ft-count{font-style:normal;font-size:.68rem;color:var(--muted);background:var(--tint);padding:1px 7px;border-radius:20px;margin-left:4px}
.ft-explog{display:flex;flex-direction:column;gap:6px}
.ft-exprow{display:flex;align-items:center;gap:8px;font-size:.78rem}
.ft-exprow b{color:var(--heading);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ft-exprow span{color:var(--muted);font-size:.7rem;flex:none}
[data-theme="dark"] .ft-stab{background:var(--dk-surface);color:var(--dk-text)}
[data-theme="dark"] .ft-stab.active{background:var(--accent);color:#04241f;border-color:var(--accent)}
[data-theme="dark"] .ft-bm,[data-theme="dark"] .ft-ic{background:var(--dk-surface);color:var(--dk-text);border-color:var(--dk-line)}
[data-theme="dark"] .ft-bm.active{background:var(--accent);color:#04241f}

/* ---------- DataHub field tools ---------- */
.ft-tools{display:flex;flex-direction:column;gap:8px}
.ft-tool{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);background:var(--surface);color:var(--text);font:inherit;font-weight:700;font-size:.86rem;padding:10px 13px;border-radius:11px;cursor:pointer;transition:all .15s;text-align:left}
.ft-tool .icon{font-size:1.05rem;color:var(--accent)}
.ft-tool:hover{border-color:var(--accent)}
.ft-tool.active{background:var(--accent);border-color:var(--accent);color:#04241f}
.ft-tool.active .icon{color:#04241f}
.ft-tool.ft-danger:hover{border-color:#e5484d;color:#e5484d}
.ft-readout{display:none;margin-top:10px;background:rgba(23,195,178,.1);border:1px solid rgba(23,195,178,.35);color:var(--accent);font-weight:800;font-size:.82rem;padding:8px 11px;border-radius:10px}
.hint-line{display:block;color:var(--muted);font-size:.74rem;margin-top:8px;line-height:1.5}
.ft-row{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.ft-info{flex:1;min-width:0}
.ft-info input{width:100%;border:0;background:none;font:inherit;font-weight:700;font-size:.84rem;color:var(--heading);padding:0}
.ft-info input:focus{outline:none;border-bottom:1px dashed var(--accent)}
.ft-info span{font-size:.72rem;color:var(--muted)}
.ft-acts{display:flex;gap:3px;flex:none;flex-wrap:wrap;justify-content:flex-end;max-width:120px}
.ft-acts button{width:24px;height:24px;border-radius:7px;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-size:.8rem;line-height:1}
.ft-acts button:hover{border-color:var(--accent);color:var(--accent)}
.ft-exports{display:flex;gap:8px;flex-wrap:wrap}
.ft-profile{position:relative;margin-top:14px;background:var(--tint);border:1px solid var(--line);border-radius:12px;padding:12px}
.ft-profile b{display:block;font-size:.78rem;color:var(--heading);margin-bottom:6px;padding-right:22px}
.ft-profile svg{width:100%;height:90px;display:block;border-radius:8px;background:var(--surface)}
.ft-profile span{display:block;font-size:.7rem;color:var(--muted);margin-top:6px}
.ft-close{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:50%;border:1px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;font-size:.75rem;line-height:1}
.ft-close:hover{background:var(--accent);color:#04241f}
[data-theme="dark"] .ft-tool{background:var(--dk-surface);color:var(--dk-text)}
[data-theme="dark"] .ft-tool.active{background:var(--accent);color:#04241f}
[data-theme="dark"] .ft-acts button,[data-theme="dark"] .ft-close{background:var(--dk-surface);border-color:var(--dk-line);color:var(--dk-text)}
[data-theme="dark"] .ft-profile{background:var(--dk-tint);border-color:var(--dk-line)}
[data-theme="dark"] .ft-profile svg{background:var(--dk-surface)}
[data-theme="dark"] .ft-info input{color:var(--dk-heading)}

/* ---------- rich text options ---------- */
.blk-text.cols-2{column-count:2;column-gap:34px}
.blk-text.cols-3{column-count:3;column-gap:30px}
.blk-text.t-lead p{font-size:1.12rem;line-height:1.75}
.blk-text.t-small p{font-size:.86rem}
.blk-text.t-display p{font-family:var(--font-display);font-weight:600}
.blk-text.t-center{text-align:center}
.blk-text.t-justify{text-align:justify}
@media (max-width:760px){.blk-text.cols-2,.blk-text.cols-3{column-count:1}}

/* ---------- gallery layouts + tags ---------- */
.blk-gallery.g-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.blk-gallery.g-grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.blk-gallery.g-row{display:flex;gap:16px;overflow-x:auto;padding-bottom:8px;scrollbar-width:thin}
.blk-gallery.g-row .g-item{flex:0 0 300px}
.g-item{margin:0;border-radius:12px;overflow:hidden;border:1px solid var(--line);background:var(--surface)}
.g-item img{width:100%;height:190px;object-fit:cover;display:block;cursor:zoom-in;transition:transform .25s}
.g-item:hover img{transform:scale(1.04)}
.g-item figcaption{padding:10px 12px}
.g-item figcaption b{font-size:.85rem;color:var(--heading);font-family:var(--font-display)}
.g-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.g-tags i{font-style:normal;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);background:rgba(23,195,178,.1);padding:2px 8px;border-radius:20px}
@media (max-width:760px){.blk-gallery.g-grid3{grid-template-columns:repeat(2,1fr)}.blk-gallery.g-grid2{grid-template-columns:1fr}}

/* ---------- lightbox ---------- */
.lightbox{position:fixed;inset:0;z-index:200;background:rgba(4,15,28,.92);display:grid;place-items:center;padding:26px;cursor:zoom-out;animation:fadeUp .18s ease}
.lightbox figure{margin:0;max-width:min(1100px,94vw)}
.lightbox img{max-width:100%;max-height:82vh;border-radius:12px;box-shadow:0 24px 70px rgba(0,0,0,.6)}
.lightbox figcaption{color:#dbe9f4;text-align:center;margin-top:12px;font-weight:600}
.lb-x{position:fixed;top:18px;right:20px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font-size:22px;cursor:pointer}
.lb-x:hover{background:var(--accent);color:#04241f}

/* ---------- hero tag chips ---------- */
.hero-tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.hero-tags span{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent2);background:rgba(45,212,191,.12);border:1px solid rgba(45,212,191,.3);padding:4px 11px;border-radius:20px}

/* ---------- back to top ---------- */
.back-top{position:fixed;right:22px;bottom:22px;z-index:70;width:46px;height:46px;border-radius:50%;border:0;background:var(--accent);color:#04241f;cursor:pointer;box-shadow:0 6px 20px rgba(7,28,51,.35);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transform:translateY(10px);transition:opacity .25s,transform .25s}
.back-top.show{opacity:1;pointer-events:auto;transform:none}
.back-top .icon{transform:rotate(-90deg);font-size:1.2rem}
.back-top:hover{background:var(--accent2)}

/* ---------- IoT sensor markers ---------- */
.iot-marker{cursor:pointer;position:relative;width:18px;height:18px}
.iot-marker .dot{position:absolute;inset:0;border-radius:50%;background:#8fa6bc;border:2.5px solid #fff;box-shadow:0 1px 6px rgba(0,0,0,.45)}
.iot-marker.live .dot{background:var(--accent)}
.iot-marker.ultra .dot{background:#64748b}
.iot-marker.ultra.live .dot{background:#38BDF8}
.iot-marker.ultra.live .dot::after{border-color:#38BDF8}
.iot-marker.ultra .val{color:#7DD3FC;border-color:rgba(56,189,248,.4)}
.iot-marker.live .dot::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--accent);opacity:.7;animation:iotping 1.8s ease-out infinite}
.iot-marker .val{position:absolute;left:50%;bottom:calc(100% + 5px);transform:translateX(-50%);background:rgba(7,28,51,.92);color:var(--accent2);font-family:var(--font-display);font-weight:800;font-size:.72rem;line-height:1;padding:4px 8px;border-radius:100px;white-space:nowrap;pointer-events:none;border:1px solid rgba(45,212,191,.35)}
.iot-marker .val:empty{display:none}
.iot-marker .val.fallback{color:#d8e5f2;border-color:rgba(143,166,188,.42);background:rgba(7,28,51,.88);font-size:.66rem;letter-spacing:.035em}
[data-theme="light"] .iot-marker .val.fallback{color:#18344f;border-color:rgba(24,52,79,.24);background:rgba(255,255,255,.94)}
@keyframes iotping{0%{transform:scale(.5);opacity:.8}100%{transform:scale(1.25);opacity:0}}
.iot-pop b{display:block}
.iot-pop .loc{display:block;color:#7a8fa3;font-size:.78rem}
.iot-pop .badge{display:inline-block;font-size:.66rem;font-weight:800;letter-spacing:.06em;padding:2px 7px;border-radius:20px;margin:5px 0}
.iot-pop .badge.on{background:rgba(23,195,178,.15);color:#0d9488}
.iot-pop .badge.off{background:rgba(148,163,184,.2);color:#64748b}
.iot-pop .vals{font-weight:700;font-size:.95rem}
.iot-pop .time{color:#7a8fa3;font-size:.75rem;margin-top:3px}

/* ---------- DataHub map extras ---------- */
.map-wrap{position:relative}
.bm-switch{position:absolute;top:12px;left:12px;z-index:5;display:flex;gap:0;border-radius:9px;overflow:hidden;box-shadow:0 3px 12px rgba(0,0,0,.3)}
.bm-btn{border:0;background:rgba(7,28,51,.85);color:#cfe0ee;font:inherit;font-weight:700;font-size:.8rem;padding:8px 13px;cursor:pointer;backdrop-filter:blur(4px)}
.bm-btn+.bm-btn{border-left:1px solid rgba(255,255,255,.14)}
.bm-btn:hover{color:#fff}
.bm-btn.active{background:var(--accent);color:#04241f}
.live-note{display:flex;align-items:center;gap:8px;font-size:.78rem;color:#9ab3c7;margin-bottom:8px}
.live-note .icon{color:#f59e0b}
.live-note.ok .icon{color:var(--accent2)}
.station-item.iot b::after{content:" ·";color:var(--accent2)}

/* ---------- DARK MODE ---------- */
[data-theme="dark"]{
  --bg:var(--dk-bg); --surface:var(--dk-surface); --tint:var(--dk-tint); --line:var(--dk-line);
  --heading:var(--dk-heading); --text:var(--dk-text); --muted:#A9BFD1;
  --field:#0c1c2e; --field-line:var(--dk-line);
  --shadow:0 10px 30px rgba(0,0,0,.45);
}
[data-theme="dark"] body{background:var(--bg)}
[data-theme="dark"] .kv{background:var(--dk-surface);color:var(--dk-text)}
[data-theme="dark"] .kv b{color:var(--dk-heading)}
[data-theme="dark"] .about .prose p,[data-theme="dark"] .prose p{color:var(--dk-text)}
[data-theme="dark"] .maplibregl-popup-content{background:var(--dk-surface)!important;color:var(--dk-text);border-color:var(--dk-line);box-shadow:0 10px 26px rgba(0,0,0,.55)!important}
[data-theme="dark"] .maplibregl-popup-content b{color:var(--dk-heading)}
[data-theme="dark"] .maplibregl-popup-close-button{background:rgba(255,255,255,.1)!important;color:var(--dk-text)!important;border-color:var(--dk-line)!important}
[data-theme="dark"] .maplibregl-popup-close-button:hover{background:var(--accent)!important;color:#04241f!important}
[data-theme="dark"] .iot-mini span{color:var(--accent2)}
[data-theme="dark"] .maplibregl-popup-anchor-bottom .maplibregl-popup-tip,
[data-theme="dark"] .maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip,
[data-theme="dark"] .maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:var(--dk-surface)!important}
[data-theme="dark"] .maplibregl-popup-anchor-top .maplibregl-popup-tip,
[data-theme="dark"] .maplibregl-popup-anchor-top-left .maplibregl-popup-tip,
[data-theme="dark"] .maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-bottom-color:var(--dk-surface)!important}
[data-theme="dark"] .maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--dk-surface)!important}
[data-theme="dark"] .maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--dk-surface)!important}
[data-theme="dark"] .iot-pop .loc,[data-theme="dark"] .iot-pop .time{color:#A9BFD1}
[data-theme="dark"] .tech-strip .t{color:#7c93a8}
[data-theme="dark"] .card,[data-theme="dark"] .team-card{box-shadow:0 4px 14px rgba(0,0,0,.35)}
[data-theme="dark"] .wwd:hover{box-shadow:0 8px 22px rgba(0,0,0,.45)}
[data-theme="dark"] .section-head .kicker{color:var(--accent2)}
[data-theme="dark"] .blk-text,[data-theme="dark"] .blk-text p{color:var(--dk-text)}
[data-theme="dark"] .blk-quote{background:rgba(23,195,178,.08)}
[data-theme="dark"] .blk-hr{border-top-color:var(--dk-line)}
[data-theme="dark"] .cat-chip{background:var(--dk-surface);color:var(--dk-text)}
[data-theme="dark"] .cat-chip.active{background:var(--accent);border-color:var(--accent);color:#04241f}
[data-theme="dark"] .svc-icon{background:linear-gradient(140deg,rgba(23,195,178,.18),rgba(45,212,191,.06))}
[data-theme="dark"] .svc-tag{background:rgba(23,195,178,.14)}
[data-theme="dark"] .dh-subtab{background:var(--dk-surface);color:var(--dk-text)}
[data-theme="dark"] .dh-subtab.active{background:var(--accent);border-color:var(--accent);color:#04241f}
[data-theme="dark"] .dh-subtab.active .icon{color:#04241f}
[data-theme="dark"] .ultra-head .uid{background:var(--dk-tint);color:var(--dk-text)}
[data-theme="dark"] .umeta b{color:var(--dk-heading)}
[data-theme="dark"] .ubadge.off{background:rgba(148,163,184,.12);color:#94a3b8}
[data-theme="dark"] .ubadge.on{color:var(--accent2)}
[data-theme="dark"] .proj-nav a{color:var(--accent2)}
[data-theme="dark"] .blk-img figcaption,[data-theme="dark"] .blk-video figcaption{color:#A9BFD1}
[data-theme="dark"] .ulevel b i{color:#A9BFD1}
[data-theme="dark"] .contact-note,[data-theme="dark"] .success{color:var(--accent2)}
[data-theme="dark"] .field input::placeholder,[data-theme="dark"] .field textarea::placeholder{color:#5f7a90}

/* header mid-size squeeze */
@media (max-width:1180px){
  .main-nav a{padding:10px 9px;font-size:.86rem}
}
@media (max-width:1020px) and (min-width:901px){
  .hdr .btn{padding:10px 14px;font-size:.85rem}
  .main-nav a{padding:10px 7px;font-size:.82rem}
}
/* squeeze zone: burger menu takes over BEFORE anything can overlap */
@media (max-width:900px) and (min-width:761px){
  .nav-toggle{display:block}
  .main-nav{position:fixed;inset:72px 0 auto 0;background:var(--dark);padding:8px 16px 20px;display:none;box-shadow:0 18px 30px rgba(0,0,0,.4);overflow:visible}
  .main-nav.open{display:block}
  .main-nav ul{flex-direction:column;gap:0}
  .main-nav a{padding:13px 10px;font-size:1.05rem;border-bottom:1px solid rgba(255,255,255,.07)}
}

/* ---------- responsive ---------- */
@media (max-width:1020px){
  .wwd-grid{grid-template-columns:repeat(2,1fr)}
  .svc-grid{grid-template-columns:1fr}
  .feat-wrap{grid-template-columns:1fr}
  .why-grid{grid-template-columns:repeat(2,1fr)}
  .team-grid{grid-template-columns:repeat(2,1fr)}
  .ft{grid-template-columns:1fr 1fr}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .stat{border-left:0;border-top:1px solid rgba(255,255,255,.08);padding-top:16px}
  .stat:nth-child(-n+2){border-top:0}
  .dh-layout{grid-template-columns:1fr}
  .map-wrap{min-height:480px}
  .split,.contact-wrap{grid-template-columns:1fr}
}
@media (max-width:760px){
  .nav-toggle{display:block}
  .main-nav{position:fixed;inset:72px 0 auto 0;background:var(--dark);padding:8px 16px 20px;display:none;box-shadow:0 18px 30px rgba(0,0,0,.4)}
  .main-nav.open{display:block}
  .main-nav ul{flex-direction:column;gap:0}
  .main-nav a{padding:13px 10px;font-size:1.05rem;border-bottom:1px solid rgba(255,255,255,.07)}
  .hdr .btn{display:none}
  .theme-toggle{width:36px;height:36px}
  .hero-inner{padding:64px 0 76px}
  .wwd-grid,.proj-grid,.projects-grid,.why-grid,.team-grid{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:1fr 1fr;gap:6px}
  .stat b{font-size:1.5rem}
  .stat .icon{font-size:1.7rem}
  .svc-grid{grid-template-columns:1fr}
  .service-block{grid-template-columns:1fr;gap:14px}
  .svc-side{flex-direction:row}
  .dh-chips{grid-template-columns:1fr 1fr}
  .back-top{right:14px;bottom:14px;width:42px;height:42px}
  .ft{grid-template-columns:1fr;gap:26px}
  .section{padding:54px 0}
  .container{padding:0 16px}
  .ft{grid-template-columns:1fr 1fr!important;gap:20px 16px}
  .ft h4{font-size:.85rem}
  .ft ul li,.ft p{font-size:.82rem}
  .proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
  .proj-grid .card img{max-height:96px;height:96px;object-fit:cover}
  .proj-grid .card-body{padding:12px}
  .proj-grid .card-body h3{font-size:.9rem}
  .proj-grid .card-body p{font-size:.76rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .proj-grid .tag{font-size:.62rem;padding:3px 8px}
  .proj-grid .more{font-size:.78rem}
  .feat-wrap{display:flex;flex-direction:column;gap:20px}
  .datahub-card{padding:18px 14px;border-radius:16px}
  .dh-tab{padding:10px;font-size:.9rem;min-height:44px}
  .dh-panels{min-height:240px}
  .dh-chips{grid-template-columns:1fr 1fr;gap:8px}
  .hdr-tools{gap:6px}
  .hdr-tools .lang-btn,.hdr-tools .theme-toggle{height:36px}
  .lang-btn{padding:0 9px}
  .lang-btn .code{display:none}
  .page-hero{padding:44px 0 38px}
  .page-hero h1{font-size:clamp(1.7rem,7vw,2.2rem)}
  .hero h1{font-size:clamp(2rem,9vw,2.8rem)}
  .hero .sub{font-size:1rem}
  .hero-ctas{flex-wrap:wrap;gap:10px}
  .hero-ctas .btn{flex:1 1 auto;justify-content:center;min-height:46px}
  .btn{min-height:44px}
  .wwd{padding:22px 18px}
  .card img{max-height:190px;object-fit:cover}
  .datahub-card{padding:20px 16px}
  .dh-mini{height:220px!important}
  .bm-switch{top:8px;left:8px;right:8px;justify-content:stretch}
  .bm-btn{flex:1;padding:9px 6px;font-size:.74rem}
  .map-wrap{min-height:420px}
  .dh-side{padding:16px}
  .dh-subtab{flex:1;justify-content:center;padding:11px 10px;font-size:.8rem}
  .ultra-grid{grid-template-columns:1fr}
  .station-list{max-height:220px}
  .blk-cols{grid-template-columns:1fr;gap:14px}
  .blk-img{width:100%!important}
  .proj-nav{flex-direction:column;align-items:stretch;text-align:center}
  .proj-nav a{justify-content:center}
  .form-card,.info-card{padding:22px 18px}
  .team-card img{width:92px;height:92px}
  .maplibregl-ctrl-bottom-right{font-size:.7rem}
}
@media (max-width:480px){
  .stats-grid{grid-template-columns:1fr 1fr;gap:4px}
  .stat{gap:8px}
  .stat b{font-size:1.3rem}
  .stat span{font-size:.72rem}
  .section-head h2{font-size:1.35rem}
  .brand span{font-size:1.05rem}
  :root{--logo-h:34px}
  .theme-toggle{width:34px;height:34px;font-size:1rem}
  .hdr{gap:8px}
  .card-body{padding:16px}
  .blk-quote{padding:16px 18px}
  .video-embed{border-radius:10px}
  .ft{padding:40px 0 30px}
}

/* Field tools — CRS/source selectors & WMTS row.
   The .dh-side panel is always navy, so these controls get explicit
   high-contrast colors (matching .ft-bm) instead of theme vars that
   flip with the page theme. */
.ft-select,.ft-wmtsrow input[type=text],.ft-wmtsrow select{flex:1;min-width:0;border:1.5px solid var(--line);background:var(--surface);color:var(--heading);font:inherit;font-size:.82rem;font-weight:700;padding:8px 10px;border-radius:10px}
.ft-select,.ft-wmtsrow select{cursor:pointer}
.ft-wmtsrow{display:flex;gap:6px;margin:6px 0;align-items:center}
[data-theme="dark"] .ft-select,[data-theme="dark"] .ft-wmtsrow input[type=text],[data-theme="dark"] .ft-wmtsrow select{background:var(--dk-surface);color:var(--dk-heading);border-color:var(--dk-line);color-scheme:dark}
[data-theme="dark"] .ft-select option,[data-theme="dark"] .ft-wmtsrow select option{background:var(--dk-surface);color:var(--dk-heading)}
.ft-select option,.ft-wmtsrow select option{background:var(--surface);color:var(--heading)}
.dh-side h4{color:#fff;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;margin:10px 0 6px;opacity:.92}
.dh-side .ft-exprow b{color:#fff}
.dh-side .ft-exprow b i{color:#A9BFD1;font-weight:600}
#ftSelExtent.active,#ftSelPoly.active{border-color:var(--accent, #17C3B2);color:var(--accent, #17C3B2)}
.ft-optrow .btn{flex:none}


/* Field tools — collapsible sections in the Layers tab */
.ft-sec{border-bottom:1px solid rgba(255,255,255,.09);padding:2px 0 8px;margin:0 0 6px}
.ft-sec summary{list-style:none;cursor:pointer;color:#fff;font-size:.82rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:9px 0;display:flex;align-items:center;gap:8px;user-select:none}
.ft-sec summary::-webkit-details-marker{display:none}
.ft-sec summary::before{content:"▸";color:var(--accent);font-size:.75rem;transition:transform .15s}
.ft-sec[open] summary::before{transform:rotate(90deg)}
.ft-sec .ft-secbody{padding:2px 0 4px}
.ft-sec h4{color:#fff;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;margin:10px 0 6px;opacity:.85}

/* The field-tools sidebar (.dh-side) is permanently navy — pin its inner
   text colors so BOTH site themes stay readable (light theme was leaving
   navy-on-navy and dim slate text in several places) */
.dh-side{color:#D7E3EE}
.dh-side .ft-visrow{color:#D7E3EE;border-bottom-color:rgba(255,255,255,.08)}
.dh-side .hint-line{color:#A9BFD1}
.dh-side .ft-count{color:#cfe0ee;background:rgba(255,255,255,.10)}
.dh-side .ft-info input{color:#fff}
.dh-side .ft-info span{color:#A9BFD1}
.dh-side .ft-exprow span{color:#A9BFD1}
.dh-side .ft-exprow input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;flex:none}
.dh-side .ft-optrow > span{color:#A9BFD1}


/* Field tools — compact controls, expand mode, inspect popup */
.dh-side{padding:16px 14px}
.dh-side .btn-sm{padding:6px 9px;font-size:.7rem}
.ft-optrow{display:flex;align-items:center;gap:6px;margin:6px 0}
.ft-optrow > span{flex:none;width:46px;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.ft-select{padding:7px 8px;font-size:.76rem}
.ft-chipbtn{background:none;border:none;color:#2DD4BF;cursor:pointer;font-size:.95rem;padding:0 2px;vertical-align:middle}
.dh-layout.aq-fullpage{position:fixed;inset:0;z-index:9999;border-radius:0;height:100vh;max-width:none;margin:0}
.dh-layout.aq-fullpage .dh-side{overflow-y:auto}
.maplibregl-ctrl button.on{color:#17C3B2;box-shadow:inset 0 0 0 2px #17C3B2}
.aq-gfi .maplibregl-popup-content{background:#0e1e33;color:#D7E3EE;border:1px solid rgba(255,255,255,.15);border-radius:10px;font-size:.78rem;padding:10px 12px}
.aq-gfi .maplibregl-popup-tip{border-top-color:#0e1e33}
.aq-gfi-row{padding:4px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.aq-gfi-row:last-child{border-bottom:none}
.aq-gfi .maplibregl-popup-close-button{color:#A9BFD1;font-size:1rem}

/* Export layer picker modal */
.aq-modal-ov{position:fixed;inset:0;z-index:10001;background:rgba(4,12,22,.66);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.aq-modal{background:#0e1e33;border:1px solid rgba(255,255,255,.14);border-radius:14px;width:min(440px,92vw);max-height:82vh;display:flex;flex-direction:column;box-shadow:0 20px 60px rgba(0,0,0,.5);overflow:hidden}
.aq-modal h3{margin:0;padding:16px 18px 10px;color:#fff;font-size:.9rem}
.aq-mrow-head{display:flex;gap:6px;padding:0 18px 10px;border-bottom:1px solid rgba(255,255,255,.1)}
.aq-mlist{overflow-y:auto;padding:8px 10px}
.aq-mrow{display:flex;align-items:center;gap:9px;padding:8px 8px;border-radius:8px;cursor:pointer;color:#D7E3EE}
.aq-mrow:hover{background:rgba(255,255,255,.05)}
.aq-mrow input{accent-color:#17C3B2;width:16px;height:16px;flex:none}
.aq-mrow b{flex:1;min-width:0;color:#fff;font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.aq-mrow i{color:#93ABC2;font-size:.68rem;font-style:normal;flex:none}
.aq-mfoot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid rgba(255,255,255,.1)}
.ft-expchk{accent-color:#17C3B2;width:14px;height:14px;flex:none;margin-right:2px}

/* Prettier MapLibre navigation controls (zoom / compass) */
.dh-side ~ * .maplibregl-ctrl-group,
.maplibregl-ctrl-group{border-radius:12px !important;overflow:hidden;box-shadow:0 4px 16px rgba(4,18,34,.35) !important;border:1px solid rgba(255,255,255,.12) !important;background:rgba(14,30,51,.92) !important;backdrop-filter:blur(6px)}
.maplibregl-ctrl-group button{width:36px !important;height:36px !important;background:transparent !important}
.maplibregl-ctrl-group button + button{border-top:1px solid rgba(255,255,255,.1) !important}
.maplibregl-ctrl-group button:hover{background:rgba(23,195,178,.18) !important}
.maplibregl-ctrl button .maplibregl-ctrl-icon{filter:invert(96%) sepia(6%) saturate(600%) hue-rotate(140deg) brightness(1.05)}
.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon,
.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon,
.maplibregl-ctrl-compass .maplibregl-ctrl-icon{opacity:.95}
.maplibregl-ctrl-attrib{border-radius:8px 0 0 0 !important}

/* Grouped drawings list */
.ft-grp{border:1px solid var(--line);border-radius:9px;margin-bottom:7px;overflow:hidden}
[data-theme="dark"] .ft-grp{border-color:var(--dk-line)}
.dh-side .ft-grp{border-color:rgba(255,255,255,.12)}
.ft-grphead{display:flex;align-items:center;gap:7px;padding:7px 9px;background:rgba(255,255,255,.04);cursor:default}
.dh-side .ft-grphead b{color:#EAF1F7;font-size:.78rem}
.ft-grptog{background:none;border:none;color:#17C3B2;cursor:pointer;font-size:.8rem;padding:0 2px}
.ft-grpbtn{background:none;border:none;color:#A9BFD1;cursor:pointer;font-size:.82rem;padding:2px 4px;border-radius:5px}
.ft-grpbtn:hover{color:#17C3B2;background:rgba(255,255,255,.08)}
.ft-ovreorder{display:flex;flex-direction:column;flex:none;gap:1px}
.ft-ovreorder .ft-grpbtn{width:20px;height:17px;padding:0;font-size:.62rem;line-height:17px;display:flex;align-items:center;justify-content:center}
.ft-ovreorder .ft-grpbtn[disabled]{opacity:.22;cursor:default}
.ft-grpbody{padding:2px 8px 4px}
.ft-soon-badge{color:#D4AF37;display:inline-flex;vertical-align:middle;margin-left:4px;opacity:.9;cursor:help}

/* Attribute table modal */
.aq-attrtable{width:min(960px,96vw);max-height:88vh}
.aq-attrtable h3{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.aq-at-crs{color:#8fa6bb;font-size:.68rem;font-weight:600}
.aq-at-tools{display:flex;gap:8px;align-items:center;padding:0 18px 10px;border-bottom:1px solid rgba(255,255,255,.1)}
.aq-at-scroll{overflow:auto;flex:1}
.aq-at-table{border-collapse:collapse;width:100%;font-size:.74rem}
.aq-at-table th,.aq-at-table td{border:1px solid rgba(255,255,255,.09);padding:5px 8px;text-align:left;white-space:nowrap}
.aq-at-table th{position:sticky;top:0;background:#12253d;color:#EAF1F7;font-weight:700;z-index:1}
.aq-at-table td{color:#C9D8E6}
.aq-at-table tr:hover td{background:rgba(255,255,255,.03)}
.aq-at-table input{background:transparent;border:1px solid transparent;color:#fff;font-size:.74rem;padding:3px 4px;border-radius:5px;width:100%;min-width:80px}
.aq-at-table input:focus{border-color:#17C3B2;background:#0a1a2c;outline:none}
.aq-at-zoom{background:none;border:none;color:#A9BFD1;cursor:pointer;font-size:.85rem}
.aq-at-zoom:hover{color:#17C3B2}

/* Inspect popup: scrollable when content is long */
.aq-gfi-scroll{max-height:260px;overflow-y:auto;padding-right:4px}
.aq-gfi .maplibregl-popup-content{max-height:300px}

/* Dark-mode map control icons — the default MapLibre glyphs are dark on our
   dark control group; recolor them light for visibility */
.maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(90%) sepia(10%) saturate(500%) hue-rotate(150deg) brightness(1.1) !important}
.aq-globe-btn,.maplibregl-ctrl-group button{color:#D7E3EE !important}

/* Selected feature row */
.ft-row.selected{background:rgba(251,191,36,.14);border-radius:7px;box-shadow:inset 0 0 0 1px rgba(251,191,36,.4)}
.dh-side .ft-row{cursor:pointer}
.dh-side .ft-row .ft-info input{cursor:text}

/* ============================================================
   SONAR CARDS + FORECAST TAB
   Same tokens as the rest of the sheet: var(--radius) corners,
   var(--shadow) lift, var(--accent) teal, Sora for figures.
   ============================================================ */

/* --- feed status line above a subtab's content --- */
.dh-feedbar{display:flex;align-items:flex-start;justify-content:space-between;gap:22px;flex-wrap:wrap;margin-bottom:20px}
.dh-feedbar .ultra-note{margin:0;flex:1 1 420px}
.dh-feed{display:inline-flex;align-items:center;gap:9px;white-space:nowrap;font-family:var(--font-display);font-size:.8rem;font-weight:700;padding:9px 16px;border-radius:100px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted)}
.dh-feed::before{content:"";width:8px;height:8px;border-radius:50%;background:#94a3b8;flex:none}
.dh-feed.ok{color:#0d9488;border-color:rgba(23,195,178,.4);background:rgba(23,195,178,.08)}
.dh-feed.ok::before{background:var(--accent);animation:aqPulse 2s ease-in-out infinite}
.dh-feed.down{color:#b45309;border-color:rgba(245,158,11,.35);background:rgba(245,158,11,.09)}
.dh-feed.down::before{background:#f59e0b}
@keyframes aqPulse{0%,100%{opacity:1}50%{opacity:.3}}
[data-theme="dark"] .dh-feed{background:var(--dk-surface);border-color:var(--dk-line)}

/* --- level reading + trend --- */
.ulevel-row{display:flex;align-items:baseline;justify-content:center;gap:12px;flex-wrap:wrap}
.utrend{font-family:var(--font-display);font-size:.74rem;font-weight:700;padding:3px 10px;border-radius:100px;white-space:nowrap}
.utrend:empty{display:none}
.utrend.up{color:#0284c7;background:rgba(56,189,248,.15)}
.utrend.down{color:#b45309;background:rgba(245,158,11,.16)}
.utrend.flat{color:var(--muted);background:rgba(120,140,160,.12)}
.ubadge.stale{background:rgba(245,158,11,.15);color:#b45309}
[data-theme="dark"] .ubadge.stale{color:#fcd34d}
[data-theme="dark"] .utrend.up{color:#7dd3fc}
[data-theme="dark"] .utrend.down{color:#fcd34d}

/* --- sparkline block (shared by sonar + forecast) --- */
.uspark-wrap{position:relative;margin:14px 0 4px}
.uspark-label{display:block;font-family:var(--font-display);font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.uspark{display:none;width:100%}
.uspark-empty{display:block;font-size:.78rem;color:var(--muted);padding:8px 0 2px}
.ucsv{display:inline-flex;align-items:center;gap:7px;margin-top:14px;font-family:var(--font-display);font-size:.74rem;font-weight:700;color:var(--accent);border:1.5px solid var(--line);border-radius:100px;padding:7px 15px;transition:border-color .18s,background .18s}
.ucsv:hover{border-color:var(--accent);background:rgba(23,195,178,.08)}
.ucsv .icon{font-size:.95rem}

/* --- sonar pins carry the sonar layer colour --- */
.iot-marker.ultra .dot{background:#8093ad}
.iot-marker.ultra.live .dot{background:var(--sonar,#A78BFA)}
.iot-marker.ultra.live .dot::after{border-color:var(--sonar,#A78BFA)}
.iot-marker.ultra .val{color:#e9e0ff;border-color:rgba(167,139,250,.5)}

/* ============================================================
   FORECAST TAB
   ============================================================ */
.fc-run{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:18px 22px;background:var(--tint);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px}
.fc-model{display:block;font-family:var(--font-display);font-size:1.02rem;font-weight:700;color:var(--heading)}
.fc-meta{display:block;font-size:.78rem;color:var(--muted);margin-top:4px}
.fc-areas{display:flex;gap:8px;flex-wrap:wrap}
.fc-area{font-family:var(--font-display);font-size:.82rem;font-weight:700;padding:9px 17px;border-radius:100px;border:1.5px solid var(--line);background:var(--surface);color:var(--muted);cursor:pointer;transition:all .16s}
.fc-area:hover{border-color:var(--accent);color:var(--accent)}
.fc-area.active{background:var(--dark);border-color:var(--dark);color:#fff}
[data-theme="dark"] .fc-area.active{background:var(--accent);border-color:var(--accent);color:#04241f}

.fc-alert{display:flex;align-items:flex-start;gap:14px;padding:16px 20px;border-radius:var(--radius);margin-bottom:18px;border:1px solid var(--line)}
.fc-alert .icon{font-size:1.7rem;flex:none;margin-top:1px}
.fc-alert b{display:block;font-family:var(--font-display);font-size:.98rem;margin-bottom:3px}
.fc-alert span{display:block;font-size:.82rem;color:var(--muted);line-height:1.55}
.fc-alert.on{background:rgba(239,68,68,.07);border-color:rgba(239,68,68,.32)}
.fc-alert.on .icon,.fc-alert.on b{color:#dc2626}
.fc-alert.off{background:rgba(23,195,178,.07);border-color:rgba(23,195,178,.3)}
.fc-alert.off .icon,.fc-alert.off b{color:#0d9488}
[data-theme="dark"] .fc-alert.on .icon,[data-theme="dark"] .fc-alert.on b{color:#f87171}
[data-theme="dark"] .fc-alert.off .icon,[data-theme="dark"] .fc-alert.off b{color:var(--accent2)}

.fc-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:10px;margin-bottom:22px}
.fc-day{display:flex;flex-direction:column;align-items:center;gap:3px;padding:15px 10px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s}
.fc-day:hover{transform:translateY(-2px)}
.fc-day.hot{border-color:rgba(239,68,68,.4);background:linear-gradient(180deg,rgba(239,68,68,.08),transparent 70%)}
.fc-dow{font-family:var(--font-display);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.fc-tmax{font-family:var(--font-display);font-size:1.65rem;font-weight:800;line-height:1.1;color:var(--heading)}
.fc-day.hot .fc-tmax{color:#dc2626}
[data-theme="dark"] .fc-day.hot .fc-tmax{color:#f87171}
.fc-tmin{font-size:.85rem;color:var(--muted)}
.fc-text{font-size:.68rem;color:var(--muted);text-align:center;line-height:1.35;margin-top:3px}
.fc-precip{font-size:.68rem;color:#0284c7;font-weight:600}
.fc-prob{font-family:var(--font-display);font-size:.68rem;font-weight:700;color:#dc2626;background:rgba(239,68,68,.1);border-radius:100px;padding:2px 8px;margin-top:3px}
.fc-empty{color:var(--muted);font-size:.88rem;padding:22px 0}

.fc-chart-wrap{background:var(--tint);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 12px;margin-bottom:18px}
.fc-chart-wrap canvas{width:100%;display:block}
.fc-products{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fc-products .uspark-label{width:100%;margin-bottom:2px}
.fc-product{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:.78rem;font-weight:700;color:var(--accent);border:1.5px solid var(--line);border-radius:100px;padding:8px 16px;transition:border-color .18s,background .18s}
.fc-product:hover{border-color:var(--accent);background:rgba(23,195,178,.08)}

@media(max-width:640px){
  .fc-run{flex-direction:column;gap:14px}
  .fc-days{grid-template-columns:repeat(auto-fit,minmax(88px,1fr))}
  .fc-tmax{font-size:1.4rem}
  .dh-feedbar{gap:12px}
}

/* 2026.08.03 Godmode hardening */
.ft-more-gis{display:block;margin:10px 0 2px;text-align:center;font-size:11px;font-weight:700;color:var(--accent);opacity:.78}
.ft-more-gis:hover{opacity:1;text-decoration:underline}
#fieldMap.ft-file-drop::after{content:"Drop GIS / CAD files to Add Data";position:absolute;inset:12px;z-index:50;display:grid;place-items:center;border:2px dashed var(--accent);border-radius:14px;background:rgba(7,28,51,.82);color:#fff;font:700 16px/1.2 var(--font-body);pointer-events:none;box-shadow:0 0 0 9999px rgba(7,28,51,.18)}
.ft-load-error{height:100%;display:grid;place-items:center;padding:24px;text-align:center;color:#b91c1c;background:#fff4f4;font-weight:700}
.noscript-fallback{max-width:760px;margin:40px auto;padding:24px;border:1px solid #d7e1e8;border-radius:14px;background:#fff;color:#0b2a4a;font-family:system-ui,sans-serif}
.dh-feed.stale{background:#fff4d6;color:#805500;border-color:#f0c65b}

/* Keyboard navigation: visible only when focused. */
.skip-link{position:fixed;left:14px;top:12px;z-index:100000;padding:10px 14px;border-radius:8px;background:#fff;color:#071c33;font-weight:800;box-shadow:0 8px 28px rgba(0,0,0,.24);transform:translateY(-180%);transition:transform .16s ease}
.skip-link:focus{transform:translateY(0);outline:3px solid #2dd4bf;outline-offset:3px}
#main-content:focus{outline:none}

/* Field Tools lazy-loader state: visible above the full module, not hidden in the map. */
.ft-module-status{margin:0 0 12px;padding:11px 14px;border:1px solid var(--line,#d9e3ec);border-radius:10px;display:flex;align-items:center;gap:10px;background:var(--surface,#fff);font-size:.92rem}
.ft-module-status[hidden]{display:none!important}
.ft-module-status.loading{color:var(--navy,#12304a)}
.ft-module-status.error{border-color:#efb3b3;background:#fff4f4;color:#991b1b}
.ft-module-status.error strong{margin-right:2px}
.ft-module-status.error .btn{margin-left:auto;white-space:nowrap}
.ft-status-spinner{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ft-loader-spin .75s linear infinite;flex:0 0 auto}
.ft-load-error{gap:6px;align-content:center}
.ft-load-error strong,.ft-load-error span{display:block}
@keyframes ft-loader-spin{to{transform:rotate(360deg)}}
@media (max-width:720px){.ft-module-status{margin:0 0 8px;align-items:flex-start;flex-wrap:wrap}.ft-module-status.error .btn{margin-left:0}}

/* Enterprise CMS blocks */
.blk-cards,.blk-stats{display:grid;gap:18px;margin:28px 0}.blk-cards.cols-2,.blk-stats.cols-2{grid-template-columns:repeat(2,1fr)}.blk-cards.cols-3,.blk-stats.cols-3{grid-template-columns:repeat(3,1fr)}.blk-cards.cols-4,.blk-stats.cols-4{grid-template-columns:repeat(4,1fr)}.blk-card{border:1px solid var(--line);border-radius:16px;padding:20px;background:var(--surface,#fff)}.blk-card img{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:10px}.blk-facts{display:grid;grid-template-columns:repeat(2,1fr);gap:0 24px;margin:28px 0}.blk-facts div{display:grid;grid-template-columns:1fr 2fr;border-bottom:1px solid var(--line);padding:12px 0}.blk-facts dt{font-weight:700}.blk-facts dd{margin:0}.blk-stats>div{text-align:center;border:1px solid var(--line);border-radius:16px;padding:24px}.blk-stats strong{display:block;font:700 2rem var(--display);color:var(--accent)}.blk-stats span{display:block;margin-top:6px}.blk-timeline{list-style:none;padding:0;margin:30px 0}.blk-timeline li{display:grid;grid-template-columns:120px 1fr;gap:22px;padding:0 0 28px 20px;border-left:3px solid var(--accent)}.blk-timeline time{font-weight:700;color:var(--accent)}.blk-downloads{display:grid;gap:10px;margin:24px 0}.blk-downloads a{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:12px;text-decoration:none}.blk-accordion details{border-bottom:1px solid var(--line);padding:14px 0}.blk-accordion summary{cursor:pointer;font-weight:700}.blk-map iframe{width:100%;height:420px;border:0;border-radius:16px}.blk-before-after{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:28px 0}.blk-before-after img{width:100%;height:320px;object-fit:cover;border-radius:14px}.blk-before-after figure{margin:0}.blk-section{padding:48px;border-radius:20px;background-size:cover;background-position:center;margin:32px 0}.blk-section.theme-light{color:#fff}.blk-section.theme-dark{color:#071c33}.blk-section.full{width:100vw;margin-left:calc(50% - 50vw);border-radius:0}.post-meta{font-weight:600;color:var(--accent)}@media(max-width:760px){.blk-cards,.blk-stats,.blk-facts,.blk-before-after{grid-template-columns:1fr!important}.blk-timeline li{grid-template-columns:1fr}.blk-section{padding:28px}.blk-map iframe{height:320px}}

@media (max-width:520px){
  .ft-partners{gap:14px;padding:18px 0}
  .ft-partner{gap:10px;max-width:100%}
  .ft-partner-label{font-size:.64rem}
  .ft-partner-mark img{max-width:58vw;height:min(var(--partner-logo-h,42px),44px)}
}

/* 2026.08.04i — usability and integration refinements */
.brand-logo{display:block;max-width:min(300px,48vw);object-fit:contain}.brand .site-wordmark{height:var(--logo-h);width:auto}
[data-theme="light"] .site-header .site-wordmark,[data-theme="light"] .site-footer .site-wordmark{background:transparent;padding:0;box-shadow:none}
[data-theme="dark"] .site-wordmark{filter:drop-shadow(0 0 8px rgba(255,255,255,.12)) drop-shadow(0 0 16px rgba(45,212,191,.18))}
.card.clickable{cursor:pointer;position:relative}.card.clickable .more{position:static}.card.clickable .more::after{content:"";position:absolute;inset:0;border-radius:inherit}.card.clickable:focus-within{outline:3px solid var(--accent);outline-offset:4px}
.tech-link{display:block;color:inherit;text-decoration:none;border-radius:10px}.tech-link:focus-visible{outline:3px solid var(--accent);outline-offset:5px}
.svc-cta{display:inline-flex;align-items:center;gap:8px;margin-top:16px;font-weight:800;font-size:.84rem;color:var(--accent);padding:8px 12px;border:1px solid rgba(23,195,178,.25);border-radius:100px;background:rgba(23,195,178,.07)}.svc-cta:hover{background:rgba(23,195,178,.14);transform:translateX(2px)}.svc-cta .icon{font-size:1.05rem}
.ft .ft-partners{margin:14px 0 0;padding:12px 0 0;border-top:1px solid rgba(255,255,255,.12);justify-content:flex-start;align-items:flex-start;gap:8px}.ft .ft-partner{align-items:flex-start}.ft .ft-partner-label{font-size:.62rem}.ft .ft-partner-mark img{max-width:150px;filter:drop-shadow(0 0 6px rgba(255,255,255,.35)) drop-shadow(0 0 13px rgba(45,212,191,.22))}[data-theme="light"] .ft .ft-partner-mark img{filter:drop-shadow(0 2px 4px rgba(0,0,0,.15))}
.dh-view{scroll-margin-top:96px}.dh-layout{height:clamp(570px,calc(100vh - 190px),760px);min-height:570px}.dh-side{min-height:0;overflow-y:auto;scrollbar-width:thin}.map-wrap{min-height:0;height:100%}.ft-side{display:flex;flex-direction:column;overflow:hidden}.ft-stabs{flex:none}.ft-side #ftPaneTools,.ft-side #ftPaneLayers{flex:1;min-height:0;overflow-y:auto;padding-right:4px}.ft-side #ftPaneTools[hidden],.ft-side #ftPaneLayers[hidden]{display:none!important}.ft-more-single{flex:none;margin:10px 4px 2px}
.ultra-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),370px));justify-content:center;align-items:stretch}.ultra-card{width:100%;position:relative;isolation:isolate}.ultra-card.is-live{box-shadow:0 16px 42px rgba(23,195,178,.12),0 0 0 1px rgba(45,212,191,.18)}.ultra-card.is-live::before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;z-index:-1;background:linear-gradient(120deg,transparent 30%,rgba(45,212,191,.25),transparent 70%);background-size:240% 100%;animation:sonarCardSweep 4.8s linear infinite}
.usensor{overflow:visible!important}.usensor i{position:absolute;left:50%;top:50%;width:26px;height:26px;border:1px solid rgba(45,212,191,.55);border-radius:50%;transform:translate(-50%,-50%);animation:sonarEcho 2.4s ease-out infinite}.usensor i:nth-child(2){animation-delay:.8s}.usensor i:nth-child(3){animation-delay:1.6s}.ubeam span{position:absolute;left:50%;top:0;width:2px;height:100%;background:linear-gradient(rgba(45,212,191,.7),rgba(56,189,248,.05));transform-origin:top;animation:beamSweep 2.8s ease-in-out infinite}.ubeam span:nth-child(1){transform:rotate(-8deg)}.ubeam span:nth-child(2){transform:rotate(0)}.ubeam span:nth-child(3){transform:rotate(8deg)}.ubeam b{position:absolute;inset:0;display:block}.uwater svg{animation:waterDrift 5s linear infinite alternate}.data-pop{animation:dataPop .48s cubic-bezier(.2,.8,.2,1)}
@keyframes sonarCardSweep{to{background-position:-240% 0}}@keyframes sonarEcho{0%{opacity:.85;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.4)}}@keyframes beamSweep{0%,100%{opacity:.32}50%{opacity:1}}@keyframes waterDrift{to{transform:translateX(-2.5%) scaleX(1.05)}}@keyframes dataPop{0%{transform:scale(.86);opacity:.45}65%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
body[data-page="contact"] .page-hero{padding:38px 0 30px}body[data-page="contact"] .section{padding:34px 0 42px}body[data-page="contact"] .contact-wrap{grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:24px;align-items:stretch}body[data-page="contact"] .form-card,body[data-page="contact"] .info-card{padding:22px 24px}.contact-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.contact-row .field{min-width:0}body[data-page="contact"] .field{margin-bottom:11px}body[data-page="contact"] textarea{min-height:82px;height:82px}body[data-page="contact"] .contact-map{height:170px;min-height:150px;margin-top:12px}body[data-page="contact"] .info-line{padding:10px 0}
@media(max-width:760px){.brand-logo{max-width:62vw}.dh-layout{height:auto;min-height:0}.dh-side{overflow:visible}.map-wrap{height:520px}.ft-side #ftPaneTools,.ft-side #ftPaneLayers{max-height:540px;overflow-y:auto}.contact-row{grid-template-columns:1fr}body[data-page="contact"] .contact-wrap{grid-template-columns:1fr}body[data-page="contact"] .contact-map{height:220px}.ft .ft-partners{justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){.ultra-card.is-live::before,.usensor i,.ubeam span,.uwater svg,.data-pop{animation:none!important}}


/* Aquoryx 2026.08.04k — harmonized DataHub controls and static forecast overview */
/* 2026.08.04k — synchronized DataHub controls, live sonar and static forecast overview */
/* Field Tools controls now use the same tokens, rhythm and focus contract as DataHub tabs. */
.ft-import-row{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:8px;margin:7px 0 9px}.ft-row-label{font-size:.64rem;font-weight:850;text-transform:uppercase;letter-spacing:.055em;color:var(--muted)}
.ft-import-btn,.ft-toolbtn,.aq-at-action{appearance:none;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 92%,var(--accent) 8%);color:var(--navy);border-radius:10px;font-family:var(--font-body);cursor:pointer;transition:border-color .16s,background .16s,color .16s,transform .16s,box-shadow .16s}
.ft-import-btn{min-width:0;display:flex;align-items:center;gap:9px;padding:8px 10px;text-align:left}.ft-import-btn .icon{width:19px;height:19px;color:var(--accent);flex:0 0 auto}.ft-import-btn span{min-width:0}.ft-import-btn b{display:block;font-size:.73rem;line-height:1.15}.ft-import-btn small{display:block;margin-top:2px;font-size:.55rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ft-quicktools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:6px 0 10px}.ft-toolbtn{min-width:0;min-height:52px;padding:6px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center}.ft-toolbtn .icon{width:18px;height:18px;color:var(--accent)}.ft-toolbtn span:last-child{font-size:.62rem;font-weight:800;line-height:1.05;white-space:normal}
.ft-import-btn:hover,.ft-toolbtn:hover,.aq-at-action:hover{border-color:var(--accent);background:color-mix(in srgb,var(--surface) 82%,var(--accent) 18%);transform:translateY(-1px);box-shadow:0 5px 15px rgba(7,28,51,.09)}.ft-import-btn:focus-visible,.ft-toolbtn:focus-visible,.aq-at-action:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
[data-theme="dark"] .ft-import-btn,[data-theme="dark"] .ft-toolbtn,[data-theme="dark"] .aq-at-action{border-color:rgba(169,191,209,.22);background:rgba(255,255,255,.045);color:var(--dk-heading)}[data-theme="dark"] .ft-import-btn:hover,[data-theme="dark"] .ft-toolbtn:hover,[data-theme="dark"] .aq-at-action:hover{border-color:var(--accent2);background:rgba(45,212,191,.11);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.ft-more-single{margin:9px 0 0;min-height:36px;display:flex!important;align-items:center;justify-content:center;gap:7px;border:1px dashed color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--surface) 94%,var(--accent) 6%);font-size:.7rem;font-weight:850;text-decoration:none}.ft-more-single .icon{width:16px;height:16px}.ft-more-single:hover{background:color-mix(in srgb,var(--surface) 84%,var(--accent) 16%)}
[data-theme="dark"] .ft-more-single{background:rgba(23,195,178,.065);border-color:rgba(45,212,191,.3)}
/* Modal palette is now theme-aware instead of always dark. */
.aq-modal{background:var(--surface);border-color:var(--line);color:var(--text)}.aq-modal h3{color:var(--heading)}.aq-mrow-head,.aq-mfoot,.aq-at-tools{border-color:var(--line)}.aq-mrow{color:var(--text)}.aq-mrow:hover{background:var(--tint)}.aq-mrow b{color:var(--heading)}.aq-mrow i,.aq-at-crs{color:var(--muted)}.aq-at-table th,.aq-at-table td{border-color:var(--line)}.aq-at-table th{background:color-mix(in srgb,var(--surface) 82%,var(--navy) 18%);color:var(--heading)}.aq-at-table td{color:var(--text)}.aq-at-table tr:hover td{background:var(--tint)}.aq-at-table input{color:var(--heading)}.aq-at-table input:focus{background:var(--tint)}
[data-theme="dark"] .aq-modal{background:#0e1e33;border-color:rgba(255,255,255,.14);color:#D7E3EE}[data-theme="dark"] .aq-modal h3{color:#fff}[data-theme="dark"] .aq-mrow-head,[data-theme="dark"] .aq-mfoot,[data-theme="dark"] .aq-at-tools{border-color:rgba(255,255,255,.1)}[data-theme="dark"] .aq-at-table th,[data-theme="dark"] .aq-at-table td{border-color:rgba(255,255,255,.09)}[data-theme="dark"] .aq-at-table th{background:#12253d;color:#EAF1F7}[data-theme="dark"] .aq-at-table td{color:#C9D8E6}[data-theme="dark"] .aq-at-table input{color:#fff}[data-theme="dark"] .aq-at-table input:focus{background:#0a1a2c}
.aq-at-tools{gap:6px;padding:0 14px 10px}.aq-at-action{height:34px;min-width:0;padding:5px 9px;display:inline-flex;align-items:center;gap:5px;font-size:.68rem;font-weight:800}.aq-at-action span{font-size:1rem;line-height:1}.aq-at-action b{font:inherit}.aq-at-action.close{color:#b42318}.aq-at-spacer{flex:1}.aq-at-table{font-size:.7rem}.aq-at-table th,.aq-at-table td{padding:4px 6px}.aq-at-table input{font-size:.7rem;padding:2px 4px}
/* Stable internal scrolling: no page-height explosion, same visible shell for both tabs. */
.ft-side #ftPaneTools,.ft-side #ftPaneLayers{scrollbar-gutter:stable}.ft-secbody{min-width:0}.ft-optrow .btn{white-space:nowrap}.ft-exports{display:flex;gap:6px;flex-wrap:wrap}
/* Startup Albania is placed on a neutral micro-badge so its dark lettering is readable in both themes. */
.ft .ft-partner{gap:6px}.ft .ft-partner-mark{display:inline-flex;align-items:center;justify-content:center;max-width:176px;padding:6px 9px;border:1px solid rgba(7,28,51,.12);border-radius:9px;background:#fff;box-shadow:0 4px 14px rgba(7,28,51,.12)}.ft .ft-partner-mark img{display:block;max-width:148px!important;filter:none!important}.ft .ft-partner-mark:hover{border-color:rgba(23,195,178,.55);box-shadow:0 6px 18px rgba(7,28,51,.17)}[data-theme="dark"] .ft .ft-partner-mark{background:rgba(255,255,255,.96);border-color:rgba(255,255,255,.45);box-shadow:0 0 0 1px rgba(45,212,191,.12),0 7px 20px rgba(0,0,0,.28)}
/* Sonar cards: measured grid, live depth scale, visual state and mobile balance. */
.ultra-grid{grid-template-columns:repeat(auto-fit,minmax(300px,380px));gap:22px;justify-content:center}.ultra-card{min-height:100%;overflow:hidden}.ultra-card.is-stale{opacity:.84}.ultra-card .ulevel-row{align-items:flex-end}.ultra-card .uviz{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 95%,#38BDF8 5%),color-mix(in srgb,var(--surface) 86%,#0EA5E9 14%));border:1px solid color-mix(in srgb,var(--line) 74%,#38BDF8 26%)}[data-theme="dark"] .ultra-card .uviz{background:linear-gradient(180deg,#0b1c30,#071522)}.ultra-card.is-live .ubadge.on{box-shadow:0 0 0 3px rgba(45,212,191,.1),0 0 18px rgba(45,212,191,.22)}
/* Forecast overview — calm, data-led presentation with no decorative motion. */
.fc-overview{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(360px,1.35fr);gap:18px;margin:20px 0 22px;padding:18px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(135deg,color-mix(in srgb,var(--surface) 94%,var(--accent) 6%),var(--surface));box-shadow:0 14px 34px rgba(7,28,51,.08)}
.fc-overview-main{display:flex;align-items:center;gap:18px;min-width:0;padding:18px;border-radius:14px;background:linear-gradient(145deg,var(--navy),var(--dark));color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.08)}
.fc-condition-icon{width:76px;height:76px;display:grid;place-items:center;flex:0 0 auto;border-radius:22px;background:rgba(255,255,255,.1);font-size:2.8rem;line-height:1;color:#fbd56a;box-shadow:0 10px 26px rgba(0,0,0,.18)}
.fc-condition-icon[data-condition="rain"],.fc-condition-icon[data-condition="storm"]{color:#7dd3fc}.fc-condition-icon[data-condition="snow"],.fc-condition-icon[data-condition="fog"]{color:#e2e8f0}.fc-condition-icon[data-condition="cloud"]{color:#cbd5e1}
.fc-overview-day{display:block;font-size:.72rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase;color:var(--accent2);margin-bottom:5px}.fc-overview-main strong{display:block;font:850 clamp(2.7rem,5vw,4.7rem)/.95 var(--font-display)}.fc-overview-main small{display:block;margin-top:8px;color:#cfe0ee;font-size:.86rem;font-weight:700}
.fc-overview-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.fc-overview-metrics>div{min-width:0;padding:17px 18px;border:1px solid var(--line);border-radius:13px;background:color-mix(in srgb,var(--surface) 94%,var(--navy) 6%)}.fc-overview-metrics span{display:block;color:var(--muted);font-size:.67rem;font-weight:850;letter-spacing:.09em;text-transform:uppercase;margin-bottom:5px}.fc-overview-metrics b{display:block;color:var(--heading);font:800 1.12rem var(--font-display)}
.fc-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}.fc-day{appearance:none;text-align:left;font:inherit;color:inherit;cursor:pointer}.fc-day.selected{border-color:var(--accent);box-shadow:0 0 0 2px rgba(23,195,178,.13),0 10px 24px rgba(7,28,51,.08);transform:translateY(-2px)}.fc-day:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.fc-day-metrics{display:grid;gap:2px;margin-top:8px}.fc-day-metrics i{font-style:normal;font-size:.65rem;color:var(--muted)}
.fc-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:20px 0}.fc-chart-card{min-width:0;padding:14px 14px 8px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.fc-chart-card>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:5px}.fc-chart-card span{font-size:.78rem;font-weight:850;color:var(--heading)}.fc-chart-card small{font-size:.62rem;color:var(--muted);text-align:right}.fc-chart-card canvas{display:block;width:100%}
@media(max-width:760px){.fc-overview{grid-template-columns:1fr;padding:12px}.fc-overview-main{padding:15px}.fc-condition-icon{width:62px;height:62px;font-size:2.25rem}.fc-overview-metrics{grid-template-columns:repeat(2,1fr)}.fc-chart-grid{grid-template-columns:1fr}.fc-days{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* ============================================================
   AQUORYX 2026.08.04k — visual stability and control-system audit
   ============================================================ */
/* Header/footer wordmark geometry never changes when the theme changes. */
.brand-mark{display:flex;align-items:center;justify-content:flex-start;flex:0 0 auto;width:calc(var(--logo-h) * 2.24);height:var(--logo-h);overflow:visible}
.brand-mark .brand-logo,.brand-mark .site-wordmark{display:block;width:100%!important;height:100%!important;max-width:none;object-fit:contain;object-position:left center;padding:0!important;margin:0!important;background:transparent!important;box-shadow:none!important;box-sizing:border-box!important}
.brand-mark .logo-mark{display:block;width:var(--logo-h)!important;height:var(--logo-h)!important}
.site-header .brand,.site-footer .brand{min-width:calc(var(--logo-h) * 2.24);min-height:var(--logo-h)}
[data-theme="dark"] .brand-mark .site-wordmark{filter:drop-shadow(0 0 7px rgba(255,255,255,.12)) drop-shadow(0 0 13px rgba(45,212,191,.16))}
[data-theme="light"] .brand-mark .site-wordmark{filter:drop-shadow(0 2px 7px rgba(0,0,0,.16))}

/* Technology marks share one optical stage; wide ECMWF no longer sits high. */
.tech-item{gap:8px;min-width:92px}.tech-logo-stage{width:118px;height:52px;display:flex;align-items:center;justify-content:center;overflow:visible}
.tech-logo-stage img.t{display:block;width:auto!important;height:min(var(--tech-item-h,var(--tech-h)),38px)!important;max-width:106px;max-height:38px;object-fit:contain;object-position:center;margin:auto;padding:0}
.tech-item.tech-ecmwf{min-width:92px}.tech-item.tech-ecmwf .tech-logo-stage img.t{height:17px!important;max-width:86px!important}
.tech-item figcaption{min-height:18px;display:flex;align-items:center;justify-content:center}

/* Home closing section and footer are distinct without a wasteful blank band. */
.site-footer{position:relative;margin-top:64px;background:#041426}
.site-footer::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,transparent,rgba(45,212,191,.72),transparent)}
.why + .site-footer{margin-top:0}.why{background:#071c33}.why.section{padding-bottom:62px}.ft{padding:46px 0 34px}.ft-bottom{background:rgba(0,0,0,.1)}

/* Social platforms appear immediately without inventing profile URLs. */
.socials a,.socials .social-placeholder{width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.08);display:inline-flex;align-items:center;justify-content:center;color:#b7c9d9;border:1px solid rgba(255,255,255,.11);transition:transform .16s,background .16s,border-color .16s,opacity .16s}
.socials a:hover{transform:translateY(-2px);background:var(--accent);border-color:var(--accent);color:#04241f}.socials .social-placeholder{opacity:.62;cursor:help}.socials .social-placeholder:hover{opacity:.88;border-color:rgba(45,212,191,.48)}.socials a .icon,.socials .social-placeholder .icon{width:18px;height:18px}

/* GIS-style scrollbar treatment for dense DataHub workspaces. */
.dh-side,#ftPaneTools,#ftPaneLayers,.aq-modal,.aq-modal-body,.aq-at-scroll,.aq-mlist,.station-list,.fc-days{scrollbar-width:thin;scrollbar-color:#31516d #081a2c}
.dh-side::-webkit-scrollbar,#ftPaneTools::-webkit-scrollbar,#ftPaneLayers::-webkit-scrollbar,.aq-modal::-webkit-scrollbar,.aq-modal-body::-webkit-scrollbar,.aq-at-scroll::-webkit-scrollbar,.aq-mlist::-webkit-scrollbar,.station-list::-webkit-scrollbar,.fc-days::-webkit-scrollbar{width:9px;height:9px}
.dh-side::-webkit-scrollbar-track,#ftPaneTools::-webkit-scrollbar-track,#ftPaneLayers::-webkit-scrollbar-track,.aq-modal::-webkit-scrollbar-track,.aq-modal-body::-webkit-scrollbar-track,.aq-at-scroll::-webkit-scrollbar-track,.aq-mlist::-webkit-scrollbar-track,.station-list::-webkit-scrollbar-track,.fc-days::-webkit-scrollbar-track{background:#081a2c;border-radius:10px}
.dh-side::-webkit-scrollbar-thumb,#ftPaneTools::-webkit-scrollbar-thumb,#ftPaneLayers::-webkit-scrollbar-thumb,.aq-modal::-webkit-scrollbar-thumb,.aq-modal-body::-webkit-scrollbar-thumb,.aq-at-scroll::-webkit-scrollbar-thumb,.aq-mlist::-webkit-scrollbar-thumb,.station-list::-webkit-scrollbar-thumb,.fc-days::-webkit-scrollbar-thumb{background:linear-gradient(#31516d,#1e3a55);border:2px solid #081a2c;border-radius:10px}
.dh-side::-webkit-scrollbar-thumb:hover,#ftPaneTools::-webkit-scrollbar-thumb:hover,#ftPaneLayers::-webkit-scrollbar-thumb:hover,.aq-modal::-webkit-scrollbar-thumb:hover,.aq-modal-body::-webkit-scrollbar-thumb:hover,.aq-at-scroll::-webkit-scrollbar-thumb:hover{background:#2dd4bf}
[data-theme="light"] .aq-modal,[data-theme="light"] .aq-modal-body,[data-theme="light"] .aq-at-scroll{scrollbar-color:#9bb0c1 #e8eff5}

/* Coordinate workflows — same compact control language as the main DataHub. */
.aq-modal-ov{padding:18px;background:rgba(3,12,23,.72);backdrop-filter:blur(8px) saturate(110%)}
.aq-modal{width:min(520px,94vw);max-height:min(88vh,760px);border-radius:18px;background:var(--surface);border:1px solid var(--line);color:var(--text);box-shadow:0 28px 90px rgba(3,12,23,.42);overflow:hidden}
.aq-coordinate-modal{width:min(620px,94vw)}.aq-coordinate-import{width:min(780px,96vw)}
.aq-modal-head{display:flex;align-items:flex-start;gap:13px;padding:18px 20px 15px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,color-mix(in srgb,var(--surface) 94%,var(--accent) 6%),var(--surface))}
.aq-modal-head .aq-modal-icon{width:38px;height:38px;display:grid;place-items:center;flex:0 0 auto;border-radius:11px;background:rgba(23,195,178,.13);color:var(--accent);font-size:1.25rem;font-weight:900;border:1px solid rgba(23,195,178,.26)}
.aq-modal-head h3{margin:0;padding:0;color:var(--heading);font:800 1rem/1.25 var(--font-display)}.aq-modal-head p{margin:5px 0 0;color:var(--muted);font-size:.75rem;line-height:1.45;max-width:62ch}
.aq-modal-body{padding:18px 20px;overflow:auto;min-height:0}.aq-coordinate-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.aq-field-wide{grid-column:1/-1}
.aq-field{display:grid;gap:6px;min-width:0}.aq-field-label{color:var(--heading);font-size:.7rem;font-weight:850;letter-spacing:.035em}.aq-field input,.aq-field select,.aq-field textarea{width:100%;min-width:0;border:1.5px solid var(--line);border-radius:10px;background:var(--surface);color:var(--heading);font:650 .82rem var(--font-body);padding:10px 11px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.aq-field textarea{min-height:150px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:500;line-height:1.48}.aq-field input:focus,.aq-field select:focus,.aq-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(23,195,178,.14)}
.aq-checkline{display:flex;align-items:flex-start;gap:10px;margin-top:15px;padding:12px 13px;border:1px solid var(--line);border-radius:11px;background:var(--tint);cursor:pointer}.aq-checkline input{margin-top:2px;width:17px;height:17px;accent-color:var(--accent)}.aq-checkline span{display:grid;gap:2px}.aq-checkline b{font-size:.78rem;color:var(--heading)}.aq-checkline small{font-size:.68rem;color:var(--muted)}
.aq-upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:15px}.aq-upload-wrap{min-width:0}.aq-file-native{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.aq-upload-card{display:grid;grid-template-columns:36px 1fr auto;align-items:center;gap:10px;min-height:74px;padding:11px 12px;border:1.5px dashed color-mix(in srgb,var(--line) 78%,var(--accent) 22%);border-radius:12px;background:var(--tint);cursor:pointer;transition:border-color .15s,background .15s,transform .15s}.aq-upload-card:hover{border-color:var(--accent);background:color-mix(in srgb,var(--tint) 88%,var(--accent) 12%);transform:translateY(-1px)}.aq-file-native:focus-visible + .aq-upload-card{outline:3px solid var(--accent);outline-offset:2px}.aq-upload-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:var(--surface);color:var(--accent);font-size:1.15rem;font-weight:900;border:1px solid var(--line)}.aq-upload-card>span:nth-child(2){display:grid;gap:2px;min-width:0}.aq-upload-card b{font-size:.75rem;color:var(--heading)}.aq-upload-card small{font-size:.64rem;color:var(--muted)}.aq-upload-card em{font-style:normal;font-size:.65rem;font-weight:850;color:var(--accent);white-space:nowrap}.aq-file-note{display:block;min-height:18px;margin:5px 3px 0;color:var(--muted);font-size:.65rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.aq-ci-paste{margin-top:2px}.aq-ci-preview{min-height:0;margin:10px 0 13px;padding:0;color:var(--muted);font-size:.68rem;line-height:1.45}.aq-ci-preview:not(:empty){padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--tint)}.aq-ci-options{margin-top:0}
.aq-mfoot{display:flex;justify-content:flex-end;gap:9px;padding:13px 20px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface) 94%,var(--navy) 6%)}.aq-modal-btn{min-height:40px;padding:8px 16px;border-radius:10px;border:1.5px solid var(--line);font:800 .78rem var(--font-body);display:inline-flex;align-items:center;justify-content:center;gap:7px;cursor:pointer;transition:transform .15s,border-color .15s,background .15s}.aq-modal-btn.secondary{background:var(--surface);color:var(--heading)}.aq-modal-btn.secondary:hover{border-color:var(--muted);background:var(--tint)}.aq-modal-btn.primary{background:var(--accent);border-color:var(--accent);color:#04241f}.aq-modal-btn.primary:hover{background:var(--accent2);border-color:var(--accent2);transform:translateY(-1px)}.aq-modal-btn:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 72%,white 28%);outline-offset:2px}
[data-theme="dark"] .aq-modal{background:#0d1d30;border-color:#27445e;color:#d7e3ee}.aq-modal-head{}
[data-theme="dark"] .aq-modal-head{background:linear-gradient(135deg,#102740,#0d1d30);border-color:#27445e}[data-theme="dark"] .aq-modal-head h3,[data-theme="dark"] .aq-field-label,[data-theme="dark"] .aq-checkline b,[data-theme="dark"] .aq-upload-card b{color:#f2f7fb}[data-theme="dark"] .aq-modal-head p,[data-theme="dark"] .aq-checkline small,[data-theme="dark"] .aq-upload-card small,[data-theme="dark"] .aq-file-note{color:#a9bfd1}[data-theme="dark"] .aq-field input,[data-theme="dark"] .aq-field select,[data-theme="dark"] .aq-field textarea{background:#081a2c;color:#f2f7fb;border-color:#31516d;color-scheme:dark}[data-theme="dark"] .aq-checkline,[data-theme="dark"] .aq-upload-card,[data-theme="dark"] .aq-ci-preview:not(:empty){background:#0a1a2c;border-color:#27445e}[data-theme="dark"] .aq-upload-icon,[data-theme="dark"] .aq-modal-btn.secondary{background:#102338;color:#f2f7fb;border-color:#31516d}[data-theme="dark"] .aq-mfoot{background:#0a192a;border-color:#27445e}

/* The timestamp is operational data: show full date/time and relative age. */
.umeta{grid-template-columns:repeat(3,minmax(0,1fr))}.umeta .ulast{grid-column:1/-1}.umeta .ulast b{font-size:.82rem;line-height:1.35;white-space:normal}.umeta .ulast small{display:block;margin-top:4px;color:var(--accent);font-size:.66rem;font-weight:800}.ultra-card.is-stale .umeta .ulast small{color:#d97706}

@media(max-width:760px){.brand-mark{width:calc(var(--logo-h) * 2.05)}.site-header .brand,.site-footer .brand{min-width:calc(var(--logo-h) * 2.05)}.tech-logo-stage{width:96px}.aq-upload-grid,.aq-coordinate-grid{grid-template-columns:1fr}.aq-field-wide{grid-column:auto}.aq-modal-body{padding:15px}.aq-modal-head{padding:15px}.aq-mfoot{padding:11px 15px}.aq-upload-card{grid-template-columns:34px 1fr}.aq-upload-card em{grid-column:2}.umeta{grid-template-columns:repeat(2,minmax(0,1fr))}.umeta .ulast{grid-column:1/-1}}

/* AQUORYX 2026.08.04l — public snapshots, decluttered monitoring and forecast flow */
/* Marker values stay hidden at regional/city scale. The controller adds
   .show-value only around neighbourhood / ~300 m scale; popups always work. */
.iot-marker .val{opacity:0;visibility:hidden;transform:translate(-50%,4px) scale(.92);transition:opacity .16s,transform .16s,visibility .16s}
.iot-marker.show-value .val{opacity:1;visibility:visible;transform:translate(-50%,0) scale(1)}
.iot-marker:focus-within .val,.iot-marker:hover .val{opacity:1;visibility:visible;transform:translate(-50%,0) scale(1)}

/* Copyright is part of the footer, not a separate dark strip. The divider is
   full viewport width because ft-bottom is outside the content container. */
.ft-bottom{background:transparent!important;border-top:1px solid rgba(255,255,255,.10)!important;padding:16px 0 18px!important;color:#8ca2b5!important}
.ft-bottom>.container{text-align:center}
.ft-partners+.ft-bottom{border-top:1px solid rgba(255,255,255,.10)}

/* Original animated forecast field: model-driven particles and contours,
   inspired by professional weather-map interaction without third-party assets. */
.fc-flow-shell{margin:18px 0 22px}
.fc-flow-stage{position:relative;min-height:300px;overflow:hidden;border:1px solid color-mix(in srgb,var(--line) 72%,var(--accent) 28%);border-radius:20px;background:#071c33;box-shadow:0 18px 48px rgba(5,22,40,.18);isolation:isolate}
.fc-flow-stage canvas{display:block;width:100%;height:100%;min-height:300px}
.fc-flow-contours{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 78% 18%,rgba(255,255,255,.15),transparent 24%),linear-gradient(115deg,transparent 52%,rgba(255,255,255,.055) 52.3%,transparent 52.8%);mix-blend-mode:screen;opacity:.72}
.fc-flow-stage::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(3,14,27,.72),transparent 48%,rgba(3,14,27,.13)),linear-gradient(0deg,rgba(3,14,27,.38),transparent 42%)}
.fc-flow-hud{position:absolute;z-index:2;left:18px;right:18px;top:18px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;color:#fff;pointer-events:none}
.fc-flow-title{display:flex;align-items:center;gap:13px;min-width:0;padding:11px 14px 11px 11px;border:1px solid rgba(255,255,255,.16);border-radius:15px;background:rgba(3,18,34,.68);box-shadow:0 12px 30px rgba(0,0,0,.22);backdrop-filter:blur(10px)}
.fc-flow-title .fc-condition-icon{width:54px;height:54px;border-radius:14px;font-size:2rem;background:rgba(255,255,255,.1);box-shadow:none}
.fc-flow-title .fc-overview-day{margin:0 0 2px;color:#7ef3df;font-size:.65rem}
.fc-flow-title strong{display:block;font:850 clamp(1.9rem,4vw,3.1rem)/1 var(--font-display)}
.fc-flow-title small{display:block;margin-top:4px;color:#d7e7f2;font-size:.74rem;font-weight:700}
.fc-flow-metrics{display:grid;grid-template-columns:repeat(2,minmax(105px,1fr));gap:8px;max-width:340px}
.fc-flow-metrics>div{padding:9px 11px;border:1px solid rgba(255,255,255,.14);border-radius:11px;background:rgba(3,18,34,.64);backdrop-filter:blur(9px)}
.fc-flow-metrics span{display:block;font-size:.56rem;letter-spacing:.09em;text-transform:uppercase;color:#b8cfdf;font-weight:850}.fc-flow-metrics b{display:block;margin-top:2px;color:#fff;font:800 .92rem var(--font-display)}
.fc-flow-controls{position:absolute;z-index:3;left:18px;bottom:17px;display:flex;gap:6px;padding:5px;border:1px solid rgba(255,255,255,.13);border-radius:12px;background:rgba(3,18,34,.72);backdrop-filter:blur(10px)}
.fc-flow-controls button{appearance:none;border:0;border-radius:8px;background:transparent;color:#c9dbe8;padding:7px 10px;font:800 .67rem var(--font-body);cursor:pointer;transition:background .16s,color .16s,transform .16s}.fc-flow-controls button:hover{color:#fff;background:rgba(255,255,255,.1)}.fc-flow-controls button.active{background:var(--accent);color:#032b25}.fc-flow-controls button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.fc-flow-legend{position:absolute;z-index:3;right:18px;bottom:20px;display:flex;align-items:center;gap:7px;color:#d7e7f2;font-size:.58rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.fc-flow-legend i{display:block;width:118px;height:7px;border-radius:99px;background:linear-gradient(90deg,#0e4f7d,#14b8a6,#a7f3d0);box-shadow:0 0 0 1px rgba(255,255,255,.16)}
.fc-flow-stage[data-layer="rain"] .fc-flow-legend i{background:linear-gradient(90deg,#0b5fa8,#22d3ee,#a7f3d0)}.fc-flow-stage[data-layer="temp"] .fc-flow-legend i{background:linear-gradient(90deg,#0e7490,#34d399,#fef08a,#f97316)}
[data-theme="light"] .fc-flow-stage{border-color:#c6d8e6;box-shadow:0 18px 45px rgba(30,67,92,.16)}

/* Daily snapshot language is deliberately calm and non-technical. */
.live-note .snapshot-label,.dh-live-status .snapshot-label{font-weight:800}

@media(max-width:760px){
  .fc-flow-stage,.fc-flow-stage canvas{min-height:390px}
  .fc-flow-hud{left:12px;right:12px;top:12px;display:grid;gap:10px}
  .fc-flow-title{width:max-content;max-width:100%}
  .fc-flow-metrics{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none}
  .fc-flow-controls{left:12px;right:12px;bottom:40px;justify-content:center}
  .fc-flow-controls button{flex:1;padding:8px 5px}
  .fc-flow-legend{left:12px;right:12px;bottom:13px;justify-content:center}
  .fc-flow-legend i{width:min(130px,42vw)}
}
@media(prefers-reduced-motion:reduce){.fc-flow-stage canvas{opacity:.92}}


/* ============================================================
   AQUORYX 2026.08.04m — live sensor timestamp + larger brand lock
   ============================================================ */
/* The owner-requested 30% wordmark increase is applied through the same
   --logo-h token in both themes. Header geometry grows deterministically, so
   navigation cannot jump when the theme changes. */
.site-header .hdr{min-height:max(72px,calc(var(--logo-h) + 16px))}
.site-header .brand-mark,.site-footer .brand-mark{width:calc(var(--logo-h) * 2.24);height:var(--logo-h)}
.site-header .brand,.site-footer .brand{min-width:calc(var(--logo-h) * 2.24);min-height:var(--logo-h)}
@media(max-width:760px){
  :root{--logo-h-mobile:64px}
  .site-header .brand-mark,.site-footer .brand-mark{width:calc(min(var(--logo-h),var(--logo-h-mobile)) * 2.05);height:min(var(--logo-h),var(--logo-h-mobile))}
  .site-header .brand,.site-footer .brand{min-width:calc(min(var(--logo-h),var(--logo-h-mobile)) * 2.05);min-height:min(var(--logo-h),var(--logo-h-mobile))}
  .site-header .hdr{height:max(72px,calc(min(var(--logo-h),var(--logo-h-mobile)) + 14px));min-height:max(72px,calc(min(var(--logo-h),var(--logo-h-mobile)) + 14px))}
}


/* ============================================================
   AQUORYX 2026.08.04n — sticky-header and public-sensor recovery
   ============================================================ */
/* The actual rendered header height is measured by render.js. All anchor and
   DataHub positioning follows that value, so larger wordmarks cannot cover tabs. */
html{scroll-padding-top:calc(var(--site-header-h,72px) + 14px)}
.dh-subtabs,.dh-view,#content{scroll-margin-top:calc(var(--site-header-h,72px) + 14px)}
body[data-page="datahub"] .dh-subtabs{position:relative;z-index:2}

/* Labels remain decluttered at regional zoom, while the dot and popup remain
   interactive at every scale. The station list always carries the data values. */
.iot-marker{pointer-events:auto}
.iot-marker:not(.show-value) .val{pointer-events:none}

/* ============================================================
   AQUORYX 2026.08.04p — close-zoom sensor label recovery
   ============================================================ */
/* No geometry changes are introduced in this release. This marker records the
   data-path recovery while preserving the audited 04n header and map layout. */


/* ---------- Presentation Lite ultrasonic Albania map ---------- */
.ultra-overview{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr);gap:22px;align-items:stretch;margin:8px 0 24px}
.ultra-overview-copy{background:linear-gradient(180deg,rgba(23,195,178,.08),rgba(7,28,51,.04));border:1px solid color-mix(in srgb,var(--line) 82%,var(--accent) 18%);border-radius:var(--radius);padding:24px;display:flex;flex-direction:column;justify-content:center;min-height:260px}
.ultra-overview-copy h2{margin:10px 0 10px;font-size:clamp(1.6rem,2.8vw,2.3rem)}
.ultra-overview-copy p{margin:0;max-width:56ch}
.ultra-statline{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.ultra-stat{display:inline-flex;align-items:flex-end;gap:10px;padding:10px 14px;border-radius:999px;background:rgba(23,195,178,.10);border:1px solid rgba(23,195,178,.18)}
.ultra-stat b{font-size:1.25rem;color:var(--heading);line-height:1}
.ultra-stat small{font-size:.8rem;font-weight:800;letter-spacing:.02em;color:var(--muted);text-transform:uppercase}
.ultra-albania-card{background:linear-gradient(180deg,rgba(11,42,74,.88),rgba(7,28,51,.94));border:1px solid color-mix(in srgb,var(--line) 78%,var(--accent2) 22%);border-radius:calc(var(--radius) + 2px);padding:18px 18px 16px;box-shadow:0 18px 44px rgba(7,28,51,.22);overflow:hidden;position:relative;min-height:260px}
.ultra-albania-card::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 35%,rgba(45,212,191,.11),transparent 42%),radial-gradient(circle at 20% 82%,rgba(56,189,248,.09),transparent 30%);pointer-events:none}
.ua-head{position:relative;z-index:1;display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.ua-kicker{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--accent2);font-weight:800}
.ua-head strong{font-size:1.15rem;color:#fff}
.ua-head small{color:#b8cfdf}
.ua-map-shell{position:relative;min-height:420px}
.ua-map{display:block;width:100%;height:420px}
.ua-shape{fill:url(#uaFill);stroke:#7ae4ed;stroke-width:3;stroke-linejoin:round;filter:drop-shadow(0 16px 22px rgba(0,0,0,.28))}
.ua-admin{fill:none;stroke:rgba(122,228,237,.28);stroke-width:1.1;stroke-linejoin:round;stroke-linecap:round}
.ua-country{font-family:Inter,Arial,sans-serif;font-size:18px;letter-spacing:.22em;fill:#2dd4bf;font-weight:700;opacity:.9}
.ua-marker{position:absolute;display:flex;align-items:center;gap:10px;z-index:2;transform:translate(-10px,-50%)}
.ua-marker-th{left:38.87%;top:58.84%}
.ua-marker-zv{left:23.04%;top:68.75%}
.ua-dot,.ua-pulse{display:block;position:absolute;border-radius:50%}
.ua-dot{position:relative;width:14px;height:14px;background:#2dd4bf;box-shadow:0 0 0 5px rgba(45,212,191,.18),0 0 18px rgba(45,212,191,.45)}
.ua-pulse{width:28px;height:28px;left:-7px;top:-7px;border:2px solid rgba(45,212,191,.55);animation:uaPulse 2.4s ease-out infinite}
.ua-label{position:relative;margin-left:10px;background:rgba(7,28,51,.82);border:1px solid rgba(122,228,237,.35);border-radius:14px;padding:9px 12px;min-width:148px;backdrop-filter:blur(5px);box-shadow:0 8px 18px rgba(0,0,0,.18)}
.ua-label b{display:block;color:#fff;font-size:.92rem;line-height:1.25}
.ua-label small{display:block;color:#b8cfdf;font-size:.74rem;line-height:1.25;margin-top:2px}
.ua-marker-th .ua-label::before,.ua-marker-zv .ua-label::before{content:"";position:absolute;left:-18px;top:50%;width:18px;height:2px;background:linear-gradient(90deg,rgba(45,212,191,.95),rgba(45,212,191,.25));transform:translateY(-50%)}
@keyframes uaPulse{0%{transform:scale(.55);opacity:.85}80%{transform:scale(1.45);opacity:0}100%{transform:scale(1.45);opacity:0}}
[data-theme="dark"] .ultra-overview-copy{background:linear-gradient(180deg,rgba(23,195,178,.07),rgba(7,28,51,.18));border-color:rgba(45,212,191,.18)}
@media (max-width:1020px){.ultra-overview{grid-template-columns:1fr}.ua-map-shell,.ua-map{height:380px;min-height:380px}.ultra-albania-card{min-height:0}.ua-marker-th{left:38.87%;top:58.84%}.ua-marker-zv{left:23.04%;top:68.75%}}
@media (max-width:760px){.ultra-overview-copy{padding:20px}.ultra-stat{padding:9px 12px}.ua-map-shell,.ua-map{height:340px;min-height:340px}.ua-head strong{font-size:1.05rem}.ua-country{font-size:15px;letter-spacing:.16em}.ua-marker{gap:6px}.ua-label{min-width:0;max-width:160px;padding:8px 10px}.ua-label b{font-size:.84rem}.ua-label small{font-size:.68rem}.ua-marker-th{left:38.87%;top:58.84%}.ua-marker-zv{left:23.04%;top:68.75%}}
@media (max-width:480px){.ua-map-shell,.ua-map{height:300px;min-height:300px}.ua-marker-th{left:38.87%;top:58.84%}.ua-marker-zv{left:23.04%;top:68.75%}.ua-label{max-width:138px}.ua-label small{display:none}}

/* P1.2: Albania silhouette is generated from Natural Earth ADM0 WGS84 geometry; marker positions are projected from the configured WGS84 site coordinates. */


/* ---------- Presentation Lite ADM0 Albania map with side labels ---------- */
.ultra-overview{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(360px,.98fr);gap:22px;align-items:stretch;margin:8px 0 24px}
.ultra-overview-copy{min-height:280px}
.ultra-albania-card{min-height:280px;padding:18px 18px 16px}
.ua-map-shell{position:relative;min-height:410px}
.ua-map{display:block;width:100%;height:410px}
.ua-shape{fill:url(#uaFill);stroke:#8beaf0;stroke-width:3;stroke-linejoin:round;filter:drop-shadow(0 16px 22px rgba(0,0,0,.28))}
.ua-country{font-family:Inter,Arial,sans-serif;font-size:18px;letter-spacing:.20em;fill:#2dd4bf;font-weight:700;opacity:.92}
.ua-admin{display:none}
.ua-marker{position:absolute;width:0;height:0;z-index:2}
.ua-dot,.ua-pulse{display:block;position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%)}
.ua-dot{width:14px;height:14px;background:#2dd4bf;box-shadow:0 0 0 5px rgba(45,212,191,.18),0 0 18px rgba(45,212,191,.45)}
.ua-pulse{width:28px;height:28px;border:2px solid rgba(45,212,191,.55);animation:uaPulse 2.4s ease-out infinite}
.ua-label{position:absolute;top:50%;transform:translateY(-50%);background:rgba(7,28,51,.84);border:1px solid rgba(122,228,237,.35);border-radius:14px;padding:9px 12px;min-width:148px;backdrop-filter:blur(5px);box-shadow:0 8px 18px rgba(0,0,0,.18)}
.ua-label b{display:block;color:#fff;font-size:.92rem;line-height:1.25}
.ua-label small{display:block;color:#b8cfdf;font-size:.74rem;line-height:1.25;margin-top:2px}
.ua-left .ua-label{right:26px;text-align:left}
.ua-right .ua-label{left:26px;text-align:left}
.ua-left .ua-label::after,.ua-right .ua-label::before{content:"";position:absolute;top:50%;width:18px;height:2px;background:linear-gradient(90deg,rgba(45,212,191,.25),rgba(45,212,191,.95));transform:translateY(-50%)}
.ua-left .ua-label::after{right:-18px;background:linear-gradient(90deg,rgba(45,212,191,.25),rgba(45,212,191,.95))}
.ua-right .ua-label::before{left:-18px;background:linear-gradient(90deg,rgba(45,212,191,.95),rgba(45,212,191,.25))}
.ua-marker-zv .ua-label{min-width:160px}
.ua-marker-th .ua-label{min-width:154px}
@media (max-width:1100px){.ultra-overview{grid-template-columns:1fr}.ua-map-shell,.ua-map{height:390px;min-height:390px}}
@media (max-width:760px){.ua-map-shell,.ua-map{height:340px;min-height:340px}.ua-country{font-size:15px;letter-spacing:.16em}.ua-label{padding:8px 10px;min-width:0;max-width:165px}.ua-label b{font-size:.84rem}.ua-label small{font-size:.68rem}.ua-left .ua-label{right:22px}.ua-right .ua-label{left:22px}}
@media (max-width:480px){.ua-map-shell,.ua-map{height:300px;min-height:300px}.ua-label{max-width:138px}.ua-label small{display:none}}


/* ---------- Presentation Lite ADM2 municipality override ---------- */
.ua-admin{display:block;fill:none;stroke:rgba(139,234,240,.22);stroke-width:.85;stroke-linejoin:round;stroke-linecap:round}
.ua-shape{stroke:#8beaf0;stroke-width:3}
.ua-country{opacity:.9}


/* ---------- Presentation Lite projected municipality map (minimal markers) ---------- */
.ultra-overview{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(380px,.98fr);gap:22px;align-items:stretch;margin:8px 0 24px}
.ultra-overview-copy{min-height:280px}
.ultra-albania-card{min-height:280px;padding:18px 18px 16px}
.ua-map-shell{position:relative;min-height:360px}
.ua-map{display:block;width:100%;height:360px}
.ua-shape{fill:url(#uaFill);stroke:#8beaf0;stroke-width:3;stroke-linejoin:round;filter:drop-shadow(0 16px 22px rgba(0,0,0,.28))}
.ua-admin{display:block;fill:none;stroke:rgba(139,234,240,.18);stroke-width:.8;stroke-linejoin:round;stroke-linecap:round}
.ua-country{display:none}
.ua-marker{display:none}
.ua-pin{position:absolute;width:0;height:0;z-index:3}
.ua-pin .ua-dot,.ua-pin .ua-pulse{display:block;position:absolute;left:0;top:0;border-radius:50%;transform:translate(-50%,-50%)}
.ua-pin .ua-dot{width:14px;height:14px;background:#2dd4bf;box-shadow:0 0 0 5px rgba(45,212,191,.18),0 0 18px rgba(45,212,191,.45)}
.ua-pin .ua-pulse{width:28px;height:28px;border:2px solid rgba(45,212,191,.55);animation:uaPulse 2.4s ease-out infinite}
@media (max-width:1100px){.ultra-overview{grid-template-columns:1fr}.ua-map-shell,.ua-map{height:340px;min-height:340px}}
@media (max-width:760px){.ua-map-shell,.ua-map{height:310px;min-height:310px}}
@media (max-width:480px){.ua-map-shell,.ua-map{height:280px;min-height:280px}}


/* ---------- Presentation Lite P1.8: center pulse exactly on marker ---------- */
.ua-pin .ua-dot{transform:translate(-50%,-50%)}
.ua-pin .ua-pulse{
  transform-origin:50% 50%;
  animation:uaPinPulse 2.4s ease-out infinite;
}
@keyframes uaPinPulse{
  0%{transform:translate(-50%,-50%) scale(.55);opacity:.85}
  80%{transform:translate(-50%,-50%) scale(1.45);opacity:0}
  100%{transform:translate(-50%,-50%) scale(1.45);opacity:0}
}


/* ============================================================
   AQUORYX CLEAN BUILD V6 — LIGHT/DARK THEME HARMONY
   Home hero, ultrasonic Albania map and contact information card
   now follow the same semantic theme tokens as the rest of the site.
   ============================================================ */

/* Home hero — light mode */
[data-theme="light"] .presentation-hero{
  background:
    radial-gradient(circle at 50% 8%,rgba(23,195,178,.13),transparent 34%),
    linear-gradient(180deg,#f8fcfd 0%,#eef7f8 100%);
  color:var(--text);
  border-bottom:1px solid var(--line);
}
[data-theme="light"] .presentation-hero h1{color:var(--heading)}
[data-theme="light"] .presentation-hero p{color:var(--muted)}
[data-theme="light"] .presentation-kicker{color:#0f9f94}
[data-theme="light"] .presentation-hero .btn-line{
  color:var(--heading);
  border-color:color-mix(in srgb,var(--line) 62%,var(--heading) 38%);
  background:rgba(255,255,255,.62);
}
[data-theme="light"] .presentation-hero .btn-line:hover{
  color:#075e58;
  border-color:var(--accent);
  background:rgba(23,195,178,.08);
}

/* Home hero — explicit dark state so theme switching is deterministic */
[data-theme="dark"] .presentation-hero{
  background:linear-gradient(150deg,#071c33 0%,#0b2944 70%,#0d3855 100%);
  color:#fff;
  border-bottom-color:transparent;
}
[data-theme="dark"] .presentation-hero h1{color:#fff}
[data-theme="dark"] .presentation-hero p{color:#d9e8f3}
[data-theme="dark"] .presentation-kicker{color:#6ee7d8}

/* Ultrasonic Albania locator — light mode */
[data-theme="light"] .ultra-albania-card{
  background:
    radial-gradient(circle at 50% 30%,rgba(23,195,178,.08),transparent 38%),
    linear-gradient(180deg,#fbfefe 0%,#f1f8fa 100%);
  border:1px solid color-mix(in srgb,var(--line) 72%,var(--accent) 28%);
  box-shadow:0 14px 34px rgba(7,28,51,.09);
  color:var(--text);
}
[data-theme="light"] .ultra-albania-card::before{
  background:
    radial-gradient(circle at 50% 35%,rgba(45,212,191,.06),transparent 42%),
    radial-gradient(circle at 20% 82%,rgba(56,189,248,.05),transparent 30%);
}
[data-theme="light"] .ua-head strong{color:var(--heading)}
[data-theme="light"] .ua-head small{color:var(--muted)}
[data-theme="light"] .ua-kicker{color:#0f9f94}
[data-theme="light"] .ua-shape{
  fill:#d9edf1;
  stroke:#118d91;
  filter:drop-shadow(0 10px 16px rgba(7,28,51,.12));
}
[data-theme="light"] .ua-admin{stroke:rgba(11,91,96,.28)}
[data-theme="light"] .ua-pin .ua-dot{
  background:#17c3b2;
  box-shadow:0 0 0 5px rgba(23,195,178,.16),0 0 14px rgba(23,195,178,.28);
}
[data-theme="light"] .ua-pin .ua-pulse{border-color:rgba(23,195,178,.48)}

/* Ultrasonic Albania locator — preserve dark appearance */
[data-theme="dark"] .ultra-albania-card{
  background:linear-gradient(180deg,rgba(11,42,74,.88),rgba(7,28,51,.94));
  border-color:color-mix(in srgb,var(--dk-line) 72%,var(--accent2) 28%);
  box-shadow:0 18px 44px rgba(0,0,0,.28);
  color:var(--dk-text);
}
[data-theme="dark"] .ua-head strong{color:#fff}
[data-theme="dark"] .ua-head small{color:#b8cfdf}
[data-theme="dark"] .ua-kicker{color:var(--accent2)}
[data-theme="dark"] .ua-shape{
  fill:url(#uaFill);
  stroke:#8beaf0;
  filter:drop-shadow(0 16px 22px rgba(0,0,0,.28));
}
[data-theme="dark"] .ua-admin{stroke:rgba(139,234,240,.18)}

/* Contact information card — light mode */
[data-theme="light"] body[data-page="contact"] .info-card{
  background:var(--surface);
  color:var(--text);
  border:1px solid var(--line);
  box-shadow:var(--shadow);
}
[data-theme="light"] body[data-page="contact"] .info-card h3{color:var(--heading)}
[data-theme="light"] body[data-page="contact"] .info-line{
  color:var(--text);
  border-bottom-color:var(--line);
}
[data-theme="light"] body[data-page="contact"] .info-line a{color:var(--heading)}
[data-theme="light"] body[data-page="contact"] .info-line .icon{color:#0f9f94}
[data-theme="light"] body[data-page="contact"] .contact-map{
  background:var(--tint);
  border-color:var(--line);
}

/* Contact information card — preserve dark appearance */
[data-theme="dark"] body[data-page="contact"] .info-card{
  background:linear-gradient(160deg,var(--navy),var(--dark));
  color:#fff;
  border-color:var(--dk-line);
  box-shadow:0 12px 30px rgba(0,0,0,.28);
}
[data-theme="dark"] body[data-page="contact"] .info-card h3{color:#fff}
[data-theme="dark"] body[data-page="contact"] .info-line{border-bottom-color:rgba(255,255,255,.1)}
[data-theme="dark"] body[data-page="contact"] .info-line a{color:#fff}
[data-theme="dark"] body[data-page="contact"] .info-line .icon{color:var(--accent2)}


/* ============================================================
   AQUORYX CLEAN BUILD V8 — interactive dam inventory map
   ============================================================ */
.ua-interactive-shell{position:relative;overflow:hidden;touch-action:none;cursor:grab;isolation:isolate}
.ua-interactive-shell.is-dragging{cursor:grabbing}
.ua-map-stage{position:absolute;inset:0;transform-origin:0 0;will-change:transform;z-index:1}
.ua-map-stage .ua-map{position:absolute;inset:0;width:100%;height:100%}
.ua-points-layer{position:absolute;inset:0;z-index:4;pointer-events:none}
.ua-dam-point{position:absolute;transform:translate(-50%,-50%);width:14px;height:14px;padding:0;border:0;background:transparent;cursor:pointer;pointer-events:auto;z-index:4;border-radius:50%}
.ua-dam-dot,.ua-dam-pulse{position:absolute;left:50%;top:50%;display:block;border-radius:50%;transform:translate(-50%,-50%)}
.ua-dam-dot{width:5px;height:5px;background:#8beaf0;box-shadow:0 0 0 1px rgba(7,28,51,.68),0 0 5px rgba(139,234,240,.2)}
.ua-dam-point:hover .ua-dam-dot,.ua-dam-point:focus-visible .ua-dam-dot{width:8px;height:8px;background:#d6ffff;box-shadow:0 0 0 2px rgba(45,212,191,.28),0 0 9px rgba(139,234,240,.35)}
.ua-dam-point:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ua-dam-point.is-active{width:28px;height:28px;z-index:7}
.ua-dam-point.is-active .ua-dam-dot{width:14px;height:14px;background:#2dd4bf;box-shadow:0 0 0 5px rgba(45,212,191,.18),0 0 18px rgba(45,212,191,.45)}
.ua-dam-pulse{width:28px;height:28px;border:2px solid rgba(45,212,191,.55);animation:uaPinPulse 2.4s ease-out infinite;pointer-events:none}
.ua-map-controls{position:absolute;top:12px;right:12px;z-index:15;display:grid;gap:6px}
.ua-map-controls button{width:36px;height:36px;border-radius:10px;border:1px solid rgba(139,234,240,.28);background:rgba(7,28,51,.88);color:#e8f8fb;font:700 1.1rem/1 Inter,Arial,sans-serif;cursor:pointer;box-shadow:0 8px 18px rgba(0,0,0,.16)}
.ua-map-controls button:hover,.ua-map-controls button:focus-visible{border-color:#2dd4bf;color:#2dd4bf;outline:none}
.ua-map-controls .ua-reset{font-size:1rem}
.ua-map-tooltip{position:absolute;z-index:18;transform:translate(-50%,-100%);max-width:min(240px,70%);padding:8px 11px;border-radius:11px;background:rgba(7,28,51,.96);color:#fff;border:1px solid rgba(139,234,240,.3);box-shadow:0 12px 28px rgba(0,0,0,.28);font-size:.78rem;font-weight:700;line-height:1.25;pointer-events:none;white-space:normal;text-align:center}
.ua-map-tooltip.below{transform:translate(-50%,0)}
.ua-map-tooltip.is-active-site{border-color:rgba(45,212,191,.7);color:#dffffa}
[data-theme="light"] .ua-dam-dot{background:#276f76;box-shadow:0 0 0 1px rgba(255,255,255,.9),0 0 4px rgba(11,91,96,.14)}
[data-theme="light"] .ua-dam-point:hover .ua-dam-dot,[data-theme="light"] .ua-dam-point:focus-visible .ua-dam-dot{background:#0f7779}
[data-theme="light"] .ua-dam-point.is-active .ua-dam-dot{background:#17c3b2;box-shadow:0 0 0 5px rgba(23,195,178,.16),0 0 14px rgba(23,195,178,.28)}
[data-theme="light"] .ua-dam-pulse{border-color:rgba(23,195,178,.48)}
[data-theme="light"] .ua-map-controls button{background:rgba(255,255,255,.95);color:#163949;border-color:rgba(11,91,96,.22);box-shadow:0 8px 18px rgba(7,28,51,.12)}
[data-theme="light"] .ua-map-tooltip{background:#fff;color:var(--heading);border-color:rgba(11,91,96,.2);box-shadow:0 12px 24px rgba(7,28,51,.14)}
@media(max-width:600px){.ua-map-controls{top:8px;right:8px;gap:4px}.ua-map-controls button{width:34px;height:34px}.ua-dam-point{width:16px;height:16px}.ua-dam-dot{width:6px;height:6px}}


/* ============================================================
   AQUORYX CLEAN BUILD V9 — aligned SVG dam layer + smooth viewBox pan/zoom
   ============================================================ */
.ua-svg-interactive{position:relative;overflow:hidden;cursor:grab;touch-action:none;user-select:none}
.ua-svg-interactive.is-dragging{cursor:grabbing}
.ua-svg-interactive .ua-map{position:absolute;inset:0;width:100%;height:100%;display:block}
.ua-svg-marker{cursor:pointer;pointer-events:all;outline:none}
.ua-svg-hit{fill:transparent;pointer-events:all}
.ua-svg-dot{fill:#8beaf0;stroke:rgba(7,28,51,.55);stroke-width:1;vector-effect:non-scaling-stroke;transition:fill .14s ease,filter .14s ease}
.ua-svg-marker:hover .ua-svg-dot{fill:#d6ffff;filter:drop-shadow(0 0 4px rgba(139,234,240,.55))}
.ua-svg-marker.is-active .ua-svg-dot{fill:#2dd4bf;stroke:rgba(7,28,51,.36);stroke-width:1.2;filter:drop-shadow(0 0 5px rgba(45,212,191,.55))}
.ua-svg-pulse{fill:none;stroke:rgba(45,212,191,.58);stroke-width:1.6;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;animation:uaSvgDamPulse 2.4s ease-out infinite;pointer-events:none}
@keyframes uaSvgDamPulse{0%{transform:scale(.55);opacity:.88}80%{transform:scale(1.5);opacity:0}100%{transform:scale(1.5);opacity:0}}
.ua-map-controls-v9{z-index:20}
.ua-map-tooltip-v9{z-index:24}
[data-theme="light"] .ua-svg-dot{fill:#28777d;stroke:rgba(255,255,255,.9)}
[data-theme="light"] .ua-svg-marker:hover .ua-svg-dot{fill:#075e63;filter:drop-shadow(0 0 3px rgba(7,94,99,.25))}
[data-theme="light"] .ua-svg-marker.is-active .ua-svg-dot{fill:#17c3b2;stroke:#fff;filter:drop-shadow(0 0 4px rgba(23,195,178,.35))}
[data-theme="light"] .ua-svg-pulse{stroke:rgba(23,195,178,.50)}
@media (prefers-reduced-motion:reduce){.ua-svg-pulse{animation:none;opacity:.42}}


/* ============================================================
   AQUORYX CLEAN BUILD V10 — red online sensors + map legend + OSM basemap
   ============================================================ */
.ua-svg-marker.is-active .ua-svg-dot{fill:#ff4254;stroke:#fff;stroke-width:1.4;filter:drop-shadow(0 0 5px rgba(255,66,84,.62))}
.ua-svg-pulse{stroke:rgba(255,66,84,.62)}
[data-theme="light"] .ua-svg-marker.is-active .ua-svg-dot{fill:#e83f51;stroke:#fff;filter:drop-shadow(0 0 4px rgba(232,63,81,.36))}
[data-theme="light"] .ua-svg-pulse{stroke:rgba(232,63,81,.55)}
.ua-basemap-switch{position:absolute;top:12px;left:12px;z-index:26;display:flex;gap:3px;padding:3px;border-radius:11px;background:rgba(7,28,51,.88);border:1px solid rgba(139,234,240,.24);box-shadow:0 8px 18px rgba(0,0,0,.14);backdrop-filter:blur(7px)}
.ua-basemap-switch button{border:0;background:transparent;color:#c9dce8;border-radius:8px;padding:7px 9px;font:700 .68rem/1 Inter,Arial,sans-serif;cursor:pointer;white-space:nowrap}
.ua-basemap-switch button.active{background:#17c3b2;color:#04241f}
.ua-basemap-switch button:focus-visible{outline:2px solid #2dd4bf;outline-offset:1px}
.ua-map-legend{position:absolute;left:12px;bottom:12px;z-index:26;display:flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:calc(100% - 24px);padding:7px 10px;border-radius:11px;background:rgba(7,28,51,.90);border:1px solid rgba(139,234,240,.22);box-shadow:0 8px 20px rgba(0,0,0,.14);color:#dcebf3;font:700 .68rem/1.1 Inter,Arial,sans-serif;backdrop-filter:blur(7px)}
.ua-map-legend span{display:inline-flex;align-items:center;gap:6px}.ua-map-legend .ua-legend-title{color:#7fdfe4;text-transform:uppercase;letter-spacing:.08em;font-size:.62rem}.ua-leg-dot{display:inline-block;border-radius:50%;flex:0 0 auto}.ua-leg-dam{width:7px;height:7px;background:#8beaf0;box-shadow:0 0 0 1px rgba(255,255,255,.2)}.ua-leg-sensor{width:11px;height:11px;background:#ff4254;border:2px solid #fff;box-shadow:0 0 0 4px rgba(255,66,84,.16)}
.ua-osm-map{position:absolute;inset:0;z-index:2;background:#dfe7e8}.ua-osm-map[hidden]{display:none!important}.ua-osm-map .maplibregl-map,.ua-osm-map .maplibregl-canvas-container,.ua-osm-map canvas{width:100%!important;height:100%!important}.ua-osm-map .maplibregl-ctrl-bottom-right{z-index:5}.ua-osm-map .maplibregl-ctrl-attrib{font-size:9px!important;opacity:.88}
.ua-mode-osm{cursor:default}.ua-mode-osm .ua-map-controls{z-index:26}.ua-mode-osm .ua-map-legend,.ua-mode-osm .ua-basemap-switch{z-index:27}
.ua-osm-name-popup .maplibregl-popup-content{padding:8px 11px!important;border-radius:11px!important}.ua-osm-popup{display:grid;gap:2px}.ua-osm-popup b{font-size:.8rem}.ua-osm-popup small{font-size:.66rem;color:#ff4254;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
[data-theme="light"] .ua-basemap-switch,[data-theme="light"] .ua-map-legend{background:rgba(255,255,255,.94);border-color:rgba(11,91,96,.18);box-shadow:0 8px 18px rgba(7,28,51,.10);color:var(--text)}
[data-theme="light"] .ua-basemap-switch button{color:#385765}[data-theme="light"] .ua-basemap-switch button.active{background:#17c3b2;color:#04241f}[data-theme="light"] .ua-map-legend .ua-legend-title{color:#0f7779}[data-theme="light"] .ua-leg-dam{background:#28777d}[data-theme="light"] .ua-leg-sensor{background:#e83f51;border-color:#fff;box-shadow:0 0 0 4px rgba(232,63,81,.13)}
@media(max-width:600px){.ua-basemap-switch{top:8px;left:8px}.ua-basemap-switch button{padding:7px 8px;font-size:.64rem}.ua-map-legend{left:8px;bottom:8px;gap:8px;padding:7px 8px}.ua-map-legend .ua-legend-title{display:none}}


/* ============================================================
   AQUORYX CLEAN BUILD V11 — reliable OSM raster tiles + vertical legend
   ============================================================ */
.ua-map-legend{display:grid!important;grid-template-columns:1fr!important;align-items:start!important;gap:7px!important;min-width:142px;max-width:190px;padding:9px 11px!important}
.ua-map-legend span{display:flex!important;align-items:center!important;gap:7px!important;width:100%}
.ua-map-legend .ua-legend-title{margin-bottom:1px}
.ua-osm-map{overflow:hidden;cursor:grab;touch-action:none;user-select:none;background:#dce5e8}
.ua-osm-map.is-dragging{cursor:grabbing}
.ua-osm-tiles,.ua-osm-markers{position:absolute;inset:0;will-change:transform;transform:translate3d(0,0,0)}
.ua-osm-tiles{z-index:1;overflow:hidden;background:#dce5e8}
.ua-osm-tiles img{position:absolute;width:256px;height:256px;max-width:none!important;user-select:none;pointer-events:none;border:0}
.ua-osm-markers{z-index:4;pointer-events:none}
.ua-osm-marker{position:absolute;transform:translate(-50%,-50%);width:18px;height:18px;border:0;padding:0;background:transparent;cursor:pointer;pointer-events:auto;z-index:2}
.ua-osm-marker.is-sensor{width:24px;height:24px;z-index:5}
.ua-osm-dot,.ua-osm-pulse,.ua-osm-tip{position:absolute;left:50%;top:50%}
.ua-osm-dot{transform:translate(-50%,-50%);display:block;border-radius:50%}
.ua-osm-marker.is-dam .ua-osm-dot{width:7px;height:7px;background:#177d84;border:1px solid #fff;box-shadow:0 0 0 1px rgba(7,28,51,.12)}
.ua-osm-marker.is-sensor .ua-osm-dot{width:14px;height:14px;background:#ff4254;border:2px solid #fff;box-shadow:0 0 0 4px rgba(255,66,84,.17)}
.ua-osm-pulse{width:28px;height:28px;border:2px solid rgba(255,66,84,.58);border-radius:50%;transform-origin:center;animation:uaPinPulse 2.4s ease-out infinite;pointer-events:none}
.ua-osm-tip{transform:translate(-50%,-145%);white-space:nowrap;display:grid;gap:2px;padding:7px 10px;border-radius:10px;background:rgba(7,28,51,.95);color:#fff;font-size:.72rem;line-height:1.1;border:1px solid rgba(139,234,240,.24);box-shadow:0 10px 24px rgba(0,0,0,.25);opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease}
.ua-osm-tip b{font-size:.76rem}.ua-osm-tip small{color:#ff7a87;font-size:.61rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.ua-osm-marker:hover,.ua-osm-marker:focus-visible,.ua-osm-marker.is-selected{z-index:12;outline:none}
.ua-osm-marker:hover .ua-osm-tip,.ua-osm-marker:focus-visible .ua-osm-tip,.ua-osm-marker.is-selected .ua-osm-tip{opacity:1;transform:translate(-50%,-160%)}
.ua-osm-marker.is-dam:hover .ua-osm-dot,.ua-osm-marker.is-dam:focus-visible .ua-osm-dot,.ua-osm-marker.is-dam.is-selected .ua-osm-dot{background:#0e5f65;width:8px;height:8px}
.ua-osm-attrib{position:absolute;right:4px;bottom:3px;z-index:7;padding:2px 5px;border-radius:4px;background:rgba(255,255,255,.88);color:#334;font:600 8px/1.2 Inter,Arial,sans-serif;pointer-events:none}
.ua-mode-osm .ua-map-controls,.ua-mode-osm .ua-basemap-switch,.ua-mode-osm .ua-map-legend{z-index:30}
[data-theme="light"] .ua-osm-tip{background:#fff;color:var(--heading);border-color:rgba(11,91,96,.18);box-shadow:0 10px 24px rgba(7,28,51,.12)}
[data-theme="light"] .ua-osm-tip small{color:#c92f40}
@media(max-width:600px){.ua-map-legend{min-width:126px;max-width:160px}.ua-map-legend .ua-legend-title{display:flex!important}}


/* ============================================================
   AQUORYX CLEAN BUILD V12 — basemap order, legend alignment, copy contrast
   ============================================================ */
/* Keep overview copy on the same semantic text token as the rest of the site. */
.ultra-overview-copy p{color:var(--text)!important}
[data-theme="dark"] .ultra-overview-copy p{color:var(--dk-text)!important}

/* Three basemaps: OSM default, Esri satellite, boundary. */
.ua-basemap-switch{display:flex;align-items:center;gap:3px}
.ua-basemap-switch button{min-height:30px}

/* Legend: fixed icon column so both labels start on exactly the same x-position. */
.ua-map-legend{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:7px!important;min-width:146px;max-width:196px}
.ua-map-legend>.ua-legend-title{display:block!important;width:100%;margin:0 0 1px!important}
.ua-map-legend>span:not(.ua-legend-title){display:grid!important;grid-template-columns:16px minmax(0,1fr)!important;align-items:center!important;column-gap:7px!important;width:100%;margin:0!important}
.ua-map-legend .ua-leg-dot{justify-self:center!important;margin:0!important}
.ua-map-legend .ua-leg-dam{width:7px;height:7px}
.ua-map-legend .ua-leg-sensor{width:11px;height:11px}
@media(max-width:600px){.ua-basemap-switch{max-width:calc(100% - 74px);overflow-x:auto;scrollbar-width:none}.ua-basemap-switch::-webkit-scrollbar{display:none}.ua-basemap-switch button{flex:0 0 auto}}


/* ============================================================
   AQUORYX CLEAN BUILD V14 — multilingual responsive resilience
   ============================================================ */
html[lang="de"] .btn,html[lang="fr"] .btn,html[lang="it"] .btn,html[lang="sq"] .btn{white-space:normal;text-align:center}
.service-block h3,.service-block p,.presentation-card h3,.presentation-card p,.ultra-overview-copy p,.ultra-stat small,.ft-side summary,.ft-toolbtn span{overflow-wrap:anywhere}
.svc-cta,.more{white-space:normal}
.dh-subtabs,.ultra-statline,.presentation-actions{flex-wrap:wrap}
@media(max-width:760px){.service-block{grid-template-columns:auto minmax(0,1fr)}.svc-tags{gap:6px}.svc-tag{white-space:normal}.presentation-actions .btn{max-width:100%}.ultra-stat{align-items:center}.ft-optrow{flex-wrap:wrap}}


/* ============================================================
   AQUORYX CLEAN BUILD V15 — Grant 2026 support block
   ============================================================ */
.grant-support{border-top:1px solid rgba(255,255,255,.11);padding:24px 0 28px;text-align:center;color:#8fa5b8}
.grant-title-row{width:min(520px,86%);margin:0 auto 18px;display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center}
.grant-title-row span{height:1px;background:linear-gradient(90deg,transparent,rgba(45,212,191,.26))}
.grant-title-row span:last-child{background:linear-gradient(90deg,rgba(45,212,191,.26),transparent)}
.grant-title-row strong{font-size:.68rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase;color:#8ea2b5;white-space:nowrap}
.grant-logos{display:flex;align-items:center;justify-content:center;gap:64px;min-height:126px;margin:0 auto 16px}
.grant-mark{display:flex;align-items:center;justify-content:center;transition:transform .18s ease,opacity .18s ease;min-width:0}
.grant-mark:hover{transform:translateY(-2px);opacity:.94}
.grant-mark:focus-visible{outline:3px solid var(--accent2);outline-offset:7px;border-radius:8px}
.grant-mark img{display:block;width:auto;object-fit:contain;filter:none}
.grant-ministry img{height:118px;max-width:170px}
.grant-agency img{height:58px;max-width:min(260px,45vw)}
.grant-statement{width:min(760px,88%);margin:0 auto;color:#8095a9!important;font-size:.76rem!important;line-height:1.55!important;text-align:center}
@media(max-width:760px){
  .grant-support{padding:22px 0 24px}
  .grant-title-row{width:min(92%,420px);gap:10px}.grant-title-row strong{font-size:.63rem;letter-spacing:.08em}
  .grant-logos{gap:30px;min-height:110px}.grant-ministry img{height:100px}.grant-agency img{height:50px;max-width:48vw}
  .grant-statement{width:min(92%,620px);font-size:.72rem!important}
}
@media(max-width:500px){
  .grant-title-row{grid-template-columns:32px auto 32px;justify-content:center}
  .grant-logos{flex-direction:column;gap:20px;min-height:0;margin-bottom:20px}
  .grant-ministry img{height:96px}.grant-agency img{height:48px;max-width:250px}
  .grant-statement{width:92%;font-size:.7rem!important;line-height:1.5!important}
}


/* ============================================================
   V21 — mobile sensor charts + Field Tools map interaction
   ============================================================ */
.uspark{height:46px!important;min-height:46px!important;max-height:46px!important;aspect-ratio:auto!important}
.uspark-wrap{min-height:0!important}
.ft-mobile-dock,.ft-mobile-drawmenu{display:none}

@media(max-width:900px), (pointer:coarse){
  .ultra-card .uspark{height:46px!important;min-height:46px!important;max-height:46px!important}
  .ultra-card .uspark-wrap{height:auto!important;min-height:0!important;max-height:78px!important;overflow:hidden}

  #view-field .map-wrap{position:relative;height:58vh;min-height:420px;max-height:620px;touch-action:pan-y}
  #view-field .map-wrap.ft-map-locked{touch-action:pan-y;overscroll-behavior-y:auto}
  #view-field .map-wrap.ft-map-locked #fieldMap{pointer-events:none}

  .ft-mobile-dock{display:flex;position:absolute;left:10px;bottom:12px;z-index:15;gap:6px;align-items:flex-end;max-width:calc(100% - 20px);overflow-x:auto;padding:5px;border:1px solid rgba(122,228,237,.24);border-radius:14px;background:rgba(7,28,51,.86);backdrop-filter:blur(8px);box-shadow:0 10px 28px rgba(0,0,0,.28);scrollbar-width:none}
  .ft-mobile-dock::-webkit-scrollbar{display:none}
  .ft-mobile-mapbtn{flex:0 0 46px;width:46px;height:48px;border:1px solid rgba(122,228,237,.20);border-radius:10px;background:rgba(13,33,56,.92);color:#eaf7ff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:3px;cursor:pointer}
  .ft-mobile-mapbtn>span{font-size:17px;line-height:1}
  .ft-mobile-mapbtn>small{font-size:8px;line-height:1;font-weight:800;letter-spacing:.02em;color:#b9cddd}
  .ft-mobile-mapbtn:active,.ft-mobile-mapbtn[aria-pressed="false"]{background:var(--accent);color:#04241f}
  .ft-mobile-mapbtn[aria-pressed="false"] small{color:#123b37}

  .ft-mobile-drawmenu{display:flex;position:absolute;left:12px;bottom:76px;z-index:16;gap:5px;padding:6px;border-radius:12px;border:1px solid rgba(122,228,237,.24);background:rgba(7,28,51,.94);box-shadow:0 10px 28px rgba(0,0,0,.28)}
  .ft-mobile-drawmenu[hidden]{display:none!important}
  .ft-mobile-drawmenu button{width:40px;height:40px;border-radius:9px;border:1px solid rgba(122,228,237,.2);background:#0d2138;color:#dff8fb;font-size:17px;cursor:pointer}
  .ft-mobile-drawmenu button:active{background:var(--accent);color:#04241f}

  [data-theme="light"] .ft-mobile-dock,[data-theme="light"] .ft-mobile-drawmenu{background:rgba(255,255,255,.94);border-color:rgba(11,91,96,.18);box-shadow:0 10px 26px rgba(7,28,51,.14)}
  [data-theme="light"] .ft-mobile-mapbtn,[data-theme="light"] .ft-mobile-drawmenu button{background:#fff;color:var(--heading);border-color:rgba(11,91,96,.16)}
  [data-theme="light"] .ft-mobile-mapbtn>small{color:var(--muted)}
}


/* V22 — mobile map controls must stay visible above MapLibre controls. */
@media(max-width:900px), (pointer:coarse){
  #view-field .map-wrap{position:relative!important}
  #view-field .ft-mobile-dock{display:flex!important;z-index:50!important}
  #view-field .ft-mobile-drawmenu{z-index:51!important}
  #view-field .maplibregl-ctrl-bottom-left,#view-field .maplibregl-ctrl-bottom-right{bottom:68px}
}




/* V24 — Field Tools map-first layout on every device. */
#view-field .dh-layout{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  border-radius:18px;
  overflow:hidden;
}
#view-field .ft-side{display:none!important}
#view-field .map-wrap{
  display:block!important;
  position:relative!important;
  width:100%!important;
  height:clamp(620px,72vh,820px)!important;
  min-height:620px!important;
  max-height:820px!important;
  background:#0b1c2f;
}
#view-field .ft-mobile-dock{
  display:flex!important;
  position:absolute;
  left:50%;
  bottom:14px;
  transform:translateX(-50%);
  z-index:70!important;
  width:max-content;
  max-width:calc(100% - 24px);
  gap:8px;
  align-items:center;
  overflow-x:auto;
  padding:7px;
  border:1px solid rgba(122,228,237,.25);
  border-radius:16px;
  background:rgba(7,28,51,.90);
  backdrop-filter:blur(10px);
  box-shadow:0 12px 34px rgba(0,0,0,.28);
  scrollbar-width:none;
}
#view-field .ft-mobile-dock::-webkit-scrollbar{display:none}
#view-field .ft-mobile-mapbtn{
  flex:0 0 72px;
  width:72px;
  height:58px;
  border:1px solid rgba(122,228,237,.20);
  border-radius:11px;
  background:rgba(13,33,56,.94);
  color:#eaf7ff;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  padding:5px 4px;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,transform .15s ease;
}
#view-field .ft-mobile-mapbtn>span{font-size:19px;line-height:1}
#view-field .ft-mobile-mapbtn>small{
  font-size:9.5px;
  line-height:1.05;
  font-weight:800;
  letter-spacing:.01em;
  color:#c3d5e4;
  white-space:nowrap;
}
#view-field .ft-mobile-mapbtn:hover,
#view-field .ft-mobile-mapbtn:focus-visible{
  border-color:rgba(45,212,191,.65);
  background:rgba(17,55,75,.98);
}
#view-field .ft-mobile-mapbtn:active{transform:translateY(1px)}
#view-field .ft-mobile-mapbtn.is-active,
#view-field .ft-mobile-mapbtn[aria-pressed="true"]{
  background:rgba(45,212,191,.18);
  border-color:rgba(45,212,191,.66);
  box-shadow:0 0 0 1px rgba(45,212,191,.10) inset;
}
#view-field .ft-mobile-drawmenu,
#view-field .ft-mobile-basemapmenu{
  display:flex;
  position:absolute;
  left:50%;
  bottom:86px;
  transform:translateX(-50%);
  z-index:71!important;
  gap:7px;
  align-items:center;
  justify-content:center;
  max-width:calc(100% - 24px);
  overflow-x:auto;
  padding:8px;
  border-radius:14px;
  border:1px solid rgba(122,228,237,.24);
  background:rgba(7,28,51,.96);
  box-shadow:0 12px 30px rgba(0,0,0,.30);
  scrollbar-width:none;
}
#view-field .ft-mobile-drawmenu[hidden],
#view-field .ft-mobile-basemapmenu[hidden]{display:none!important}
#view-field .ft-mobile-drawmenu button,
#view-field .ft-mobile-basemapmenu button{
  min-width:76px;
  height:56px;
  border-radius:10px;
  border:1px solid rgba(122,228,237,.20);
  background:#0d2138;
  color:#eaf7ff;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  padding:5px 8px;
  cursor:pointer;
}
#view-field .ft-mobile-drawmenu button>span,
#view-field .ft-mobile-basemapmenu button>span{font-size:18px;line-height:1}
#view-field .ft-mobile-drawmenu button>small,
#view-field .ft-mobile-basemapmenu button>small{font-size:9.5px;font-weight:800;color:#c3d5e4;white-space:nowrap}
#view-field .ft-mobile-drawmenu button.is-active,
#view-field .ft-mobile-basemapmenu button.is-active{
  background:rgba(45,212,191,.18);
  border-color:rgba(45,212,191,.66);
}
#view-field .maplibregl-ctrl-bottom-left,
#view-field .maplibregl-ctrl-bottom-right{bottom:86px}
[data-theme="light"] #view-field .ft-mobile-dock,
[data-theme="light"] #view-field .ft-mobile-drawmenu,
[data-theme="light"] #view-field .ft-mobile-basemapmenu{
  background:rgba(255,255,255,.95);
  border-color:rgba(11,91,96,.20);
  box-shadow:0 12px 30px rgba(7,28,51,.14);
}
[data-theme="light"] #view-field .ft-mobile-mapbtn,
[data-theme="light"] #view-field .ft-mobile-drawmenu button,
[data-theme="light"] #view-field .ft-mobile-basemapmenu button{
  background:#fff;
  color:var(--heading);
  border-color:rgba(11,91,96,.16);
}
[data-theme="light"] #view-field .ft-mobile-mapbtn>small,
[data-theme="light"] #view-field .ft-mobile-drawmenu button>small,
[data-theme="light"] #view-field .ft-mobile-basemapmenu button>small{color:var(--muted)}

@media(max-width:900px), (pointer:coarse){
  #view-field .map-wrap{
    height:68vh!important;
    min-height:470px!important;
    max-height:760px!important;
    touch-action:pan-y;
  }
  #view-field .map-wrap.ft-map-locked{touch-action:pan-y;overscroll-behavior-y:auto}
  #view-field .map-wrap.ft-map-locked #fieldMap{pointer-events:none}
  #view-field .ft-mobile-dock{
    left:10px;
    right:10px;
    bottom:10px;
    transform:none;
    width:auto;
    max-width:none;
    justify-content:flex-start;
    padding:6px;
    gap:7px;
  }
  #view-field .ft-mobile-mapbtn{flex:0 0 58px;width:58px;height:56px}
  #view-field .ft-mobile-mapbtn>small{font-size:9px}
  #view-field .ft-mobile-drawmenu,
  #view-field .ft-mobile-basemapmenu{
    left:10px;
    right:10px;
    bottom:78px;
    transform:none;
    justify-content:flex-start;
  }
  #view-field .ft-mobile-drawmenu button,
  #view-field .ft-mobile-basemapmenu button{min-width:70px;flex:0 0 70px}
  #view-field .maplibregl-ctrl-bottom-left,
  #view-field .maplibregl-ctrl-bottom-right{bottom:82px}
}

@media(max-width:520px){
  #view-field .map-wrap{min-height:500px!important}
  #view-field .ft-mobile-mapbtn{flex-basis:56px;width:56px}
}


/* V25 — persistent ruler readout + KML/KMZ export menu. */
#view-field .ft-mobile-exportmenu{
  display:flex;position:absolute;left:50%;bottom:86px;transform:translateX(-50%);z-index:72!important;
  gap:8px;align-items:center;justify-content:center;max-width:calc(100% - 24px);overflow-x:auto;padding:8px;
  border-radius:14px;border:1px solid rgba(122,228,237,.24);background:rgba(7,28,51,.96);box-shadow:0 12px 30px rgba(0,0,0,.30)
}
#view-field .ft-mobile-exportmenu[hidden]{display:none!important}
#view-field .ft-mobile-exportmenu button{
  min-width:92px;height:56px;border-radius:10px;border:1px solid rgba(122,228,237,.20);background:#0d2138;color:#eaf7ff;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:5px 10px;cursor:pointer
}
#view-field .ft-mobile-exportmenu button>span{font-size:14px;line-height:1;font-weight:900}
#view-field .ft-mobile-exportmenu button>small{font-size:9.5px;font-weight:800;color:#c3d5e4;white-space:nowrap}
#view-field .ft-measure-readout{
  position:absolute;left:14px;top:14px;z-index:73;max-width:min(430px,calc(100% - 110px));padding:10px 13px;border-radius:12px;
  background:rgba(7,28,51,.93);border:1px solid rgba(45,212,191,.55);color:#f0fbff;font-size:13px;font-weight:850;
  line-height:1.3;box-shadow:0 8px 24px rgba(0,0,0,.22);backdrop-filter:blur(8px);pointer-events:none
}
#view-field .ft-measure-readout[hidden]{display:none!important}
[data-theme="light"] #view-field .ft-mobile-exportmenu{background:rgba(255,255,255,.96);border-color:rgba(11,91,96,.20);box-shadow:0 12px 30px rgba(7,28,51,.14)}
[data-theme="light"] #view-field .ft-mobile-exportmenu button{background:#fff;color:var(--heading);border-color:rgba(11,91,96,.16)}
[data-theme="light"] #view-field .ft-mobile-exportmenu button>small{color:var(--muted)}
[data-theme="light"] #view-field .ft-measure-readout{background:rgba(255,255,255,.96);color:var(--heading);border-color:rgba(11,91,96,.28);box-shadow:0 8px 22px rgba(7,28,51,.12)}
@media(max-width:900px),(pointer:coarse){
  #view-field .ft-mobile-exportmenu{left:10px;right:10px;bottom:78px;transform:none;justify-content:flex-start}
  #view-field .ft-measure-readout{left:10px;top:10px;max-width:calc(100% - 86px);font-size:12px;padding:9px 11px}
}


/* V26 — mobile toolbar: static Lock/Use Map + scrollable tool strip, Undo/Redo. */
#view-field .ft-mobile-dock{
  overflow:hidden!important;
  width:min(980px,calc(100% - 24px));
  max-width:calc(100% - 24px);
  gap:7px;
}
#view-field .ft-mobile-static-tool{
  flex:0 0 auto;
  display:flex;
  align-items:center;
  padding-right:7px;
  border-right:1px solid rgba(122,228,237,.20);
}
#view-field .ft-mobile-scroll-tools{
  min-width:0;
  flex:1 1 auto;
  display:flex;
  align-items:center;
  gap:8px;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  padding-right:1px;
}
#view-field .ft-mobile-scroll-tools::-webkit-scrollbar{display:none}
#view-field .ft-mobile-mapbtn:disabled,
#view-field .ft-mobile-mapbtn[aria-disabled="true"]{
  opacity:.38;
  filter:saturate(.45);
  cursor:not-allowed;
  transform:none!important;
}
#view-field .ft-mobile-mapbtn:disabled:hover{background:rgba(13,33,56,.94);border-color:rgba(122,228,237,.20)}
[data-theme="light"] #view-field .ft-mobile-static-tool{border-right-color:rgba(11,91,96,.16)}
[data-theme="light"] #view-field .ft-mobile-mapbtn:disabled:hover{background:#fff;border-color:rgba(11,91,96,.16)}

@media(max-width:900px),(pointer:coarse){
  #view-field .ft-mobile-dock{
    left:10px;
    right:10px;
    width:auto;
    max-width:none;
    transform:none;
    padding:6px;
    gap:6px;
  }
  #view-field .ft-mobile-static-tool{
    position:relative;
    z-index:2;
    padding-right:6px;
    background:inherit;
  }
  #view-field .ft-mobile-scroll-tools{
    gap:7px;
    scroll-snap-type:x proximity;
  }
  #view-field .ft-mobile-scroll-tools .ft-mobile-mapbtn{scroll-snap-align:start}
}


/* ============================================================
   V27 — DataHub routes, clickable capability cards, mobile theme control
   ============================================================ */
.presentation-card-link{display:block;color:inherit;text-decoration:none;cursor:pointer;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.presentation-card-link:hover{transform:translateY(-4px);border-color:rgba(23,195,178,.48);box-shadow:0 18px 38px rgba(7,28,51,.12)}
.presentation-card-link:focus-visible{outline:3px solid var(--accent2);outline-offset:4px;border-radius:22px}
.presentation-card-link .more{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:var(--accent)}
[data-theme="dark"] .presentation-card-link:hover{box-shadow:0 18px 40px rgba(0,0,0,.34)}

/* Standalone DataHub intentionally reuses the same full DataHub component
   and visual spacing as the homepage copy. */
.standalone-datahub{padding:42px 0 18px;scroll-margin-top:88px}
.standalone-datahub #phero{display:none}
.standalone-datahub #content.section{padding-top:8px}
.standalone-datahub .home-datahub-head{max-width:1180px;margin:0 auto 18px;padding:0 24px}
.standalone-datahub .home-datahub-head span{display:inline-block;font-weight:800;letter-spacing:.12em;text-transform:uppercase;font-size:.75rem;color:var(--accent)}
.standalone-datahub .home-datahub-head h1{font-family:var(--font-display);font-size:clamp(2rem,4vw,3.1rem);margin:8px 0 7px;color:var(--heading)}
.standalone-datahub .home-datahub-head p{margin:0;color:var(--muted);max-width:760px;line-height:1.65}

@media(max-width:760px){
  /* On phones the brand keeps the left edge; theme + hamburger form one
     compact control group on the right instead of the theme button sitting
     beside the logo. Desktop header geometry is unchanged. */
  .site-header .hdr{gap:8px}
  .site-header .brand{margin-right:auto}
  .site-header .hdr-tools{margin-left:0;flex:none}
  .site-header .nav-toggle{margin-left:0;flex:none}
  .standalone-datahub{padding-top:32px}
  .standalone-datahub .home-datahub-head{padding:0 18px}
}


/* ============================================================
   V29 — standalone DataHub layout only
   Homepage keeps the established embedded DataHub presentation.
   ============================================================ */
body[data-page="datahub"] #view-ultra .ultra-live-layout{
  display:grid;
  grid-template-columns:minmax(0,1.42fr) minmax(360px,.9fr);
  gap:20px;
  align-items:stretch;
  margin-top:10px;
}
body[data-page="datahub"] #view-ultra .ultra-sensor-pair{
  min-width:0;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:stretch;
}
body[data-page="datahub"] #view-ultra .ultra-sensor-pair .ultra-card{
  min-width:0;
  width:100%;
  height:100%;
}
body[data-page="datahub"] #view-ultra .ultra-network-pane{
  min-width:0;
  display:flex;
}
body[data-page="datahub"] #view-ultra .ultra-network-pane .ultra-albania-card{
  width:100%;
  height:100%;
  min-height:0;
  display:flex;
  flex-direction:column;
}
body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-shell{
  flex:1 1 auto;
  min-height:420px;
  height:100%;
}
body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map{
  height:100%;
  min-height:420px;
}

/* DataHub Field Tools opens as a focused, centered GIS workspace. */
body[data-page="datahub"] #view-field{
  width:min(100%,1000px);
  margin-left:auto;
  margin-right:auto;
}
body[data-page="datahub"] #view-field .dh-layout{width:100%}
body[data-page="datahub"] #view-field .map-wrap{
  height:clamp(560px,calc(100vh - 165px),680px)!important;
  min-height:560px!important;
  max-height:680px!important;
}
@media (min-width:901px) and (pointer:fine){
  body[data-page="datahub"] #view-field .ft-mobile-dock{
    width:max-content;
    max-width:calc(100% - 26px);
    overflow:visible!important;
    gap:6px;
  }
  body[data-page="datahub"] #view-field .ft-mobile-static-tool{padding-right:6px}
  body[data-page="datahub"] #view-field .ft-mobile-scroll-tools{
    flex:0 0 auto;
    overflow:visible!important;
    gap:6px;
  }
  body[data-page="datahub"] #view-field .ft-mobile-mapbtn{
    flex:0 0 62px;
    width:62px;
    height:56px;
  }
  body[data-page="datahub"] #view-field .ft-mobile-mapbtn>small{font-size:9px}
}

/* Tablet: keep both sensors together, then give the network map full width. */
@media(max-width:1100px){
  body[data-page="datahub"] #view-ultra .ultra-live-layout{grid-template-columns:1fr}
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map{min-height:360px}
}

/* Phone: one sensor per row, map below, full-width Field Tools. The existing
   fixed Lock/Use-map control + horizontally scrolling tool strip is retained. */
@media(max-width:760px){
  body[data-page="datahub"] .standalone-datahub{padding-top:18px}
  body[data-page="datahub"] .dh-subtabs{position:relative;z-index:2;margin-bottom:14px;gap:8px}
  body[data-page="datahub"] .dh-subtab{min-height:44px;flex:1 1 145px;justify-content:center}
  body[data-page="datahub"] #view-ultra .dh-feedbar{gap:10px;align-items:flex-start}
  body[data-page="datahub"] #view-ultra .ultra-live-layout{gap:16px;margin-top:6px}
  body[data-page="datahub"] #view-ultra .ultra-sensor-pair{grid-template-columns:1fr;gap:14px}
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map{min-height:330px}
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ultra-albania-card{min-height:0}
  body[data-page="datahub"] #view-field{width:100%}
  body[data-page="datahub"] #view-field .map-wrap{
    height:68vh!important;
    min-height:500px!important;
    max-height:760px!important;
  }
}
@media(max-width:430px){
  body[data-page="datahub"] .container{padding-left:12px;padding-right:12px}
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map{min-height:300px}
  body[data-page="datahub"] #view-field .map-wrap{min-height:480px!important}
}


/* ============================================================
   V30 — mobile DataHub map visibility + compact two-column footer
   ============================================================ */
@media(max-width:1100px){
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-shell{
    min-height:360px;
    height:360px;
  }
}
@media(max-width:760px){
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-shell{
    display:block;
    flex:none;
    width:100%;
    min-height:330px;
    height:330px;
  }
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-stage,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-osm-map{
    width:100%!important;
    height:100%!important;
    min-height:330px!important;
  }

  .site-footer .ft{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:24px 18px!important;
    align-items:start;
    padding:38px 0 30px;
  }
  .site-footer .ft-brand-col{grid-column:1;grid-row:1;min-width:0}
  .site-footer .ft-quick-col{grid-column:2;grid-row:1;min-width:0}
  .site-footer .ft-services-col{grid-column:1;grid-row:2;min-width:0}
  .site-footer .ft-contact-col{grid-column:2;grid-row:2;min-width:0}
  .site-footer .ft h4{margin-bottom:11px;font-size:.82rem}
  .site-footer .ft li{margin-bottom:8px}
  .site-footer .ft a{font-size:.82rem}
  .site-footer .ft-brand-col .brand{margin-bottom:8px}
  .site-footer .ft-brand-col .tagline{font-size:.73rem;line-height:1.35;margin-bottom:8px}
  .site-footer .ft-brand-col p{font-size:.76rem;line-height:1.5;margin:0;max-width:22ch}
  .site-footer .socials{gap:6px;margin-top:12px;flex-wrap:nowrap}
  .site-footer .socials a,.site-footer .socials .social-placeholder{
    width:32px;height:32px;flex:0 0 32px;
  }
  .site-footer .socials a .icon,.site-footer .socials .social-placeholder .icon{width:16px;height:16px}
  .site-footer .ft-contact-col ul{min-width:0}
  .site-footer .ft-email-link{
    display:flex;align-items:center;gap:6px;white-space:nowrap;min-width:0;
    font-size:clamp(.68rem,3.05vw,.8rem);
  }
  .site-footer .ft-email-link .icon{flex:0 0 14px;width:14px;height:14px}
  .site-footer .ft-email-link span{min-width:0}
  .site-footer .ft-address-row{display:flex;align-items:flex-start;gap:6px;font-size:.79rem;line-height:1.35}
  .site-footer .ft-address-row .icon{flex:0 0 14px;width:14px;height:14px;margin-top:2px}
}
@media(max-width:430px){
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-shell{
    min-height:300px;
    height:300px;
  }
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-stage,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-osm-map{
    min-height:300px!important;
  }
  .site-footer .ft{gap:22px 14px!important}
  .site-footer .ft-brand-col p{font-size:.72rem}
  .site-footer .ft a{font-size:.78rem}
  .site-footer .socials{gap:5px}
  .site-footer .socials a,.site-footer .socials .social-placeholder{width:30px;height:30px;flex-basis:30px}
  .site-footer .ft-email-link{font-size:.66rem;gap:4px}
}


/* ============================================================
   V31 — mobile DataHub network-card height + footer top-row alignment
   ============================================================ */
@media(max-width:760px){
  /* Match the network card to the measured height of one sensor card.
     JS supplies --aq-mobile-ultra-card-h after the DataHub is rendered. */
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ultra-albania-card{
    height:var(--aq-mobile-ultra-card-h,auto)!important;
    min-height:var(--aq-mobile-ultra-card-h,0)!important;
  }
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-shell{
    flex:1 1 auto!important;
    height:auto!important;
    min-height:0!important;
  }
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-map-stage,
  body[data-page="datahub"] #view-ultra .ultra-network-pane .ua-osm-map{
    height:100%!important;
    min-height:0!important;
  }

  /* The brand/logo has more visual weight than a text heading. Dropping
     Quick Links slightly gives the two top footer columns a cleaner baseline. */
  .site-footer .ft-quick-col{padding-top:12px}
}
@media(max-width:430px){
  .site-footer .ft-quick-col{padding-top:11px}
}


/* ============================================================
   V33 — desktop footer email icon spacing
   ============================================================ */
@media(min-width:761px){
  .site-footer .ft-email-link{
    display:inline-flex;
    align-items:center;
    gap:8px;
  }
}


/* ============================================================
   AQUORYX V39 — refresh stability + contact form contrast
   ============================================================ */
/* During a reload at a saved scroll position, keep the dynamic page hidden
   for only the few frames needed to rebuild and restore the exact viewport. */
html.aq-restoring body{visibility:hidden}

/* Contact form: force native/mobile browser text fill to follow the selected
   theme. This also fixes WebKit autofill/text rendering in dark mode. */
[data-theme="dark"] body[data-page="contact"] .field input,
[data-theme="dark"] body[data-page="contact"] .field textarea,
[data-theme="dark"] body[data-page="contact"] .field select{
  background:#0c1c2e!important;
  color:#f2f7fb!important;
  -webkit-text-fill-color:#f2f7fb!important;
  caret-color:var(--accent2);
  border-color:var(--dk-line);
  opacity:1;
  color-scheme:dark;
}
[data-theme="dark"] body[data-page="contact"] .field input::placeholder,
[data-theme="dark"] body[data-page="contact"] .field textarea::placeholder{
  color:#829bb0!important;
  -webkit-text-fill-color:#829bb0!important;
  opacity:1;
}
[data-theme="dark"] body[data-page="contact"] .field input:-webkit-autofill,
[data-theme="dark"] body[data-page="contact"] .field input:-webkit-autofill:hover,
[data-theme="dark"] body[data-page="contact"] .field input:-webkit-autofill:focus{
  -webkit-text-fill-color:#f2f7fb!important;
  caret-color:var(--accent2)!important;
  -webkit-box-shadow:0 0 0 1000px #0c1c2e inset!important;
  box-shadow:0 0 0 1000px #0c1c2e inset!important;
}
[data-theme="light"] body[data-page="contact"] .field input,
[data-theme="light"] body[data-page="contact"] .field textarea,
[data-theme="light"] body[data-page="contact"] .field select{
  color:var(--text)!important;
  -webkit-text-fill-color:var(--text)!important;
  caret-color:var(--accent);
  opacity:1;
  color-scheme:light;
}
