/**
 * Platinum Surface 2.9.7 — Public Weather Composition
 * Canonical contract: ps-weather-*
 * Reader-facing presentation only. CMS diagnostics and source-health UI are intentionally excluded.
 */
:root{
  --ps-weather-radius-xl:26px;
  --ps-weather-radius-lg:20px;
  --ps-weather-radius-md:15px;
  --ps-weather-blue:#157cb7;
  --ps-weather-cyan:#29aebf;
  --ps-weather-navy:#082948;
  --ps-weather-good:#17755b;
  --ps-weather-watch:#a96d14;
  --ps-weather-alert:#b43f4b;
  --ps-weather-card:color-mix(in srgb,var(--ps-public-surface) 96%,#fff 4%);
  --ps-weather-card-soft:color-mix(in srgb,var(--ps-public-surface-2) 92%,#fff 8%);
  --ps-weather-line:color-mix(in srgb,var(--ps-public-border) 88%,transparent);
  --ps-weather-shadow:0 16px 42px rgba(3,30,55,.08);
}
[data-ps-theme="dark"],html[data-theme="dark"]{
  --ps-weather-card:color-mix(in srgb,var(--ps-public-surface) 97%,#fff 3%);
  --ps-weather-card-soft:color-mix(in srgb,var(--ps-public-surface-2) 97%,#fff 3%);
  --ps-weather-shadow:0 18px 50px rgba(0,0,0,.28);
}

.ps-weather-body{background:var(--ps-public-bg);color:var(--ps-public-text)}
.ps-weather-page{min-height:60vh}
.ps-weather-eyebrow,.ps-weather-label{display:block;color:var(--ps-public-accent);font-size:.68rem;font-weight:900;letter-spacing:.095em;text-transform:uppercase}

.ps-weather-hero{position:relative;overflow:hidden;padding:48px 0 42px;background:
  radial-gradient(circle at 85% 18%,rgba(81,206,221,.27),transparent 22rem),
  linear-gradient(118deg,#072844 0%,#0b6894 54%,#0d8d95 100%);color:#fff}
.ps-weather-hero::after{content:"";position:absolute;inset:auto -8% -58% auto;width:460px;height:460px;border-radius:50%;background:rgba(255,255,255,.07);pointer-events:none}
.ps-weather-hero__grid{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(350px,.88fr);gap:clamp(30px,5vw,70px);align-items:center}
.ps-weather-hero .ps-weather-eyebrow{color:#b6eef4}
.ps-weather-hero h1{margin:6px 0 0;color:#fff;font-size:clamp(2.7rem,5vw,4.7rem);line-height:.98;letter-spacing:-.055em;font-weight:900}
.ps-weather-hero__lead{max-width:690px;margin:17px 0 0;color:rgba(255,255,255,.82);font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.62;font-weight:600}
.ps-weather-hero__meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.ps-weather-hero__meta span{display:inline-flex;align-items:center;min-height:29px;padding:0 10px;border:1px solid rgba(255,255,255,.17);border-radius:999px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.78);font-size:.73rem;font-weight:760}

.ps-weather-current{position:relative;z-index:1;padding:22px;border:1px solid rgba(255,255,255,.19);border-radius:var(--ps-weather-radius-xl);background:linear-gradient(160deg,rgba(255,255,255,.17),rgba(255,255,255,.075));box-shadow:0 24px 58px rgba(0,0,0,.16);backdrop-filter:blur(16px)}
.ps-weather-current__head{display:grid;grid-template-columns:62px 1fr;gap:14px;align-items:center}
.ps-weather-current__icon{width:62px;height:62px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.2);border-radius:19px;background:rgba(255,255,255,.11);font-size:1.8rem}
.ps-weather-current .ps-weather-label{color:rgba(255,255,255,.62)}
.ps-weather-current h2{margin:4px 0 0;color:#fff;font-size:clamp(1.35rem,2.2vw,1.7rem);line-height:1.08;letter-spacing:-.035em}
.ps-weather-current__temperature{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-top:18px;padding:15px 16px;border:1px solid rgba(255,255,255,.13);border-radius:16px;background:rgba(0,31,57,.18)}
.ps-weather-current__temperature span{color:rgba(255,255,255,.58);font-size:.7rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ps-weather-current__temperature strong{color:#fff;font-size:1.2rem;line-height:1.2;text-align:right}
.ps-weather-current__synopsis{margin:15px 0 0;color:rgba(255,255,255,.81);font-size:.9rem;line-height:1.55;font-weight:620}
.ps-weather-unit-toggle{display:flex;align-items:center;gap:7px;margin-top:17px;flex-wrap:wrap}
.ps-weather-unit-toggle>span{margin-right:3px;color:rgba(255,255,255,.54);font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.ps-weather-unit-toggle button{min-height:31px;padding:0 10px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.8);font:inherit;font-size:.73rem;font-weight:850;cursor:pointer}
.ps-weather-unit-toggle button:hover,.ps-weather-unit-toggle button.is-active{background:#fff;color:#07385b;border-color:#fff}

.ps-weather-content{padding-top:22px;padding-bottom:20px}
.ps-weather-tropical-strip{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:15px;align-items:center;padding:15px 17px;border:1px solid var(--ps-weather-line);border-radius:18px;background:var(--ps-weather-card);box-shadow:var(--ps-weather-shadow)}
.ps-weather-tropical-strip__icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:color-mix(in srgb,var(--ps-public-accent) 10%,var(--ps-weather-card-soft));font-size:1.25rem}
.ps-weather-tropical-strip__copy h2{margin:4px 0 0;color:var(--ps-public-text);font-size:1rem;line-height:1.22}
.ps-weather-tropical-strip__copy p{margin:4px 0 0;color:var(--ps-public-muted);font-size:.79rem;line-height:1.45;font-weight:620}
.ps-weather-tropical-strip>a{display:inline-flex;align-items:center;gap:6px;color:var(--ps-public-accent);font-size:.76rem;font-weight:900;text-decoration:none;white-space:nowrap}

.ps-weather-snapshot{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:14px 0 22px}
.ps-weather-snapshot__item{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px;align-items:center;padding:13px 14px;border:1px solid var(--ps-weather-line);border-radius:16px;background:var(--ps-weather-card-soft)}
.ps-weather-snapshot__icon{width:40px;height:40px;display:grid;place-items:center;border-radius:13px;background:color-mix(in srgb,var(--ps-public-accent) 9%,transparent);font-size:1.12rem}
.ps-weather-snapshot__item div>span{display:block;color:var(--ps-public-muted);font-size:.63rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ps-weather-snapshot__item strong{display:block;margin-top:3px;color:var(--ps-public-text);font-size:.86rem;line-height:1.28}

.ps-weather-layout{display:grid;grid-template-columns:minmax(0,1fr) 304px;gap:22px;align-items:start}
.ps-weather-main-column{display:grid;gap:20px;min-width:0}
.ps-weather-panel,.ps-weather-side-card{border:1px solid var(--ps-weather-line);border-radius:var(--ps-weather-radius-lg);background:var(--ps-weather-card);box-shadow:var(--ps-weather-shadow)}
.ps-weather-panel{padding:clamp(20px,2.7vw,28px)}
.ps-weather-section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:18px}
.ps-weather-section-head>div{min-width:0}
.ps-weather-section-head .ps-weather-eyebrow{margin-bottom:5px}
.ps-weather-section-head h2{margin:0;color:var(--ps-public-text);font-size:clamp(1.4rem,2.2vw,1.9rem);line-height:1.06;letter-spacing:-.038em}
.ps-weather-section-head>p{max-width:370px;margin:0;color:var(--ps-public-muted);font-size:.8rem;line-height:1.5;font-weight:620;text-align:right}

.ps-weather-today-grid{display:grid;grid-template-columns:minmax(0,1.03fr) minmax(0,.97fr);gap:13px}
.ps-weather-today-primary{padding:21px;border:1px solid color-mix(in srgb,var(--ps-public-accent) 20%,var(--ps-weather-line));border-radius:18px;background:linear-gradient(155deg,color-mix(in srgb,var(--ps-public-accent) 8%,var(--ps-weather-card-soft)),var(--ps-weather-card-soft))}
.ps-weather-today-primary h3{margin:7px 0 10px;color:var(--ps-public-text);font-size:1.42rem;line-height:1.12;letter-spacing:-.025em}
.ps-weather-today-primary p{margin:0;color:var(--ps-public-text-soft);font-size:.93rem;line-height:1.62;font-weight:620}
.ps-weather-today-details{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.ps-weather-today-details article{padding:14px;border:1px solid var(--ps-weather-line);border-radius:15px;background:var(--ps-weather-card-soft)}
.ps-weather-today-details span{display:block;color:var(--ps-public-accent);font-size:.63rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ps-weather-today-details p{margin:7px 0 0;color:var(--ps-public-text-soft);font-size:.79rem;line-height:1.48;font-weight:620}

.ps-weather-four-day{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.ps-weather-day-card{padding:16px;border:1px solid var(--ps-weather-line);border-radius:17px;background:var(--ps-weather-card-soft)}
.ps-weather-day-card__top{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ps-weather-day-card__top span{color:var(--ps-public-accent);font-size:.65rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.ps-weather-day-card__top b{font-size:1.18rem}
.ps-weather-day-card h3{margin:10px 0 6px;color:var(--ps-public-text);font-size:1rem;line-height:1.2}
.ps-weather-day-card>p{min-height:3.7em;margin:0;color:var(--ps-public-muted);font-size:.75rem;line-height:1.45;font-weight:620}
.ps-weather-day-card dl{display:grid;gap:6px;margin:13px 0 0;padding-top:11px;border-top:1px solid var(--ps-weather-line)}
.ps-weather-day-card dl div{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.ps-weather-day-card dt{color:var(--ps-public-muted);font-size:.61rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em}
.ps-weather-day-card dd{margin:0;color:var(--ps-public-text);font-size:.68rem;line-height:1.35;font-weight:760;text-align:right}

.ps-weather-planning-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ps-weather-planning-card{padding:17px;border:1px solid var(--ps-weather-line);border-radius:17px;background:var(--ps-weather-card-soft)}
.ps-weather-planning-card>span{display:block;color:var(--ps-public-accent);font-size:.64rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.ps-weather-planning-card h3{margin:7px 0 7px;color:var(--ps-public-text);font-size:.98rem;line-height:1.24}
.ps-weather-planning-card p{margin:0;color:var(--ps-public-muted);font-size:.78rem;line-height:1.5;font-weight:620}

.ps-weather-tropical-lead{display:grid;grid-template-columns:145px minmax(0,1fr);gap:16px;padding:17px;border:1px solid var(--ps-weather-line);border-radius:18px;background:var(--ps-weather-card-soft)}
.ps-weather-tropical-lead__badge{display:grid;place-items:center;min-height:94px;padding:12px;border-radius:15px;background:var(--ps-weather-navy);color:#fff;font-size:.82rem;font-weight:900;text-align:center}
.ps-weather-tropical-lead h3{margin:2px 0 7px;color:var(--ps-public-text);font-size:1.08rem;line-height:1.2}
.ps-weather-tropical-lead p{margin:0;color:var(--ps-public-muted);font-size:.8rem;line-height:1.5;font-weight:620}
.ps-weather-tropical-lead small{display:block;margin-top:9px;color:var(--ps-public-muted);font-size:.67rem;font-weight:760}
.ps-weather-active-storms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}
.ps-weather-storm-card{padding:16px;border:1px solid var(--ps-weather-line);border-radius:17px;background:var(--ps-weather-card-soft)}
.ps-weather-storm-card>span{display:block;color:var(--ps-public-accent);font-size:.64rem;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.ps-weather-storm-card h3{margin:7px 0;color:var(--ps-public-text);font-size:1rem;line-height:1.22}
.ps-weather-storm-card p{margin:0;color:var(--ps-public-muted);font-size:.78rem;line-height:1.5;font-weight:620}
.ps-weather-storm-card details{margin-top:11px;padding-top:10px;border-top:1px solid var(--ps-weather-line)}
.ps-weather-storm-card summary{cursor:pointer;color:var(--ps-public-accent);font-size:.74rem;font-weight:900}
.ps-weather-official-text{max-height:380px;overflow:auto;margin-top:9px;padding:12px;border:1px solid var(--ps-weather-line);border-radius:13px;background:var(--ps-public-bg);color:var(--ps-public-text-soft);font:600 .72rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.ps-weather-tropical-actions{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px}
.ps-weather-tropical-actions a{display:inline-flex;align-items:center;gap:6px;min-height:36px;padding:0 12px;border:1px solid var(--ps-weather-line);border-radius:999px;background:var(--ps-weather-card-soft);color:var(--ps-public-accent);font-size:.74rem;font-weight:900;text-decoration:none}

.ps-weather-sidebar{display:grid;gap:13px;position:sticky;top:calc(var(--ps-public-header-height) + 18px)}
.ps-weather-side-card{padding:17px}
.ps-weather-side-card .ps-weather-eyebrow{margin-bottom:6px}
.ps-weather-side-card h2{margin:0 0 9px;color:var(--ps-public-text);font-size:1.03rem;line-height:1.22;letter-spacing:-.02em}
.ps-weather-side-card p{margin:0;color:var(--ps-public-muted);font-size:.8rem;line-height:1.55;font-weight:620}
.ps-weather-side-card--today{background:linear-gradient(150deg,var(--ps-weather-card),color-mix(in srgb,var(--ps-public-accent) 5%,var(--ps-weather-card-soft)))}
.ps-weather-mini-facts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}
.ps-weather-mini-facts>div{padding:10px;border:1px solid var(--ps-weather-line);border-radius:13px;background:var(--ps-weather-card-soft)}
.ps-weather-mini-facts span{display:block;color:var(--ps-public-muted);font-size:.61rem;font-weight:900;text-transform:uppercase;letter-spacing:.07em}
.ps-weather-mini-facts strong{display:block;margin-top:4px;color:var(--ps-public-text);font-size:.82rem}
.ps-weather-side-card--ad{overflow:hidden}
.ps-weather-links{display:grid;gap:7px}
.ps-weather-links a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;border:1px solid var(--ps-weather-line);border-radius:12px;background:var(--ps-weather-card-soft);color:var(--ps-public-text);font-size:.77rem;font-weight:850;text-decoration:none}
.ps-weather-links a:hover{border-color:color-mix(in srgb,var(--ps-public-accent) 45%,var(--ps-weather-line));color:var(--ps-public-accent)}
.ps-weather-side-card--notice{background:linear-gradient(155deg,var(--ps-weather-card),color-mix(in srgb,var(--ps-weather-watch) 5%,var(--ps-weather-card-soft)))}
.ps-weather-inline-link{display:inline-flex;gap:6px;margin-top:11px;color:var(--ps-public-accent);font-size:.76rem;font-weight:900;text-decoration:none}
.ps-weather-sponsored{max-width:900px;margin:24px auto 12px}

.ps-weather-tone--quiet,.ps-weather-tone--fresh,.ps-weather-tone--good,.ps-weather-tone--success{border-color:color-mix(in srgb,var(--ps-weather-good) 30%,var(--ps-weather-line))}
.ps-weather-tone--watch,.ps-weather-tone--caution,.ps-weather-tone--warning{border-color:color-mix(in srgb,var(--ps-weather-watch) 34%,var(--ps-weather-line))}
.ps-weather-tone--alert,.ps-weather-tone--danger{border-color:color-mix(in srgb,var(--ps-weather-alert) 36%,var(--ps-weather-line));background:linear-gradient(155deg,color-mix(in srgb,var(--ps-weather-alert) 6%,var(--ps-weather-card)),var(--ps-weather-card))}
.ps-weather-tone--monitor,.ps-weather-tone--neutral,.ps-weather-tone--info,.ps-weather-tone--secondary{border-color:var(--ps-weather-line)}

@media(max-width:1120px){
  .ps-weather-hero__grid{grid-template-columns:minmax(0,1fr) minmax(330px,.86fr);gap:32px}
  .ps-weather-layout{grid-template-columns:minmax(0,1fr) 280px}
  .ps-weather-four-day{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ps-weather-snapshot{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
  .ps-weather-hero{padding:40px 0 36px}
  .ps-weather-hero__grid,.ps-weather-layout{grid-template-columns:1fr}
  .ps-weather-current{max-width:660px}
  .ps-weather-sidebar{position:static;grid-template-columns:repeat(2,minmax(0,1fr))}
  .ps-weather-tropical-strip{grid-template-columns:48px 1fr}
  .ps-weather-tropical-strip>a{grid-column:2}
}
@media(max-width:700px){
  .ps-weather-hero h1{font-size:clamp(2.45rem,11vw,3.6rem)}
  .ps-weather-today-grid,.ps-weather-today-details,.ps-weather-planning-grid,.ps-weather-active-storms,.ps-weather-sidebar{grid-template-columns:1fr}
  .ps-weather-section-head{display:block}
  .ps-weather-section-head>p{margin-top:8px;max-width:none;text-align:left}
  .ps-weather-tropical-lead{grid-template-columns:1fr}
  .ps-weather-tropical-lead__badge{min-height:48px;width:fit-content;min-width:130px}
}
@media(max-width:520px){
  .ps-weather-content{padding-top:15px}
  .ps-weather-snapshot,.ps-weather-four-day{grid-template-columns:1fr}
  .ps-weather-panel{padding:17px}
  .ps-weather-current{padding:17px}
  .ps-weather-current__head{grid-template-columns:54px 1fr}
  .ps-weather-current__icon{width:54px;height:54px;border-radius:17px}
  .ps-weather-current__temperature{align-items:flex-start;flex-direction:column}
  .ps-weather-current__temperature strong{text-align:left}
  .ps-weather-tropical-strip{grid-template-columns:42px 1fr;padding:14px}
  .ps-weather-tropical-strip__icon{width:42px;height:42px;border-radius:13px}
}
@media(prefers-reduced-motion:reduce){.ps-weather-page *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
