:root{--color-water-deep:#0e3b3e;--color-water:#0e7c86;--color-page-bg:#f6f8fa;--color-surface:#fff;--color-border:#d0d7de;--color-sargassum:#7a5c2e;--color-ink:#12292b;--flag-unknown:#8a9a9a;--font-body:-apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", "Courier New", monospace;--radius:6px}*{box-sizing:border-box}html,body{background:var(--color-page-bg);height:100%;color:var(--color-ink);font-family:var(--font-body);margin:0}#app{flex-direction:column;height:100vh;display:flex}.app-header{background:var(--color-water-deep);color:var(--color-page-bg);border-bottom:1px solid var(--color-border);z-index:10;justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.app-header .brand{align-items:baseline;gap:10px;display:flex}.app-header h1{font-family:var(--font-body);letter-spacing:.02em;margin:0;font-size:20px;font-weight:700}.brand-home-link{color:inherit;text-decoration:none}.brand-home-link:hover h1{text-decoration:underline}.brand-home-link:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.app-header .subtitle{color:var(--color-border);font-size:12px;font-family:var(--font-mono)}.header-actions{align-items:center;gap:14px;display:flex}.about-data-link{color:var(--color-border);font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;text-decoration:underline}.about-data-link:hover{color:var(--color-page-bg)}.about-data-link:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.lang-toggle{border:1px solid var(--color-border);color:var(--color-page-bg);font-family:var(--font-mono);border-radius:var(--radius);cursor:pointer;letter-spacing:.04em;background:0 0;padding:6px 12px;font-size:12px;transition:background .15s}.lang-toggle:hover{background:#f6f8fa1f}.lang-toggle:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.rewind-toggle{border:1px solid var(--color-border);color:var(--color-page-bg);font-family:var(--font-mono);border-radius:var(--radius);cursor:pointer;letter-spacing:.02em;background:0 0;padding:6px 12px;font-size:12px;transition:background .15s}.rewind-toggle:hover{background:#f6f8fa1f}.rewind-toggle:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.rewind-control{align-items:center;gap:6px;display:flex}.rewind-nav-btn{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;width:26px;height:26px;color:var(--color-page-bg);background:0 0;justify-content:center;align-items:center;font-size:13px;display:flex}.rewind-nav-btn:disabled{opacity:.35;cursor:not-allowed}.rewind-nav-btn:not(:disabled):hover{background:#f6f8fa1f}.rewind-banner{background:var(--color-sargassum);border-bottom:1px solid #12292b26}.rewind-banner-action{color:#fff;width:100%;font-family:var(--font-mono);text-align:center;letter-spacing:.02em;cursor:pointer;background:0 0;border:none;padding:8px 24px;font-size:12px;text-decoration:underline;display:block}.rewind-banner-action:hover{background:#00000014}.rewind-date-option{text-align:left;border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font-family:var(--font-mono);color:var(--color-ink);cursor:pointer;background:0 0;margin-top:6px;padding:8px 12px;font-size:13px;transition:background .15s,border-color .15s;display:block}.rewind-date-option:hover{background:var(--color-page-bg)}.rewind-date-option.active{border-color:var(--color-water-deep);background:var(--color-page-bg);font-weight:600}.rewind-calendar{margin-top:14px}.rewind-calendar-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.rewind-calendar-label{color:var(--color-ink);text-transform:capitalize;font-size:14px;font-weight:600}.rewind-calendar-nav-btn{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;width:26px;height:26px;color:var(--color-ink);background:0 0;justify-content:center;align-items:center;font-size:13px;display:flex}.rewind-calendar-nav-btn:disabled{opacity:.35;cursor:not-allowed}.rewind-calendar-nav-btn:not(:disabled):hover{background:var(--color-page-bg)}.rewind-calendar-weekdays,.rewind-calendar-grid{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.rewind-calendar-weekday{text-align:center;color:var(--color-sargassum);text-transform:uppercase;letter-spacing:.03em;padding-bottom:4px;font-size:11px;font-weight:600}.rewind-calendar-day{aspect-ratio:1;font-family:var(--font-mono);border-radius:var(--radius);border:1px solid #0000;justify-content:center;align-items:center;font-size:12px;display:flex;position:relative}.rewind-calendar-day-empty{visibility:hidden}span.rewind-calendar-day{color:var(--color-border);background:0 0}button.rewind-calendar-day{color:var(--color-ink);cursor:pointer;background:0 0;transition:background .15s,border-color .15s}button.rewind-calendar-day:hover{background:var(--color-page-bg)}button.rewind-calendar-day:focus-visible{outline:2px solid var(--color-water);outline-offset:1px}.rewind-calendar-day-dot{background:var(--color-water);border-radius:50%;width:3px;height:3px;position:absolute;bottom:3px;left:50%;transform:translate(-50%)}.rewind-calendar-day.selected{border-color:var(--color-water-deep);background:var(--color-page-bg);font-weight:600}.rewind-calendar-day.selected .rewind-calendar-day-dot{background:var(--color-water-deep)}.rewind-calendar-day.today:not(.selected){border-color:var(--color-border);font-weight:600}.main-layout{flex:1;min-height:0;display:flex}#map{flex:60%;min-width:0}.detail-panel{background:var(--color-surface);border-left:1px solid var(--color-border);flex:0 0 380px;max-width:380px;padding:20px;overflow-y:auto}@media (width<=860px){.main-layout{flex-direction:column}#map{flex:45%}.detail-panel{border-left:none;border-top:1px solid var(--color-border);flex:55%;max-width:none}}.beach-marker{background:var(--flag-color,var(--flag-unknown));border:2px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;display:flex;box-shadow:0 1px 4px #12292b73}.beach-marker-count{color:#fff;font-family:var(--font-mono);text-shadow:0 0 2px #12292bf2,0 0 3px #12292bf2,0 1px 1px #12292bf2;font-size:12px;font-weight:700;line-height:1}.panel-placeholder{color:#667;text-align:center;margin-top:40px;font-style:italic}.status-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:4px;display:flex}.last-updated{font-family:var(--font-mono);color:#889;font-size:11px}.status-note{color:#778;margin-bottom:14px;font-size:11px;font-style:italic}.status-badge{font-family:var(--font-mono);color:#fff;background:var(--flag-color,var(--flag-unknown));border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;display:inline-flex}.beach-name{font-family:var(--font-body);margin:0 0 4px;font-size:22px;font-weight:700}.beach-coords{font-family:var(--font-mono);color:#778;margin-bottom:16px;font-size:11px}.readout-row{border-bottom:1px solid #eee;justify-content:space-between;padding:8px 0;font-size:14px;display:flex}.readout-row .label{color:#556}.readout-row .value{font-family:var(--font-mono);font-weight:600}.section-title{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.06em;color:var(--color-water-deep);border-top:2px solid var(--color-border);margin:22px 0 10px;padding-top:14px;font-size:13px;font-weight:700}.indicators-umbrella{border:1px solid var(--color-border);border-radius:var(--radius);margin-top:18px;padding:2px 14px 14px}.indicators-umbrella .section-title:first-of-type{margin-top:12px}.indicators-umbrella-title{font-family:var(--font-body);color:var(--color-water-deep);margin:14px 0 8px;font-size:14px;font-weight:700}.synthesis-line{color:var(--color-ink);background:var(--color-page-bg);border-radius:var(--radius);margin-bottom:4px;padding:6px 10px;font-size:13px}.synthesis-line.synthesis-differ{background:#0e7c861f}.about-data-modal{z-index:1000;background:#0e141499;justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}.about-data-modal.open{display:flex}.about-data-modal-content{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);max-width:480px;max-height:80vh;padding:28px 24px 24px;position:relative;overflow-y:auto}.about-data-modal-title{font-family:var(--font-body);color:var(--color-water-deep);margin:0 0 12px;font-size:18px;font-weight:700}.about-data-modal-body{color:var(--color-ink);margin:0;font-size:14px;line-height:1.6}.about-data-legend-title{font-family:var(--font-body);color:var(--color-water-deep);border-top:1px solid var(--color-border);margin:18px 0 10px;padding-top:14px;font-size:14px;font-weight:700}.about-data-legend{flex-direction:column;gap:10px;display:flex}.legend-row{align-items:flex-start;gap:10px;display:flex}.legend-swatch{border:1px solid #12292b26;border-radius:50%;flex:none;width:16px;height:16px;margin-top:2px}.legend-text{flex-direction:column;gap:1px;display:flex}.legend-label{font-family:var(--font-mono);color:var(--color-ink);font-size:12px;font-weight:600}.legend-desc{color:#667;font-size:12px;line-height:1.4}.about-data-heuristic-title{font-family:var(--font-body);color:var(--color-water-deep);border-top:1px solid var(--color-border);margin:18px 0 8px;padding-top:14px;font-size:14px;font-weight:700}.about-data-heuristic-body{color:var(--color-ink);margin:0;font-size:13px;line-height:1.6}.about-data-modal-close{color:#889;cursor:pointer;background:0 0;border:none;font-size:26px;line-height:1;position:absolute;top:10px;right:14px}.about-data-modal-close:hover{color:var(--color-ink)}.panel-placeholder-inline{color:#889;margin:4px 0 0;font-size:13px;font-style:italic}.official-link{color:var(--color-water-deep);margin-top:6px;font-size:13px;text-decoration:underline;display:block}.official-link-secondary{color:#667;font-size:12px}.disclaimer{color:#889;margin-top:28px;font-size:11px;line-height:1.5}.satellite-disclaimer{color:#667;margin-bottom:10px;font-size:12px;font-style:italic}.satellite-nav{font-family:var(--font-mono);justify-content:center;align-items:center;gap:14px;margin-bottom:10px;font-size:12px;display:flex}.satellite-nav button{border:1px solid var(--color-border);border-radius:var(--radius);cursor:pointer;width:28px;height:28px;color:var(--color-water-deep);background:0 0;font-size:14px}.satellite-nav button:disabled{opacity:.35;cursor:not-allowed}.satellite-nav button:not(:disabled):hover{background:#1c8c8614}.satellite-date{text-align:center;min-width:90px}.satellite-thumb{border-radius:var(--radius);cursor:zoom-in;border:1px solid var(--color-border);width:100%;display:block}.satellite-fallback{text-align:center;color:#889;padding:24px 0;font-size:13px;font-style:italic}.satellite-lightbox{z-index:1000;cursor:zoom-out;background:#0e1414e0;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.satellite-lightbox.open{display:flex}.satellite-lightbox-img{border-radius:6px;max-width:92vw;max-height:92vh}.satellite-lightbox-close{color:#fff;cursor:pointer;background:0 0;border:none;font-size:34px;line-height:1;position:absolute;top:16px;right:22px}.report-entry{border-bottom:1px dashed #ddd;padding:12px 0;font-size:13px}.report-entry-header{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.status-badge-sm{padding:2px 8px;font-size:11px}.report-author{color:var(--color-ink);font-weight:600}.report-time{font-family:var(--font-mono);color:#889;margin-left:auto;font-size:11px}.report-note{color:#334;white-space:pre-wrap;word-break:break-word;margin-bottom:8px;font-size:13px;line-height:1.4}.report-photo-thumb{border-radius:var(--radius);cursor:zoom-in;border:1px solid var(--color-border);max-width:160px;margin-bottom:8px;display:block}.report-entry-footer{justify-content:flex-end;display:flex}.report-flag-link{color:#99a;cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;text-decoration:underline}.report-flag-link:hover{color:#667}.report-flag-ack{color:#99a;font-size:11px;font-style:italic}.add-report-toggle{background:var(--color-water-deep);width:100%;color:var(--color-page-bg);border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;border:none;margin-top:14px;padding:10px;font-size:13px;font-weight:700;transition:background .15s;display:block}.add-report-toggle:hover{background:#0a2a2c}.report-form-wrap{background:var(--color-page-bg);border-radius:var(--radius);margin-top:14px;padding:14px}.form-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:#556;margin:12px 0 4px;font-size:11px;display:block}.form-label:first-child{margin-top:0}.form-input{border:1px solid var(--color-border);border-radius:var(--radius);width:100%;font-family:var(--font-body);color:var(--color-ink);background:var(--color-surface);resize:vertical;padding:8px 10px;font-size:13px}.form-input:focus-visible{outline:2px solid var(--color-water);outline-offset:1px}.category-btn-row{flex-wrap:wrap;gap:6px;display:flex}.category-btn{background:var(--flag-color,var(--flag-unknown));color:#fff;font-family:var(--font-mono);cursor:pointer;opacity:.55;border:2px solid #0000;border-radius:999px;padding:6px 10px;font-size:11px;transition:opacity .15s,border-color .15s}.category-btn:hover{opacity:.8}.category-btn.active{opacity:1;border-color:var(--color-ink)}.form-consent{color:#778;margin-top:8px;font-size:11px;font-style:italic;line-height:1.4}.visually-hidden-file-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.photo-choose-btn{border:1px solid var(--color-border);border-radius:var(--radius);color:var(--color-water-deep);font-family:var(--font-mono);cursor:pointer;background:0 0;align-items:center;gap:6px;margin-top:4px;padding:7px 12px;font-size:12px;transition:background .15s;display:inline-flex}.photo-choose-btn:hover{background:#1c8c8614}.photo-choose-btn:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.report-photo-preview{flex-direction:column;align-items:flex-start;gap:6px;margin-top:8px;display:flex}.report-photo-preview img{border-radius:var(--radius);border:1px solid var(--color-border);max-width:140px;display:block}.report-photo-preview-actions{gap:14px;display:flex}.report-photo-preview-actions .report-flag-link{font-size:11px}.form-error{color:#b23a2e;margin-top:10px;font-size:12px}.form-success{color:#2f8f5b;margin-top:10px;font-size:13px;font-weight:600}.form-submit-btn{background:var(--color-water);color:#fff;border-radius:var(--radius);width:100%;font-family:var(--font-body);cursor:pointer;border:none;margin-top:14px;padding:10px;font-size:13px;font-weight:700;transition:background .15s;display:block}.form-submit-btn:hover:not(:disabled){background:#147370}.form-submit-btn:disabled{opacity:.4;cursor:not-allowed}.landing-body{min-height:100%}.landing-main{max-width:880px;margin:0 auto;padding:0 24px}.landing-hero{text-align:center;padding:64px 0 48px}.landing-hero-tagline{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--color-water);margin:0 0 14px;font-size:13px}.landing-hero-body{font-family:var(--font-body);color:var(--color-ink);max-width:640px;margin:0 auto 28px;font-size:17px;line-height:1.6}.landing-cta{background:var(--color-water);color:#fff;font-family:var(--font-body);border-radius:var(--radius);padding:14px 32px;font-size:15px;font-weight:700;text-decoration:none;transition:background .15s;display:inline-block}.landing-cta:hover{background:#147370}.landing-cta:focus-visible{outline:2px solid var(--color-water-deep);outline-offset:2px}.landing-widget-section{text-align:center}.landing-widget-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);text-align:left;max-width:420px;color:inherit;margin:0 auto;padding:20px;text-decoration:none;transition:border-color .15s;display:block}.landing-widget-card:hover{border-color:var(--color-water)}.landing-widget-card:focus-visible{outline:2px solid var(--color-water);outline-offset:2px}.landing-widget-beach-name{font-family:var(--font-body);color:var(--color-ink);margin:0 0 8px;font-size:16px;font-weight:700}.landing-widget-unavailable{color:#667;margin:0;font-size:13px}.landing-widget-caption{font-family:var(--font-mono);color:#667;margin:10px 0 0;font-size:12px}.landing-pipeline-section{text-align:center}.landing-pipeline-body{color:var(--color-ink);max-width:640px;margin:0 auto 24px;font-size:15px;line-height:1.6}.landing-pipeline-diagram{max-width:800px;margin:0 auto}.landing-pipeline-svg{width:100%;height:auto;display:block}.landing-map-preview-section{text-align:center}.landing-map-preview{max-width:640px;margin:0 auto;display:block}.landing-map-preview-img{border-radius:var(--radius);border:1px solid var(--color-border);width:100%;transition:opacity .15s;display:block}.landing-map-preview:hover .landing-map-preview-img{opacity:.92}.landing-map-preview:focus-visible .landing-map-preview-img{outline:2px solid var(--color-water);outline-offset:2px}.landing-map-preview-caption{font-family:var(--font-mono);color:#667;margin:10px 0 0;font-size:12px}.landing-section{border-top:1px solid var(--color-border);padding:40px 0}.landing-section-title{text-align:center;border-top:none;margin-top:0;padding-top:0;font-size:15px}.landing-cards{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:24px;display:grid}.landing-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:18px}.landing-card-title{font-family:var(--font-body);color:var(--color-water-deep);margin:0 0 8px;font-size:15px;font-weight:700}.landing-card-body{color:#445;margin:0;font-size:13px;line-height:1.55}.landing-open-data{text-align:center}.landing-open-data-body{color:var(--color-ink);max-width:620px;margin:16px auto 28px;font-size:15px;line-height:1.6}.landing-interest-form{text-align:left;max-width:420px;margin:0 auto}.interest-checkbox-group{flex-direction:column;gap:8px;margin:14px 0;display:flex}.interest-checkbox-row{color:var(--color-ink);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.interest-checkbox-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--color-water);cursor:pointer}.landing-footer{text-align:center;max-width:880px;margin:0 auto;padding:28px 24px 40px}.landing-footer .disclaimer{margin-top:0}.landing-footer-credit{color:#889;margin:10px 0 0;font-size:11px}.landing-footer-credit a{color:#889;text-decoration:underline}.landing-footer-credit a:hover{color:var(--color-water-deep)}@media (width<=560px){.landing-hero{padding:44px 0 36px}.landing-hero-body{font-size:15px}}
