:root{--bg: #04101a;--panel: rgba(7, 18, 28, .9);--modal-bg: rgb(7, 18, 28);--panel-border: rgba(120, 190, 230, .1);--text: #dff0fb;--muted: #7aa6bc;--accent: #5ccfff;--accent-2: #37c29d;--warning: #ffbf6b;--high: #71f0cb;--low: #6ab4ff;--shadow: 0 8px 32px rgba(1, 9, 16, .5);--radius: 16px;--footer-bg: rgba(4, 10, 16, .6);--footer-border: rgba(120, 190, 230, .08);font-family:-apple-system,Helvetica Neue,Segoe UI,sans-serif;color:var(--text);background:#04101a}[data-theme=light]{--bg: #c8dce9;--panel: #ffffff;--modal-bg: #ffffff;--panel-border: rgba(20, 70, 110, .22);--text: #06121a;--muted: #1e4a65;--accent: #005290;--accent-2: #056648;--warning: #7a3600;--high: #044d37;--low: #003e8a;--shadow: 0 4px 20px rgba(4, 20, 40, .18);--footer-bg: rgba(175, 210, 230, .95);--footer-border: rgba(20, 70, 110, .2);background:#c8dce9;color:#06121a}[data-theme=light] .shell{background:linear-gradient(160deg,#9fc5dd,#c8dce9 55%,#d8e8f2)}[data-theme=light] .panel{background:#fff;border:1px solid rgba(20,70,110,.18);box-shadow:0 2px 12px #0414281a}[data-theme=light] .page-header .lede{color:#1e4a65}[data-theme=light] h1{color:#06121a}[data-theme=light] .eyebrow{color:#005290}[data-theme=light] .freshness-pill{border-color:#14466e4d;color:#1e4a65;background:#14466e0f}[data-theme=light] .refresh-btn{background:#14466e14;border-color:#14466e40;color:#06121a}[data-theme=light] .refresh-btn:hover{background:#14466e29}[data-theme=light] .chart-gridline{stroke:#1e5a8226}[data-theme=light] .chart-label{fill:#2e5a74}[data-theme=light] .wind-axis{fill:#077a58;opacity:1}[data-theme=light] .sea-axis{fill:#0060a0;opacity:1}[data-theme=light] .chart-dir-label{fill:#077a58;opacity:1}[data-theme=light] .chart-gust-label{fill:#8f4200}[data-theme=light] .wind-line{stroke:#077a58;fill:none}[data-theme=light] .wind-dot,[data-theme=light] .legend-item.wind:before{stroke:#077a58;fill:#077a58;background:#077a58}[data-theme=light] .gust-line{stroke:#8f4200;fill:none}[data-theme=light] .gust-dot,[data-theme=light] .legend-item.gust:before{stroke:#8f4200;fill:#8f4200;background:#8f4200}[data-theme=light] .legend-item.sea:before{background:#0060a0;opacity:.6}[data-theme=light] rect[fill="#72c9ff"]{fill:#4a9ecf!important}[data-theme=light] text[fill="#72c9ff"]{fill:#0060a0!important}[data-theme=light] .accent-rising strong,[data-theme=light] .accent-fresh strong{color:#077a58}[data-theme=light] .accent-falling strong,[data-theme=light] .accent-warning strong{color:#8f4200}[data-theme=light] .accent-sea strong{color:#0060a0}[data-theme=light] .tide-row.high strong{color:#065e42}[data-theme=light] .tide-row.low strong{color:#0048a0}[data-theme=light] .val-wind{color:#077a58}[data-theme=light] .val-gust{color:#8f4200}[data-theme=light] .val-sea{color:#0060a0}[data-theme=red]{--bg: #0e0000;--panel: rgba(28, 4, 4, .95);--modal-bg: rgb(28, 4, 4);--panel-border: rgba(180, 40, 40, .18);--text: #ff6b6b;--muted: #a03030;--accent: #ff4444;--accent-2: #cc2222;--warning: #ff6600;--high: #ff5555;--low: #cc3333;--shadow: 0 8px 32px rgba(80, 0, 0, .6);--footer-bg: rgba(20, 0, 0, .8);--footer-border: rgba(180, 40, 40, .12);background:#0e0000;color:#ff6b6b}[data-theme=red] .shell{background:#0e0000}[data-theme=red] .wind-line{stroke:#ff6b6b;fill:none}[data-theme=red] .wind-dot,[data-theme=red] .legend-item.wind:before{stroke:#ff6b6b;fill:#ff6b6b;background:#ff6b6b}[data-theme=red] .gust-line{stroke:#c30;fill:none}[data-theme=red] .gust-dot,[data-theme=red] .legend-item.gust:before{stroke:#c30;fill:#c30;background:#c30}[data-theme=red] .chart-gridline{stroke:#b4282833}[data-theme=red] .chart-label,[data-theme=red] .chart-dir-label,[data-theme=red] .chart-gust-label{fill:#a03030}[data-theme=red] .wind-axis{fill:#c33}[data-theme=red] .sea-axis{fill:#a22}[data-theme=red] rect[fill="#72c9ff"]{fill:#8b1a1a!important}[data-theme=red] text[fill="#72c9ff"]{fill:#c44!important}[data-theme=red] .accent-rising strong,[data-theme=red] .accent-fresh strong,[data-theme=red] .accent-sea strong,[data-theme=red] .accent-falling strong,[data-theme=red] .accent-warning strong,[data-theme=red] .accent-muted strong{color:var(--text)}[data-theme=red] .tide-row.high strong{color:var(--high)}[data-theme=red] .tide-row.low strong{color:var(--low)}[data-theme=red] .forecast-table.wind strong,[data-theme=red] .forecast-table.sea strong,[data-theme=red] .val-wind,[data-theme=red] .val-gust,[data-theme=red] .val-sea,[data-theme=red] .info-badge strong,[data-theme=red] .metric-card strong{color:var(--text)}[data-theme=red] .freshness-pill{color:var(--muted);border-color:var(--panel-border)}[data-theme=red] .freshness-pill.stale{color:var(--warning)}[data-theme=red] .eyebrow-sea-value{color:var(--text)}[data-theme=red] .fallback-note{background:#78140033;border-color:#b428004d;color:var(--warning)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-height:100vh}.shell{position:relative;min-height:100vh;overflow:hidden;background:var(--bg);color:var(--text);transition:background .2s,color .2s}.aurora{display:none}.app-frame{position:relative;z-index:1;width:min(1440px,calc(100vw - 32px));margin:0 auto;padding:24px 0 36px}.page-header{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}.header-controls{display:flex;align-items:center;gap:6px;flex-shrink:0}.theme-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:999px;border:1px solid var(--panel-border);background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s;flex-shrink:0}.theme-btn svg{width:16px;height:16px}.theme-btn:hover{background:#80b4dc1f;color:var(--text)}.red-btn.active{color:#f44;border-color:#f446;background:#ff44441a}.unit-toggle-btn{display:inline-flex;align-items:center;height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--panel-border);background:transparent;color:var(--text);font-size:.78rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:background .15s,color .15s;flex-shrink:0;font-family:inherit}.unit-toggle-btn:hover{background:#80b4dc1f;color:var(--text)}.app-footer{display:flex;flex-wrap:wrap;gap:0;margin-top:16px;border-top:1px solid var(--footer-border);background:var(--footer-bg);border-radius:var(--radius);overflow:hidden}.footer-item{display:flex;flex-direction:column;gap:3px;padding:10px 18px;border-right:1px solid var(--footer-border);flex:1 1 auto}.footer-item:last-child{border-right:none}.footer-item span{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);opacity:.8}.footer-item strong{font-size:.85rem;color:var(--text);font-weight:500}.stale-text{color:var(--warning)}.fresh-text{color:var(--high)}.page-header h1,.panel-header h3,.hero-panel h2{margin:0;letter-spacing:-.01em}.page-header h1{font-size:1.6rem;font-weight:600;line-height:1.2}.lede{margin:4px 0 0;color:var(--muted);font-size:.9rem;line-height:1.4}.eyebrow-row{display:flex;align-items:baseline;gap:10px;margin:0 0 6px}.eyebrow{margin:0;text-transform:uppercase;letter-spacing:.18em;font-size:.68rem;color:var(--muted);opacity:.7;flex-shrink:0}.eyebrow-sea-state{display:flex;align-items:baseline;gap:8px;padding-left:12px;border-left:1px solid var(--panel-border)}.eyebrow-sea-label{font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);opacity:.7;flex-shrink:0}.eyebrow-sea-value{font-size:.78rem;font-weight:600;color:var(--text)}.freshness-pill{padding:6px 12px;border-radius:999px;border:1px solid var(--panel-border);background:#0b1e2e80;color:var(--muted);font-size:.8rem}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);box-shadow:var(--shadow)}.loading-panel,.error-panel{padding:32px;text-align:center}.top-row{display:flex;align-items:flex-start;gap:12px;margin-bottom:12px}.hero-grid{display:grid;grid-template-columns:1fr;gap:12px;flex:0 0 auto;width:720px}.top-row .timing-panel{flex:1 1 0;min-width:0}.hero-grid.stale .panel{border-color:#ffbf6b52;box-shadow:0 24px 80px #24110059}.hero-panel,.status-panel,.chart-panel,.tide-panel,.timing-panel{padding:18px 20px}.hero-head,.hero-main{display:flex;gap:16px}.hero-head{justify-content:space-between;align-items:flex-start}.panel-header{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.freshness-pill.stale{border-color:#ffbf6b66;color:#ffd89e}.hero-main{align-items:flex-end;flex-wrap:wrap;margin-top:16px;gap:0}.hero-stat{display:flex;flex-direction:column;gap:4px;padding:0 20px 0 0}.hero-stat:first-child{padding-left:0}.hero-stat-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.hero-stat-value{display:flex;align-items:baseline;gap:6px}.hero-stat-divider{width:1px;height:52px;background:var(--panel-border);margin:0 20px 4px 0;align-self:flex-end}.hero-stat-label-row{display:flex;align-items:baseline;gap:6px}.hero-stat-sublabel{font-size:.75rem;color:var(--muted)}.chart-seas-footnote{margin:4px 0 0;font-size:.65rem;color:var(--muted);opacity:.65;letter-spacing:.02em;text-align:right;padding-right:4px}.sea-source-label{font-size:1.1rem;color:var(--muted);padding-bottom:4px;letter-spacing:0;text-transform:none;opacity:.75}.hero-stat--wind{flex-shrink:1;min-width:0}.hero-stat--seas{flex:1;min-width:0}.wind-safe{color:#4fd18a;fill:#4fd18a}.wind-moderate{color:#f0c040;fill:#f0c040}.wind-warning{color:#f07820;fill:#f07820}.wind-danger{color:#e03030;fill:#e03030}[data-theme=light] .wind-safe{color:#1a8c50;fill:#1a8c50}[data-theme=light] .wind-moderate{color:#a07000;fill:#a07000}[data-theme=light] .wind-warning{color:#b84000;fill:#b84000}[data-theme=light] .wind-danger{color:#a00000;fill:#a00000}[data-theme=red] .wind-safe,[data-theme=red] .wind-moderate,[data-theme=red] .wind-warning,[data-theme=red] .wind-danger{color:var(--text);fill:var(--text)}.sea-safe{color:#4fd18a}.sea-moderate{color:#a8d14f}.sea-caution{color:#f0c040}.sea-warning{color:#f07820}.sea-danger{color:#e03030}[data-theme=light] .sea-safe{color:#1a8c50}[data-theme=light] .sea-moderate{color:#6a9a10}[data-theme=light] .sea-caution{color:#a07000}[data-theme=light] .sea-warning{color:#b84000}[data-theme=light] .sea-danger{color:#a00000}[data-theme=red] .sea-safe,[data-theme=red] .sea-moderate,[data-theme=red] .sea-caution,[data-theme=red] .sea-warning,[data-theme=red] .sea-danger{color:var(--text)}.metric-number{font-size:clamp(3rem,6vw,4.5rem);font-weight:300;line-height:1;letter-spacing:-.02em}.metric-unit{font-size:1.1rem;color:var(--muted);padding-bottom:4px}.hero-badges,.hero-metrics,.status-stack,.daily-times{display:grid;gap:8px}.hero-badges{grid-template-columns:repeat(1,minmax(0,1fr));margin-top:14px;width:min(100%,320px)}.info-badge,.metric-card,.status-line,.daily-card,.forecast-row,.tide-row{background:#040e1699;border:1px solid rgba(100,170,210,.08);border-radius:10px}[data-theme=light] .info-badge,[data-theme=light] .metric-card,[data-theme=light] .status-line,[data-theme=light] .daily-card,[data-theme=light] .forecast-row,[data-theme=light] .tide-row{background:#14466e0f;border:1px solid rgba(20,70,110,.14)}.info-badge{padding:10px 14px}.info-badge span,.metric-card span,.status-line span,.daily-card span,.daily-card label,.forecast-row span,.tide-row span,.tide-table-head span{display:block;color:var(--muted);font-size:.86rem}.info-badge strong,.metric-card strong,.status-line strong,.daily-card strong,.forecast-row strong,.tide-row strong{display:block;margin-top:5px;font-size:1rem}.hero-detail{margin:18px 0 0;color:#cbe8f7;max-width:48ch}[data-theme=light] .hero-detail{color:#1e4a65}.hero-metrics{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:12px}.metric-card{padding:12px 14px}.metric-card small{display:block;margin-top:7px;color:var(--muted);line-height:1.35}.accent-rising strong,.accent-fresh strong{color:#7af0d3}.accent-falling strong,.accent-warning strong{color:#ffb680}.accent-sea strong{color:#80d7ff}.fallback-note{margin-top:16px;padding:14px 16px;border-radius:18px;background:#ffbf6b1a;border:1px solid rgba(255,191,107,.18);color:#ffd7a3;line-height:1.45}.disclaimer-block{margin-top:12px;padding:12px 16px;border-radius:12px;font-size:.82rem;line-height:1.55;color:var(--muted);border:1px solid var(--panel-border);background:var(--footer-bg)}.disclaimer-block strong{color:var(--text);font-weight:600}.disclaimer-block.fallback-notice{background:#ffbf6b12;border-color:#ffbf6b38;color:#c9a870}.disclaimer-block.fallback-notice strong{color:#ffd7a3}[data-theme=light] .disclaimer-block.fallback-notice{background:#783c000f;border-color:#783c0033;color:#6a3800}[data-theme=light] .disclaimer-block.fallback-notice strong{color:#5a2e00}[data-theme=red] .disclaimer-block{background:#5000004d;border-color:#b4282833;color:var(--muted)}[data-theme=red] .disclaimer-block.fallback-notice{background:#50000066;border-color:#b428284d;color:var(--muted)}.status-stack{margin-top:6px}.status-line{padding:10px 14px}.content-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}.chart-panel,.bft-legend-panel,.tide-panel{grid-column:span 12}.bft-table{display:grid;gap:3px}.bft-head{display:grid;grid-template-columns:2.5rem 4rem 4rem 1fr 3fr;gap:8px;padding:4px 10px 8px;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);border-bottom:1px solid var(--panel-border);margin-bottom:4px}.bft-row{display:grid;grid-template-columns:2.5rem 4rem 4rem 1fr 3fr;gap:8px;padding:7px 10px;border-radius:8px;align-items:center;border-left:3px solid transparent;transition:background .1s}.bft-force{font-size:1.05rem;font-weight:600;line-height:1}.bft-label{font-weight:500}.bft-homer{font-size:.84rem;color:var(--muted);line-height:1.35}.bft-risk-safe{background:#37c29d0f;border-left-color:#37c29d4d}.bft-risk-caution{background:#ffbf6b12;border-left-color:#ffbf6b66}.bft-risk-caution .bft-force{color:#ffb05c}.bft-risk-warning{background:#ff783c14;border-left-color:#ff783c73}.bft-risk-warning .bft-force{color:#ff7840}.bft-risk-danger{background:#dc3c3c14;border-left-color:#dc3c3c73}.bft-risk-danger .bft-force{color:#e05050}.bft-current{background:#5ccfff1a!important;border-left-color:var(--accent)!important;box-shadow:inset 0 0 0 1px #5ccfff26}.bft-current .bft-force{color:var(--accent)}.bft-current .bft-label{color:var(--text)}[data-theme=light] .bft-risk-safe{background:#0564460d;border-left-color:#05644640}[data-theme=light] .bft-risk-caution{background:#a050000d;border-left-color:#a050004d}[data-theme=light] .bft-risk-caution .bft-force{color:#7a3600}[data-theme=light] .bft-risk-warning{background:#b43c000d;border-left-color:#b43c0059}[data-theme=light] .bft-risk-warning .bft-force{color:#b03000}[data-theme=light] .bft-risk-danger{background:#a014140d;border-left-color:#a0141459}[data-theme=light] .bft-risk-danger .bft-force{color:#900000}[data-theme=light] .bft-current{background:#00529014!important;border-left-color:var(--accent)!important;box-shadow:inset 0 0 0 1px #0052901f}[data-theme=light] .bft-current .bft-force{color:var(--accent)}[data-theme=red] .bft-risk-safe{background:#50000026;border-left-color:#7814144d}[data-theme=red] .bft-risk-caution{background:#50000033;border-left-color:#a01e1e66}[data-theme=red] .bft-risk-warning{background:#50000040;border-left-color:#b4282880}[data-theme=red] .bft-risk-danger{background:#5000004d;border-left-color:#c8323299}[data-theme=red] .bft-risk-caution .bft-force,[data-theme=red] .bft-risk-warning .bft-force,[data-theme=red] .bft-risk-danger .bft-force{color:var(--text)}[data-theme=red] .bft-current{background:#64000059!important;border-left-color:var(--accent)!important}.panel-header{margin-bottom:12px}.panel-header h3{font-size:1.2rem;font-weight:600}.panel-subtitle{margin:10px 0 0;color:var(--muted);max-width:56ch;line-height:1.45}.trend-wrap{overflow-x:auto}.chart-legend{display:flex;gap:14px;margin-bottom:12px}.legend-item{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:.9rem}.legend-btn{background:none;border:none;padding:4px 8px;border-radius:6px;cursor:pointer;font-family:inherit;transition:background .15s}.legend-btn:hover{background:#ffffff12;color:var(--text)}.modal-backdrop{position:fixed;inset:0;background:#01080eb8;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.modal-box{background:var(--modal-bg, var(--panel));border:1px solid var(--panel-border);border-radius:var(--radius);box-shadow:0 24px 64px #0009;width:min(420px,100%);max-height:80vh;display:flex;flex-direction:column;overflow:hidden}.modal-box--wide{width:min(860px,100%)}.bft-badge-btn{width:100%;text-align:left;cursor:pointer;background:transparent;border:none;padding:0;font:inherit;color:inherit;transition:opacity .15s}.bft-badge-btn:hover{opacity:.75}.bft-badge-btn span{display:block;color:var(--muted);font-size:.86rem}.bft-badge-btn strong{display:block;margin-top:5px;font-size:1rem}.bft-badge-btn:after{content:" ↗";font-size:.7rem;color:var(--muted);vertical-align:super}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--panel-border);flex-shrink:0}.modal-header h3{margin:0;font-size:1rem;font-weight:600}.modal-close{background:none;border:none;color:var(--muted);font-size:1.1rem;cursor:pointer;padding:2px 6px;border-radius:4px;line-height:1;transition:color .15s}.modal-close:hover{color:var(--text)}.modal-body{overflow-y:auto;padding:8px 0}.modal-body .bft-table{padding:0 8px 8px}.modal-table{width:100%;border-collapse:collapse;font-size:.875rem}.modal-table th{padding:8px 20px;text-align:left;color:var(--muted);font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.06em;position:sticky;top:0;background:var(--panel)}.modal-table td{padding:9px 20px;border-top:1px solid rgba(100,170,210,.06);color:var(--text)}.modal-table tbody tr:hover td{background:#ffffff08}.val-wind{color:#77e4c2;font-weight:500}.val-gust{color:#ffb05c;font-weight:500}.val-sea{color:#72c9ff;font-weight:500}.legend-item:before{content:"";width:18px;height:3px;border-radius:999px}.legend-item.wind:before,.wind-line,.wind-dot{background:none;stroke:#77e4c2;fill:#77e4c2}.legend-item.wind:before{background:#77e4c2}.legend-item.gust:before,.gust-line,.gust-dot{background:none;stroke:#ffb05c;fill:#ffb05c}.legend-item.gust:before{background:#ffb05c}.legend-item.sea:before,.sea-line,.sea-dot{background:none;stroke:#72c9ff;fill:#72c9ff}.legend-item.sea:before{background:#72c9ff;opacity:.5;width:14px;height:14px;border-radius:3px}.trend-chart{width:100%;min-width:480px;height:auto}.chart-gridline{stroke:#8ec1db24;stroke-width:1}.wind-line,.gust-line,.sea-line{fill:none;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}.gust-line{stroke-width:2;stroke-dasharray:5 3;opacity:.75}.chart-label{fill:#8eb4c6;font-size:12px}.chart-axis-label{font-size:11px}.chart-dir-label{fill:#77e4c2;font-size:10px;opacity:.75;font-weight:500}.chart-gust-label{fill:#ffb05c;font-size:9px;opacity:.85;font-weight:500}.wind-axis{fill:#77e4c2;opacity:.7}.sea-axis{fill:#72c9ff;opacity:.7}.forecast-table{display:grid;gap:6px;max-height:460px;overflow:auto;padding-right:2px}.forecast-row{display:flex;justify-content:space-between;gap:16px;padding:10px 14px}.forecast-table.wind strong{color:#7af0d3}.forecast-table.sea strong{color:#80d7ff}.tide-table{display:grid;gap:4px}.tide-table-head,.tide-row{display:grid;grid-template-columns:minmax(0,1.7fr) .7fr .7fr;gap:16px;align-items:center}.tide-table-head{padding:0 16px}.tide-row{padding:7px 12px}.tide-row.high strong{color:var(--high)}.tide-row.low strong{color:var(--low)}.daily-grid{display:grid;gap:8px}.daily-card{padding:12px 14px}.daily-card strong{font-size:1.15rem;margin-top:8px}.daily-times{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:8px}.refresh-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;border:1px solid var(--panel-border);background:#0a1c2cb3;color:var(--text);font-size:.875rem;cursor:pointer;transition:background .15s,opacity .15s;flex-shrink:0}.refresh-btn:hover:not(:disabled){background:#143248e6}.refresh-btn:disabled{opacity:.6;cursor:default}.refresh-btn svg{width:16px;height:16px;flex-shrink:0}.refresh-btn.spinning svg{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1100px){.top-row{flex-direction:column}.hero-grid,.top-row .timing-panel{width:100%}.content-grid{grid-template-columns:1fr}.chart-panel,.tide-panel{grid-column:auto}.hero-badges,.hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-badges{width:100%;max-width:100%}}@media(max-width:600px){.app-frame{width:calc(100vw - 20px);padding-top:18px;padding-bottom:36px}.page-header{flex-direction:row;align-items:center;flex-wrap:nowrap;gap:10px;margin-bottom:14px}.page-header h1{font-size:1.25rem}.lede{font-size:.78rem}.refresh-btn .btn-label{display:none}.refresh-btn{padding:8px 10px;gap:0}.hero-panel,.chart-panel,.tide-panel,.timing-panel{padding:16px}.app-footer{flex-direction:column;border-radius:12px}.footer-item{border-right:none;border-bottom:1px solid var(--footer-border);padding:8px 14px}.footer-item:last-child{border-bottom:none}.hero-head{flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}.hero-main{align-items:flex-end;flex-wrap:wrap;gap:0;margin-top:14px}.hero-stat{padding:0 14px 0 0}.hero-stat-divider{margin:0 14px 4px 0;height:40px}.metric-number{font-size:clamp(2.2rem,10vw,3.2rem)}.metric-unit{font-size:.9rem}.panel-header h3{font-size:1rem}.eyebrow{font-size:.62rem}.info-badge span,.metric-card span,.status-line span,.daily-card span,.daily-card label,.forecast-row span,.tide-row span{font-size:.72rem}.info-badge strong,.metric-card strong,.status-line strong,.daily-card strong,.forecast-row strong,.tide-row strong{font-size:.875rem}.metric-card small{font-size:.72rem}.daily-card strong{font-size:.95rem}.freshness-pill{font-size:.72rem;padding:4px 9px}.hero-detail{font-size:.82rem}.forecast-row strong{font-size:.9rem}.hero-badges{grid-template-columns:repeat(1,minmax(0,1fr));width:100%;max-width:100%}.hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.trend-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.trend-chart{min-width:420px}.forecast-table{display:flex;flex-direction:row;flex-wrap:nowrap;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;max-height:none}.forecast-row{flex:0 0 auto;flex-direction:column;align-items:flex-start;gap:4px;padding:10px 12px;min-width:72px}.tide-table-head{display:none}.tide-row{grid-template-columns:1fr auto auto;gap:10px;padding:10px 12px}.daily-card{padding:14px}.daily-times{margin-top:10px;gap:8px}.status-stack{gap:8px}.status-line{padding:10px 12px}}.alerts-section{margin:0 auto 16px;width:100%;max-width:var(--content-max-width, 1200px);border-radius:10px;overflow:hidden;background:var(--panel-bg);border:1px solid var(--panel-border, rgba(255,255,255,.08));box-shadow:var(--panel-shadow, 0 2px 8px rgba(0,0,0,.25))}.alerts-section.alerts-clear{display:flex;align-items:center;gap:10px;padding:12px 18px;background:transparent;border-color:#4fd18a40}.alerts-clear-icon{font-size:14px;color:#4fd18a;font-weight:700}.alerts-clear-text{font-size:13px;color:#4fd18a;opacity:.9}.alerts-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--panel-border, rgba(255,255,255,.08));background:#00000026}.alerts-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, rgba(255,255,255,.55))}.alerts-count{font-size:11px;font-weight:600;color:var(--text-secondary, rgba(255,255,255,.45))}.alerts-scroll{max-height:280px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;background:var(--panel-border, rgba(255,255,255,.06));scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent}.alerts-scroll::-webkit-scrollbar{width:5px}.alerts-scroll::-webkit-scrollbar-track{background:transparent}.alerts-scroll::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.alert-card{background:var(--panel-bg)}.alert-card-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;background:transparent;border:none;cursor:pointer;text-align:left;color:inherit}.alert-card-header:hover{background:#ffffff0a}.alert-card-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.alert-card-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.alert-badge{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:4px;flex-shrink:0;color:#fff}.alert-badge.alert-extreme{background:#c0392b}.alert-badge.alert-severe{background:#e03030}.alert-badge.alert-moderate{background:#f07820}.alert-badge.alert-minor{background:#d4a017;color:#1a1a1a}.alert-event{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-zones{font-size:12px;color:var(--text-secondary, rgba(255,255,255,.5));white-space:nowrap}.alert-expires{font-size:12px;color:var(--text-secondary, rgba(255,255,255,.45));white-space:nowrap}.alert-chevron{font-size:9px;color:var(--text-secondary, rgba(255,255,255,.35));flex-shrink:0}.alert-card-body{padding:0 16px 14px;border-top:1px solid var(--panel-border, rgba(255,255,255,.07));background:#0000001a}.alert-description{font-family:inherit;font-size:12.5px;line-height:1.65;color:var(--text-secondary, rgba(255,255,255,.7));white-space:pre-wrap;word-break:break-word;margin:12px 0 0;max-height:300px;overflow-y:auto}.alert-card.alert-extreme{border-left:3px solid #c0392b}.alert-card.alert-severe{border-left:3px solid #e03030}.alert-card.alert-moderate{border-left:3px solid #f07820}.alert-card.alert-minor{border-left:3px solid #d4a017}[data-theme=light] .alerts-section{border-color:#0000001a;box-shadow:0 1px 4px #0000001a}[data-theme=light] .alerts-header{background:#0000000a;border-color:#00000014}[data-theme=light] .alerts-title,[data-theme=light] .alerts-count{color:#00000073}[data-theme=light] .alerts-scroll{background:#0000000d;scrollbar-color:rgba(0,0,0,.15) transparent}[data-theme=light] .alerts-scroll::-webkit-scrollbar-thumb{background:#00000026}[data-theme=light] .alert-card-header:hover{background:#00000008}[data-theme=light] .alert-zones,[data-theme=light] .alert-expires,[data-theme=light] .alert-chevron{color:#00000073}[data-theme=light] .alert-card-body{background:#00000008;border-color:#00000012}[data-theme=light] .alert-description{color:#000000a6}[data-theme=light] .alerts-clear-icon,[data-theme=light] .alerts-clear-text{color:#2a8f5c}[data-theme=light] .alert-badge.alert-minor{color:#6b4600}[data-theme=red] .alerts-section,[data-theme=red] .alert-badge,[data-theme=red] .alerts-clear-icon,[data-theme=red] .alerts-clear-text{color:var(--text);border-color:#f003}[data-theme=red] .alert-card.alert-extreme,[data-theme=red] .alert-card.alert-severe,[data-theme=red] .alert-card.alert-moderate,[data-theme=red] .alert-card.alert-minor{border-left-color:var(--text)}[data-theme=red] .alert-badge{background:#f003!important;color:var(--text)!important}@media(max-width:600px){.alert-card-right{display:none}.alert-card-header{padding:10px 14px}.alert-event{font-size:13px}}.gale-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 auto 14px;padding:13px 18px;width:100%;max-width:var(--content-max-width, 1200px);border-radius:10px;background:linear-gradient(135deg,#e030302e,#e030301a);border:1px solid rgba(224,48,48,.55);box-shadow:0 0 #e0303000;position:relative;overflow:hidden}.gale-banner:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(224,48,48,.08) 50%,transparent 100%);background-size:200% 100%;animation:banner-sweep 4s ease-in-out infinite;pointer-events:none}@keyframes banner-sweep{0%{background-position:-100% 0}50%{background-position:100% 0}to{background-position:-100% 0}}.gale-banner.banner-pulse-severe{border-color:#f07820bf;background:linear-gradient(135deg,#f0782033,#f078201a);animation:banner-border-severe 2.5s ease-in-out infinite}.gale-banner.banner-pulse-severe:before{background:linear-gradient(90deg,transparent 0%,rgba(240,120,32,.1) 50%,transparent 100%);background-size:200% 100%}@keyframes banner-border-severe{0%,to{box-shadow:0 0 #f0782000}50%{box-shadow:0 0 16px 2px #f0782059}}.gale-banner.banner-pulse-extreme{border-color:#c0392bd9;background:linear-gradient(135deg,#c0392b40,#c0392b1f);animation:banner-flash-extreme 1.4s ease-in-out infinite}.gale-banner.banner-pulse-extreme:before{background:linear-gradient(90deg,transparent 0%,rgba(192,57,43,.14) 50%,transparent 100%);background-size:200% 100%;animation-duration:1.4s}@keyframes banner-flash-extreme{0%,to{box-shadow:0 0 #c0392b00;border-color:#c0392bd9}50%{box-shadow:0 0 22px 4px #c0392b73;border-color:#ff503c}}.gale-banner-inner{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.gale-banner-icon{font-size:20px;line-height:1;flex-shrink:0;color:#e03030;filter:drop-shadow(0 0 6px rgba(224,48,48,.6))}.banner-pulse-severe .gale-banner-icon{color:#f07820;filter:drop-shadow(0 0 6px rgba(240,120,32,.6))}.banner-pulse-extreme .gale-banner-icon{color:#ff4040;filter:drop-shadow(0 0 8px rgba(255,64,64,.8));animation:icon-throb 1.4s ease-in-out infinite}@keyframes icon-throb{0%,to{transform:scale(1)}50%{transform:scale(1.18)}}.gale-banner-text{display:flex;flex-direction:column;gap:2px;min-width:0}.gale-banner-event{font-size:14px;font-weight:700;color:#ff6b6b;letter-spacing:.02em}.banner-pulse-severe .gale-banner-event{color:#f0a050}.banner-pulse-extreme .gale-banner-event{color:#ff5050}.gale-banner-detail{font-size:12px;color:var(--text-secondary, rgba(255,255,255,.6));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gale-banner-expires{font-size:12px;font-weight:600;color:#ff6b6bcc;white-space:nowrap;flex-shrink:0}.gale-banner-dismiss{background:none;border:none;color:#ffffff59;font-size:14px;cursor:pointer;padding:4px 6px;border-radius:4px;flex-shrink:0;line-height:1;transition:color .15s,background .15s}.gale-banner-dismiss:hover{color:#ffffffbf;background:#ffffff14}@keyframes badge-pulse-severe{0%,to{opacity:1;box-shadow:0 0 #f0782000}50%{opacity:.75;box-shadow:0 0 6px 2px #f0782080}}@keyframes badge-pulse-extreme{0%,to{opacity:1;box-shadow:0 0 #c0392b00;transform:scale(1)}50%{opacity:.8;box-shadow:0 0 8px 3px #c0392b99;transform:scale(1.06)}}.badge-pulse-severe{animation:badge-pulse-severe 2.5s ease-in-out infinite}.badge-pulse-extreme{animation:badge-pulse-extreme 1.4s ease-in-out infinite}[data-theme=light] .gale-banner{background:linear-gradient(135deg,#e030301a,#e030300d);border-color:#c8282866}[data-theme=light] .gale-banner-event{color:#c0392b}[data-theme=light] .gale-banner-expires{color:#c0392bcc}[data-theme=light] .gale-banner-icon{color:#c0392b}[data-theme=light] .gale-banner-dismiss{color:#0000004d}[data-theme=light] .gale-banner-dismiss:hover{color:#000000b3;background:#0000000f}[data-theme=light] .banner-pulse-severe .gale-banner-event{color:#b05000}[data-theme=light] .banner-pulse-extreme .gale-banner-event{color:#a00000}[data-theme=red] .gale-banner{background:#ff000014;border-color:#ff00004d;animation:none}[data-theme=red] .gale-banner:before{display:none}[data-theme=red] .gale-banner-icon,[data-theme=red] .gale-banner-event,[data-theme=red] .gale-banner-expires{color:var(--text)}[data-theme=red] .gale-banner-icon{filter:none;animation:none}@media(max-width:600px){.gale-banner{padding:11px 14px;gap:8px}.gale-banner-expires{display:none}.gale-banner-detail{font-size:11px}}.alerts-forecast-btn{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 11px;border-radius:5px;border:1px solid rgba(255,255,255,.18);background:#ffffff12;color:var(--text-secondary, rgba(255,255,255,.65));cursor:pointer;white-space:nowrap;transition:background .15s,color .15s,border-color .15s}.alerts-forecast-btn:hover{background:#ffffff21;color:var(--text, #fff);border-color:#ffffff4d}.alerts-header{display:flex;align-items:center;gap:10px}.alerts-header .alerts-title{flex:1}[data-theme=light] .alerts-forecast-btn{border-color:#00000026;background:#0000000d;color:#0000008c}[data-theme=light] .alerts-forecast-btn:hover{background:#00000017;color:#000c}[data-theme=red] .alerts-forecast-btn{border-color:#ff000040;background:#ff000012;color:var(--text)}.alerts-section.alerts-clear{justify-content:flex-start}.alerts-section.alerts-clear .alerts-forecast-btn{margin-left:auto}.fm-backdrop{position:fixed;inset:0;z-index:300;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:32px 16px;overflow-y:auto}.fm-panel{width:100%;max-width:680px;background:var(--panel-bg);border:1px solid var(--panel-border, rgba(255,255,255,.1));border-radius:12px;box-shadow:0 24px 64px #00000080;overflow:hidden;display:flex;flex-direction:column}.fm-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--panel-border, rgba(255,255,255,.08));background:#0003}.fm-title{font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary, rgba(255,255,255,.6))}.fm-close{background:none;border:none;color:#fff6;font-size:16px;cursor:pointer;padding:4px 8px;border-radius:4px;line-height:1;transition:color .15s,background .15s}.fm-close:hover{color:#fffc;background:#ffffff14}.fm-body{overflow-y:auto;max-height:70vh;display:flex;flex-direction:column;gap:1px;background:var(--panel-border, rgba(255,255,255,.06));scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.12) transparent}.fm-body::-webkit-scrollbar{width:5px}.fm-body::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.fm-period{padding:14px 20px;display:flex;flex-direction:column;gap:4px}.fm-day{background:var(--panel-bg)}.fm-night{background:#0000001f}.fm-period-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.fm-period-name{font-size:14px;font-weight:700;color:var(--text)}.fm-period-temp{font-size:18px;font-weight:700;color:var(--text);flex-shrink:0}.fm-period-wind{font-size:12px;color:var(--text-secondary, rgba(255,255,255,.55));font-weight:500}.fm-period-short{font-size:12px;font-weight:600;color:var(--text-secondary, rgba(255,255,255,.65))}.fm-period-detail{font-size:12.5px;line-height:1.6;color:var(--text-secondary, rgba(255,255,255,.5));margin-top:2px}.fm-footer{padding:10px 20px;font-size:11px;color:var(--text-secondary, rgba(255,255,255,.3));border-top:1px solid var(--panel-border, rgba(255,255,255,.07));background:#00000026}.fm-empty{padding:24px 20px;color:var(--text-secondary);font-size:13px}[data-theme=light] .fm-backdrop{background:#0006}[data-theme=light] .fm-close{color:#00000059}[data-theme=light] .fm-close:hover{color:#000000bf;background:#0000000f}[data-theme=light] .fm-night{background:#0000000a}[data-theme=light] .fm-body{scrollbar-color:rgba(0,0,0,.12) transparent}[data-theme=red] .fm-backdrop{background:#000000bf}[data-theme=red] .fm-close{color:var(--text)}.wh-panel{margin:0 auto 16px;width:100%;max-width:var(--content-max-width, 1200px);border-radius:10px;overflow:hidden;background:var(--panel-bg);border:1px solid var(--panel-border, rgba(255,255,255,.07));box-shadow:var(--panel-shadow, 0 2px 8px rgba(0,0,0,.2));border-left:3px solid rgba(240,120,32,.5)}.wh-header{display:flex;align-items:center;justify-content:space-between;padding:9px 16px;border-bottom:1px solid var(--panel-border, rgba(255,255,255,.07));background:#0000001f}.wh-title{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, rgba(255,255,255,.45))}.wh-count{font-size:11px;color:var(--text-secondary, rgba(255,255,255,.35))}.wh-scroll{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:1px;background:var(--panel-border, rgba(255,255,255,.05));scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.12) transparent}.wh-scroll::-webkit-scrollbar{width:4px}.wh-scroll::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:2px}.wh-row{background:var(--panel-bg);display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 16px;font-size:12.5px}.wh-row-left{display:flex;align-items:center;gap:9px;flex:1;min-width:0}.wh-row-right{display:flex;align-items:center;gap:14px;flex-shrink:0}.wh-badge{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 6px;border-radius:3px;color:#fff;flex-shrink:0}.wh-badge.alert-extreme{background:#c0392b}.wh-badge.alert-severe{background:#e03030}.wh-badge.alert-moderate{background:#f07820}.wh-badge.alert-minor{background:#d4a017;color:#1a1a1a}.wh-event{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wh-zones{font-size:11.5px;color:var(--text-secondary, rgba(255,255,255,.45));white-space:nowrap}.wh-time{font-size:11px;color:var(--text-secondary, rgba(255,255,255,.35));white-space:nowrap;font-variant-numeric:tabular-nums}[data-theme=light] .wh-panel{border-color:#00000017;border-left-color:#c8781e66}[data-theme=light] .wh-header{background:#00000008}[data-theme=light] .wh-badge.alert-minor{color:#6b4600}[data-theme=light] .wh-scroll{scrollbar-color:rgba(0,0,0,.1) transparent}[data-theme=red] .wh-panel{border-left-color:var(--text);border-color:#f003}[data-theme=red] .wh-badge{background:#f003!important;color:var(--text)!important}@media(max-width:600px){.wh-row-right{display:none}.fm-backdrop{padding:16px 8px}.fm-period{padding:12px 14px}}:root{--tide-color: #4ab8c1;--tide-high: #4ab8c1;--tide-low: #7aaab8}.tide-chart-panel{grid-column:1 / -1}.tide-chart-svg{width:100%;height:auto;display:block;overflow:visible}.tide-chart-empty{padding:32px;text-align:center;color:var(--text-secondary, rgba(255,255,255,.4));font-size:13px}.tide-axis-label{font-size:10px;fill:var(--text-secondary, rgba(255,255,255,.4));font-family:inherit}.tide-hilo-label{font-size:11px;font-weight:700;fill:var(--text-secondary, rgba(255,255,255,.7));font-family:inherit}.tide-now-label{font-size:11px;font-weight:700;fill:#fff;font-family:inherit}[data-theme=light]{--tide-color: #1a7f8a;--tide-high: #1a7f8a;--tide-low: #4a8fa0}[data-theme=light] .tide-chart-svg .tide-axis-label{fill:#00000073}[data-theme=light] .tide-chart-svg .tide-hilo-label{fill:#000000a6}[data-theme=light] .tide-chart-svg .tide-now-label{fill:#000000d9}[data-theme=light] .tide-chart-svg line[stroke="rgba(255,255,255,0.25)"]{stroke:#0003}[data-theme=red]{--tide-color: var(--text);--tide-high: var(--text);--tide-low: var(--text)}[data-theme=red] .tide-axis-label,[data-theme=red] .tide-hilo-label,[data-theme=red] .tide-now-label{fill:var(--text)}.panel-title-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:none;padding:0;cursor:pointer;color:inherit;text-align:left}.panel-title-btn h3{margin:0;font-size:inherit;font-weight:inherit;color:inherit;line-height:inherit;text-decoration:underline;text-decoration-color:#fff3;text-underline-offset:3px;transition:text-decoration-color .15s}.panel-title-btn:hover h3{text-decoration-color:#fff9}.panel-title-arrow{font-size:13px;opacity:.45;flex-shrink:0;transition:opacity .15s,transform .15s}.panel-title-btn:hover .panel-title-arrow{opacity:.85;transform:translate(1px,-1px)}[data-theme=light] .panel-title-btn h3{text-decoration-color:#0003}[data-theme=light] .panel-title-btn:hover h3{text-decoration-color:#00000080}.tide-modal-panel{max-width:480px}.tide-modal-body{overflow-y:auto;max-height:70vh;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.12) transparent}.tide-modal-body::-webkit-scrollbar{width:5px}.tide-modal-body::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:3px}.tide-modal-table-head{display:grid;grid-template-columns:1fr 80px 80px;gap:8px;padding:8px 20px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary, rgba(255,255,255,.4));border-bottom:1px solid var(--panel-border, rgba(255,255,255,.07));background:#00000026;position:sticky;top:0;z-index:1}.tide-modal-row{display:grid;grid-template-columns:1fr 80px 80px;gap:8px;align-items:center;padding:11px 20px;border-bottom:1px solid var(--panel-border, rgba(255,255,255,.05));transition:background .1s}.tide-modal-row:last-child{border-bottom:none}.tide-modal-row:hover{background:#ffffff08}.tide-modal-high{background:#4ab8c10a}.tide-modal-low{background:#82a0b908}.tide-modal-time{font-size:13px;color:var(--text);font-variant-numeric:tabular-nums}.tide-modal-badge{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:4px}.tide-modal-badge-high{background:#4ab8c133;color:var(--tide-color, #4ab8c1);border:1px solid rgba(74,184,193,.3)}.tide-modal-badge-low{background:#82a0b926;color:var(--tide-low, #8eaab5);border:1px solid rgba(130,160,185,.25)}.tide-modal-height{font-size:14px;font-weight:700;color:var(--text);font-variant-numeric:tabular-nums;text-align:right}[data-theme=light] .tide-modal-body{scrollbar-color:rgba(0,0,0,.12) transparent}[data-theme=light] .tide-modal-row:hover{background:#00000008}[data-theme=light] .tide-modal-high{background:#1a7f8a0a}[data-theme=light] .tide-modal-low{background:#4a8fa008}[data-theme=light] .tide-modal-badge-high{background:#1a7f8a1f;border-color:#1a7f8a40}[data-theme=light] .tide-modal-badge-low{background:#4a8fa01a;border-color:#4a8fa033}[data-theme=red] .tide-modal-badge-high,[data-theme=red] .tide-modal-badge-low{background:#ff00001a;border-color:#f003;color:var(--text)}@media(max-width:600px){.tide-modal-panel{max-width:100%}.tide-modal-table-head,.tide-modal-row{grid-template-columns:1fr 60px 60px;gap:6px;padding:10px 14px}}
