@font-face{font-family:Manrope;src:url('/assets/fonts/Manrope-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Manrope;src:url('/assets/fonts/Manrope-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Manrope;src:url('/assets/fonts/Manrope-Bold.ttf') format('truetype');font-weight:700;font-display:swap}

:root{--bg:#f6fbfa;--surface:#fff;--brand:#25b5a5;--action:#006a70;--deep:#0b3440;--text:#122930;--muted:#526e75;--subtle:#5c6e73;--border:#d9e5e5;--strong-border:#c9d9d6;--soft:#e7f7f4;--good:#16856e;--caution:#a55b00;--bad:#b3261e;--swim:#2e8cb8;--swim-bg:#e6f3fa;--swim-border:#c4e1f0;--paddle:#16b6a6;--paddle-bg:#e4f8f4;--paddle-border:#bde5d7;--kayak:#9b5f20;--kayak-bg:#fff2e2;--kayak-border:#e8cfb0;--excellent:#0a8a73;--excellent-bg:#e4f8f4;--match-good:#9c6a12;--match-good-bg:#fff0d5;--marine:#1a6eb2;--marine-bg:#f6fafd;--marine-card:#ddeff8;--marine-border:#bfddea;--shadow:0 4px 12px rgba(11,52,64,.05)}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);font-family:Manrope,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.45}
button,input{font:inherit}
a{color:var(--action);text-underline-offset:3px}
.app-shell{width:min(720px,calc(100% - 64px));margin-inline:auto}
.shell{width:min(920px,calc(100% - 64px));margin-inline:auto}
.skip-link{position:absolute;left:-9999px;top:10px;background:var(--deep);color:#fff;padding:10px 14px;border-radius:8px;z-index:40}.skip-link:focus{left:10px}
.visually-hidden{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}

.site-header{background:#fff;border-bottom:1px solid var(--border)}
.header-inner{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand{display:block;line-height:0}.brand img{display:block;width:116px;height:auto}
.header-actions{display:flex;align-items:center;gap:8px}.header-link{color:var(--deep);font-size:.82rem;font-weight:700;text-decoration:none;border:1px solid var(--border);border-radius:999px;padding:7px 12px}
.header-link:hover{border-color:var(--brand);color:var(--action)}
.tagline{margin:0;color:var(--muted);font-size:.84rem;border-left:1px solid var(--border);padding-left:22px}
.top-nav{margin-left:auto;display:flex;gap:22px}.top-nav a{color:var(--text);text-decoration:none;font-weight:600;font-size:.86rem}

.page-shell{padding-block:22px 64px}
.today-intro h1{margin:0;color:var(--deep);font-size:clamp(20px,4vw,27px);line-height:1.2;letter-spacing:-.025em;white-space:nowrap}
.today-summary{margin:5px 0 0;color:var(--muted);font-size:14px;line-height:1.4;max-width:660px}
.location-form{position:relative;margin-top:10px}
.search-row{position:relative;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--strong-border);border-radius:13px;padding:4px 12px;box-shadow:0 3px 10px rgba(11,52,64,.035)}
.location-icon{flex:0 0 auto;font-size:15px;line-height:1}
.search-row:focus-within{border-color:var(--action);box-shadow:0 0 0 3px rgba(0,122,128,.12)}
.search-row input{width:100%;min-width:0;border:0;outline:0;padding:9px 48px 9px 0;background:transparent;color:var(--text);font-size:14px}
.location-form.is-searching .search-row:after{content:"";position:absolute;right:38px;top:50%;width:14px;height:14px;margin-top:-8px;border:2px solid rgba(0,122,128,.22);border-top-color:var(--action);border-radius:50%;animation:search-spin .7s linear infinite}
@keyframes search-spin{to{transform:rotate(360deg)}}
.search-results{position:absolute;z-index:20;right:0;left:0;top:100%;max-height:min(390px,55vh);overflow-y:auto;list-style:none;margin:7px 0 0;padding:6px;background:#fff;border:1px solid var(--strong-border);border-radius:13px;box-shadow:0 16px 38px rgba(11,52,64,.15)}
.search-results button{width:100%;border:0;background:transparent;text-align:left;padding:10px 11px;border-radius:9px;color:var(--text);cursor:pointer}.search-results button:hover,.search-results button:focus,.search-results button[aria-selected="true"]{background:var(--soft)}.search-results strong,.search-results small{display:block}.search-results small{color:var(--muted);margin-top:2px}.search-message{padding:12px;color:var(--muted);font-size:14px;line-height:1.4}
.popular-shortcuts{display:flex;align-items:center;flex-wrap:wrap;gap:5px 13px;margin-top:8px;color:var(--subtle);font-size:12px}.popular-shortcuts span{font-weight:600}.popular-shortcuts a{color:var(--action);font-weight:700;text-decoration:none}.popular-shortcuts a:hover{text-decoration:underline}

.day-tabs{display:grid;grid-template-columns:repeat(5,minmax(84px,1fr));gap:6px;margin:12px 0 16px;overflow-x:auto;scrollbar-width:thin}
.day-tabs[hidden]{display:none}
.day-tab{min-height:44px;border:1px solid var(--strong-border);border-radius:11px;background:#fff;color:var(--deep);padding:7px 8px;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap;cursor:pointer}.day-tab strong{font-size:12px}.day-tab span{font-size:11px;color:var(--subtle)}.day-tab .day-weather{display:flex;align-items:center;justify-content:center;gap:3px}.day-tab .day-weather-icon{font-size:15px;line-height:1}.day-tab .day-temperature{color:var(--deep);font-weight:700}.day-tab:hover{border-color:var(--brand);background:var(--soft)}.day-tab[aria-current="date"]{border-color:var(--brand);box-shadow:inset 0 3px 0 var(--brand);background:#f5fffd}.day-tab[aria-current="date"] strong{color:var(--action)}

.notice{border-radius:13px;padding:13px 15px;margin-bottom:16px;display:flex;gap:6px;flex-wrap:wrap;font-size:13px}.notice-warn{background:#fff0d5;color:#73480e;border:1px solid #efd6ae}.notice-error{background:#f7e7e5;color:#812b26;border:1px solid #ecc8cc}
.today-stack{display:flex;flex-direction:column;gap:18px}
.panel{background:#fff;border:1px solid var(--strong-border);border-radius:18px;box-shadow:var(--shadow)}
.weather-card{padding:20px}.weather-card>h2,.sports-section>h2{margin:0;color:var(--deep);font-size:18px;line-height:1.3;letter-spacing:-.015em}
.weather-summary{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;margin-top:13px}
.weather-icon{font-size:40px;line-height:1}.condition-copy{min-width:0}.condition-copy strong,.condition-copy span{display:block}.condition-copy strong{color:var(--deep);font-size:17px;line-height:1.25}.condition-copy span{color:var(--subtle);font-size:14px;margin-top:2px}.temperature{color:var(--deep);font-size:34px;line-height:1;font-weight:700}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:0;text-align:center;gap:6px}.metric-grid-top{margin-top:17px}.metric-grid>div{min-width:0}.metric-grid span{display:block;font-size:21px;line-height:1.2}.metric-grid dt{color:var(--subtle);font-size:12px;margin-top:4px}.metric-grid dd{margin:2px 0 0;color:var(--deep);font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.metric-divider{height:1px;background:var(--border);margin:16px 0}
.tide-credit{margin:9px 0 0;font-size:10px}.tide-credit a{color:var(--subtle)}
.quality-strip{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;margin-top:16px;padding:12px 13px;border-radius:12px;background:#f1f5f4;color:var(--deep);text-decoration:none}.quality-strip.good{background:#def5f0}.quality-strip.caution{background:#fff0d5}.quality-strip.bad{background:#f7e7e5}
.status-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#91a2a6;color:#fff;font-size:12px;font-weight:700}.status-dot.good{background:var(--good)}.status-dot.caution{background:var(--caution)}.status-dot.bad{background:var(--bad)}
.quality-copy{min-width:0}.quality-copy strong,.quality-copy small{display:block}.quality-copy strong{font-size:13px}.quality-copy small{font-size:11px;color:var(--subtle);margin-top:2px;line-height:1.35}.quality-copy .quality-checked{font-size:10px}.quality-view{font-size:12px;font-weight:700;text-decoration:underline}

.sports-section{margin-top:0}.sports-section>h2{font-size:21px}.section-intro{margin:4px 0 0;color:var(--subtle);font-size:14px}.spot-line{margin:8px 0 12px;color:var(--action);font-size:12px;font-weight:700}
.activity-list{display:flex;flex-direction:column;gap:12px}.activity-card{display:flex;gap:13px;background:#fff;border:1px solid var(--strong-border);border-radius:16px;padding:15px}.activity-icon{width:48px;height:48px;flex:0 0 48px;border-radius:14px;display:grid;place-items:center;background:var(--soft);font-size:27px}.activity-main{min-width:0;flex:1}.activity-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:9px}.activity-card h3{margin:1px 0 0;color:var(--deep);font-size:16px;line-height:1.35}.activity-card p{margin:5px 0 0;color:var(--subtle);font-size:13px;line-height:1.45}.coming-soon{background:#fbfdfd}
.pill{display:inline-flex;white-space:nowrap;border-radius:999px;padding:5px 9px;background:#def5f0;color:var(--deep);font-size:10px;font-weight:700}.pill.alternative{background:#fff0d5}.pill.none{background:#f7e7e5}.pill.neutral{background:#edf1f2;color:var(--muted)}
.session-details{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.session-details span{background:#f1f7f5;border-radius:8px;padding:5px 7px;color:var(--deep);font-size:10px;font-weight:700}
.safety-card{display:flex;gap:13px;background:#fff;border:1px solid var(--strong-border);border-radius:16px;padding:16px}.safety-card>span{font-size:25px}.safety-card strong{color:var(--deep);font-size:14px}.safety-card p{margin:3px 0 7px;color:var(--subtle);font-size:12px;line-height:1.5}.safety-card a{font-size:12px;font-weight:700;text-decoration:none}
.weather-disclaimer{margin:-8px 0 0;background:#fff;border:1px solid var(--border);border-radius:12px;padding:13px 14px;color:var(--subtle);font-size:11px;line-height:1.5}.weather-disclaimer strong{color:var(--deep);font-size:12px}.weather-disclaimer p{margin:3px 0 0}
.ad-shell{min-height:96px;border:1px dashed var(--border);background:#fff;border-radius:12px;text-align:center;padding:9px}.ad-shell>span{display:block;color:var(--subtle);font-size:9px;text-transform:uppercase;letter-spacing:.12em}
.loading-card{display:flex;align-items:center;gap:14px;padding:20px 18px}.loading-icon{font-size:34px;line-height:1}.loading-card strong{display:block;color:var(--deep);font-size:15px}.loading-card p{margin:3px 0 0;color:var(--muted);font-size:12px}.skeleton-card{min-height:180px;border-radius:16px;background:linear-gradient(100deg,#fff 30%,#edf6f4 50%,#fff 70%);background-size:400% 100%;animation:shimmer 1.5s infinite}.section-skeleton{min-height:180px}@keyframes shimmer{to{background-position:-100% 0}}

.site-footer{background:#fff;border-top:1px solid var(--border)}.footer-inner{padding-block:30px;text-align:center}.footer-inner>img{display:block;margin:0 auto 16px;height:auto}.footer-inner nav{display:flex;justify-content:center;gap:12px 17px;flex-wrap:wrap}.footer-inner nav a,.footer-inner nav button{border:0;background:none;padding:0;color:var(--muted);font:600 11px Manrope,sans-serif;text-decoration:none;cursor:pointer}.footer-inner nav a:hover,.footer-inner nav button:hover{color:var(--action)}.footer-inner .footer-locations{margin-top:13px;padding-top:13px;border-top:1px solid var(--border)}.footer-inner .footer-locations a{color:var(--action)}.footer-inner>p{margin:16px 0 0;color:var(--subtle);font-size:10px}

.cookie-dialog{width:min(500px,calc(100% - 32px));border:0;border-radius:20px;padding:0;box-shadow:0 22px 70px rgba(11,52,64,.25);color:var(--text)}.cookie-dialog::backdrop{background:rgba(11,52,64,.5)}.cookie-dialog form{position:relative;padding:24px}.dialog-close{position:absolute;right:15px;top:12px;border:0;background:transparent;color:var(--muted);font-size:28px;cursor:pointer}.dialog-emoji{margin:0;font-size:30px}.cookie-dialog h2{margin:7px 0;color:var(--deep);font-size:22px}.cookie-dialog>form>p:not(.dialog-emoji){color:var(--muted);font-size:13px}.cookie-row{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--border);padding:13px 0}.cookie-row span strong,.cookie-row span small{display:block}.cookie-row span strong{color:var(--deep);font-size:13px}.cookie-row span small{color:var(--subtle);font-size:11px;margin-top:2px}.cookie-row b{white-space:nowrap;color:var(--good);font-size:11px}.cookie-row b.off{color:var(--muted)}.dialog-choice-actions,.consent-actions{display:flex;gap:10px;justify-content:flex-end}.dialog-choice-actions{border-top:1px solid var(--border);padding-top:16px}.consent-accept,.consent-reject{border:1px solid var(--action);border-radius:10px;padding:10px 13px;font-size:13px;font-weight:700;cursor:pointer}.consent-accept{background:var(--action);color:#fff}.consent-reject{background:#fff;color:var(--action)}.consent-banner{position:fixed;z-index:100;right:20px;bottom:20px;left:20px;width:min(760px,calc(100% - 40px));margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:22px;background:#fff;border:1px solid var(--strong-border);border-radius:16px;padding:16px 18px;box-shadow:0 16px 48px rgba(11,52,64,.22)}.consent-banner strong{display:block;color:var(--deep);font-size:15px}.consent-banner p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.45}

.info-main{padding-block:48px 78px}.info-hero{max-width:760px;margin-bottom:30px}.eyebrow{margin:0 0 5px;text-transform:uppercase;letter-spacing:.12em;color:var(--action);font-size:11px;font-weight:700}.info-hero h1{margin:0;color:var(--deep);font-size:clamp(34px,6vw,54px);line-height:1.05;letter-spacing:-.045em}.info-hero p{font-size:16px;color:var(--muted);max-width:680px}.prose{max-width:780px;background:#fff;border:1px solid var(--strong-border);border-radius:18px;padding:clamp(24px,5vw,44px);box-shadow:var(--shadow)}.prose h2{color:var(--deep);margin:30px 0 9px;font-size:19px}.prose h2:first-child{margin-top:0}.prose h3{color:var(--deep);margin:19px 0 6px;font-size:15px}.prose p,.prose li{color:#405c63;font-size:14px}.prose li+li{margin-top:7px}.prose .callout{background:var(--soft);border-left:4px solid var(--brand);padding:14px 16px;color:var(--deep);border-radius:0 10px 10px 0}.back-link{display:inline-block;margin-top:24px;font-weight:700;text-decoration:none}.info-main+.site-footer .footer-inner{display:grid;grid-template-columns:1fr 2fr auto;align-items:center;gap:24px;text-align:left}.info-main+.site-footer .footer-inner>img{margin:0}.info-main+.site-footer .footer-inner>p{margin:0;white-space:nowrap}
.location-hero{margin-bottom:24px}.location-hero h1{font-size:clamp(31px,6vw,50px)}.primary-cta{display:inline-flex;align-items:center;justify-content:center;margin-top:8px;border-radius:11px;background:var(--action);color:#fff;padding:12px 17px;font-size:14px;font-weight:700;text-decoration:none}.primary-cta:hover{background:var(--deep)}.nearby-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.nearby-links a{border:1px solid var(--border);border-radius:999px;padding:7px 11px;font-size:12px;font-weight:700;text-decoration:none;background:#fff}.location-note{margin-top:18px;color:var(--subtle);font-size:12px}
.location-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0 26px}.location-card-grid a{display:flex;flex-direction:column;gap:3px;border:1px solid var(--border);border-radius:13px;padding:14px 15px;background:#f8fcfb;text-decoration:none}.location-card-grid a:hover{border-color:var(--brand);background:var(--soft)}.location-card-grid strong{color:var(--deep);font-size:15px}.location-card-grid span{color:var(--muted);font-size:12px}
.seo-context{margin-top:38px;padding:24px clamp(20px,4vw,30px);background:#fff;border:1px solid var(--strong-border);border-radius:18px;box-shadow:var(--shadow)}.seo-context h2{margin:0;color:var(--deep);font-size:21px;line-height:1.3}.seo-context h3{margin:22px 0 8px;color:var(--deep);font-size:16px}.seo-context p{margin:9px 0 0;color:var(--muted);font-size:14px;line-height:1.6}.homepage-location-links{display:flex;flex-wrap:wrap;gap:7px 20px;margin:0;padding:0;list-style:none}.homepage-location-links a{display:inline-block;padding:2px 0;color:var(--action);font-size:14px;font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}.homepage-location-links a:visited{color:#0d5d58;text-decoration-style:dotted}.homepage-location-links a:hover{color:var(--deep);text-decoration-thickness:2px}.homepage-location-links a:focus-visible{outline:3px solid rgba(37,181,165,.45);outline-offset:4px;border-radius:3px}.local-highlights{margin:13px 0 0;padding-left:20px}.local-highlights li{color:var(--muted);font-size:14px;line-height:1.55}.local-highlights li+li{margin-top:6px}
.homepage-about{margin-top:clamp(72px,9vw,112px)}
.location-empty{display:flex;align-items:flex-start;gap:14px;margin-top:22px;padding:18px;background:#fff;border:1px solid var(--strong-border);border-radius:16px;box-shadow:var(--shadow)}.location-empty-icon{font-size:30px;line-height:1}.location-empty h2{margin:0;color:var(--deep);font-size:17px}.location-empty p{margin:4px 0 0;color:var(--muted);font-size:14px;line-height:1.5}
.resource-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.resource-card-grid>a{display:grid;grid-template-columns:auto 1fr;column-gap:10px;align-items:start;border:1px solid var(--border);border-radius:14px;padding:14px;background:#f8fcfb;text-decoration:none}.resource-card-grid>a:hover{border-color:var(--brand);background:var(--soft)}.resource-card-grid>a>span{grid-row:1/3;font-size:24px;line-height:1}.resource-card-grid strong,.resource-card-grid small{display:block}.resource-card-grid strong{color:var(--deep);font-size:14px;line-height:1.35}.resource-card-grid small{margin-top:4px;color:var(--muted);font-size:11px;line-height:1.45}
.breadcrumbs{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 13px;color:var(--subtle);font-size:12px}.breadcrumbs a{color:var(--action);font-weight:600;text-decoration:none}.breadcrumbs span[aria-hidden="true"]{color:#8fa3a7}.crawl-summary{margin:18px 0 0;padding:14px 15px;border:1px solid var(--border);border-radius:13px;background:#f8fcfb;color:var(--muted);font-size:13px;line-height:1.55}.crawl-summary strong{color:var(--deep)}
.content-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(230px,.7fr);gap:24px;align-items:start}.article-prose{max-width:none}.article-prose h2{scroll-margin-top:24px}.article-prose a{font-weight:600}.article-prose .answer-box{margin:0 0 24px;padding:17px 18px;border-radius:14px;background:var(--soft);border-left:4px solid var(--brand);color:var(--deep)}.article-prose .answer-box strong{display:block;margin-bottom:4px}.article-prose .checklist{padding-left:20px}.article-prose .source-list{border-top:1px solid var(--border);margin-top:28px;padding-top:18px}.article-prose .source-list h2{margin-top:0}.content-sidebar{position:sticky;top:20px;display:flex;flex-direction:column;gap:14px}.side-card{background:#fff;border:1px solid var(--strong-border);border-radius:16px;padding:18px;box-shadow:var(--shadow)}.side-card h2{margin:0;color:var(--deep);font-size:16px}.side-card p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.side-card nav{display:flex;flex-direction:column;gap:8px;margin-top:12px}.side-card a{font-size:12px;font-weight:700;text-decoration:none}.author-box{display:flex;align-items:flex-start;gap:12px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border)}.author-mark{width:42px;height:42px;display:grid;place-items:center;flex:0 0 42px;border-radius:50%;background:var(--deep);color:#fff;font-weight:700}.author-box strong,.author-box small{display:block}.author-box strong{color:var(--deep);font-size:13px}.author-box small{margin-top:3px;color:var(--muted);font-size:11px;line-height:1.45}
.hub-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.hub-card{background:#fff;border:1px solid var(--strong-border);border-radius:17px;padding:20px;box-shadow:var(--shadow)}.hub-card h2,.hub-card h3{margin:0;color:var(--deep);font-size:18px}.hub-card p{margin:7px 0 12px;color:var(--muted);font-size:13px;line-height:1.55}.hub-card a{font-size:13px;font-weight:700;text-decoration:none}.hub-card .emoji{display:block;margin-bottom:10px;font-size:28px}.guide-list{display:grid;gap:12px}.guide-list>a{display:block;background:#fff;border:1px solid var(--strong-border);border-radius:15px;padding:18px;text-decoration:none}.guide-list>a:hover{border-color:var(--brand);background:var(--soft)}.guide-list strong,.guide-list span{display:block}.guide-list strong{color:var(--deep);font-size:16px}.guide-list span{margin-top:5px;color:var(--muted);font-size:12px;line-height:1.5}.directory-region{margin-top:28px}.directory-region h2{color:var(--deep);font-size:20px}.directory-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.directory-links a{border:1px solid var(--border);border-radius:12px;padding:12px;background:#fff;color:var(--deep);font-size:13px;font-weight:700;text-decoration:none}.directory-links a:hover{border-color:var(--brand);background:var(--soft)}
[hidden]{display:none!important}

@media(max-width:680px){.app-shell,.shell{width:min(100% - 40px,720px)}.header-inner{min-height:66px}.brand img{width:108px}.header-link{font-size:.75rem;padding:6px 10px}.page-shell{padding-block:22px 48px}.weather-card{padding:17px 16px 15px}.info-main+.site-footer .footer-inner{display:block;text-align:center}.info-main+.site-footer .footer-inner>img{margin:0 auto 15px}.info-main+.site-footer .footer-inner>p{margin-top:15px}.tagline{display:none}.location-card-grid,.hub-grid,.resource-card-grid,.directory-links{grid-template-columns:1fr}.content-grid{grid-template-columns:1fr}.content-sidebar{position:static}.consent-banner{align-items:stretch;flex-direction:column;gap:13px}.consent-actions{width:100%}.consent-actions button{flex:1}.dialog-choice-actions{flex-direction:column-reverse}.dialog-choice-actions button{width:100%}}
@media(max-width:390px){.app-shell,.shell{width:min(100% - 32px,720px)}.metric-grid{gap:2px}.metric-grid span{font-size:19px}.metric-grid dt{font-size:10px}.metric-grid dd{font-size:11px}.weather-summary{gap:9px}.weather-icon{font-size:36px}.temperature{font-size:31px}.activity-title-row{display:block}.pill{margin-top:5px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.skeleton-card{animation:none}}
.activity-local-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.activity-local-card{padding:15px;background:#f8fcfb;border:1px solid var(--border);border-radius:14px}.activity-local-card h3{margin:0;color:var(--deep);font-size:15px;line-height:1.35}.activity-local-card p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.55}
@media(max-width:680px){.activity-local-grid{grid-template-columns:1fr}}
.page-notices{display:flex;flex-direction:column;gap:16px;margin-top:24px}.page-notices .weather-disclaimer{margin:0}
.session-details{display:block;margin-top:9px}.session-reason-list{display:flex;flex-direction:column;gap:5px;margin:0;padding:0;list-style:none}.session-reason{display:flex;align-items:flex-start;gap:6px;color:var(--muted);font-size:12px;line-height:1.4}.session-reason.good{color:#286b61}.session-reason.bad{color:#985447}.session-reason.note{color:#8a682e}.session-details .session-reason-icon{display:inline-block;flex:0 0 16px;background:transparent;border-radius:0;padding:0;font-size:13px;font-weight:400;line-height:1.4}

/* Session-led weather dashboard */
.app-shell{width:min(720px,calc(100% - 64px))}
.page-shell{width:min(640px,calc(100% - 64px))}
.weather-dashboard{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(310px,.75fr);gap:22px;align-items:start}
.weather-dashboard-main,.session-sidebar{display:flex;flex-direction:column;gap:16px;min-width:0}
.session-sidebar{position:sticky;top:18px}
.activities-first{width:100%}
.daily-weather-card{background:#fff;border-color:var(--strong-border);box-shadow:var(--shadow)}
.daily-weather-card .eyebrow{color:var(--swim)}
.weather-now{padding:22px;background:linear-gradient(135deg,#f4f9fc 0%,#fff 72%);border-color:var(--swim-border);box-shadow:none}
.dashboard-panel,.sessions-panel,.app-handoff{padding:20px}
.panel-heading-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.panel-heading-row h2,.sessions-panel h2,.app-handoff h2{margin:0;color:var(--deep);font-size:21px;line-height:1.25;letter-spacing:-.02em}
.eyebrow{margin:0 0 4px;color:var(--action);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
.panel-meta{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}
.weather-now .eyebrow{color:var(--swim)}.weather-now .weather-summary{margin-top:20px;grid-template-columns:auto 1fr auto;gap:17px}
.weather-now .weather-icon{width:72px;height:72px;display:grid;place-items:center;border-radius:18px;background:#eaf4fa;font-size:48px}.weather-now .condition-copy strong{font-size:22px}.weather-now .temperature{font-size:48px}
.current-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:21px 0 0}
.current-metrics>div{padding:11px 12px;background:#fff;border:1px solid #dcebf2;border-radius:12px;min-width:0}
.current-metrics dt,.coast-grid dt{color:var(--muted);font-size:12px;font-weight:600}.current-metrics dd,.coast-grid dd{margin:4px 0 0;color:var(--deep);font-size:15px;font-weight:700;overflow:hidden;text-overflow:ellipsis}
.hourly-forecast{display:flex;gap:9px;margin:16px -4px 0;padding:2px 4px 8px;overflow-x:auto;scrollbar-width:thin;scroll-snap-type:x proximity}
.hour-card{position:relative;flex:0 0 124px;scroll-snap-align:start;padding:12px 11px;border:1px solid var(--border);border-radius:13px;background:#fff}
.hour-card.in-session,.hour-card.activity-swimming,.hour-card.activity-paddleboarding,.hour-card.activity-kayaking,.hour-card.activity-multiple{border-color:var(--border);background:#fff;box-shadow:none}
.hour-card time{display:block;color:var(--deep);font-size:13px;font-weight:700}.hour-icon{display:block;margin:7px 0 3px;font-size:24px}.hour-temp{display:block;color:var(--deep);font-size:19px;font-weight:700}
.hour-facts{display:grid;gap:3px;margin-top:7px}.hour-facts>span{display:block;color:var(--muted);font-size:11px;font-weight:600;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hour-facts .fact-icon{display:inline-block;width:18px;margin-right:2px;color:initial;font-weight:400;text-align:center}.hour-facts .rain-fact{color:var(--swim)}.hour-facts .wind-fact{color:var(--excellent)}.hour-facts .marine-fact{color:var(--marine)}
.hour-session-tags{position:absolute;top:8px;right:7px;display:flex;flex-direction:column;align-items:flex-end;gap:3px;max-width:78px}.hour-session-tag{display:inline-flex;align-items:center;max-width:100%;padding:3px 6px;border-radius:999px;font-size:8px;font-weight:700;line-height:1.2;white-space:nowrap}.hour-session-tag.excellent{background:var(--excellent-bg);color:var(--excellent)}.hour-session-tag.good{background:var(--match-good-bg);color:var(--match-good)}
.hourly-empty,.sessions-empty{padding:16px;border:1px dashed var(--strong-border);border-radius:13px;background:#f8fcfb;color:var(--muted);font-size:14px;line-height:1.5}
.tide-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.tides-panel,.coast-panel{background:var(--marine-bg);border-color:var(--marine-border);box-shadow:none}.tides-panel .eyebrow,.coast-panel .eyebrow{color:var(--marine)}.hourly-panel .eyebrow::before{content:"🌤️";margin-right:6px}.tides-panel .eyebrow::before,.coast-panel .eyebrow::before{content:"🌊";margin-right:6px}.sessions-panel .eyebrow::before{content:"✨";margin-right:6px}
.tide-event{padding:14px;background:#fff;border:1px solid var(--swim-border);border-radius:12px}.tide-event.high{background:var(--marine-card)}.tide-event time,.tide-event strong,.tide-event small{display:block}.tide-event time{color:var(--deep);font-size:17px;font-weight:700}.tide-event strong{margin-top:3px;color:var(--marine);font-size:13px}.tide-event.low strong{color:var(--muted)}.tide-event small{margin-top:2px;color:var(--muted);font-size:12px}
.coast-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:16px 0 0}.coast-grid>div{padding:12px;background:#fff;border:1px solid #e1eaed;border-radius:11px;min-width:0}.coast-grid>div:nth-child(-n+3){background:var(--marine-card);border-color:var(--swim-border)}.coast-grid dd{white-space:normal;line-height:1.3}
.coast-panel .quality-strip{margin-top:13px}
.sessions-panel{background:#fff;border-color:#c8dcd9}.match-count{display:inline-grid;place-items:center;min-width:31px;height:31px;padding:0 9px;border-radius:999px;background:var(--deep);color:#fff;font-size:13px;font-weight:700}
.session-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.session-card{padding:14px;border:1px solid var(--border);border-radius:14px;background:#fff}.session-card.swimming{background:var(--swim-bg);border-color:var(--swim-border);box-shadow:inset 4px 0 0 var(--swim)}.session-card.paddleboarding{background:var(--paddle-bg);border-color:var(--paddle-border);box-shadow:inset 4px 0 0 var(--paddle)}.session-card.kayaking{background:var(--kayak-bg);border-color:var(--kayak-border);box-shadow:inset 4px 0 0 var(--kayak)}
.session-card-header{display:flex;align-items:center;gap:8px}.session-card-icon{font-size:22px}.session-card-title{min-width:0;flex:1;color:var(--deep);font-size:14px;font-weight:700}.session-card.swimming .session-card-title{color:var(--swim)}.session-card.paddleboarding .session-card-title{color:var(--paddle)}.session-card.kayaking .session-card-title{color:var(--kayak)}.session-status{padding:4px 8px;border-radius:999px;background:var(--excellent-bg);color:var(--excellent);font-size:11px;font-weight:700}.session-status.good{background:var(--match-good-bg);color:var(--match-good)}
.session-time{margin:10px 0 0;color:var(--deep);font-size:15px;font-weight:700}.session-meta{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.session-action{display:inline-flex;margin-top:10px;color:var(--action);font-size:13px;font-weight:700;text-decoration:none}.session-action:hover{text-decoration:underline}
.app-handoff{display:grid;grid-template-columns:auto 1fr;gap:11px;background:var(--deep);color:#fff;border:0}.app-handoff-icon{font-size:30px}.app-handoff h2{color:#fff;font-size:18px}.app-handoff p{margin:5px 0 0;color:#d6e7e7;font-size:13px;line-height:1.45}.app-download-button{grid-column:1/-1;display:flex;justify-content:center;align-items:center;min-height:44px;padding:10px 14px;border-radius:11px;background:var(--brand);color:#052e31;font-size:14px;font-weight:700;text-decoration:none}.app-download-button:hover{background:#52c7bb}

@media(max-width:900px){.weather-dashboard{grid-template-columns:1fr}.session-sidebar{position:static;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);align-items:start}.tide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.coast-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.app-shell{width:min(100% - 36px,720px)}.weather-dashboard{gap:15px}.weather-now,.dashboard-panel,.sessions-panel,.app-handoff{padding:16px}.daily-weather-card{padding:17px 16px 15px}.weather-now .weather-icon{width:58px;height:58px;font-size:39px}.weather-now .condition-copy strong{font-size:17px}.weather-now .temperature{font-size:35px}.current-metrics{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:16px}.hour-card{flex-basis:118px}.session-sidebar{display:flex}.coast-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.coast-grid>div:last-child{grid-column:1/-1}.panel-meta{font-size:11px}.today-intro h1{font-size:20px}.breadcrumbs{margin-bottom:9px}.popular-shortcuts{gap:5px 11px}.day-tabs{margin-top:10px}}

/* Approved forecast hierarchy and shared type scale */
:root{
  --type-caption:12px;
  --type-meta:13px;
  --type-label:14px;
  --type-body:16px;
  --type-section:21px;
  --type-page:28px;
}
body{font-size:var(--type-body)}
.app-shell{width:min(1088px,calc(100% - 64px))}
.page-shell{width:min(1088px,calc(100% - 64px))}
.forecast-layout{display:grid;grid-template-columns:minmax(0,760px) 296px;gap:24px;align-items:start;justify-content:center}
.forecast-layout:has(.ad-shell-rail[hidden]){grid-template-columns:minmax(0,760px)}
.forecast-layout:has(.ad-shell-rail[hidden]) .campaign-rail{display:none}
.forecast-primary{min-width:0}
.campaign-rail{position:sticky;top:20px;min-height:600px}
.ad-shell-rail{min-height:600px;display:flex;flex-direction:column;justify-content:flex-start}
.page-shell>.seo-context,.page-shell>.page-notices{max-width:760px;margin-inline:auto}

.today-intro h1{font-size:clamp(24px,2.3vw,var(--type-page));white-space:normal}
.today-summary,.search-row input,.section-intro{font-size:var(--type-label)}
.popular-shortcuts,.spot-line,.panel-meta,.eyebrow{font-size:var(--type-caption)}
.day-tabs{grid-template-columns:repeat(5,minmax(0,1fr));overflow:visible}
.day-tab{min-width:0;min-height:58px;padding:6px 3px;flex-direction:column;gap:0;white-space:normal;line-height:1.1}
.day-tab strong,.day-tab span{font-size:var(--type-caption)}
.day-tab .day-weather{margin-top:2px}
.day-tab .day-weather-icon{font-size:17px}
.day-tab .day-temperature{font-size:var(--type-caption)}

.today-stack{gap:16px}
.weather-card,.dashboard-panel,.sessions-panel,.app-handoff{padding:18px}
.panel-heading-row h2,.sessions-panel h2,.app-handoff h2{font-size:var(--type-section)}
.weather-summary{margin-top:12px}
.condition-copy strong{font-size:var(--type-body)}
.condition-copy span{font-size:var(--type-meta)}
.temperature{font-size:40px}
.metric-grid dt,.metric-grid dd{font-size:var(--type-caption)}
.metric-grid dd{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.3}
.metric-grid:not(.metric-grid-top){grid-template-columns:repeat(5,minmax(0,1fr))}
.tide-credit,.quality-copy small,.quality-copy .quality-checked,.quality-view{font-size:var(--type-caption)}
.quality-copy strong{font-size:var(--type-meta)}

.session-list{gap:8px;margin-top:12px}
.session-card{padding:12px 13px}
.session-card-title{font-size:15px}
.session-status{font-size:var(--type-caption);padding:4px 8px}
.session-time{margin-top:7px;font-size:19px;line-height:1.25}
.session-meta,.session-action{font-size:var(--type-meta)}
.session-action{margin-top:7px}

.hourly-forecast{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 0;padding:0;overflow:visible}
.hour-card{min-width:0;padding:13px;display:grid;grid-template-columns:1fr auto;column-gap:8px}
.hour-card time{font-size:var(--type-label)}
.hour-icon{grid-column:2;grid-row:1/3;margin:0;font-size:25px}
.hour-temp{grid-column:1;font-size:22px}
.hour-facts{grid-column:1/-1;margin-top:9px}
.hour-facts>span{font-size:var(--type-caption);overflow:visible;text-overflow:clip}
.hour-session-tags{position:static;grid-column:1/-1;grid-row:auto;align-items:flex-start;margin-top:8px}
.hour-session-tag{font-size:var(--type-caption)}

.tide-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.tide-event{position:relative;padding:13px}
.tide-status{display:inline-flex;margin-bottom:6px;border-radius:999px;padding:3px 7px;background:#edf1f2;color:var(--muted);font-size:var(--type-caption);font-weight:700}
.tide-status.next{background:#dff3fb;color:var(--marine)}
.tide-event time{font-size:18px}
.tide-event strong,.tide-event small{font-size:var(--type-caption)}
.current-metrics dt,.coast-grid dt{font-size:var(--type-caption)}
.current-metrics dd,.coast-grid dd{font-size:15px}

.pill,.session-details span,.weather-disclaimer,.footer-inner nav a,.footer-inner nav button,.footer-inner>p,
.cookie-row span small,.cookie-row b,.resource-card-grid small,.author-box small,.side-card p,.guide-list span,
.ad-shell>span{font-size:var(--type-caption)}
.weather-disclaimer strong,.safety-card p,.safety-card a{font-size:var(--type-caption)}

@media(max-width:1199px){
  .app-shell,.page-shell{width:min(760px,calc(100% - 48px))}
  .forecast-layout{grid-template-columns:minmax(0,1fr)}
  .campaign-rail{display:none}
  .page-shell>.seo-context,.page-shell>.page-notices{max-width:none}
}
@media(max-width:680px){
  .app-shell,.page-shell{width:min(100% - 32px,840px)}
  .page-shell{padding-block:18px 44px}
  .today-intro h1{font-size:24px}
  .day-tabs{gap:5px;margin:10px 0 14px}
  .day-tab{min-height:61px;border-radius:10px}
  .weather-card,.dashboard-panel,.sessions-panel,.app-handoff{padding:15px}
  .panel-heading-row{gap:10px}
  .panel-heading-row h2,.sessions-panel h2{font-size:19px}
  .panel-meta{white-space:normal;text-align:right}
  .metric-grid-top{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:12px}
  .metric-grid:not(.metric-grid-top){grid-template-columns:repeat(6,minmax(0,1fr));row-gap:12px}
  .metric-grid:not(.metric-grid-top)>div{grid-column:span 2}
  .metric-grid:not(.metric-grid-top)>div:nth-last-child(-n+2){grid-column:span 3}
  .quality-strip{grid-template-columns:auto minmax(0,1fr)}
  .quality-view{grid-column:2}
  .hourly-forecast{display:flex;gap:8px;margin:13px -3px 0;padding:2px 3px 7px;overflow-x:auto}
  .hour-card{flex:0 0 146px}
  .tide-grid{display:flex;gap:8px;margin:13px -3px 0;padding:2px 3px 7px;overflow-x:auto}
  .tide-event{flex:0 0 128px}
  .session-card-header{align-items:flex-start}
  .session-card-title{line-height:1.25}
  .session-time{font-size:18px}
}
@media(max-width:390px){
  .app-shell,.page-shell{width:min(100% - 24px,840px)}
  .day-tabs{gap:4px}
  .day-tab{padding-inline:1px}
  .day-tab strong,.day-tab span{font-size:12px}
  .metric-grid dt,.metric-grid dd{font-size:12px}
  .weather-summary{gap:10px}
  .temperature{font-size:36px}
}

/* Optional offer reference on the existing dark app handoff card. */
.app-handoff a:not(.app-download-button){display:inline-block;min-height:44px;padding:12px 0;color:#fff;font-size:14px;font-weight:600;text-decoration:underline}
