.weather-panel{border:1px solid #dce9ed;border-radius:14px;margin:30px 0;padding:24px;background:linear-gradient(180deg,#f3fafb 0,#fff 220px);min-width:0}.weather-heading,.weather-hour-heading,.weather-warnings>header{display:flex;align-items:center;justify-content:space-between;gap:14px}.weather-heading h2{font-size:23px;margin:7px 0}.weather-heading .ai-help svg,.weather-hour-heading .ai-help svg,.weather-warnings .ai-help svg{width:17px;height:17px}.weather-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:16px 0}.weather-toolbar p{font-size:11px;color:#587585}.weather-toolbar form{display:flex;align-items:center;gap:8px}.weather-toolbar label{font-size:11px;color:#587585}.weather-toolbar select{margin-left:6px;padding:7px;border:1px solid #d8e5e9;border-radius:7px;background:white;font:inherit}.weather-toolbar .ws-outline{font-size:11px;padding:7px 10px;min-height:0}.weather-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;padding:2px}.weather-day{display:flex;flex-direction:column;align-items:center;gap:5px;padding:13px 7px;border:1px solid #dce7eb;border-radius:10px;background:white;color:#214b5c;text-decoration:none;text-align:center;min-width:0;font-size:11px}.weather-day>span{font-weight:700}.weather-day time{color:#6d8792;font-size:10px}.weather-day strong{font-size:11px;white-space:nowrap}.weather-day small{font-size:10px;color:#65818f}.weather-day b{font-size:20px;margin:1px 0}.weather-day.selected{border:2px solid #068795;background:#e8f6f7;padding:12px 6px}.weather-day:focus-visible{outline:3px solid #078795;outline-offset:2px}.weather-day:hover{border-color:#068795}.weather-day .weather-missing{margin-top:16px;font-size:11px}.weather-hour-heading{margin:25px 0 13px}.weather-hour-heading h3{font-size:15px;margin:0}.weather-table-scroll{max-height:440px;overflow:auto;border:1px solid #dfe9ed;border-radius:9px;overscroll-behavior:contain}.weather-table{border-collapse:separate;border-spacing:0;width:100%;min-width:760px;font-size:12px;text-align:left}.weather-table th,.weather-table td{padding:13px 11px;border-bottom:1px solid #edf2f4;white-space:nowrap;vertical-align:top}.weather-table thead th{position:sticky;top:0;background:#edf7f8;z-index:1;font-size:11px}.weather-table tbody th{background:#f8fbfc}.weather-table small,.weather-table span{display:block;color:#617c8b;font-size:10px;line-height:1.8}.weather-table td strong{font-size:12px}.weather-table tbody tr:last-child>*{border-bottom:0}.weather-table tbody tr:nth-child(even) td{background:#fafcfd}.weather-warnings{margin-top:24px;border-top:1px solid #e1eaee;padding-top:18px;font-size:12px}.weather-warnings h3{font-size:15px;margin:0 0 10px}.weather-warning{border-left:4px solid #c79b21;background:#fff9e9;padding:13px 16px;border-radius:5px;margin:12px 0}.weather-warning.orange{border-color:#d77b1b}.weather-warning.red{border-color:#bf4c49}.weather-warning p{line-height:1.7;margin:5px 0}.weather-warning small{font-size:10px}.wx-muted,.weather-source{color:#6b8592;font-size:11px;line-height:1.6}.weather-source{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid #e1eaee;padding-top:13px;margin-top:20px}.weather-source p{margin:4px 0}.weather-source a{color:#087f8a}.weather-stale{background:#fff4db;border-radius:6px;padding:12px;font-size:12px}.weather-empty,.weather-unavailable{padding:24px;color:#617c89;font-size:13px}.weather-unavailable{display:flex;align-items:center;gap:16px;background:#f4f9fa;border-radius:10px;margin-top:15px}.weather-unavailable>span{font-size:35px;color:#4b9ca9}.weather-unavailable p{margin:0;line-height:1.7}.wx-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.weather-admin-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:20px}.weather-settings{padding:25px;margin-bottom:20px;min-width:0}.weather-settings h2{margin:0 0 20px;font-size:19px}.weather-settings p{line-height:1.7;font-size:13px}.weather-settings .log-field .ai-help{display:inline-block}.weather-settings .ai-help svg{width:16px;height:16px}.weather-settings code{display:block;background:#f2f7f9;padding:12px;border-radius:7px;overflow-wrap:anywhere}.weather-settings dd{margin:5px 0 15px;font-size:12px}.weather-settings dt{font-size:12px;color:#68818e}.weather-audit{display:flex;gap:20px;border-top:1px solid #e5edf0;padding:13px 0;font-size:12px}.weather-audit time{color:#6b8592;font-size:11px}.weather-admin .ai-stat strong{font-size:24px}
@media(max-width:1000px){.weather-days{display:flex;overflow-x:auto;padding:3px 3px 12px;scroll-snap-type:x proximity}.weather-day{flex:0 0 110px;scroll-snap-align:start}.weather-toolbar{flex-wrap:wrap}.weather-admin-grid{grid-template-columns:1fr}}
@media(max-width:760px){.weather-panel{padding:16px;margin:24px -3px}.weather-heading h2{font-size:20px}.weather-day{flex-basis:100px}.weather-hour-heading{align-items:start}.weather-hour-heading h3{line-height:1.6}.weather-toolbar{gap:5px}.weather-toolbar form{flex-wrap:wrap}.weather-toolbar p{width:100%;line-height:1.6}.weather-table{min-width:710px}.weather-source{align-items:start}.weather-source p{font-size:10px}.weather-audit{flex-direction:column;gap:6px}.weather-settings{padding:20px}.weather-admin .log-form-columns{grid-template-columns:1fr}}

.weather-table tbody th{position:sticky;left:0;z-index:1}.weather-table thead th:first-child{left:0;z-index:3}.weather-days{scrollbar-width:thin}.weather-scroll-hint{display:none;color:#6b8592;font-size:10px}@media(max-width:760px){.weather-scroll-hint{display:block;margin:0 0 10px}}

.weather-settings .log-check{display:flex;align-items:center;justify-content:flex-start;gap:10px}.weather-settings .log-check input[type=checkbox]{width:18px;min-width:18px;flex:0 0 18px;margin:0;accent-color:#078795}
/* Approved visual forecast: real samples, separate wave/swell, optional numeric detail. */
.forecast-chart{border:1px solid #e0ebef;border-radius:11px;background:#fff;padding:15px 14px 10px;margin:12px 0;min-width:0}.forecast-chart header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.forecast-chart h4{margin:0;font-size:14px;color:#163f51}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:10px;color:#597786}.chart-legend span{display:flex;align-items:center;gap:5px}.chart-legend i{width:20px;border-top:3px solid #079aa7}.chart-legend i.second{border-top:2px dashed #429fe3}.forecast-svg{width:100%;height:auto;display:block;overflow:visible;margin-top:12px}.chart-grid path{stroke:#e4eef2;stroke-width:1}.chart-grid text{fill:#65818e;font-size:11px}.chart-line{fill:none;stroke:#079aa7;stroke-width:2}.chart-line.series-1{stroke:#429fe3;stroke-dasharray:5 4}.chart-sample{outline:none;fill:#079aa7}.chart-sample.series-1{fill:#429fe3}.chart-hit{fill:transparent;cursor:pointer}.chart-sample>circle:first-child{fill:#fff;stroke:#079aa7;stroke-width:1.5}.chart-sample.series-1>circle:first-child{stroke:#429fe3}.chart-tooltip{display:none;pointer-events:none}.chart-tooltip rect{fill:#173f52;stroke:white}.chart-tooltip text{fill:#fff;font-size:10px}.chart-sample:hover .chart-tooltip,.chart-sample:focus .chart-tooltip{display:block}.chart-sample:focus>circle:first-child{stroke-width:4}.chart-directions{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#496b7e;font-size:10px;padding:0 12px 4px 35px}.chart-directions span{display:flex;align-items:center;gap:4px}.chart-directions b{display:inline-block;font-size:16px;color:#1b5267}.weather-chart-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}.weather-chart-pair .forecast-chart{margin:0}.weather-detail{margin:18px 0}.weather-detail summary{cursor:pointer;color:#008591;font-size:12px;font-weight:700;padding:12px 0}.weather-interval-note{color:#637e8b;font-size:11px;line-height:1.7}.day-sparkline{width:100%;height:23px;color:#19a4cf}.day-weather{font-size:23px;line-height:1.4}.weather-test-result{background:#eef9f8;border:1px solid #b9dfe0;border-radius:9px;padding:16px;line-height:1.7}.weather-test-result dl{display:grid;grid-template-columns:1fr 1fr;gap:8px}.weather-test-result dd{margin:0;font-weight:700}@media(max-width:700px){.weather-chart-pair{grid-template-columns:1fr}.weather-days{display:flex;overflow-x:auto;scroll-snap-type:x proximity;padding:3px 3px 10px}.weather-day{flex:0 0 105px;scroll-snap-align:start}.forecast-chart{padding:12px 9px}.chart-directions{padding-left:25px;gap:4px}.chart-directions span:nth-child(even){display:none}.chart-legend{font-size:10px}.forecast-svg{min-height:130px}.weather-hour-heading h3{font-size:14px}}

@media(max-width:700px){.forecast-svg .chart-grid text{font-size:21px}.forecast-svg .chart-tooltip text{font-size:18px}.chart-line{vector-effect:non-scaling-stroke;stroke-width:1.5}.forecast-chart header{gap:8px}.chart-directions{font-size:9px}}
.weather-test-log{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.6 ui-monospace,monospace;max-width:100%;padding:12px;background:#f3f8fa;border-radius:8px}.weather-audit{flex-wrap:wrap}.weather-audit details{flex-basis:100%}.weather-audit summary{cursor:pointer;color:#008591}.weather-test-result small,.weather-test-result time{display:block;color:#5e7a89;font-size:11px;margin-top:8px}
/* Charts are content, so they must override the workspace's small-icon SVG rule. */
.workspace-shell svg.forecast-svg{width:100%;height:auto;min-height:0}.workspace-shell svg.day-sparkline{width:100%;height:25px}@media(max-width:700px){.workspace-shell svg.forecast-svg{min-height:115px}}
@media(max-width:700px){.ds-detail .weather-panel{margin-left:-12px;margin-right:-12px;padding:12px}.forecast-svg .chart-grid text{font-size:27px}.forecast-svg .chart-tooltip rect{width:300px;height:38px}.forecast-svg .chart-tooltip text{font-size:26px;transform:translateY(10px)}}
