@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--ink:#173e47;--muted:#647474;--paper:#f6f5ef;--line:#dedfd6;--lime:#d6e9ad;--green:#427865;--orange:#dc714d;--white:#fffefa;--font:'DM Sans',Arial,sans-serif;--display:'Manrope',Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--orange);outline-offset:4px}button:disabled{cursor:wait;opacity:.6}svg{display:block}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--display);font-weight:650}button{border:0;background:none}button:hover,a:hover{transition:background .18s,color .18s,transform .18s}.skip-link{position:absolute;top:-80px;left:12px;background:var(--ink);color:white;padding:12px;z-index:20}.skip-link:focus{top:8px}.site-header{border-bottom:1px solid var(--line);background:var(--paper)}.header-inner{max-width:1320px;margin:auto;padding:24px 44px;display:flex;align-items:center;justify-content:space-between;gap:28px}.brand{display:flex;align-items:center;gap:9px;font-family:var(--display);font-size:29px;font-weight:800;letter-spacing:-1.4px;line-height:1}.brand svg{width:38px;height:35px;fill:none;stroke:var(--ink);stroke-width:2.5;stroke-linecap:round}.brand-light{font-weight:450}.brand-dot{color:var(--orange)}nav{display:flex;gap:32px;font-size:13px;font-weight:600}nav a{padding:8px 0}nav a:hover{color:var(--orange)}.nav-active{border-bottom:2px solid var(--ink)}.header-actions{display:flex;align-items:center;gap:22px}.unit-button{border:1px solid #bdc6bf;border-radius:6px;padding:7px 11px;font-size:11px;font-weight:650;min-width:65px}.unit-button:hover{background:var(--lime)}main{max-width:1320px;padding:0 44px;margin:auto}.location-line{display:flex;justify-content:space-between;gap:16px;padding:25px 0 18px;font-size:10px;font-weight:650;letter-spacing:1.6px}.location-line>span:first-child{display:flex;align-items:center;gap:8px}.location-dot{width:6px;height:6px;background:var(--orange);border-radius:50%}#local-date{color:var(--muted);letter-spacing:.5px;font-weight:400}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:650}.light{color:#bbd0c5}.info-button{border:1px solid #77948c;font:10px Georgia,serif;border-radius:50%;width:15px;height:15px;padding:0}.feed-status{display:flex;gap:7px;align-items:center;padding:12px 2px;font-size:10px;color:var(--muted);min-height:42px}.status-dot{width:5px;height:5px;background:#93a397;border-radius:50%;flex-shrink:0}.feed-status.ready .status-dot{background:var(--green)}.feed-status.partial .status-dot{background:var(--orange)}.feed-status button{margin-left:auto;font-size:10px;white-space:nowrap}.feed-status button span{font-size:15px;margin-right:3px}.error-panel{padding:12px 16px;margin:0 0 14px;background:#fff0db;color:#78552e;border:1px solid #e6d3b3;border-radius:6px;font-size:12px}.error-panel a{text-decoration:underline}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.forecast-section{margin-top:46px}h2{font-size:28px;letter-spacing:-1px;line-height:1.2;margin-top:8px}h2 span{color:var(--orange)}.text-button{font-size:11px;font-weight:600;padding:4px 0;white-space:nowrap}.text-button:hover{color:var(--orange)}.section-heading>.text-button{padding-bottom:4px}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:16px}.day-card{text-align:left;border:1px solid var(--line);border-radius:8px;background:var(--white);padding:14px 14px 12px;min-width:0;position:relative}.day-card:hover{border-color:#89a59a;transform:translateY(-2px)}.day-card.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}.day-top{display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:12px;font-weight:600}.day-date{font-size:10px;color:var(--muted);margin:2px 0 8px}.day-card.active .day-date,.day-card.active .day-wind{color:#c3d0c5}.day-waves{font-size:21px;letter-spacing:-.6px;font-family:var(--display);font-weight:600;white-space:nowrap}.day-waves small{font-size:11px;letter-spacing:0;font-weight:400}.day-spark{height:20px;display:flex;align-items:flex-end;gap:3px;margin:11px 0 10px}.day-spark i{background:#c5d6b3;min-width:2px;flex:1;border-radius:2px 2px 0 0}.day-card.active .day-spark i{background:var(--lime)}.day-wind{font-size:9px;color:var(--muted);display:flex;align-items:center;gap:4px}.detail-card{background:var(--white);border:1px solid var(--line);border-radius:9px;overflow:hidden}.detail-heading{padding:23px 25px 16px;display:flex;align-items:center;justify-content:space-between;gap:15px}.detail-heading h3{font-size:16px;letter-spacing:-.3px}.detail-heading p{font-size:10px;color:var(--muted);margin-top:4px}.dot-divider{margin:0 4px}.chart-key{display:flex;gap:18px;font-size:10px;color:var(--muted)}.chart-key span{display:flex;align-items:center;gap:6px}.chart-key i{display:inline-block;width:7px;height:7px;border-radius:2px}.wave-key{background:#99b975}.wind-key{background:#678e9c}.hourly-chart{padding:0 24px;overflow-x:auto;scrollbar-width:thin}.hourly-bars{display:grid;gap:5px;min-width:670px;padding-top:22px}.hour-column{display:flex;flex-direction:column;align-items:center;padding:0;border-radius:5px;min-width:0}.hour-column:hover,.hour-column.selected{background:#edf0e7}.hour-column.night{color:#7e8982}.bar-area{height:114px;display:flex;align-items:flex-end;width:100%;justify-content:center;position:relative;border-bottom:1px solid var(--line)}.bar{background:#c6d5a8;min-height:2px;width:54%;border-radius:4px 4px 0 0;position:relative}.hour-column.selected .bar{background:#769b5b}.bar-value{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);padding-bottom:6px;font-size:10px;white-space:nowrap}.hour-column.night .bar{background:#d9dfcb}.hour-label{font-size:10px;margin:9px 0 15px;white-space:nowrap}.hour-wind{display:flex;align-items:center;gap:3px;font-size:10px;margin-bottom:10px}.wind-arrow{display:inline-block;color:#426d80;font-size:16px;line-height:1;transform:rotate(var(--angle,0deg))}.wind-strip{height:3px;background:#bdd0d5;border-radius:2px;width:65%;margin-bottom:12px}.hour-detail{background:#f2f4eb;min-height:56px;padding:13px 25px;display:flex;flex-wrap:wrap;align-items:center;gap:20px;font-size:11px;border-top:1px solid var(--line);margin-top:9px}.hour-detail strong{font-weight:650}.hour-detail .hour-time{font-weight:700;border-right:1px solid #c6cec1;padding-right:20px}.forecast-footer{padding:12px 25px;display:flex;justify-content:space-between;align-items:center;gap:18px;font-size:10px;color:var(--muted)}.forecast-footer .text-button{color:var(--ink)}.table-wrap{overflow-x:auto;border-top:1px solid var(--line)}table{border-collapse:collapse;width:100%;font-size:11px;text-align:left;white-space:nowrap}th,td{padding:10px 24px;border-bottom:1px solid #e9ebe2}th{font-size:10px;background:#f2f4eb;color:var(--muted);font-weight:600}tbody tr:last-child td{border-bottom:0}.lower-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:20px;margin-top:24px}.tide-card,.window-card{border:1px solid var(--line);border-radius:9px;padding:25px;background:var(--white);min-width:0}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:15px}.card-heading h2,.window-card h2{font-size:24px}.source-label{font-size:9px;letter-spacing:.9px;border:1px solid #c8d6d0;border-radius:4px;padding:4px 8px;color:#56766d}.card-subtitle{font-size:11px;margin-top:13px;color:var(--muted)}.tide-chart{height:155px;margin:5px -4px 6px}.tide-chart svg{height:100%;width:100%;overflow:visible}.tide-events{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-top:1px solid var(--line);padding-top:14px;margin-bottom:18px}.tide-event span{display:block;font-size:10px;color:var(--muted)}.tide-event strong{display:block;font-size:13px;font-weight:600;margin:3px 0}.data-note{font-size:10px;color:var(--muted);line-height:1.65}.window-card{background:#e9eddf;display:flex;flex-direction:column}.window-time{font-family:var(--display);font-size:32px;letter-spacing:-1.2px;margin-top:23px;font-weight:550;line-height:1.3}.window-date{font-size:11px;color:var(--muted);margin-top:4px}.window-stats{display:flex;gap:15px;margin-top:15px;font-size:12px}.window-stats span+span{border-left:1px solid #bac9b4;padding-left:15px}#window-description{font-size:11px;line-height:1.7;margin:13px 0 20px;color:#597064;max-width:340px}.daylight{display:flex;gap:20px;justify-content:space-between;padding:11px 0;border-top:1px solid #cbd3bf;font-size:10px;color:#5a6f60;margin-top:auto}footer{max-width:1320px;margin:auto;padding:25px 44px 30px;display:flex;align-items:center;justify-content:space-between;gap:25px;font-size:9px;color:var(--muted)}.footer-brand{font:700 20px var(--display);color:var(--ink);letter-spacing:-1px}footer>div{line-height:1.9}footer>div a{text-decoration:underline;text-underline-offset:2px}footer>span{font-size:9px;letter-spacing:1.4px}.empty-message{padding:36px 18px;text-align:center;font-size:12px;color:var(--muted);width:100%;grid-column:1/-1}.hourly-chart>.empty-message{min-height:196px;display:grid;place-items:center}.tide-chart .empty-message{padding-top:55px}dialog{width:min(640px,calc(100% - 32px));max-height:85vh;overflow:auto;border:1px solid var(--line);border-radius:12px;padding:30px;background:var(--paper);color:var(--ink);box-shadow:0 20px 80px #062a3a33}dialog::backdrop{background:#072e3b88;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.dialog-heading button{font-size:25px;line-height:1;padding:0 5px}dialog h2{font-size:29px;margin:18px 0}dialog p{font-size:13px;line-height:1.8;color:#526a68;margin:10px 0}dialog h3{font-size:15px;margin:22px 0 5px}.source-status{font-size:11px;padding:14px;background:#e8ece1;border-radius:5px;margin:20px 0;line-height:1.8}.noscript{position:fixed;bottom:0;background:var(--ink);color:white;padding:14px;width:100%;text-align:center}[hidden]{display:none!important}
@media(max-width:1000px){.header-inner{padding:20px 28px}main{padding:0 28px}footer{padding-left:28px;padding-right:28px}.day-grid{gap:6px}.day-card{padding:13px 10px}.day-waves{font-size:18px}.day-wind{font-size:8px}.lower-grid{grid-template-columns:1.2fr 1fr}.tide-card,.window-card{padding:21px}.window-time{font-size:26px}.daylight{gap:8px;font-size:9px}.card-heading h2,.window-card h2{font-size:22px}}
@media(max-width:740px){.header-inner{padding:17px 20px;gap:15px}.brand{font-size:25px}.brand svg{width:31px}nav{gap:17px;font-size:11px}.header-actions{gap:0}.unit-button{font-size:10px;min-width:56px;padding:6px 8px}main{padding:0 20px}.location-line{padding:20px 0 13px;font-size:8px;letter-spacing:1px}#local-date{font-size:9px}.feed-status{font-size:9px;align-items:flex-start;padding:12px 0}.status-dot{margin-top:4px}.feed-status button{font-size:9px}.forecast-section{margin-top:33px}.section-heading{gap:12px;margin-bottom:18px}.eyebrow{font-size:9px;letter-spacing:1.3px}h2{font-size:25px}.section-heading>.text-button{font-size:10px}.day-grid{display:flex;overflow:auto;padding-bottom:5px;gap:7px;scroll-snap-type:x proximity}.day-card{min-width:103px;scroll-snap-align:start;padding:12px}.day-waves{font-size:21px}.day-wind{font-size:8px}.detail-heading{padding:19px 18px 13px;align-items:flex-start;flex-direction:column;gap:10px}.detail-heading h3{font-size:15px}.chart-key{font-size:9px;gap:15px}.hourly-chart{padding:0 16px}.hour-detail{padding:13px 18px;gap:7px 15px;font-size:10px}.hour-detail .hour-time{width:100%;border:0}.forecast-footer{padding:12px 18px;flex-direction:column;align-items:flex-start;gap:8px;font-size:9px}.forecast-footer .text-button{font-size:10px}.lower-grid{grid-template-columns:1fr;gap:16px;margin-top:16px}.tide-card,.window-card{padding:22px}.tide-chart{height:160px}.window-time{font-size:32px}.window-card h2,.card-heading h2{font-size:25px}.daylight{font-size:10px}footer{padding:22px 20px;flex-wrap:wrap;justify-content:flex-start;gap:13px 25px}footer>div{flex-basis:100%;order:3}footer>span{margin-left:auto;font-size:8px}dialog{padding:22px}dialog h2{font-size:26px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Compact conditions dashboard and practical driving links. */
.page-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 2px}.page-heading h1{font-size:32px;letter-spacing:-1px;font-weight:650}.traffic-section{margin-top:22px;border:1px solid var(--line);border-radius:9px;background:var(--white);padding:19px 21px 13px}.traffic-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px}.traffic-heading h2{font-size:19px;letter-spacing:-.5px;margin:0}.traffic-heading p{font-size:10px;color:var(--muted);margin-top:4px}.destination-label{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:10px}.destination-label select{border:1px solid var(--line);border-radius:5px;background:var(--paper);color:var(--ink);padding:7px 28px 7px 10px;font:11px var(--font);max-width:190px}.traffic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.traffic-card{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:15px;border:1px solid var(--line);border-radius:6px;flex-direction:column;background:#f7f8f1}.traffic-card:hover{border-color:#9aae98;background:#eef2e6}.traffic-card h3{font-size:13px;letter-spacing:-.2px}.traffic-card p{font-size:9px;color:var(--muted);margin-top:4px}.route-action{font-size:11px;font-weight:600}.traffic-footer{display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:9px;color:var(--muted);margin-top:12px}.traffic-footer a{text-decoration:underline;white-space:nowrap}.forecast-section{margin-top:30px}.forecast-section h2,.card-heading h2,.window-card h2{margin-top:0}footer{margin-top:28px;border-top:1px solid var(--line)}select:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
@media(max-width:1000px){.traffic-card{padding:13px}.traffic-card h3{font-size:12px}.traffic-footer{align-items:flex-start}}
@media(max-width:740px){.header-inner{flex-wrap:wrap;gap:11px}.header-inner nav{order:3;width:100%;justify-content:space-between;gap:12px}.header-actions{margin-left:auto}.location-line{padding-top:17px}.page-heading h1{font-size:28px}.page-heading>.text-button{font-size:9px;white-space:normal;max-width:124px;text-align:right}.traffic-section{padding:17px 16px 13px;margin-top:17px}.traffic-heading{flex-direction:column;align-items:flex-start;gap:12px}.destination-label{width:100%;justify-content:space-between}.destination-label select{flex:1;max-width:none}.traffic-grid{grid-template-columns:1fr;gap:8px}.traffic-card{flex-direction:row;align-items:center;padding:12px;gap:10px}.traffic-card h3{font-size:12px}.traffic-card p{font-size:8px}.route-action{font-size:9px;white-space:nowrap}.traffic-footer{align-items:flex-start;flex-direction:column;gap:7px}.forecast-section{margin-top:26px}}

/* Current surf dashboard: distinct regional, nearshore and observed values. */
.conditions-board{border:1px solid var(--line);border-radius:10px;background:var(--white);overflow:hidden}.conditions-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 22px;border-bottom:1px solid var(--line)}.conditions-heading h2{font-size:19px;letter-spacing:-.4px;margin:0}.conditions-grid{display:grid;grid-template-columns:1.05fr 1.15fr 1fr}.conditions-grid>article{padding:20px 22px;min-width:0}.conditions-grid>article+article{border-left:1px solid var(--line)}.board-label{font-size:10px;letter-spacing:1px;line-height:1.4;font-weight:650;color:var(--muted);display:flex;align-items:center;gap:7px}.board-note{font-size:11px;line-height:1.5;color:var(--muted)}.source-time{display:block;font-size:10px;line-height:1.5;color:var(--muted);margin-top:4px}.surf-summary{background:linear-gradient(140deg,#f1f4e9,#fffefa 80%)}.outlook-rating{font-family:var(--display);font-size:26px;font-weight:750;letter-spacing:-.7px;margin-top:6px;line-height:1.2}.outlook-meter{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin:12px 0 8px;max-width:180px;--rating-color:#94a88b}.outlook-meter span{height:5px;background:#e0e5da;border-radius:3px}.outlook-meter[data-level="1"]{--rating-color:#8b625d}.outlook-meter[data-level="2"]{--rating-color:#b26b35}.outlook-meter[data-level="3"]{--rating-color:#946a13}.outlook-meter[data-level="4"]{--rating-color:#697b37}.outlook-meter[data-level="1"] span:nth-child(-n+1),.outlook-meter[data-level="2"] span:nth-child(-n+2),.outlook-meter[data-level="3"] span:nth-child(-n+3),.outlook-meter[data-level="4"] span{background:var(--rating-color)}.outlook-reason{font-size:11px;line-height:1.5;color:#5f7168;min-height:32px}.surf-number-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:17px}.surf-height{font:600 48px/1.25 var(--display);letter-spacing:-2px;white-space:nowrap}.surf-height .height-unit{font-size:19px;letter-spacing:0;font-weight:500;color:var(--muted)}.surf-mark{width:74px;max-width:26%;height:60px;fill:none;stroke:#95b4a2;stroke-width:2.3;stroke-linecap:round;flex-shrink:0}.rip-risk{display:block;margin-top:6px;color:var(--muted);font-size:10px;font-weight:400;line-height:1.5}.rip-risk:hover{text-decoration:underline;text-underline-offset:2px}.nearshore-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.nearshore-number{display:flex;align-items:baseline;gap:6px;margin-top:9px;line-height:1.2}.nearshore-number strong{font:600 31px var(--display);letter-spacing:-1px}.nearshore-number>.height-unit{font-size:14px;color:var(--muted)}.nearshore-period{font-size:11px;color:var(--muted);margin-left:auto}.nearshore-chart{height:123px;margin-top:8px;min-width:0}.nearshore-chart svg{width:100%;height:100%;overflow:visible}.chart-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;font-size:11px;color:#819087}.chart-empty-line{display:block;width:100%;height:36px;border-bottom:1px dashed #c9d5c5}.nearshore-caption{display:flex;justify-content:space-between;gap:10px;font-size:9px;color:var(--muted);margin:2px 0 13px}.wind-overview{display:flex;justify-content:space-between;align-items:center;gap:12px}.wind-overview>div:first-child{flex:1;min-width:0}.wind-number{font:600 32px/1.3 var(--display);letter-spacing:-1px;margin:7px 0 4px}.wind-number .speed-unit{font-size:14px;font-weight:450;letter-spacing:0;color:var(--muted)}.mini-tide{border-top:1px solid var(--line);margin-top:17px;padding-top:15px}.mini-tide-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.mini-tide-heading strong{font-size:13px;font-weight:600;letter-spacing:-.3px}.mini-tide-chart{height:74px;margin:2px -3px 5px}.mini-tide-chart svg{width:100%;height:100%;overflow:visible}.conditions-details{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);background:#f7f8f0;padding:15px 0}.conditions-details article{padding:0 22px;min-width:0}.conditions-details article+article{border-left:1px solid var(--line)}.conditions-details article>div{font-size:12px;color:var(--muted);margin-top:3px}.conditions-details strong{font:600 23px var(--display);color:var(--ink);letter-spacing:-.7px}.conditions-details .temp-unit{font-size:15px;margin-left:2px}.conditions-details p{font-size:10px;line-height:1.5;color:var(--muted);margin-top:1px}.buoy-strip{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 15px;padding:12px 3px 0;font-size:10px;color:var(--muted)}.buoy-strip-title,.buoy-strip-values{display:flex;flex-wrap:wrap;align-items:center;gap:7px 12px}.buoy-strip-title a{font-weight:600;color:var(--ink)}.buoy-strip-title a:hover{text-decoration:underline}.observation-dot{height:5px;width:5px;background:#7f938a;border-radius:50%}.buoy-strip-values>strong{color:var(--ink);font-size:12px}.buoy-status{border:1px solid #d0d9ce;border-radius:4px;padding:2px 6px;font-size:9px}.buoy-status[data-status="stale"]{border-color:#dfc9a7;color:#866522;background:#fff4de}.buoy-status[data-status="fresh"]{border-color:#b7d3bb;color:#427865;background:#edf5e8}.traffic-section{margin-top:18px}.traffic-grid .traffic-card{gap:10px;background:#fafbf5;padding:15px 17px;position:relative}.traffic-card h3{font-size:13px}.traffic-estimate{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px 10px}.traffic-duration{display:block;font-family:var(--display);font-size:25px;font-weight:650;letter-spacing:-.7px;line-height:1.2}.traffic-delay{display:block;font-size:10px;color:var(--muted)}.traffic-card[data-congestion="green"] .traffic-duration{color:#39735d}.traffic-card[data-congestion="yellow"] .traffic-duration{color:#97701d}.traffic-card[data-congestion="red"] .traffic-duration{color:#ae5145}.traffic-card[data-congestion="green"]{border-top:3px solid #6a9e7a;padding-top:13px}.traffic-card[data-congestion="yellow"]{border-top:3px solid #cfb362;padding-top:13px}.traffic-card[data-congestion="red"]{border-top:3px solid #ce8275;padding-top:13px}.traffic-card[data-congestion="unknown"] .traffic-duration{color:#8a978e}.traffic-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;font-size:9px;color:var(--muted)}.traffic-card-footer .route-action{font-size:10px;color:var(--ink)}.traffic-footer{align-items:flex-start;margin-top:13px;line-height:1.6}.traffic-footer p{font-size:10px}.traffic-baseline{color:var(--muted)}.traffic-attribution{border-top:1px solid #e6e9df;display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:10px;margin-top:10px;color:var(--muted);font-size:9px}.traffic-attribution>span:first-child{font-family:Arial,sans-serif;font-size:14px;font-weight:500;letter-spacing:-.2px;color:#596a63}.traffic-attribution a{text-decoration:underline;text-underline-offset:2px}
@media(max-width:1100px){.conditions-grid>article{padding:18px 17px}.conditions-grid{grid-template-columns:1.02fr 1.1fr 1fr}.outlook-rating{font-size:23px}.surf-height{font-size:42px}.wind-overview{gap:8px}.nearshore-period{font-size:10px}.conditions-details article{padding:0 17px}.buoy-distance{display:none}.traffic-duration{font-size:23px}.traffic-estimate{flex-direction:column;align-items:flex-start}.traffic-grid .traffic-card{padding:14px}.traffic-card[data-congestion="green"],.traffic-card[data-congestion="yellow"],.traffic-card[data-congestion="red"]{padding-top:12px}}
@media(max-width:850px) and (min-width:741px){.conditions-grid{grid-template-columns:1fr 1fr}.wind-overview{gap:20px}.mini-tide{border-top:0;border-left:1px solid var(--line);margin:0;padding:0 0 0 24px}}
@media(max-width:740px){.conditions-heading{padding:14px 17px;align-items:flex-start;gap:8px}.conditions-heading h2{font-size:18px;white-space:nowrap}.conditions-grid{grid-template-columns:1fr 1fr}.conditions-grid>article{padding:17px}.conditions-grid>.surf-summary{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr;column-gap:18px}.surf-summary>.board-label{grid-column:1;grid-row:1}.outlook-rating{grid-column:1;grid-row:2;font-size:24px}.outlook-meter{grid-column:1;grid-row:3;margin:9px 0 7px}.outlook-reason{grid-column:1;grid-row:4;font-size:10px;min-height:0}.surf-number-row{grid-column:2;grid-row:1/4;display:block;margin:0;border-left:1px solid #d8e0cf;padding-left:18px}.surf-number-row .board-label{font-size:9px;max-width:125px}.surf-height{font-size:39px;margin-top:7px}.surf-height .height-unit{font-size:16px}.surf-mark{display:none}.surf-summary #surf-scope{grid-column:1/-1;margin-top:12px;font-size:10px}.surf-summary #surf-issued{grid-column:1/-1}.surf-summary #now-label{grid-column:1/-1}.rip-risk{grid-column:1/-1}.conditions-grid>.nearshore-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);padding-bottom:14px}.nearshore-top{flex-wrap:nowrap}.nearshore-number{margin-top:7px}.nearshore-number strong{font-size:28px}.nearshore-period{font-size:11px}.nearshore-chart{height:97px}.nearshore-caption{margin-bottom:9px}.wind-overview{display:block}.wind-overview .board-note{font-size:10px}.wind-number{font-size:29px;margin-top:6px}.mini-tide{border-top:0;border-left:1px solid var(--line);margin:0;padding:0 0 0 16px}.mini-tide-heading{align-items:flex-start;flex-direction:column;gap:4px}.mini-tide-heading strong{font-size:13px}.mini-tide-chart{height:56px;margin-top:0}.mini-tide>.board-note{font-size:9px}.conditions-details{grid-template-columns:1fr 1fr;padding:0}.conditions-details article{padding:13px 17px}.conditions-details article+article{border-left:0}.conditions-details article:nth-child(even){border-left:1px solid var(--line)}.conditions-details article:nth-child(n+3){border-top:1px solid var(--line)}.conditions-details .board-label{font-size:9px}.conditions-details strong{font-size:23px}.conditions-details p{font-size:9px}.buoy-strip{padding-top:11px;font-size:9px;gap:7px}.buoy-strip-values{gap:6px 10px}.buoy-strip-values>strong{font-size:11px}.buoy-status{font-size:8px}.traffic-grid{gap:8px}.traffic-grid .traffic-card{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:12px;row-gap:8px;padding:13px;border-top:1px solid var(--line);border-left:3px solid #cbd3c7}.traffic-card[data-congestion="green"]{border-left-color:#6a9e7a}.traffic-card[data-congestion="yellow"]{border-left-color:#cfb362}.traffic-card[data-congestion="red"]{border-left-color:#ce8275}.traffic-card h3{font-size:12px}.traffic-card p{font-size:9px;max-width:190px}.traffic-estimate{align-items:flex-end;gap:3px}.traffic-duration{font-size:22px;white-space:nowrap}.traffic-delay{font-size:9px;text-align:right}.traffic-card-footer{grid-column:1/-1;border-top:1px solid #e5e9de;padding-top:7px;font-size:8px}.traffic-card-footer .route-action{font-size:9px}.traffic-footer{gap:8px}.traffic-footer p{font-size:9px}.traffic-attribution{align-items:flex-start;font-size:8px}.traffic-attribution>span:last-child{text-align:right;max-width:210px}.traffic-attribution>span:first-child{font-size:13px}.board-label .info-button{width:14px;height:14px;flex-shrink:0}}
@media(max-width:370px){.surf-height{font-size:32px}.outlook-rating{font-size:21px}.conditions-grid>.surf-summary{column-gap:12px}.surf-number-row{padding-left:12px}.traffic-duration{font-size:19px}.traffic-card h3{font-size:11px}}

.regional-day{font-size:12px;color:var(--muted);margin:8px 0 14px}.nearshore-chart svg,.mini-tide-chart svg{width:100%;height:100%}.traffic-attribution{min-height:22px}

/* Keep the headline score readable while details live in Sources & methods. */
.outlook-result{display:flex;align-items:baseline;gap:6px;margin-top:8px}.outlook-score{font:650 48px/1.1 var(--display);letter-spacing:-2px}.outlook-scale{font-size:14px;color:var(--muted)}.outlook-rating{font-size:21px;margin-top:5px}.outlook-confidence{font-size:10px;line-height:1.5;color:var(--muted);margin:4px 0 0}.project-note{margin:0 0 5px;color:var(--ink);font-weight:600}.forecast-footer{justify-content:space-between}
@media(max-width:740px){.surf-summary>.outlook-result{grid-column:1;grid-row:2}.surf-summary>.outlook-rating{grid-column:1;grid-row:3;font-size:20px}.surf-summary>.outlook-meter{grid-column:1;grid-row:4}.surf-summary>.outlook-reason{grid-column:1;grid-row:5}.surf-summary>.outlook-confidence{grid-column:1;grid-row:6}.surf-summary>.surf-number-row{grid-row:1/6}.outlook-score{font-size:41px}.outlook-scale{font-size:12px}.project-note{font-size:11px}}

.outlook-meter{grid-template-columns:repeat(5,1fr)}.outlook-meter[data-level="4"] span{background:#e0e5da}.outlook-meter[data-level="4"] span:nth-child(-n+4){background:var(--rating-color)}.outlook-meter[data-level="5"]{--rating-color:#32745a}.outlook-meter[data-level="5"] span{background:var(--rating-color)}.wind-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(125px,155px);align-items:start;gap:8px}.wind-overview .folly-compass{margin:0;width:100%}
@media(max-width:740px){.mini-tide{border-left:0;border-top:1px solid var(--line);padding:14px 0 0;margin-top:0}.mini-tide-heading{flex-direction:row;align-items:center}.mini-tide-chart{height:74px}}

.camera-links{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 17px;scroll-margin-top:85px}.camera-links-label{font-size:11px;color:var(--muted);margin-right:3px}.camera-links>a{display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid var(--line);border-radius:6px;background:var(--white);font-size:11px}.camera-links>a strong{font-weight:600}.camera-links>a>span{color:var(--muted);font-size:10px}.camera-links>a:hover{border-color:#8da997;background:#f2f5ec}.camera-links>a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
@media(max-width:740px){.camera-links{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:15px}.camera-links-label{grid-column:1/-1;font-size:10px}.camera-links>a{display:grid;grid-template-columns:1fr auto;gap:3px 5px;padding:9px 10px;font-size:11px}.camera-links>a>span:nth-child(2){grid-column:1;grid-row:2;font-size:9px}.camera-links>a>span:last-child{grid-column:2;grid-row:1/3}}

/* A compact direction instrument must not stretch every summary panel. */
.conditions-grid{grid-template-columns:1.05fr 1.15fr 1fr;align-items:start}.conditions-grid>article{height:100%}.wind-overview>div:first-child{padding-top:5px}.wind-overview .wind-number{margin:9px 0 5px}.wind-overview .board-note{font-size:10px;line-height:1.5}.outlook-reason{min-height:0}.nearshore-chart{height:113px}.nearshore-caption{margin-bottom:10px}
@media(min-width:741px) and (max-width:1050px){.conditions-grid{grid-template-columns:1fr 1fr}.wind-overview{grid-template-columns:minmax(0,1fr) 145px}}
@media(max-width:740px){.conditions-grid{grid-template-columns:1fr 1fr}.wind-overview{display:grid;grid-template-columns:minmax(0,1fr) 160px;align-items:start;gap:14px}.wind-overview>div:first-child{padding-top:15px}.wind-overview .board-note{font-size:11px}}
@media(max-width:370px){.wind-overview{grid-template-columns:minmax(0,1fr) 140px;gap:8px}}

.index-heading{display:block}.index-heading>span{display:flex;align-items:center;gap:8px}.index-heading small{display:block;font-size:10px;font-weight:400;letter-spacing:0;text-transform:none;margin-top:4px}.outlook-confidence:empty{display:none}.outlook-score[data-range="true"]{font-size:clamp(24px,2.8vw,36px);letter-spacing:-1px}

/* Named area buttons keep all three nearshore choices visible. */
.nearshore-top{flex-wrap:wrap}.nearshore-areas{display:flex;gap:3px;padding:3px;border:1px solid #d2dacd;border-radius:7px;background:var(--paper);width:100%}.nearshore-areas button{flex:1;min-width:0;min-height:34px;padding:6px 9px;border-radius:4px;font:550 11px var(--font);white-space:nowrap;color:var(--muted)}.nearshore-areas button:hover{background:#e7ecdf;color:var(--ink)}.nearshore-areas button[aria-pressed="true"]{background:var(--ink);color:var(--white);box-shadow:0 1px 3px #173e471a}.nearshore-areas button:focus-visible{outline:2px solid var(--orange);outline-offset:1px;position:relative;z-index:1}
@media(max-width:740px){.nearshore-top{flex-wrap:wrap}.nearshore-areas button{min-height:40px;font-size:12px}}

/* Bands progress from muted/limited through amber to green. */
.surf-summary:has(.outlook-meter[data-level="1"]){--outlook-accent:#8b625d}.surf-summary:has(.outlook-meter[data-level="2"]){--outlook-accent:#b26b35}.surf-summary:has(.outlook-meter[data-level="3"]){--outlook-accent:#946a13}.surf-summary:has(.outlook-meter[data-level="4"]){--outlook-accent:#697b37}.surf-summary:has(.outlook-meter[data-level="5"]){--outlook-accent:#32745a}.outlook-score,.outlook-rating{color:var(--outlook-accent,var(--ink))}

/* Extended forecasts retain readable cards instead of shrinking sixteen columns. */
.day-grid{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:minmax(130px,1fr);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;padding:3px 1px 12px;scrollbar-width:thin}.day-card{scroll-snap-align:start;min-width:130px}.day-grid>.empty-message{grid-column:auto;min-width:260px}.history-section{margin-top:30px;background:var(--white);border:1px solid var(--line);border-radius:9px;padding:24px}.history-section .section-heading{margin-bottom:17px}.history-section h2{font-size:24px;margin:0}.history-intro{font-size:12px;color:var(--muted);margin-top:6px}.project-note{max-width:680px;font-size:10px;font-weight:450;line-height:1.7}
/* Full-width geographic wind map, with the wind reading in a compact header. */
.wind-overview{display:block}.wind-overview>div:first-child{padding-top:0;display:grid;grid-template-columns:1fr auto;align-items:center;gap:3px 8px}.wind-overview .wind-number{grid-column:2;grid-row:1/3;margin:0;font-size:27px}.wind-overview .board-note{grid-column:1;grid-row:2}.wind-overview .folly-compass{width:100%;max-width:360px;margin:12px auto 0}
@media(max-width:740px){.day-grid{grid-template-columns:none;grid-auto-columns:132px}.day-card{min-width:132px}.history-section{padding:18px}.history-section h2{font-size:22px}.wind-overview{display:block}.wind-overview>div:first-child{padding-top:0}.project-note{font-size:10px}}

.window-rating{font-weight:700}.window-rating[data-level="1"]{color:#8b625d}.window-rating[data-level="2"]{color:#b26b35}.window-rating[data-level="3"]{color:#946a13}.window-rating[data-level="4"]{color:#697b37}.window-rating[data-level="5"]{color:#32745a}
.coastal-panel{margin:17px 0;padding:12px 14px;border:1px solid #ccd6c7;border-radius:6px;background:#f0f3e9}.coastal-panel>summary{cursor:pointer;font-size:12px;font-weight:650}.coastal-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:11px;font-size:10px}.coastal-heading>a{text-decoration:underline;text-underline-offset:3px}.coastal-panel .coastal-status{font-size:10px;line-height:1.5;margin:8px 0;color:var(--muted)}.coastal-readings{display:grid;grid-template-columns:1fr 1fr;gap:12px}.coastal-reading{padding-top:9px;border-top:1px solid #d5dece}.coastal-reading h4{margin:0 0 5px;font-size:11px;font-weight:600}.coastal-reading strong{font-size:18px;font-weight:650;letter-spacing:-.3px}.coastal-panel .coastal-reading p{font-size:10px;margin:3px 0;line-height:1.5}.coastal-reading time{font-size:9px;color:var(--muted)}.coastal-unavailable{font-size:11px;color:var(--muted)}@media(max-width:420px){.coastal-readings{grid-template-columns:1fr}.coastal-heading{align-items:flex-start}}

/* Balance wave, tide, and wind information without a tall combined wind/tide column. */
.conditions-balanced{grid-template-columns:1fr 1.12fr 1fr;align-items:stretch}
.conditions-balanced>article{height:auto;padding:18px 20px}
.conditions-balanced .nearshore-top{gap:7px}
.conditions-balanced .nearshore-areas{width:auto;flex:1;min-width:190px}
.conditions-balanced .nearshore-top>.board-label{font-size:9px;letter-spacing:.7px}
.conditions-balanced .nearshore-chart{height:96px;margin-top:5px}
.conditions-balanced .nearshore-caption{margin-bottom:6px}
.nearshore-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px}
.nearshore-meta .board-note,.nearshore-meta .source-time{font-size:10px;margin:0}
.conditions-balanced .mini-tide{border-left:0;border-top:1px solid var(--line);margin:11px 0 0;padding:10px 0 0}
.conditions-balanced .mini-tide-heading{flex-direction:row;align-items:center}
.conditions-balanced .mini-tide-chart{height:59px;margin:2px -3px 3px}
.conditions-balanced .mini-tide>.board-note{font-size:10px}
.conditions-balanced .wind-overview{display:block}
.conditions-balanced .wind-overview .folly-compass{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;width:100%;max-width:320px;margin:8px auto 0}
.wind-panel .fc-map-caption,.wind-panel .fc-map-diagram,.wind-panel .fc-map-attribution{grid-column:1/-1}
.wind-panel .fc-reading{margin:4px 0 0;gap:5px;min-width:0}
.wind-panel .fc-reading strong{flex-wrap:wrap;gap:2px 5px}
.wind-panel .fc-reading p{font-size:10px;line-height:1.4}
@media(min-width:741px) and (max-width:1050px){
 .conditions-balanced{grid-template-columns:1fr 1.12fr}
 .conditions-balanced>.wind-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}
 .conditions-balanced .wind-overview{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,320px);align-items:start;gap:24px;max-width:660px;margin:auto}
 .conditions-balanced .wind-overview>div:first-child{margin-top:12px}
 .conditions-balanced .wind-overview .folly-compass{margin:0}
}
@media(max-width:740px){
 .conditions-balanced{grid-template-columns:1fr}
 .conditions-balanced>article{padding:17px}
 .conditions-balanced>.wind-panel{grid-column:1/-1;border-left:0;border-top:1px solid var(--line)}
 .conditions-balanced .nearshore-areas{width:100%;flex-basis:100%}
 .conditions-balanced .nearshore-chart{height:97px}
 .conditions-balanced .mini-tide-chart{height:68px}
 .conditions-balanced .wind-overview .folly-compass{margin-top:9px}
}

/* Five current-condition readings; two then three cards on small screens. */
.conditions-details{grid-template-columns:repeat(5,minmax(0,1fr))}
@media(max-width:740px){
 .conditions-details{grid-template-columns:repeat(6,minmax(0,1fr))}
 .conditions-details article{grid-column:span 2;padding:13px 12px}
 .conditions-details article:nth-child(-n+2){grid-column:span 3}
 .conditions-details article:nth-child(n){border-left:0}
 .conditions-details article:nth-child(2),.conditions-details article:nth-child(n+4){border-left:1px solid var(--line)}
 .conditions-details article:nth-child(n+3){border-top:1px solid var(--line)}
}

.today-window{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 9px;padding:9px 0;margin-top:9px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.today-window>.board-label{flex-basis:100%;font-size:9px;letter-spacing:.7px}
.today-window>strong{font-size:12px;font-weight:650;line-height:1.5}
.today-window>.window-rating{font-size:10px;line-height:1.5}
.today-window>.window-rating:empty{display:none}
.window-card>#window-date{margin:7px 0 0}
@media(max-width:740px){.surf-summary>.today-window{grid-column:1/-1;grid-row:7;margin-top:10px}}

.surf-mark[hidden]{display:none}


/* Transparent primary wordmark; retain the existing header and footer layout. */
.brand,.footer-brand{flex-shrink:0}.brand-wordmark{display:block;width:160px;height:76px;object-fit:cover;object-position:center}.footer-brand .brand-wordmark{width:128px;height:61px}
@media(max-width:740px){.brand .brand-wordmark{width:138px;height:66px}}

/* Ranking is separate from the selected area's existing background. */
.nearshore-areas button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding-inline:5px}
.nearshore-best{display:block;border:1px solid #b7c8a8;border-radius:3px;background:#edf3df;color:#354c2e;padding:1px 3px;font:700 8px/1.3 var(--font);letter-spacing:.25px;white-space:nowrap}
.nearshore-best[hidden]{display:none}
.conditions-balanced .nearshore-areas{min-width:min(190px,100%)}


/* The day switch stays above the outlook on both phone and desktop. */
.outlook-day-heading{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:14px 22px;border-bottom:1px solid var(--line);background:#f7f8f0}
.outlook-days{display:flex;gap:4px;padding:3px;border:1px solid var(--line);border-radius:7px;background:var(--white)}
.outlook-days button{min-height:44px;min-width:104px;padding:9px 18px;border:0;border-radius:5px;background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.outlook-days button[aria-pressed="true"]{background:var(--ink);color:var(--white)}
.outlook-days button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.outlook-day-context{margin:0;font-size:11px;line-height:1.5;color:var(--muted)}
.conditions-details.forecast-details{grid-template-columns:repeat(3,minmax(0,1fr))}
.conditions-details [hidden]{display:none}
@media(max-width:740px){.outlook-day-heading{padding:13px 17px;gap:8px}.outlook-days{width:100%}.outlook-days button{flex:1}.outlook-day-context{width:100%;font-size:10px}.conditions-details.forecast-details article{border-top:0;border-left:0;padding:13px 12px}.conditions-details.forecast-details article+article{border-left:1px solid var(--line)}}
