/* PoolWindow — premium design system */
:root{
  --ink:#0A2230;--ink2:#123240;--paper:#FFFFFF;--mist:#F5FAFB;--panel:#EBF4F6;
  --deep:#0F6E7E;--aqua:#1FA3B8;--aqua2:#5AC8D8;--gold:#C9A227;--gold2:#E4C765;
  --warm:#D97706;--ok:#1F7A4D;--line:#D9E6E9;--muted:#4A6572;
  --radius:14px;--radius-s:9px;--maxw:64rem;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --display:Fraunces,Georgia,"Times New Roman",serif;
  --grad-sea:linear-gradient(135deg,#0B2836 0%,#0F6E7E 58%,#1FA3B8 100%);
  --grad-btn:linear-gradient(135deg,#0F6E7E 0%,#1FA3B8 100%);
  --shadow-s:0 1px 2px rgba(10,34,48,.06),0 1px 6px rgba(10,34,48,.05);
  --shadow-m:0 2px 6px rgba(10,34,48,.07),0 10px 28px rgba(10,34,48,.09);
  --shadow-l:0 6px 16px rgba(10,34,48,.12),0 24px 60px rgba(10,34,48,.16);
}
@font-face{font-family:Archivo;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/archivo-700.woff2) format("woff2")}
@font-face{font-family:Fraunces;font-style:normal;font-weight:600 700;font-display:swap;src:url(/assets/fonts/fraunces-latin.woff2) format("woff2")}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{font:16px/1.65 var(--sans);color:var(--ink);background:var(--mist)}
h1,h2,.wnum{font-family:var(--display);font-weight:600;line-height:1.15;letter-spacing:-.015em;color:var(--ink)}
h3,.brand{font-family:Archivo,var(--sans);font-weight:700;line-height:1.25;letter-spacing:-.01em}
h1{font-size:clamp(1.8rem,1.3rem + 2vw,2.55rem);margin:.5rem 0 .7rem;text-wrap:balance}
h2{font-size:clamp(1.35rem,1.15rem + .8vw,1.7rem);margin:2.6rem 0 .8rem;padding-top:.4rem;scroll-margin-top:5rem}
h2::after{content:"";display:block;width:2.6rem;height:3px;margin-top:.45rem;border-radius:2px;background:linear-gradient(90deg,var(--gold),var(--gold2))}
h3{font-size:1.06rem;margin:1.3rem 0 .45rem;scroll-margin-top:5rem}
p{margin:.7rem 0}
a{color:var(--deep);text-underline-offset:2px;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--aqua);outline-offset:2px;border-radius:3px}
main{max-width:var(--maxw);margin:0 auto;padding:0 1.1rem 4rem}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 1.1rem}
code{background:var(--panel);border:1px solid var(--line);border-radius:5px;padding:.06em .35em;font-size:.88em}

/* ---------- header ---------- */
header.site{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.86);backdrop-filter:saturate(160%) blur(12px);-webkit-backdrop-filter:saturate(160%) blur(12px);border-bottom:1px solid rgba(216,230,233,.8);transition:box-shadow .25s}
header.site.scrolled{box-shadow:var(--shadow-s)}
header.site .wrap{display:flex;align-items:center;gap:1.1rem;flex-wrap:wrap;padding-top:.72rem;padding-bottom:.72rem}
.brand{font-size:1.16rem;color:var(--ink);text-decoration:none;display:flex;align-items:center;gap:.5rem}
.brand svg{flex:none;filter:drop-shadow(0 1px 2px rgba(15,110,126,.35))}
nav.top{margin-left:auto;display:flex;gap:.15rem;font-size:.93rem;overflow-x:auto;max-width:100%}
nav.top a{text-decoration:none;color:var(--muted);padding:.42rem .7rem;border-radius:999px;white-space:nowrap;transition:background .15s,color .15s}
nav.top a:hover{color:var(--deep);background:var(--panel)}

