@font-face{font-family:Interface;src:local("Aptos"),local("Segoe UI");font-display:swap}:root{font-family:Interface,Helvetica Neue,Arial,sans-serif;color:#304b47;background:#e8eee8;font-synthesis:none;font-weight:400;--ink:#304b47;--muted:#7a8980;--paper:#f6f5ef;--line:#dce2d8}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #507b71;outline-offset:5px}button{border:0;background:none}a{color:inherit;text-decoration:none}#app{width:100%;height:100svh;min-height:420px;position:relative;overflow:hidden}#shore{position:absolute;inset:0;background:linear-gradient(180deg,#e2ebe6,#e4ece8 40%,#c1d5ca 70%,#d2d7c5)}#shore canvas{width:100%;height:100%;display:block}.topbar{position:absolute;z-index:2;top:max(32px,env(safe-area-inset-top));left:46px;right:40px;display:flex;justify-content:space-between;align-items:center}.wordmark{font-family:Georgia,Times New Roman,serif;font-size:34px;font-weight:400;letter-spacing:-2px}.wordmark span{color:#729386;margin:0 3px}.icon-button{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f4f5ed70;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:background .2s,transform .2s}.icon-button:hover{background:#f4f5edcc;transform:scale(1.05)}.menu-button{gap:6px;flex-direction:column}.menu-button span{display:block;width:17px;height:1px;background:var(--ink)}.tide-glance{position:absolute;z-index:2;left:56px;bottom:56px;pointer-events:none}.tide-glance button{pointer-events:auto}.beach-label{padding:0;display:flex;align-items:center;gap:8px;font-size:14px;letter-spacing:1.9px;text-transform:uppercase;font-weight:500;line-height:1.5}.beach-label svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.1;opacity:.65}.tide-number{padding:0;display:flex;align-items:baseline;gap:0;font-size:clamp(74px,8.7vw,132px);font-weight:300;letter-spacing:-7px;line-height:1.08;min-height:94px}.percent-sign{font-size:.4em;letter-spacing:-1px;margin-left:7px;font-weight:300}.tide-number svg{width:28px;height:28px;fill:none;stroke:#496f61;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.25;align-self:center;margin:13px 0 0 18px;transition:transform 1s;opacity:0}.tide-number svg.visible{opacity:.8}.tide-number svg.falling{transform:rotate(180deg)}.tide-caption{margin:6px 0 0;font-size:14px;letter-spacing:.2px;color:#49665c;min-height:21px}.prediction-label{margin:6px 0 0;font-size:10px;letter-spacing:.65px;color:#6b8175;min-height:12px}.horizon-caption{position:absolute;right:48px;bottom:53px;display:flex;align-items:center;gap:9px;font-family:Georgia,serif;font-size:14px;font-style:italic;color:#597468;opacity:.8}.live-dot{width:5px;height:5px;border-radius:50%;background:#658e7b}.toast{position:absolute;bottom:25px;left:50%;transform:translate(-50%);z-index:6;padding:12px 20px;border-radius:30px;background:#304b47;color:#f6f5ef;font-size:12px;box-shadow:0 8px 30px #19342a15;max-width:min(90vw,520px);text-align:center}dialog{position:fixed;inset:0 0 0 auto;margin:0;border:none;padding:0;width:min(440px,100%);max-width:100%;height:100dvh;max-height:100dvh;background:var(--paper);color:var(--ink);box-shadow:-12px 0 80px #203b3220;overflow-y:auto;overscroll-behavior:contain}dialog::backdrop{background:#183b321e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:27px 32px 0}.wordmark.small{font-size:27px}.close-button{font-size:28px;font-weight:200;background:transparent}.drawer-content{padding:30px 36px 20px}h1{font-family:Georgia,serif;font-size:28px;font-weight:400;letter-spacing:-.6px;margin:0 0 10px}.drawer-intro{margin:0 0 24px;color:#7c887e;font-size:14px}.location-button{width:100%;background:#dfe9de;border:1px solid #d4dfd1;border-radius:8px;padding:13px 15px;display:flex;gap:10px;align-items:center;font-size:13px;text-align:left}.location-button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.3}.location-button:disabled{opacity:.6;cursor:wait}.help-text{color:#7a867b;font-size:11px;line-height:1.65;margin:12px 0}.search-label{font-size:9px;letter-spacing:1.4px;color:#758273;display:block;margin:25px 0 10px}input[type=search]{border:1px solid var(--line);padding:12px 13px;border-radius:7px;background:#ffffff65;width:100%;font-size:13px;color:var(--ink);appearance:none}input::placeholder{color:#9aa496}.beach-list{max-height:210px;overflow-y:auto;margin:10px -8px 0;padding:0 8px;scrollbar-width:thin;scrollbar-color:#c7d1c3 transparent}.beach-option{padding:12px 3px;width:100%;display:flex;align-items:center;justify-content:space-between;text-align:left;border-bottom:1px solid #e4e8df;font-size:13px;gap:12px}.beach-option span{display:block}.beach-option small{font-size:10px;color:#98a18f;margin-top:4px}.beach-option.selected{color:#326955}.beach-check{font-size:15px}.beach-option:hover{color:#326955}.no-results{font-size:12px;color:var(--muted);padding:12px 0}.details{border-top:1px solid var(--line);margin-top:28px;padding-top:25px}.detail-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}h2{font-family:Georgia,serif;font-size:19px;font-weight:400;margin:0}.detail-heading>span{font-size:10px;color:#8c9787}.detail-grid{display:grid;grid-template-columns:1fr 1fr;row-gap:20px;margin:23px 0}.detail-grid div{display:flex;flex-direction:column;gap:7px}.detail-grid div>span{font-size:10px;color:#88937f}.detail-grid strong{font-size:18px;font-weight:400;letter-spacing:-.2px}.range-heading{display:flex;align-items:center;justify-content:space-between;font-size:11px;margin-top:27px}.range-heading strong{font-weight:500}.range-meter{width:100%;height:3px;background:#dde5d8;margin:12px 0 7px;border-radius:4px;overflow:hidden}.range-meter span{display:block;height:100%;width:0%;background:#7f9f85;transition:width 1s}.range-labels{display:flex;justify-content:space-between;font-size:9px;color:#939d8b}.source-note a{text-decoration:underline;text-underline-offset:2px}.display-options{border-top:1px solid var(--line);padding-top:10px;margin-top:22px}.quiet-button,.toggle-row{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:45px;font-size:12px;padding:0;gap:15px}.quiet-button>span{font-size:19px}.toggle-row input{width:29px;height:17px;accent-color:#688a73;cursor:pointer}.drawer-footer{font-family:Georgia,serif;text-align:center;font-style:italic;color:#97a08e;font-size:12px;margin:30px 0 10px}.fallback-scene{position:absolute;inset:0;background:radial-gradient(ellipse at 75% 16%,#dfece740 0 22%,transparent 40%),linear-gradient(170deg,#dbe6e1 25%,#bbd1c5 60%,#9fbfb5 62%);overflow:hidden}.fallback-sand{position:absolute;inset:45% -15% -35%;background:#d5c5a1;border-radius:48% 60% 0 0;transform:rotate(-13deg)}.fallback-water{position:absolute;inset:20% -35% 15% 25%;background:linear-gradient(140deg,#8fbdb0,#547e79);border-radius:40% 0 0 65%;transform:rotate(-13deg);border-bottom:12px solid #bcd4c2;transition:inset 2s}.fallback-grass{position:absolute;left:-20%;right:62%;top:15%;height:50%;background:#8a9870;border-radius:40%;transform:rotate(-27deg);box-shadow:15px 30px #8d9277}#shore:after{content:"";pointer-events:none;position:absolute;inset:0;background:linear-gradient(0deg,#f0eee499 0%,#f0eee436 15%,transparent 33%)}@media(min-width:1600px){.topbar{left:60px;right:60px;top:45px}.tide-glance{left:70px;bottom:66px}.horizon-caption{right:65px;bottom:65px}}@media(max-width:700px){.topbar{left:25px;right:22px;top:max(23px,env(safe-area-inset-top))}.wordmark{font-size:30px}.icon-button{width:42px;height:42px}.tide-glance{left:30px;bottom:max(55px,calc(env(safe-area-inset-bottom) + 35px))}.beach-label{font-size:12px;letter-spacing:1.6px}.tide-number{font-size:94px;letter-spacing:-5px}.tide-number svg{width:23px;height:23px;margin-left:15px}.tide-caption{font-size:12px}.horizon-caption{display:none}.prediction-label{font-size:9px}.drawer-content{padding:26px 30px 20px}.drawer-header{padding:20px 25px 0}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.beach-label{max-width:min(520px,80vw)}.beach-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.beach-label svg{flex-shrink:0}.tide-number svg{transition:none}#shore canvas,#shore>.shore-fallback,#shore>.fallback-scene{transition:opacity .8s ease}#shore.tide-unavailable canvas,#shore.tide-unavailable>.shore-fallback,#shore.tide-unavailable>.fallback-scene{opacity:0}.drawer-header{position:sticky;top:0;z-index:3;background:var(--paper);padding-bottom:12px}:root{--ink:#203d41;--muted:#748589;--paper:#f7f8f4;--line:#dbe3e0;background:#10292e}#app{min-height:540px;background:#10292e}#shore{background:#10292e}#shore:after{background:linear-gradient(180deg,#09212645,transparent 24%,transparent 49%,#08262975 100%)}.topbar{color:#fff;top:max(27px,env(safe-area-inset-top));left:36px;right:32px}.wordmark{font-family:Georgia,serif;letter-spacing:-1.8px;font-size:30px;text-shadow:0 1px 14px #10262d60}.wordmark span{color:inherit;margin:0;opacity:.8}.icon-button{background:#f4f8f025;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.menu-button span{background:#fff}.tide-glance{color:#fff;left:38px;bottom:78px;text-shadow:0 1px 12px #132b2f75}.beach-label{letter-spacing:2.2px;font-size:11px}.tide-number{font-size:clamp(72px,7.8vw,118px);line-height:1.05;min-height:85px}.tide-number svg{stroke:#fff}.tide-caption,.prediction-label{color:#fff}.prediction-label{opacity:.75;font-size:10px}.conditions-glance{position:absolute;right:38px;bottom:82px;z-index:2;max-width:360px;color:#fff;text-shadow:0 1px 10px #092a3290}.conditions-glance>button{display:flex;gap:25px;text-align:left;padding:0;color:inherit}.condition-item{display:flex;flex-direction:column;gap:8px}.condition-item>span{font-size:9px;letter-spacing:.7px;opacity:.75;white-space:nowrap}.condition-item strong{font-size:13px;font-weight:500;white-space:nowrap}#conditions-stamp{font-size:9px;opacity:.7;line-height:1.5;margin:15px 0 0;letter-spacing:.3px;text-align:right}.scene-caption{position:absolute;left:38px;right:38px;bottom:max(23px,env(safe-area-inset-bottom));z-index:2;display:flex;justify-content:space-between;align-items:center;gap:18px;color:#fff9;font-size:9px;letter-spacing:.4px}.scene-caption a{text-decoration:underline;text-underline-offset:3px}.scene-caption .preview-active{color:#fff;background:#0c303cc9;padding:6px 9px;border-radius:4px}.drawer-header{color:var(--ink)}.drawer-header .wordmark{text-shadow:none;font-size:25px}.drawer-header .wordmark span{opacity:.65}.close-button{background:transparent}.detail-grid strong{font-size:16px;line-height:1.3}.detail-grid{column-gap:15px}.detail-grid div>span{line-height:1.5}.detail-heading>span{font-size:9px;text-transform:uppercase;letter-spacing:.6px}.gauge-context{display:flex;flex-direction:column;border-left:2px solid #91aaa2;padding-left:12px;margin-top:20px;gap:7px}.gauge-context>span{font-size:10px;color:#748589}.gauge-context strong{font-size:13px;font-weight:500}.gauge-context .help-text{margin:0}.preview-controls{border-top:1px solid var(--line);margin-top:17px;padding-top:5px}.photo-candidate{display:grid;grid-template-columns:86px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center;font-size:11px;line-height:1.4}.photo-candidate img{width:86px;height:60px;object-fit:cover;border-radius:3px}.photo-candidate small{display:block;font-size:9px;color:#748589;margin-top:5px}.quiet-button:disabled{opacity:.45;cursor:wait}.photo-fallback{position:absolute;inset:0;background:#10292e center/cover no-repeat}#shore.tide-unavailable>.photo-fallback{opacity:1}@media(max-width:700px){.topbar{left:22px;right:20px;top:max(22px,env(safe-area-inset-top))}.wordmark{font-size:26px}.tide-glance{left:25px;bottom:170px}.tide-number{font-size:87px;min-height:86px}.beach-label{font-size:10px}.conditions-glance{left:25px;right:25px;bottom:74px;max-width:none}.conditions-glance>button{justify-content:space-between;gap:13px;width:100%}.condition-item{gap:6px}.condition-item>span{font-size:8px}.condition-item strong{font-size:11px}#conditions-stamp{font-size:8px;text-align:left;margin-top:11px}.scene-caption{left:25px;right:25px;bottom:max(22px,env(safe-area-inset-bottom));font-size:8px;align-items:flex-start;flex-direction:column;gap:6px}}@media(max-width:370px){.condition-item strong{font-size:10px}.condition-item>span{font-size:7px}}@media(max-height:600px)and (min-width:701px){.tide-glance{bottom:62px}.tide-number{font-size:80px}.conditions-glance{bottom:67px}}.preview-panel{position:absolute;z-index:2;left:36px;top:max(99px,calc(env(safe-area-inset-top) + 75px));width:min(340px,calc(100% - 72px));padding:12px 16px 10px;border:1px solid #ffffff20;border-radius:10px;background:#102d3642;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;box-shadow:0 2px 16px #08232d0c}.preview-panel-heading{display:flex;gap:10px;align-items:center;font-size:10px;letter-spacing:.3px}.preview-panel-heading label{flex:1;opacity:.85}.preview-panel-heading output{font-size:10px;white-space:nowrap}#debug-live{font-size:10px;border:1px solid #ffffff50;padding:6px 10px;border-radius:15px;min-height:30px}#debug-live:disabled{opacity:.4;cursor:default}#debug-tide{width:100%;height:38px;margin:2px 0 0;accent-color:#fff;cursor:ew-resize;appearance:none;-webkit-appearance:none;background:transparent;touch-action:pan-y}#debug-tide::-webkit-slider-runnable-track{height:2px;background:#ffffff65;border-radius:3px}#debug-tide::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-8px;border-radius:50%;background:#fff;border:2px solid #dce8e5;box-shadow:0 1px 5px #09262b45}#debug-tide::-moz-range-track{height:2px;background:#ffffff65;border-radius:3px}#debug-tide::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:#fff;border:2px solid #dce8e5}#debug-tide:disabled{opacity:.4;cursor:default}.preview-range-labels{display:flex;justify-content:space-between;gap:8px;font-size:8px;color:#fffb;letter-spacing:.2px}#debug-dunnycove{display:flex;justify-content:space-between;align-items:center;width:100%;padding:13px 0 2px;font-size:12px}#debug-dunnycove[hidden],#debug-live[hidden]{display:none}.reading-now{display:block;margin:0 0 8px;font-size:8px;letter-spacing:1.3px;text-transform:uppercase;opacity:.7}.reading-now[hidden]{display:none}@media(max-width:700px){.preview-panel{left:22px;top:max(87px,calc(env(safe-area-inset-top) + 65px));width:calc(100% - 44px);max-width:340px;padding:10px 14px}.preview-panel-heading{font-size:9px}.preview-panel-heading output{font-size:9px}.preview-range-labels{font-size:8px}}.preview-panel[hidden],.beach-loading[hidden]{display:none}.beach-loading{position:absolute;z-index:3;left:36px;top:max(99px,calc(env(safe-area-inset-top) + 75px));width:min(340px,calc(100% - 72px));padding:13px 16px;border:1px solid #ffffff25;border-radius:10px;background:#102d36a8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#fff;box-shadow:0 2px 16px #08232d15}.beach-loading.with-preview{top:max(225px,calc(env(safe-area-inset-top) + 201px))}.beach-loading-heading{display:flex;gap:14px;align-items:flex-start;font-size:11px;line-height:1.5}.beach-loading-heading>span{flex:1}.beach-loading-heading output{font-size:10px;white-space:nowrap;opacity:.8}.beach-loading-meter{height:3px;margin-top:12px;overflow:hidden;border-radius:4px;background:#ffffff30}.beach-loading-meter>span{display:block;width:0;height:100%;background:#e5f3e9;transition:width .2s ease}#beach-loading-detail{font-size:9px;line-height:1.6;opacity:.8;margin:8px 0 0}#beach-loading-retry{font-size:11px;display:flex;gap:10px;padding:10px 0 0;color:#fff}#beach-loading-retry[hidden]{display:none}.photo-candidate-row{border-bottom:1px solid var(--line)}.photo-candidate-row .photo-candidate{border:0}.photo-candidate-row .photo-use{font-size:11px;padding:0 0 12px 98px;text-align:left;text-decoration:underline;text-underline-offset:3px}.photo-use:disabled{opacity:.5;cursor:wait}.scene-caption #photo-credit{max-width:50%;text-align:right;line-height:1.5}.scene-caption{line-height:1.5}@media(max-width:700px){.beach-loading{left:22px;top:max(87px,calc(env(safe-area-inset-top) + 65px));width:calc(100% - 44px);max-width:340px;padding:12px 14px}.beach-loading.with-preview{top:max(207px,calc(env(safe-area-inset-top) + 185px))}.scene-caption #photo-credit{max-width:100%;text-align:left}}.calibration-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:16px 0}.calibration-grid label{font-size:10px;color:#748589;line-height:1.5}.calibration-grid input{display:block;width:100%;margin-top:6px;padding:9px;border:1px solid var(--line);border-radius:4px;background:#fff8;color:var(--ink)}#cal-sea-canvas{width:100%;height:auto;display:block;border-radius:5px;cursor:crosshair;touch-action:manipulation}#cal-sea-editor[hidden],#calibration-details[hidden]{display:none}.model-download{height:2px;background:#ffffff30;margin-top:7px}.model-download span{display:block;height:100%;background:#e5f3e9}#world-search{padding-top:4px;margin-bottom:0}.model-download[hidden],#map-details[hidden],#map-editor[hidden]{display:none}#map-canvas{width:100%;height:auto;display:block;border-radius:5px;cursor:crosshair;touch-action:manipulation}.view-layer{position:absolute;inset:0;overflow:hidden}.view-layer[hidden],.conditions-glance[hidden]{display:none}.ocean-view-layer{background:linear-gradient(#748995,#b7c7cf 33%,#456877 34%,#173b4b)}.tide-glance{bottom:max(58px,calc(env(safe-area-inset-bottom) + 38px))}.tide-number{font-variant-numeric:tabular-nums;font-size:clamp(110px,16vw,230px);letter-spacing:-.065em;line-height:1.02;min-height:0}.tide-number .percent-sign{font-size:.3em;margin-left:.13em}.tide-number svg{margin-left:24px}.prediction-label{display:none}.scene-caption:has(#scene-status:empty):has(#photo-credit[hidden]){display:none}.scene-caption #scene-status:empty{display:none}.beach-label{letter-spacing:.08em;font-size:13px;text-transform:none}.show-facts .tide-glance{bottom:78px}.show-facts .tide-number{font-size:clamp(100px,12vw,176px)}.view-choice{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:13px;margin:18px 0 6px}.view-choice select{border:1px solid var(--line);border-radius:5px;padding:10px;color:var(--ink);background:#fff;min-width:155px;font:inherit}.selected-location{font-size:13px;color:var(--muted);margin:0 0 20px}.data-notes,.photo-tools{margin-top:20px}.data-notes summary,.photo-tools>summary{font-size:12px;cursor:pointer;padding:12px 0;min-height:44px}.photo-tools{border-top:1px solid var(--line);padding-top:4px}.photo-tools .details:first-of-type{border-top:0;margin-top:0}h1,h2{font-family:inherit;letter-spacing:0;font-weight:500}h1{font-size:22px}h2{font-size:16px}button,input[type=checkbox]{touch-action:manipulation}.beach-label{min-height:44px}.menu-button,.close-button{min-width:44px;min-height:44px}.help-text{color:#5c706d;font-size:12px}.detail-grid div>span{color:#657b75;font-size:11px}.condition-item>span{opacity:.9}#app{height:100dvh;min-height:380px}.drawer-content{padding-top:15px}@media(max-width:700px){.tide-glance{left:25px;right:25px;bottom:max(65px,calc(env(safe-area-inset-bottom) + 45px))}.tide-number{font-size:clamp(110px,29vw,180px)}.show-facts .tide-glance{bottom:170px}.show-facts .tide-number{font-size:clamp(100px,25vw,145px)}.beach-label{font-size:12px;max-width:100%}.scene-caption{bottom:max(20px,env(safe-area-inset-bottom))}}@media(max-height:500px){.tide-glance{bottom:max(34px,env(safe-area-inset-bottom))}.tide-number{font-size:110px}.show-facts .tide-glance{bottom:100px}.show-facts .tide-number{font-size:80px}.show-facts .conditions-glance{bottom:35px}.preview-panel{max-width:270px}.beach-loading.with-preview{top:90px;left:auto;right:20px}.scene-caption{bottom:8px}}
