@import url("https://fonts.googleapis.com/css2?family=Newsreader:wght@600&family=IBM+Plex+Sans:wght@400;600&family=IBM+Plex+Mono:wght@500&display=swap");:root{--ink:#0e2540;--ink2:#3a4e66;--ink3:#4a5a6c;--ink4:#5b6b7e;--paper:#f6f3ec;--surface:#fcfaf6;--surface-alt:#f9f6f0;--canvas:#e7e2d8;--line:#dcd6ca;--line-soft:#e2dcd0;--line-strong:#b9b1a3;--input-border:#9c968a;--teal:#0b6e74;--teal-text:#0a5f64;--teal-soft:#dcedec;--teal-border:#8fc3c0;--teal-on-dark:#9fd6d2;--slate-bar:#8ca2b8;--model-border:#7f95ab;--model-text:#2e4a66;--sun:#d99a2b;--focus:#0b6e74;--scrim:rgba(14,37,64,0.5);--font-display:"Newsreader",Georgia,serif;--font-ui:"IBM Plex Sans",system-ui,sans-serif;--font-data:"IBM Plex Mono",ui-monospace,monospace;--touch:44px}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.55}main{max-width:1180px;margin:0 auto;padding:16px 16px 64px}@media (min-width:700px){main{padding:24px 24px 64px}}a{color:var(--teal-text)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}h1{font-family:var(--font-display);font-size:30px;font-weight:600;margin:0 0 8px;line-height:1.1}h2{font-size:21px;margin:0 0 12px}h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.2}h3{font-size:19px;margin:0 0 8px}.demo-banner{position:-webkit-sticky;position:sticky;top:0;z-index:40;background:var(--ink);color:var(--teal-on-dark);font-family:var(--font-data);font-size:12px;letter-spacing:.08em;text-transform:uppercase;text-align:center;padding:6px 12px}.topnav{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;padding:10px 0 14px;border-bottom:1px solid var(--line);margin-bottom:16px}.topnav .brand{font-family:var(--font-display);font-size:21px;font-weight:600;color:var(--ink);text-decoration:none;margin-right:auto}.topnav nav{display:flex;overflow-x:auto;-webkit-overflow-scrolling:touch}.topnav nav a{display:inline-flex;align-items:center;min-height:var(--touch);padding:0 14px;border-radius:999px;text-decoration:none;color:var(--ink2);font-weight:600;font-size:14px;white-space:nowrap;border:1px solid transparent}@media (max-width:699px){.topnav{gap:4px}.topnav nav{width:100%}.topnav nav a{padding:0 12px;font-size:13px}}.topnav nav a[aria-current=page]{background:var(--teal-soft);color:var(--teal-text);border:1px solid var(--teal-border)}.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px;margin-top:16px}.kv{font-family:var(--font-data);font-size:13px;display:grid;grid-template-columns:max-content 1fr;grid-gap:4px 16px;gap:4px 16px}.kv,.kv dd{margin:0}.label{font-size:13px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink2);display:block;margin-bottom:4px}.caption{font-size:12px;color:var(--ink4);line-height:1.5}.data{font-family:var(--font-data);font-size:13px}.empty-note{color:var(--ink4);border:1px dashed var(--line-strong);border-radius:8px;padding:12px 16px;margin-top:12px}.empty-state{border:1px dashed var(--line-strong);border-radius:12px;background:var(--surface-alt);padding:24px;margin-top:16px}.empty-state h3{margin-bottom:6px}.empty-state p{margin:0 0 14px;color:var(--ink3)}button,input[type=submit]{min-height:var(--touch);padding:0 20px;border-radius:8px;border:1px solid var(--teal);background:var(--teal);color:#fff;font-family:var(--font-ui);font-size:15px;cursor:pointer}button:disabled,input[type=submit]:disabled{opacity:.55;cursor:not-allowed}button.secondary{background:var(--surface);color:var(--teal-text);border:1px solid var(--teal-border)}button.linkish{background:none;border:none;color:var(--teal-text);text-decoration:underline;padding:0;min-height:0;font-size:inherit}input[type=date],input[type=datetime-local],input[type=number],input[type=password],input[type=text],select,textarea{min-height:var(--touch);width:100%;border:1px solid var(--input-border);border-radius:8px;padding:8px 12px;font-size:15px;background:var(--surface);color:var(--ink)}textarea{min-height:80px}form .field{margin-bottom:16px}.error{color:#8e3620;background:#f6e0d8;border:1px solid #dfae9d;border-radius:8px}.error,.success{padding:10px 14px;margin:12px 0 0}.success{color:var(--teal-text);background:var(--teal-soft);border:1px solid var(--teal-border);border-radius:8px}.mode-seg{display:flex;gap:4px;flex-wrap:wrap}.mode-seg button{background:var(--surface);color:var(--ink2);border:1px solid var(--line-strong);min-height:var(--touch);padding:0 16px;font-weight:600}.mode-seg button[aria-pressed=true]{background:var(--teal);border-color:var(--teal);color:#fff}.date-selector{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:6px;gap:6px;margin-top:12px;min-width:0}.date-selector button{min-width:0;overflow-wrap:anywhere;background:var(--surface);border:1px solid var(--line-strong);color:var(--ink2);border-radius:10px;padding:8px 4px;min-height:var(--touch);font-size:13px;line-height:1.3;display:flex;flex-direction:column;align-items:center;gap:2px}.date-selector button[aria-pressed=true]{background:var(--teal-soft);border-color:var(--teal);color:var(--teal-text)}.date-selector .dow{font-weight:600;text-transform:uppercase;letter-spacing:.05em;font-size:11px}.date-selector .dnum{font-family:var(--font-data);font-size:13px}.date-selector .dnote{font-size:10px;color:var(--ink4)}.overview-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:12px}.overview-toolbar select{min-width:180px;width:auto}.spot-row-grid{display:grid;grid-gap:12px;gap:12px;margin-top:12px}@media (min-width:1100px){.spot-row-grid{grid-template-columns:minmax(180px,1.1fr) 1.6fr 1.6fr 1.4fr;align-items:start}}.spot-row{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-top:12px}.spot-row .spot-name{font-family:var(--font-display);font-size:19px;font-weight:600;margin:0}.cell-label,.spot-row .spot-meta{font-size:12px;color:var(--ink4)}.cell-label{font-weight:600;letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:4px}.data-lines{margin:0;display:grid;grid-gap:2px;gap:2px}.data-lines .dl{display:flex;gap:8px;align-items:baseline}.data-lines .k{color:var(--ink4);min-width:88px;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.data-lines .v{font-family:var(--font-data);font-size:13px}.data-lines .note{color:var(--ink4);font-size:11px}.muted{color:var(--ink4)}.missing-val{color:var(--ink4);font-style:italic}.badge,.missing-val{font-family:var(--font-ui);font-size:12px}.badge{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:4px 12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.badge .shape{width:12px;height:12px;flex:none;display:inline-block}.badge-promising{color:#0a5f64;background:#dcedec;border:1px solid #8fc3c0}.badge-promising .shape{background:#0a5f64;border-radius:50%}.badge-mixed,.badge-workable{color:#1d4870;background:#e3eaf2;border:1px solid #b3c5d8}.badge-mixed .shape,.badge-workable .shape{border:3px solid #1d4870;border-top-color:transparent;border-radius:50%}.badge-marginal{color:#7a4f00;background:#f7e9cd;border:1px solid #ddbf85}.badge-marginal .shape{border:2px solid #7a4f00;transform:rotate(45deg)}.badge-poor{color:#46566a;background:#ece9e3;border:1px solid #cfc8bc}.badge-poor .shape{border:2px solid #46566a;border-radius:50%}.badge-adverse{color:#8e3620;background:#f6e0d8;border:1px solid #dfae9d}.badge-adverse .shape{border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:11px solid #8e3620;width:0;height:0}.badge-incomplete,.badge-missing,.badge-pending,.badge-unknown{color:#46566a;background:#f3f1ec;border:1px dashed #9c968a}.badge-incomplete .shape,.badge-missing .shape,.badge-pending .shape,.badge-unknown .shape{border:2px dashed #46566a;border-radius:50%}.badge-queued{color:#46566a;background:#f3f1ec;border:1px solid #cfc8bc}.badge-queued .shape{border:2px solid #46566a;width:8px;height:8px;border-radius:2px}.badge-stale{color:#4f4572;background:#ece8f3;border:1px solid #bdb3d6}.badge-stale .shape{border:2px solid #4f4572;width:8px;height:8px}.chip{display:inline-flex;align-items:center;gap:6px;border-radius:4px;padding:2px 8px;font-family:var(--font-data);font-size:11px;font-weight:500;border:1px solid var(--line-strong);background:var(--surface-alt);color:var(--ink3);white-space:nowrap}.chip-warn{background:#f6e0d8;border-color:#dfae9d;color:#8e3620}.chip-stale{background:#ece8f3;border-color:#bdb3d6;color:#4f4572}.chip-unknown{background:#f3f1ec;border-color:#9c968a;color:#46566a;border-style:dashed}.chip-ok{background:var(--teal-soft);border-color:var(--teal-border);color:var(--teal-text)}.tag{display:inline-block;border-radius:4px;padding:1px 7px;font-family:var(--font-data);font-size:11px;font-weight:500;letter-spacing:.04em}.tag-report{color:#fcfaf6;background:#0e2540}.tag-satellite{color:#0a5f64;background:#dcedec;border:1px solid #0b6e74}.tag-inferred,.tag-model{color:#2e4a66;background:transparent;border:1px dashed #7f95ab}.tag-assessment{color:#3a4e66;background:#efebe2;border:1px solid #b9b1a3}.tag-archived{color:#2e4a66;background:transparent;border:1px dotted #7f95ab}details.prov{margin-top:8px;font-size:12px}details.prov summary{cursor:pointer;color:var(--ink4);min-height:32px;display:flex;align-items:center}details.prov table{font-size:11px;font-family:var(--font-data)}.scroll-region{overflow-x:auto;border:1px solid var(--line);border-radius:10px;margin-top:12px}.scroll-hint{font-size:12px;color:var(--ink4);margin:4px 0 0}table.hourly{border-collapse:collapse;width:100%;font-family:var(--font-data);font-size:13px}table.hourly td,table.hourly th{border-bottom:1px solid var(--line-soft);padding:8px 10px;text-align:left;white-space:nowrap}table.hourly th{top:0;font-family:var(--font-ui);font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2)}table.hourly tbody th[scope=row],table.hourly th{position:-webkit-sticky;position:sticky;background:var(--surface)}table.hourly tbody th[scope=row]{left:0;z-index:1}table.plain{border-collapse:collapse;width:100%;font-size:14px}table.plain td,table.plain th{border-bottom:1px solid var(--line-soft);padding:10px 12px;text-align:left;vertical-align:top}table.plain th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink2)}tr.row-past{color:var(--ink4)}tr.row-window{background:var(--teal-soft)}.chart-wrap{margin-top:12px}.chart-bars{display:flex;align-items:flex-end;gap:3px;height:140px;border-bottom:2px solid var(--line-strong);padding:0 2px}.chart-bar{flex:1 1;min-width:6px;background:var(--slate-bar);border-radius:2px 2px 0 0;position:relative}.chart-bar.win{background:var(--teal)}.chart-bar.past{opacity:.45}.chart-hours{display:flex;gap:3px;padding:2px 2px 0}.chart-hours span{flex:1 1;min-width:6px;text-align:center;font-family:var(--font-data);font-size:10px;color:var(--ink4)}.chart-summary{font-size:13px;color:var(--ink2);margin:8px 0 0}.day-strip{display:grid;grid-template-columns:repeat(5,1fr);grid-gap:6px;gap:6px;margin-top:12px}.day-cell{border:1px solid var(--line-strong);border-radius:10px;background:var(--surface);padding:8px 6px;text-align:center;min-height:var(--touch);display:flex;flex-direction:column;gap:2px;align-items:center;font-size:12px}.day-cell[aria-pressed=true]{border-color:var(--teal);background:var(--teal-soft)}.day-cell .icon{font-size:17px;line-height:1}.dive-section{border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:14px;background:var(--surface)}.dive-section h3{display:flex;gap:8px;align-items:baseline}.obs-card{border:2px solid var(--teal);border-radius:10px;padding:12px 14px;background:var(--surface);margin-top:8px}.obs-card.unknown{border:2px dashed var(--input-border)}.trend-card{border:1px dashed var(--model-border);border-radius:10px;padding:12px 14px;margin-top:8px}dialog.cw-dialog{border:none;border-radius:14px;padding:0;background:var(--surface);max-width:560px;width:calc(100vw - 32px);box-shadow:0 18px 48px rgba(14,37,64,.25)}dialog.cw-dialog::-webkit-backdrop{background:var(--scrim)}dialog.cw-dialog::backdrop{background:var(--scrim)}dialog.cw-dialog .dialog-body{padding:20px}dialog.cw-dialog h2{margin-bottom:8px}.toast-region{position:fixed;left:16px;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none}.toast{pointer-events:auto;background:var(--ink);color:var(--paper);border-radius:10px;padding:12px 16px;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;max-width:560px;margin:0 auto;box-shadow:0 10px 30px rgba(14,37,64,.35)}.toast .toast-msg{flex:1 1 200px;font-size:14px}.toast button{min-height:36px;padding:0 14px;background:var(--teal);border:1px solid var(--teal);font-size:13px}.toast button.secondary{background:transparent;border-color:var(--teal-border);color:var(--teal-on-dark)}.region-card{border:1px solid var(--line);border-radius:12px;background:var(--surface);padding:16px;margin-top:14px}.region-card.removed{opacity:.7;border-style:dashed}.region-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.region-head h3{margin:0 auto 0 0}.pill-row{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.pill{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line-strong);background:var(--surface-alt);color:var(--ink3);cursor:pointer}.pill.on{background:var(--teal-soft);border-color:var(--teal-border);color:var(--teal-text)}.fav-btn{background:none;border:none;font-size:20px;padding:0 6px;min-height:var(--touch);min-width:var(--touch);color:var(--ink4);cursor:pointer}.fav-btn.on{color:var(--sun)}.status-grid{display:grid;grid-gap:12px;gap:12px}@media (min-width:700px){.status-grid{grid-template-columns:1fr 1fr}}.login-wrap{max-width:420px;margin:40px auto}@media (prefers-reduced-motion:reduce){*,:after,:before{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.attribution{margin:32px auto 24px;max-width:1180px;padding:12px 16px;border-top:1px solid var(--line,#d8dee6)}.attribution h2{margin:0 0 6px;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.attribution ul{margin:0;padding:0 0 0 18px}.attribution li{font-size:.85rem;line-height:1.5;margin-bottom:4px}.attribution a{text-underline-offset:2px}