/* ---------- breadcrumbs / meta ---------- */
.crumbs{font-size:.8rem;color:var(--muted);margin:1.15rem 0 .2rem}
.crumbs ol{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}
.crumbs li+li::before{content:"›";margin-right:.3rem;color:#AFC6CC}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--deep)}
.kicker{font-size:.76rem;text-transform:uppercase;letter-spacing:.14em;color:var(--gold);font-weight:700;margin-top:1.2rem}
.kicker::before{content:"";display:inline-block;width:1.4rem;height:2px;background:linear-gradient(90deg,var(--gold),var(--gold2));border-radius:2px;vertical-align:.24em;margin-right:.5rem}
.lead{font-size:1.09rem;color:var(--ink2);max-width:62ch}
.lead strong{color:var(--deep)}
.updated{font-size:.8rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.35rem .6rem;align-items:center}
.updated a{color:var(--deep);text-decoration:none;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:.08rem .6rem}
.updated a:hover{border-color:var(--deep)}
.small{font-size:.85rem;color:var(--muted)}
.notice{border-left:3px solid var(--warm);padding:.6rem 1rem;background:#FCF4E7;border-radius:0 var(--radius-s) var(--radius-s) 0;font-size:.92rem;margin:.9rem 0}

/* ---------- media banners ---------- */
.pagemedia{margin:1.4rem 0 .4rem;position:relative;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-m)}
.pagemedia img{display:block;width:100%;height:auto;aspect-ratio:1400/600;object-fit:cover}
.pagemedia.citymedia img{aspect-ratio:1600/560}
.pagemedia figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.5rem 1.2rem .65rem;font-size:.78rem;color:#E8F4F6;background:linear-gradient(180deg,transparent,rgba(8,30,42,.72));letter-spacing:.02em}
.pagemedia .medialabel{position:absolute;left:1.1rem;bottom:.6rem;font-family:Archivo,var(--sans);font-weight:700;font-size:1rem;color:#fff;text-shadow:0 1px 8px rgba(8,30,42,.6)}
.pagemedia .mediacredit{position:absolute;right:1rem;bottom:.6rem;color:#CFE5E9;text-decoration:none;font-size:.72rem;opacity:.85}
.pagemedia .mediacredit:hover{opacity:1;color:#fff}

/* ---------- hero (home) ---------- */
.hero{position:relative;padding:3.6rem 0 3rem;border-bottom:0;background:var(--grad-sea);color:#F2FAFB;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background-image:linear-gradient(100deg,rgba(8,32,44,.88) 26%,rgba(10,46,60,.55) 55%,rgba(10,40,54,.25)),url(/assets/img/hero-home.jpg);background-size:cover;background-position:center 62%}
@media(max-width:44rem){.hero::before{background-image:linear-gradient(100deg,rgba(8,32,44,.9) 30%,rgba(10,46,60,.6)),url(/assets/img/hero-home-800.jpg)}}
.hero>.wrap{position:relative}
.hero h1{color:#fff;font-size:clamp(2.1rem,1.5rem + 3vw,3.3rem);max-width:17ch;text-shadow:0 2px 24px rgba(5,25,35,.45)}
.hero .lead{color:#DCEef2;max-width:56ch;font-size:1.1rem;text-shadow:0 1px 12px rgba(5,25,35,.5)}
.hero .eyebrow{font-size:.78rem;text-transform:uppercase;letter-spacing:.16em;font-weight:700;color:var(--gold2)}
.herostats{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.5rem}
.herostats span{border:1px solid rgba(255,255,255,.28);background:rgba(10,40,54,.38);backdrop-filter:blur(6px);border-radius:999px;padding:.38rem .95rem;font-size:.82rem;color:#EAF6F8}
.herostats b{color:#fff;font-family:Archivo,var(--sans)}

/* ---------- search ---------- */
.search{display:flex;gap:.55rem;margin:1.3rem 0 .4rem;max-width:31rem}
.search input{flex:1;padding:.8rem 1.05rem;border:1px solid var(--line);border-radius:999px;font:inherit;background:#fff;box-shadow:var(--shadow-s)}
.hero .search input{border-color:rgba(255,255,255,.4);box-shadow:0 10px 30px rgba(5,25,35,.35)}
.search button,.btn{padding:.62rem 1.25rem;border:0;border-radius:999px;background:var(--grad-btn);color:#fff;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;display:inline-block;box-shadow:0 4px 14px rgba(15,110,126,.35);transition:transform .15s,box-shadow .15s}
.search button:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(15,110,126,.42);color:#fff}
.btn.ghost{background:#fff;color:var(--deep);border:1px solid var(--deep);box-shadow:none}
.btn.ghost:hover{background:var(--panel);color:var(--ink)}
.results{list-style:none;padding:0;margin:.3rem 0;max-width:31rem;border:1px solid var(--line);border-radius:var(--radius-s);display:none;background:#fff;box-shadow:var(--shadow-m);overflow:hidden;position:relative;z-index:5}
.results li a{display:block;padding:.6rem .9rem;text-decoration:none;border-top:1px solid var(--line);color:var(--ink)}
.results li:first-child a{border-top:0}
.results li a:hover,.results li a.sel{background:var(--panel)}

/* ---------- entry cards / guide cards ---------- */
.entry{display:flex;gap:1rem;flex-wrap:wrap;margin:1.6rem 0}
.entry a{flex:1 1 17rem;position:relative;border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem;text-decoration:none;color:var(--ink);background:var(--paper);box-shadow:var(--shadow-s);overflow:hidden;transition:transform .18s,box-shadow .18s,border-color .18s}
.entry a::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--grad-btn);opacity:.85}
.entry a:hover{transform:translateY(-2px);box-shadow:var(--shadow-m);border-color:var(--aqua)}
.entry b{display:block;font-family:Archivo,var(--sans);font-size:1.1rem;color:var(--deep);margin-bottom:.3rem}
.entry span{font-size:.9rem;color:var(--muted)}
.guidegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin:1.4rem 0;padding:0;list-style:none}
.guidegrid a{display:block;border-radius:var(--radius);overflow:hidden;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);box-shadow:var(--shadow-s);transition:transform .18s,box-shadow .18s}
.guidegrid a:hover{transform:translateY(-3px);box-shadow:var(--shadow-m)}
.guidegrid img{width:100%;aspect-ratio:16/7;object-fit:cover;display:block}
.guidegrid b{display:block;font-family:Archivo,var(--sans);padding:.75rem .95rem .2rem;color:var(--deep)}
.guidegrid span{display:block;padding:0 .95rem .85rem;font-size:.85rem;color:var(--muted)}

/* ---------- cards & panels ---------- */
.card{border:1px solid var(--line);border-radius:var(--radius);padding:1.15rem 1.25rem;background:var(--paper);box-shadow:var(--shadow-s)}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.2rem}
.widget{border:1px solid var(--line);border-left:4px solid var(--deep);border-radius:var(--radius);padding:1.15rem 1.3rem;margin:1.4rem 0;background:linear-gradient(180deg,#fff, #F6FBFC);box-shadow:var(--shadow-s)}
.widget h2{margin:0 0 .5rem;font-size:1.12rem;font-family:Archivo,var(--sans);font-weight:700}
.widget h2::after{display:none}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
@media(max-width:44rem){.grid2{grid-template-columns:1fr}}
.badge{display:inline-block;font-weight:700;font-size:.78rem;letter-spacing:.05em;text-transform:uppercase;padding:.3rem .75rem;border-radius:999px;border:1px solid currentColor;background:#fff}
.badge.ok{color:var(--ok)}.badge.deep{color:var(--deep)}.badge.warm{color:var(--warm)}.badge.muted{color:var(--muted)}
.wnum{font-size:2.3rem;font-variant-numeric:tabular-nums;background:var(--grad-btn);-webkit-background-clip:text;background-clip:text;color:transparent}
.wnote{font-size:.8rem;color:var(--muted)}
.statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:.9rem;margin:1.1rem 0}
.stat{border:1px solid var(--line);border-radius:var(--radius);padding:.85rem .95rem;background:#fff;box-shadow:var(--shadow-s);position:relative;overflow:hidden}
.stat::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;background:var(--grad-btn);opacity:.7}
.stat b{display:block;font-family:var(--display);font-weight:600;font-size:1.45rem;font-variant-numeric:tabular-nums;color:var(--deep)}
.stat span{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}

/* ---------- tables ---------- */
table{border-collapse:collapse;width:100%;font-size:.95rem;font-variant-numeric:tabular-nums}
.tablewrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-s)}
th,td{padding:.58rem .8rem;text-align:left;border-top:1px solid var(--line)}
thead th{border-top:0;background:linear-gradient(180deg,var(--panel),#E2EFF1);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink2)}
tbody tr{transition:background .12s}
tbody tr:nth-child(even){background:#F7FBFC}
tbody tr:hover{background:#EFF7F8}
td.num,th.num{text-align:right}
table.data td:nth-child(n+2),table.data th:nth-child(n+2){text-align:right}
caption{caption-side:bottom;font-size:.8rem;color:var(--muted);padding:.5rem .2rem;text-align:left}
th[data-sort]{cursor:pointer;user-select:none}
th[data-sort]:hover{color:var(--deep)}
th[data-sort]::after{content:"↕";margin-left:.3rem;opacity:.45}
th[data-sort].asc::after{content:"↑";opacity:1}
th[data-sort].desc::after{content:"↓";opacity:1}

/* ---------- charts ---------- */
.gauge{margin:.7rem 0 .2rem}
.gauge .tick{font-size:.66rem;fill:var(--muted)}
.seasonbar{margin:1rem 0}
.seasonbar svg{display:block;width:100%;height:auto}
.sb-lab{font-size:.62rem;fill:var(--muted);letter-spacing:.02em}
.legend{display:flex;flex-wrap:wrap;gap:.9rem;font-size:.78rem;color:var(--muted);margin:.4rem 0 0}
.legend span{display:inline-flex;align-items:center;gap:.35rem}
.legend i{width:.85rem;height:.55rem;border-radius:2px;display:inline-block}
.chartcard{border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-s);padding:1rem 1.1rem;margin:1.1rem 0}
.chartcard svg{display:block;width:100%;height:auto}
.chartcard .axis{font-size:.68rem;fill:var(--muted)}
.chartcard .lab{font-size:.72rem;fill:var(--ink2);font-weight:600}
.chartcard .lab-strong{font-size:.74rem;fill:var(--deep);font-weight:700}
.bars a{text-decoration:none}
.bars text.city{font-size:.76rem;fill:var(--deep);font-weight:600}
.bars a:hover text.city{fill:var(--ink);text-decoration:underline}
.bars text.val{font-size:.74rem;fill:var(--ink2);font-weight:700}

/* ---------- steps ---------- */
ol.steps{counter-reset:st;list-style:none;padding:0;margin:1.2rem 0}
ol.steps>li{position:relative;padding:.9rem 0 .9rem 3.4rem;border-top:1px solid var(--line)}
ol.steps>li::before{counter-increment:st;content:counter(st,decimal-leading-zero);position:absolute;left:0;top:.95rem;font-family:var(--display);font-weight:600;color:transparent;background:var(--grad-btn);-webkit-background-clip:text;background-clip:text;font-size:1.35rem;font-variant-numeric:tabular-nums}
ol.steps h3{margin:0 0 .25rem;font-size:1.02rem}
ol.steps p{margin:0;font-size:.95rem;color:var(--ink2)}

/* ---------- products ---------- */
.prodgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));gap:.9rem;margin:1.1rem 0;padding:0;list-style:none}
.prod{border:1px solid var(--line);border-radius:var(--radius);padding:.95rem 1.05rem;display:flex;flex-direction:column;gap:.35rem;min-height:8.2rem;background:#fff;box-shadow:var(--shadow-s);transition:transform .15s,box-shadow .15s}
.prod:hover{transform:translateY(-2px);box-shadow:var(--shadow-m)}
.prod b{font-size:.97rem}
.prod p{margin:0;font-size:.86rem;color:var(--muted);flex:1}
.prod .cta{font-size:.85rem;font-weight:600;color:var(--deep)}
span.cta{color:var(--muted)}
.prod.premium{border-color:var(--gold);background:linear-gradient(180deg,#FFFDF4,#FFF9E8)}
.ftc{font-size:.78rem;color:var(--muted);margin:.2rem 0}

/* ---------- faq ---------- */
.faq h3{border:0;border-left:3px solid var(--gold);padding:.15rem 0 .15rem .8rem;background:none;margin-top:1.5rem}
.faq p{max-width:70ch}

/* ---------- related & ring nav ---------- */
.related ul{list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr));gap:.45rem 1rem;font-size:.92rem}
.related a{text-decoration:none;display:inline-block;padding:.15rem 0}
.related a:hover{text-decoration:underline}
.related a::before{content:"→ ";color:var(--gold)}
.ringnav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1.6rem 0}
@media(max-width:38rem){.ringnav{grid-template-columns:1fr}}
.ringnav a{display:block;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-s);padding:.95rem 1.15rem;text-decoration:none;color:var(--ink);transition:transform .15s,box-shadow .15s,border-color .15s}
.ringnav a:hover{transform:translateY(-2px);box-shadow:var(--shadow-m);border-color:var(--aqua)}
.ringnav .dir{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gold);font-weight:700}
.ringnav .dest{display:block;font-family:Archivo,var(--sans);font-weight:700;color:var(--deep);margin-top:.15rem}
.ringnav .hint{display:block;font-size:.82rem;color:var(--muted);margin-top:.15rem}
.ringnav a.next{text-align:right}

/* ---------- lists ---------- */
ul.plain{list-style:none;padding:0}
ul.cols{columns:3 12rem;column-gap:2rem;list-style:none;padding:0;font-size:.93rem}
ul.cols li{margin:.22rem 0;break-inside:avoid}
ul.cols a{text-decoration:none}
ul.cols a:hover{text-decoration:underline}
.toc{font-size:.88rem;margin:.8rem 0;color:var(--muted)}
.toc a{margin-right:.9rem}

/* ---------- alerts / misc ---------- */
.alerts{border:1px dashed var(--aqua);border-radius:var(--radius);padding:1.1rem 1.2rem;margin:1.5rem 0;background:#F4FBFC}
.alerts form{display:flex;gap:.55rem;flex-wrap:wrap;margin-top:.5rem}
.alerts input[type=email]{flex:1 1 14rem;padding:.55rem .8rem;border:1px solid var(--line);border-radius:999px;font:inherit}
.hp{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}
.adslot{background:var(--panel);border:1px dashed var(--line);border-radius:var(--radius);display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.75rem;min-height:250px;margin:1.6rem 0}
.attrib{font-size:.8rem;border-top:1px solid var(--line);margin-top:2rem;padding-top:.9rem;color:var(--muted)}
.nowrap{white-space:nowrap}

/* ---------- external source icon links ---------- */
a.srcico{display:inline-flex;align-items:center;justify-content:center;width:1.45rem;height:1.45rem;border-radius:6px;border:1px solid var(--line);background:#fff;color:var(--deep);vertical-align:-.32em;margin-left:.25rem;box-shadow:var(--shadow-s);transition:transform .12s,border-color .12s}
a.srcico:hover{transform:translateY(-1px);border-color:var(--deep);color:var(--ink)}
a.srcico svg{width:.78rem;height:.78rem}

/* ---------- facts band ---------- */
.factgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem;margin:1.2rem 0}
.fact{border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-s);padding:.95rem 1.1rem}
.fact b{display:block;font-family:Archivo,var(--sans);font-size:.95rem;margin-bottom:.25rem;color:var(--ink)}
.fact p{margin:0;font-size:.88rem;color:var(--ink2)}
.fact .src{display:block;margin-top:.4rem;font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}

/* ---------- footer ---------- */
footer.site{border-top:0;margin-top:3rem;background:linear-gradient(180deg,#0B2836,#081E2A);color:#B9CFD6}
.footwave{display:block;width:100%;height:auto;margin-bottom:-1px;background:var(--mist)}
footer.site .wrap{padding:2.2rem 1.1rem 2.4rem;font-size:.86rem;color:#9FB9C1}
.footgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem;margin-bottom:1.6rem}
@media(max-width:52rem){.footgrid{grid-template-columns:1fr 1fr}}
@media(max-width:34rem){.footgrid{grid-template-columns:1fr}}
footer.site .fbrand{font-family:Archivo,var(--sans);font-weight:700;font-size:1.1rem;color:#fff;display:flex;align-items:center;gap:.5rem;margin-bottom:.6rem}
footer.site .footgrid b{display:block;color:#E4F0F2;font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;margin-bottom:.6rem}
footer.site nav{display:flex;flex-direction:column;gap:.4rem;margin:0}
footer.site a{color:#B9CFD6;text-decoration:none}
footer.site a:hover{color:#fff;text-decoration:underline}
footer.site .legalline{border-top:1px solid rgba(185,207,214,.18);padding-top:1.1rem;font-size:.8rem;color:#7E9AA3}
footer.site .legalline a{color:#A7C2CA}

/* ---------- print & motion ---------- */
@media(prefers-reduced-motion:no-preference){.results li a,.entry a,.prod{transition:background .15s,border-color .15s}}
@media print{header.site,footer.site,.adslot,.alerts,.pagemedia,.ringnav{display:none}}
