:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--label:#102b3a;--label-secondary:#102b3aad;--label-tertiary:#102b3aa6;--accent:#0878b9;--accent-strong:#056493;--surface:#fbfdfd;--surface-soft:#eef5f6;--separator:#102b3a1a;--motion-press:80ms;--motion-release:.28s;--spring-smooth:linear(0, .004, .014, .031, .053, .08, .111, .144, .178, .214, .248, .315, .375, .428, .476, .556, .622, .673, .711, .774, .82, .854, .879, .919, .946, .965, .978, .992, 1);--spring-snappy:linear(0, .012, .049, .107, .185, .278, .383, .493, .601, .702, .791, .865, .924, .967, .995, 1.013, 1.019, 1.016, 1.009, 1.003, 1);--sa-top-native:env(safe-area-inset-top,0px);--sa-top:env(safe-area-inset-top,0px);--sa-right:env(safe-area-inset-right,0px);--sa-bottom:env(safe-area-inset-bottom,0px);--sa-left:env(safe-area-inset-left,0px)}@supports (color:color(display-p3 0 0 0)){:root{--accent:color(display-p3 .03 .47 .72);--accent-strong:color(display-p3 .02 .37 .55)}}*,:before,:after,::backdrop{box-sizing:border-box;font-optical-sizing:auto;margin:0;padding:0}html,body{overscroll-behavior:none;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;min-height:100%}html{-webkit-tap-highlight-color:transparent;line-height:1.5}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}small{font-size:80%}ol,ul,menu{list-style:none}a{color:inherit;text-underline-offset:.18em;text-decoration-line:underline;text-decoration-thickness:from-font}img,svg,video,canvas,iframe{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}@supports (font:-apple-system-body){:root{font:-apple-system-body;line-height:normal}}body{color:var(--label);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-touch-callout:none;background:#e9f0f2;margin:0;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,[role=button]{touch-action:manipulation}button,input{font:inherit;color:inherit;-webkit-tap-highlight-color:transparent}button{appearance:button;background:0 0;border-radius:0}.app-stage{background:radial-gradient(circle at 12% 8%,#fffffff5,#0000 30rem),radial-gradient(circle at 90% 95%,#86c7d338,#0000 34rem),linear-gradient(145deg,#f0f5f6 0%,#dbe7ea 100%);place-items:center;min-height:100svh;padding:24px;display:grid;overflow:hidden}.phone{isolation:isolate;background:#eef6f7;border:6px solid #ffffffd1;border-radius:54px;width:min(100%,420px);height:min(880px,100svh - 48px);min-height:700px;position:relative;overflow:clip;box-shadow:0 48px 100px #23455233,0 10px 30px #2345521a,inset 0 0 0 1px #0d354714}.phone:after{content:"";z-index:30;height:var(--sa-top);pointer-events:none;background:linear-gradient(#0820366b,#08203624 62%,#08203600);position:absolute;inset:0 0 auto}.screen-stack{--screen-settle-duration:.47s;width:100%;height:200%;transition:transform var(--screen-settle-duration) var(--screen-settle-easing,var(--spring-smooth));grid-template-rows:1fr 1fr;display:grid;transform:translate(0,0)}.screen-stack.is-underwater{transform:translateY(-50%)}.screen-stack.is-dragging{transform:translate3d(0, var(--drag-position), 0);-webkit-user-select:none;user-select:none;will-change:transform;transition:none}.screen-stack{touch-action:pan-x pinch-zoom}.surface-screen,.forecast-screen{min-width:0}.screen-stack{--daylight:1;--night:0;--dawn:0;--dusk:0;--twilight:0;--moonlight:0;--sun-x:50;--sun-y:13;--moon-x:50;--moon-y:16;--water-shift:50%;--tide-progress:.5;--beach-exposure:.5;--sand-dryness:.5;--visitor-presence:0;--coast-shade:brightness(calc(1 - var(--night) * .44 - var(--dusk) * .08)) saturate(calc(1 - var(--night) * .5 + var(--twilight) * .08))}.surface-screen{--label-secondary:rgba(16, 43, 58, calc(.68 + .32 * var(--twilight)));--label-tertiary:rgba(16, 43, 58, calc(.65 + .35 * var(--twilight)));background:linear-gradient(#a8cfe0 0%,#bcdcea 14%,#cfe7f0 28%,#dfeff4 42%,#ecf5f5 56%,#f6f7ef 70%,#fbf6e8 82%,#fdf3de 100%);min-height:0;position:relative;overflow:clip;container-type:size}.surface-screen:before{content:"";z-index:2;background:linear-gradient(180deg, rgba(255, 255, 255, calc(.46 * var(--daylight))) 0%, rgba(255, 255, 255, calc(.12 * var(--daylight))) 34%, transparent 62%), linear-gradient(180deg, rgba(8, 24, 46, calc(.46 * var(--night))) 0%, rgba(8, 24, 46, calc(.14 * var(--night))) 38%, transparent 66%), radial-gradient(ellipse 90% 65% at 50% 15%, rgba(255, 255, 255, calc(.34 * var(--daylight))), transparent 72%);pointer-events:none;position:absolute;inset:0 0 48%}.sky-scene{z-index:0;opacity:1;pointer-events:none;transition:opacity .26s ease-out;position:absolute;inset:0;overflow:hidden}.sky-night,.sky-dawn,.sky-dusk,.star-field,.horizon-haze{pointer-events:none;transition:opacity .42s linear;position:absolute;inset:0}.sky-night{opacity:var(--night);background:radial-gradient(62% 34% at 24% 8%,#3a548466,#0000 70%),radial-gradient(90% 40% at 62% 100%,#4a748e57,#0000 74%),linear-gradient(#0a1730 0%,#10233f 18%,#182f4d 36%,#21405c 56%,#2c5670 76%,#3a6b7e 100%)}.sky-dawn{opacity:var(--dawn);background:radial-gradient(70% 38% at 6% 52%,#ffc698d1,#0000 68%),radial-gradient(90% 30% at 40% 100%,#ffe2be80,#0000 72%),linear-gradient(#607cac9e 0%,#96a6c880 26%,#e2b4ac85 52%,#fac69e99 74%,#fce0ba6b 100%)}.sky-dusk{opacity:var(--dusk);background:radial-gradient(72% 40% at 94%,#ff9c74bd,#0000 66%),radial-gradient(96% 32% at 60% 100%,#ffbe9675,#0000 72%),linear-gradient(#3a487ab3 0%,#686a9c94 24%,#b07a948a 48%,#e28e7a8f 70%,#f6ba9266 100%)}.star-field{opacity:calc(var(--night) * .82);background-image:radial-gradient(circle at 9% 11%,#ffffffeb 0 1px,#0000 1.4px),radial-gradient(circle at 24% 24%,#d8eff7c7 0 .8px,#0000 1.3px),radial-gradient(circle at 47% 9%,#ffffffdb 0 1.2px,#0000 1.7px),radial-gradient(circle at 68% 28%,#d8eff7c7 0 .8px,#0000 1.4px),radial-gradient(circle at 89% 15%,#ffffffe6 0 1px,#0000 1.5px);background-size:148px 118px,176px 142px,212px 154px,164px 132px,194px 148px}.star-field:after{content:"";opacity:.45;background:radial-gradient(circle at 16% 34%,#fff 0 1.1px,#0000 1.7px),radial-gradient(circle at 54% 13%,#fff 0 .9px,#0000 1.5px),radial-gradient(circle at 82% 45%,#fff 0 1px,#0000 1.6px);animation:3.8s ease-in-out infinite alternate star-breathe;position:absolute;inset:4% 6% 42%}.celestial{transition:transform .36s var(--spring-smooth), opacity .36s linear;border-radius:50%;display:block;position:absolute;top:0;left:0}.sun{width:52px;height:52px;opacity:calc(var(--daylight) * .88 + var(--twilight) * .5);transform:translate3d(calc(var(--sun-x) * 1cqw), calc(var(--sun-y) * 1cqh), 0) translate(-50%, -50%);background:radial-gradient(circle at 38% 34%,#fffdf0 0 20%,#ffe9ad 48%,#f8c885 100%);box-shadow:0 0 0 10px #ffecb01a,0 0 40px 10px #ffdb9a3d}.moon{width:42px;height:42px;opacity:calc(var(--moonlight) * .92);transform:translate3d(calc(var(--moon-x) * 1cqw), calc(var(--moon-y) * 1cqh), 0) translate(-50%, -50%);background:0 0;box-shadow:-12px 5px #e9f0df,-19px 8px 36px 2px #dcefeb38}.sky-cloud{width:108px;height:40px;opacity:calc(.14 + var(--daylight) * .5);filter:blur(.4px);background:radial-gradient(26% 52% at 30% 44%,#fffffff5,#0000 68%),radial-gradient(22% 42% at 52% 36%,#fffffff0,#0000 68%),radial-gradient(18% 34% at 70% 48%,#fdfeffe0,#0000 70%),radial-gradient(40% 22% at 50% 66%,#eef6fad1,#0000 72%),radial-gradient(30% 14% at 46% 76%,#cee0ea6b,#0000 76%);transition:opacity .42s linear;display:block;position:absolute}.cloud-one{animation:15s ease-in-out infinite alternate cloud-drift-one;top:17%;left:2%;scale:.86}.cloud-two{animation:19s ease-in-out infinite alternate cloud-drift-two;top:26%;right:-2%;scale:.64}.cloud-three{opacity:calc(.08 + var(--daylight) * .3);animation:24s ease-in-out infinite alternate-reverse cloud-drift-one;top:9%;left:46%;scale:.44}.horizon-haze{height:42%;opacity:calc(.14 + var(--twilight) * .56);background:radial-gradient(110% 75% at 50% 100%,#ffe6c185,#0000 68%);top:auto}@keyframes star-breathe{to{opacity:.8}}@keyframes cloud-drift-one{to{transform:translate(22px,3px)}}@keyframes cloud-drift-two{to{transform:translate(-18px,-2px)}}.water{z-index:1;height:84%;transform:translateY(var(--water-shift));transform-origin:bottom;opacity:1;background:radial-gradient(48% 18% at 19% 8%,#e2f8f46b,#0000 72%),radial-gradient(50% 25% at 82% 26%,#60baba42,#0000 72%),radial-gradient(78% 42% at 44% 74%,#064a6c3d,#0000 76%),linear-gradient(#86c3bd 0%,#3d9ba8 9%,#16789c 22%,#0a5479 42%,#06405f 100%);transition:transform .46s cubic-bezier(.32,.72,0,1),opacity .22s ease-out;position:absolute;inset:auto -20% 0;overflow:visible;box-shadow:0 -12px 32px #4ea8ae2e,inset 0 18px 24px #e8faf614}.surface-screen.is-playing .water{transition-duration:.145s,.22s;transition-timing-function:linear,ease-out}.water.is-disturbed{transition-duration:.46s,.22s;transition-timing-function:cubic-bezier(.32,.72,0,1),ease-out}.water:before,.water:after{content:"";z-index:2;transform-origin:50%;pointer-events:none;border-radius:50%;width:116%;position:absolute;left:-8%}.water:before{background:radial-gradient(14% 86% at 19% 70%,#fffffffa,#0000 74%),radial-gradient(20% 74% at 73% 32%,#eefcfaeb,#0000 76%),#eefcfadb;height:22px;transition:background-color .42s linear;animation:2.35s ease-in-out infinite wave-forward;top:-11px;box-shadow:0 5px 12px #ffffff38,0 11px 22px #167a921a}.water:after{background:radial-gradient(20% 84% at 32% 35%,#c6eae894,#0000 76%),#58b2b880;height:17px;transition:background-color .42s linear;animation:3.1s ease-in-out infinite wave-back;top:-6px;left:-2%}.water-night,.water-sunset,.water-pattern{pointer-events:none;position:absolute;inset:0}.water-night{z-index:0;opacity:calc(var(--night) * .92);background:radial-gradient(54% 12% at 72% 4%,#5894b233,#0000 72%),linear-gradient(#113e5cbd 0%,#092c48db 16%,#041e36f0 40%,#02162af5 100%);transition:opacity .42s linear}.water-sunset{z-index:1;opacity:calc(var(--twilight) * .48);background:radial-gradient(70% 22% at 50% 0,#ffb788b8,#0000 70%);transition:opacity .42s linear}.water-caustics{z-index:1;opacity:calc(.05 + var(--daylight) * .15);background-image:radial-gradient(34px 9px at 18% 20%,#0000 48%,#defaffcc 52%,#0000 60%),radial-gradient(42px 11px at 73% 36%,#0000 47%,#dafaffa6 52%,#0000 61%),radial-gradient(28px 8px at 42% 73%,#0000 45%,#dafaff8c 52%,#0000 63%);background-size:160px 140px,190px 170px,130px 120px;transition:opacity .42s linear;animation:7.2s ease-in-out infinite alternate caustics-drift;position:absolute;inset:28px 0 0;-webkit-mask-image:linear-gradient(#000,#0000 75%);mask-image:linear-gradient(#000,#0000 75%)}.water-pattern{z-index:1;opacity:calc(.04 + var(--daylight) * .07);background-image:radial-gradient(30px 7px at 20% 18%,#0000 44%,#ebfcffb8 49%,#0000 57%),radial-gradient(38px 8px at 76% 54%,#0000 45%,#e5fafe9e 50%,#0000 58%);background-size:128px 102px,156px 126px;animation:8.8s ease-in-out infinite alternate water-pattern-drift;inset:44px 4% 0;-webkit-mask-image:linear-gradient(#000,#0000 82%);mask-image:linear-gradient(#000,#0000 82%)}.water-glint{z-index:3;height:1px;opacity:calc(.3 + var(--daylight) * .62);transform-origin:50%;background:linear-gradient(90deg,#0000,#ffffffd1,#0000);transition:opacity .42s linear;animation:2.7s ease-in-out infinite glint-breathe;position:absolute;inset:20px 9% auto}.water-current{z-index:1;width:124%;height:64px;opacity:calc(.24 + var(--daylight) * .22);pointer-events:none;border:1px solid #0000;border-top-color:#d8f9fc38;border-radius:50%;position:absolute;left:-12%}.water-current-one{animation:4.1s ease-in-out infinite current-drift-one;top:42px}.water-current-two{width:138%;opacity:calc(.12 + var(--daylight) * .16);animation:5.3s ease-in-out infinite current-drift-two;top:92px;left:-22%}.water-foam{z-index:3;opacity:.72;transform-origin:50%;pointer-events:none;width:126%;height:18px;transform:translate3d(var(--foam-x,0%), var(--foam-y,0px), 0) scaleX(var(--foam-scale,1));background:radial-gradient(22px 5px at 8% 55%,#ffffffdb,#0000 72%) 0 0/122px 18px,radial-gradient(34px 6px at 31% 32%,#f1fdfec2,#0000 74%) 0 0/174px 18px,radial-gradient(28px 5px at 67% 60%,#ffffffd6,#0000 74%) 0 0/146px 18px,radial-gradient(40px 7px at 91% 28%,#e4f9fcb8,#0000 76%) 0 0/202px 18px;position:absolute;top:-8px;left:-13%}.water-slosh{z-index:4;opacity:0;transform-origin:50%;pointer-events:none;background:radial-gradient(18% 42% at 16% 54%,#ffffffeb,#0000 73%),radial-gradient(25% 48% at 54% 34%,#e2fafde6,#0000 76%),radial-gradient(19% 42% at 86% 62%,#ffffffdb,#0000 74%);border-radius:50%;width:136%;height:54px;position:absolute;top:-27px;left:-18%}.water-spray{z-index:5;opacity:0;pointer-events:none;background:#ebfcfee0;border-radius:58% 42% 60% 40%;width:8px;height:8px;position:absolute;top:-10px;box-shadow:0 2px 5px #1273921f}.spray-one{left:18%}.spray-two{width:6px;height:6px;left:49%}.spray-three{width:10px;height:10px;left:81%}@keyframes wave-forward{0%,to{transform:translate(-2%)rotate(-.35deg)scaleY(.94)}24%{transform:translate(1%,-3px)rotate(.42deg)scaleY(1.13)}56%{transform:translate(3%,2px)rotate(.12deg)scaleY(.88)}78%{transform:translateY(-1px)rotate(-.55deg)scaleY(1.05)}}@keyframes wave-back{0%,to{transform:translate(3.5%,1px)rotate(.55deg)scaleY(1.04)}31%{transform:translate(-1.5%,-2px)rotate(-.72deg)scaleY(.9)}63%{transform:translate(-4.5%,2px)rotate(-.2deg)scaleY(1.12)}84%{transform:translate(.5%,-1px)rotate(.68deg)scaleY(.97)}}@keyframes caustics-drift{to{transform:translate(22px,10px)scaleX(1.04)}}@keyframes water-pattern-drift{to{transform:translate(-34px,15px)scaleX(1.03)}}@keyframes glint-breathe{0%,to{opacity:.36;transform:translate(-5px)scaleX(.66)}45%{opacity:.88;transform:translate(7px,-1px)scaleX(1.06)}68%{opacity:.58;transform:translate(2px,1px)scaleX(.9)}}@keyframes current-drift-one{0%,to{transform:translate(-2.5%)rotate(-.4deg)scaleX(.96)}50%{transform:translate(3.5%)rotate(.25deg)scaleX(1.04)}}@keyframes current-drift-two{0%,to{transform:translate(3%)rotate(.25deg)scaleX(1.03)}50%{transform:translate(-3.5%)rotate(-.25deg)scaleX(.96)}}.water.is-disturbed:before{animation:.92s linear both wave-disturb-front}.water.is-disturbed:after{animation:.98s linear both wave-disturb-back}.water.is-disturbed .water-current,.water.is-disturbed .water-pattern{animation:.94s linear both current-shake}.water.is-disturbed .water-glint{animation:.9s linear both glint-shake}.water.is-disturbed .water-slosh{animation:.94s linear both slosh-flash}.water.is-disturbed .water-spray{animation:spray-burst .76s var(--spring-smooth) both}.water.is-disturbed .spray-two{animation-delay:45ms}.water.is-disturbed .spray-three{animation-delay:85ms}@keyframes wave-disturb-front{0%{transform:translate(-2%)rotate(-.35deg)scaleY(.94)}12%{transform:translate(-5%,-8px)rotate(-2deg)scaleY(1.28)}29%{transform:translate(6%,4px)rotate(2.3deg)scaleY(.8)}48%{transform:translate(-3.2%,-4px)rotate(-1.25deg)scaleY(1.12)}69%{transform:translate(1.7%,2px)rotate(.58deg)scaleY(.95)}84%{transform:translate(-.7%,-1px)rotate(-.25deg)scaleY(1.03)}to{transform:translate(-2%)rotate(-.35deg)scaleY(.94)}}@keyframes wave-disturb-back{0%{transform:translate(3.5%,1px)rotate(.55deg)scaleY(1.04)}10%{transform:translate(7%,5px)rotate(2.15deg)scaleY(.76)}27%{transform:translate(-6%,-7px)rotate(-2.4deg)scaleY(1.3)}47%{transform:translate(3.6%,3px)rotate(1.15deg)scaleY(.89)}68%{transform:translate(-1.8%,-2px)rotate(-.55deg)scaleY(1.09)}85%{transform:translate(.8%,1px)rotate(.22deg)scaleY(.98)}to{transform:translate(3.5%,1px)rotate(.55deg)scaleY(1.04)}}@keyframes current-shake{0%,to{transform:none}13%{transform:translate(-9%,-5px)rotate(-1.2deg)scaleX(1.08)}30%{transform:translate(8%,4px)rotate(1.4deg)scaleX(.9)}50%{transform:translate(-4%,-2px)rotate(-.7deg)scaleX(1.05)}72%{transform:translate(2%,1px)rotate(.3deg)}}@keyframes glint-shake{0%,to{opacity:.42;transform:scaleX(.78)}14%{opacity:1;transform:translate(-12%,-7px)scaleX(1.28)}32%{opacity:.36;transform:translate(10%,4px)scaleX(.58)}52%{opacity:.8;transform:translate(-5%,-2px)scaleX(1.06)}75%{opacity:.5;transform:translate(2%,1px)scaleX(.9)}}@keyframes slosh-flash{0%{opacity:0;transform:translateY(12px)scaleX(.7)scaleY(.65)}11%{opacity:.92;transform:translate(-7%,-8px)rotate(-1.5deg)scaleX(1.08)scaleY(1.2)}28%{opacity:.78;transform:translate(7%,4px)rotate(1.7deg)scaleX(.88)scaleY(.78)}49%{opacity:.58;transform:translate(-3%,-3px)rotate(-.8deg)scaleX(1.03)}72%{opacity:.34;transform:translate(1.5%,1px)scaleX(.98)}to{opacity:0;transform:none}}@keyframes spray-burst{0%{opacity:0;transform:translateY(6px)scale(.55)rotate(0)}18%{opacity:.82}58%{opacity:.62;transform:translate3d(var(--spray-x,12px), var(--spray-y,-38px), 0) scale(1) rotate(80deg)}to{opacity:0;transform:translate3d(var(--spray-x,12px), -8px, 0) scale(.7) rotate(155deg)}}.spray-one{--spray-x:-18px;--spray-y:-42px}.spray-two{--spray-x:12px;--spray-y:-34px}.spray-three{--spray-x:20px;--spray-y:-48px}.beach-scene{pointer-events:none;position:absolute;inset:0;overflow:hidden}.beach-scene:after{content:"";z-index:3;opacity:calc(var(--night) * .44 + var(--dusk) * .12);pointer-events:none;background:linear-gradient(#2c446600 0%,#2a426480 12%,#263e60e6 26%,#1e3658d1 46%,#1a305099 62%,#182e4e85 100%);transition:opacity .42s linear;position:absolute;inset:20% 0 0}.coast-lights{z-index:5;aspect-ratio:1400/1446;pointer-events:none;width:116%;position:absolute;top:33%;left:50%;transform:translate(-50%)}.far-sea{z-index:1;aspect-ratio:1400/1446;width:116%;filter:var(--coast-shade);contain:paint;background:url(/assets/coast/coast-v3.webp) top/100% 100% no-repeat;transition:filter .42s linear;position:absolute;top:33%;left:50%;transform:translate(-50%)}.beach-sand-base{background:linear-gradient(#bcaa8b 0%,#b3a284 100%);transition:filter .42s linear;top:84%}.coast-band,.coast-bluff,.beach-sand-dry,.beach-sand-texture{display:none}.shoreline-track{z-index:2;height:84%;transform:translate3d(0, var(--water-shift), 0);transition:transform .46s cubic-bezier(.32,.72,0,1);position:absolute;top:16%;left:-20%;right:-20%}.surface-screen.is-playing .shoreline-track{transition-duration:.145s;transition-timing-function:linear}.surface-screen:has(.water.is-disturbed) .shoreline-track{transition-duration:.46s;transition-timing-function:cubic-bezier(.32,.72,0,1)}.beach-sand-wet{height:38px;opacity:calc(.55 + var(--beach-exposure) * .45);background:linear-gradient(#0000 0%,#7e705c14 12%,#7068586b 68%,#5e6c688f 100%),radial-gradient(44% 46% at 25% 100%,#d6e8e23d,#0000 72%);transition:opacity .26s linear;position:absolute;top:-34px;left:0;right:0;box-shadow:inset 0 -2px #f0faf442}.tide-marks{z-index:3;pointer-events:none;position:absolute;inset:0}.tide-mark{top:var(--at);font-variant-numeric:tabular-nums;align-items:baseline;padding:0 22px 5px;font-size:.6875rem;font-weight:600;transition:opacity .42s linear,color .52s linear;display:flex;position:absolute;left:0;right:0;transform:translateY(-100%)}.tide-mark:before{content:"";opacity:.3;border-top:1px dashed;position:absolute;bottom:0;left:22px;right:22px}.tide-mark-label{letter-spacing:.08em;text-transform:uppercase}.tide-mark-value{opacity:.75;letter-spacing:.01em;margin-left:auto;font-weight:500}.tide-mark-high{color:#433822;text-shadow:0 1px 2px #f7f1e48c,0 0 1px #f7f1e4b3}.tide-mark-low{color:#f2fbfd;text-shadow:0 1px 3px #0630468c,0 0 1px #06304666}.tide-mark-low:before{opacity:.34;border-top-style:solid}.surface-screen.is-dark .tide-mark-high{color:#e8e0cca8}.tide-mark-high{opacity:clamp(0, calc((1 - var(--tide-progress)) * 5), .92)}.tide-mark-low{opacity:clamp(0, calc(var(--tide-progress) * 5), .92)}.lighthouse{z-index:4;aspect-ratio:30/18;pointer-events:none;width:2.14%;position:absolute;top:2.21%;left:78.82%;transform:translate(-50%,-50%)}.lighthouse-lamp{width:100%;height:100%;opacity:calc(var(--night) * .95 + var(--twilight) * .4);background:#ffd6c4fa;border-radius:18%;transition:opacity .42s linear;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 16px 7px #ff604acc,0 0 34px 14px #e23a2c66}.lighthouse-beam{z-index:-1;opacity:0;pointer-events:none;width:clamp(190px,58cqw,280px);height:30px;margin-top:-15px;position:absolute;top:50%}.beam-left{clip-path:polygon(100% 40%,0 0,0 100%,100% 60%);transform-origin:100%;background:linear-gradient(-90deg,#ff6852d1 0%,#f64c3a52 44%,#e23a2c00 88%);right:50%;transform:scaleX(1)}.beam-right{clip-path:polygon(0 40%,100% 0,100% 100%,0 60%);transform-origin:0;background:linear-gradient(90deg,#ff6852d1 0%,#f64c3a52 44%,#e23a2c00 88%);left:50%;transform:scaleX(0)}.lighthouse-glare{z-index:-1;opacity:0;pointer-events:none;background:radial-gradient(circle,#ffe2d0f2 0%,#ff6e5699 22%,#e23a2c00 70%);border-radius:50%;width:104px;height:104px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.surface-screen.is-dark .beam-left{animation:5s linear infinite beam-left}.surface-screen.is-dark .beam-right{animation:5s linear infinite beam-right}.surface-screen.is-dark .lighthouse-glare{animation:5s linear infinite beam-glare}.surface-screen.is-dark .lighthouse-lamp{animation:5s linear infinite lamp-pulse}@keyframes beam-left{0%{opacity:0;transform:scaleX(1)rotate(-5deg)}1.4%{opacity:.92;transform:scaleX(1)rotate(-5deg)}5%{opacity:.92;transform:scaleX(.78)rotate(-3.4deg)}8%{opacity:.88;transform:scaleX(.5)rotate(-1.8deg)}10.4%{opacity:.7;transform:scaleX(.2)rotate(-.6deg)}11.6%{opacity:0;transform:scaleX(0)rotate(0)}to{opacity:0;transform:scaleX(0)rotate(0)}}@keyframes beam-right{0%,11%{opacity:0;transform:scaleX(0)rotate(0)}12.4%{opacity:.7;transform:scaleX(.2)rotate(.6deg)}15%{opacity:.88;transform:scaleX(.52)rotate(1.9deg)}18.5%{opacity:.9;transform:scaleX(.8)rotate(3.6deg)}22%{opacity:.85;transform:scaleX(1)rotate(5deg)}24%{opacity:0;transform:scaleX(1)rotate(5deg)}to{opacity:0;transform:scaleX(1)rotate(5deg)}}@keyframes beam-glare{0%,9.6%{opacity:0;transform:translate(-50%,-50%)scale(.4)}10.6%{opacity:.75;transform:translate(-50%,-50%)scale(1.08)}11.3%{opacity:1;transform:translate(-50%,-50%)scale(1.32)}12.4%{opacity:.4;transform:translate(-50%,-50%)scale(1)}14%{opacity:.06;transform:translate(-50%,-50%)scale(.7)}16%,to{opacity:0;transform:translate(-50%,-50%)scale(.4)}}@keyframes lamp-pulse{0%,8%{opacity:.26}11.3%{opacity:1}15%{opacity:.44}20%,to{opacity:.26}}.beachgoers{z-index:2;width:108px;height:18px;opacity:var(--visitor-presence);transition:opacity .52s linear, transform .64s var(--spring-smooth);position:absolute;top:52%;left:62%}.parasol{transform-origin:50% 100%;width:16px;height:15px;transition:transform .52s var(--spring-smooth), opacity .42s linear;display:block;position:absolute;bottom:0}.parasol:before{content:"";background-image:linear-gradient(90deg,currentColor 0 25%,#fdfaf2eb 25% 50%,currentColor 50% 75%,#fdfaf2eb 75% 100%);border-radius:16px 16px 2px 2px/7px 7px 1px 1px;width:100%;height:7px;position:absolute;top:0;left:0;box-shadow:0 1px 1px #60523c2e}.parasol:after{content:"";background:#685a448c;border-radius:1px;width:1.5px;height:10px;position:absolute;top:5px;left:50%;transform:translate(-50%)}.parasol i{width:17px;height:3px;opacity:calc(.1 + var(--daylight) * .16);background:#6d6349;border-radius:50%;position:absolute;bottom:-1px;left:50%;transform:translate(-50%)}.parasol-one{color:#cf6f57;left:0}.parasol-two{color:#55868c;left:42px;transform:scale(.86)}.parasol-three{color:#d2a145;left:84px;transform:scale(.74)}[data-beach-life=arriving] .beachgoers{animation:beachgoers-arrive .88s var(--spring-smooth) both}[data-beach-life=leaving] .beachgoers{opacity:calc(var(--visitor-presence) * .5)}[data-beach-life=leaving] .parasol{transform:scale(.9)rotate(-16deg)}[data-beach-life=leaving] .parasol-two{transform:scale(.78)rotate(14deg)}[data-beach-life=hidden] .beachgoers{opacity:0}@keyframes beachgoers-arrive{0%{opacity:0;transform:translate(-10px,4px)scale(.92)}}.dune-houses{z-index:4;pointer-events:none;position:absolute;inset:0}.house-window{width:2.4px;height:2.8px;opacity:clamp(0, calc(var(--night) * 1.15 + var(--dusk) * .6), 1);background:#ffdf9c;border-radius:.5px;transition:opacity .62s linear;display:block;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 5px 1.5px #ffcd76b3}.house-smoke{opacity:0;background:#eceeebb8;border-radius:50%;width:3px;height:3px;animation:7.5s ease-out infinite chimney-smoke;position:absolute;top:23.8%;left:24%}.house-smoke:nth-of-type(2){animation-delay:2.5s}.house-smoke:nth-of-type(3){animation-delay:5s}@keyframes chimney-smoke{0%{opacity:0;transform:translate(0)scale(.5)}18%{opacity:.55}60%{opacity:.3}to{opacity:0;transform:translate(-7px,-26px)scale(2.6)}}.window-one{top:24.94%;left:11.79%}.window-two{top:25.03%;left:13.68%}.window-three{top:25.14%;left:15.25%}.window-four{top:25%;left:16.71%}.window-five{top:25.35%;left:22.86%}.window-six{top:25.47%;left:25.16%}.window-seven{top:25.67%;left:26.36%}.window-eight{top:25.48%;left:27.51%}.window-nine{top:15.39%;left:81.46%}.beach-rivulets,.beach-shells{z-index:1;opacity:var(--beach-exposure);transition:opacity .36s linear;position:absolute;inset:0}.rivulet{filter:drop-shadow(0 1px #f8f4e24d);border-top:1.5px solid #768c8a42;border-radius:50%;height:14px;display:block;position:absolute}.rivulet-one{width:32%;top:56%;left:9%;transform:rotate(4deg)}.rivulet-two{width:40%;top:62%;right:6%;transform:rotate(-6deg)}.rivulet-three{opacity:.6;width:26%;top:68%;left:34%;transform:rotate(2deg)}.shell{background:linear-gradient(150deg,#f3ddc6,#d6b299);border-radius:70% 70% 42% 42%;width:7px;height:5px;display:block;position:absolute;box-shadow:0 1px 1px #70604c29}.shell-one{top:53%;left:21%;transform:rotate(-18deg)scale(.86)}.shell-two{top:58%;left:72%;transform:rotate(24deg)}.shell-three{top:63%;left:49%;transform:rotate(-6deg)scale(.74)}.shell-four{top:67%;left:84%;transform:rotate(31deg)scale(.64)}.sky-flock{z-index:1;width:100%;height:16%;opacity:calc(var(--daylight) * .9);pointer-events:none;transition:opacity .62s linear;position:absolute;top:14%;left:0}.sky-bird{opacity:0;width:11px;height:5px;animation:31s linear infinite flock-cross;display:block;position:absolute}.sky-bird:before,.sky-bird:after{content:"";border-top:1.4px solid #465c6880;border-radius:60% 60% 0 0;width:6px;height:5px;animation:.62s ease-in-out infinite alternate sky-bird-wing;position:absolute;top:0}.sky-bird:before{left:0;transform:rotate(13deg)}.sky-bird:after{right:0;transform:rotate(-13deg)}.sky-flock-far{opacity:calc(var(--daylight) * .55);top:9%}.sky-flock-far .sky-bird{animation-duration:71s;scale:.5}.sky-flock-far .sky-bird:first-child{animation-delay:22s}.sky-flock-far .sky-bird:nth-child(2){animation-delay:23.4s;top:26%}.sky-flock-far .sky-bird:nth-child(3){animation-delay:24.2s;top:12%}.sky-bird:first-child{animation-delay:0s;top:20%}.sky-bird:nth-child(2){animation-delay:1.1s;top:6%;scale:.82}.sky-bird:nth-child(3){animation-delay:2.3s;top:34%;scale:.7}.sky-bird:nth-child(4){animation-delay:3.1s;top:52%;scale:.86}.sky-bird:nth-child(5){animation-delay:4.4s;top:14%;scale:.64}.sky-bird:nth-child(2n):before,.sky-bird:nth-child(2n):after{animation-duration:.54s}@keyframes flock-cross{0%{opacity:0;transform:translate(108vw)}1%{opacity:.9}16%{opacity:.9;transform:translate(-14vw,-3vh)}18%,to{opacity:0;transform:translate(-14vw,-3vh)}}@keyframes sky-bird-wing{to{transform:rotate(2deg)translateY(1.5px)}}.surface-screen.is-dark .beachgoers{opacity:0;visibility:hidden}.interface{z-index:4;overscroll-behavior:contain;height:100%;padding:max(24px, var(--sa-top)) 22px max(18px, var(--sa-bottom));opacity:1;flex-direction:column;transition:opacity .22s ease-out;display:flex;position:relative;overflow-y:auto}.topbar{justify-content:space-between;align-items:flex-start;display:flex}.brand{min-height:24px;color:color-mix(in oklab, var(--accent-strong), var(--label) calc(var(--twilight) * 100%));letter-spacing:.025em;align-items:center;gap:7px;font-size:.75rem;font-weight:600;transition:color .52s linear;display:inline-flex}.ui-icon{color:currentColor;flex:none;width:16px;height:16px;display:inline-block;position:relative}.ui-icon-arrow-up:before,.ui-icon-arrow-down:before{content:"";background:currentColor;border-radius:999px;width:2px;height:11px;position:absolute;top:3px;left:50%;transform:translate(-50%)}.ui-icon-arrow-up:after,.ui-icon-arrow-down:after{content:"";border-top:2px solid;border-left:2px solid;width:7px;height:7px;position:absolute;top:2px;left:50%;transform:translate(-50%)rotate(45deg)}.ui-icon-arrow-down{transform:rotate(180deg)}.ui-icon-chevron:before{content:"";border-bottom:2px solid;border-right:2px solid;width:7px;height:7px;position:absolute;top:3px;left:4px;transform:rotate(45deg)}.ui-icon-play:before{content:"";border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:8px solid;width:0;height:0;position:absolute;top:3px;left:5px}.ui-icon-pause:before,.ui-icon-pause:after{content:"";background:currentColor;border-radius:999px;width:3px;height:10px;position:absolute;top:3px}.ui-icon-pause:before{left:4px}.ui-icon-pause:after{right:4px}.ui-icon-waves:before,.ui-icon-waves:after{content:"";border-top:2px solid;border-radius:50%;width:14px;height:5px;position:absolute;left:1px;transform:rotate(-4deg)}.ui-icon-waves:before{top:3px}.ui-icon-waves:after{top:9px}.ui-icon-search:before{content:"";border:2px solid;border-radius:50%;width:9px;height:9px;position:absolute;top:2px;left:2px}.ui-icon-search:after{content:"";transform-origin:0;background:currentColor;border-radius:999px;width:6px;height:2px;position:absolute;top:11px;left:10px;transform:rotate(45deg)}.ui-icon-check:before{content:"";border-bottom:2px solid;border-right:2px solid;width:9px;height:5px;position:absolute;top:4px;left:3px;transform:rotate(45deg)}.brand-mark{color:#fff;background:var(--accent);border-radius:9px;place-items:center;width:24px;height:24px;transition:background-color .52s linear,box-shadow .52s linear;display:grid;overflow:hidden;box-shadow:inset 0 1px #ffffff4d}.brand-mark .ui-icon{width:15px;height:15px}.location{letter-spacing:-.04em;cursor:pointer;max-width:100%;min-height:44px;transition:color .52s linear, opacity .12s linear, transform .28s var(--spring-snappy);background:0 0;border:0;align-items:center;gap:5px;margin-left:-8px;padding:0 8px;font-size:1.6875rem;font-weight:700;line-height:1;display:flex}.topbar>div:first-child{flex:1;min-width:0;padding-right:10px}.location-name{white-space:nowrap;text-overflow:ellipsis;min-width:0;margin-bottom:-3px;padding-bottom:3px;overflow:hidden}.location .ui-icon{width:16px;height:16px;color:var(--label-secondary);transition:color .52s linear, transform .28s var(--spring-snappy)}.location:active{opacity:.72;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.97)}.coefficient{width:66px;transition:color .52s linear, background-color .52s linear, border-color .52s linear, transform .28s var(--spring-snappy);background:#ffffffc7;border:1px solid #102b3a12;border-radius:23px;align-content:center;justify-items:center;min-width:78px;min-height:66px;padding-block:6px;display:grid;box-shadow:0 4px 12px #1d53660d,inset 0 1px #ffffffe6}.coefficient span{color:var(--label-secondary);letter-spacing:.07em;text-transform:uppercase;font-size:.6875rem;font-weight:700;transition:color .52s linear}.coefficient strong{letter-spacing:-.035em;font-variant-numeric:tabular-nums;margin-top:1px;font-size:1.5rem;line-height:1}.coefficient-value{text-align:center;font-variant-numeric:tabular-nums;min-width:2ch;display:block}.coefficient .coefficient-caption{max-width:56px;color:var(--label-tertiary);letter-spacing:.055em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;margin-top:2px;font-size:.625rem;font-weight:700;line-height:1;transition:color .52s linear;overflow:hidden}.coefficient:has(.coefficient-caption) .coefficient-value{margin-top:0;font-size:1.375rem}.tide-reading{text-align:center;text-shadow:0 1px #ffffff85;margin-top:18px;transition:color .52s linear,text-shadow .52s linear;position:relative}.date{color:var(--label-secondary);letter-spacing:.01em;justify-content:center;align-items:center;gap:8px;margin:0 0 12px;font-size:.8125rem;transition:color .52s linear;display:flex}.date>span:first-child:first-letter{text-transform:uppercase}.day-phase{letter-spacing:.04em;text-transform:uppercase;background:#ffffff57;border:1px solid #ffffff8c;border-radius:999px;align-items:center;gap:5px;min-height:23px;padding:0 8px;font-size:.6875rem;font-weight:700;transition:color .52s linear,background-color .52s linear,border-color .52s linear;display:inline-flex}.phase-orb{background:#f3bd67;border-radius:50%;width:8px;height:8px;transition:background-color .52s linear,box-shadow .52s linear;box-shadow:0 0 0 3px #f3bd6721}.phase-dawn .phase-orb{background:#ecaa87;box-shadow:0 0 0 3px #ecaa8724}.phase-dusk .phase-orb{background:#e58d78;box-shadow:0 0 0 3px #e58d7824}.phase-night .phase-orb{background:#dce9df;box-shadow:-2px 1px #6b8193,0 0 0 3px #dce9df1f}.direction{width:fit-content;min-height:28px;color:var(--accent-strong);letter-spacing:.055em;text-transform:uppercase;background:#fff9;border:1px solid #fffc;border-radius:999px;align-items:center;margin:0;padding:0 11px;font-size:.6875rem;font-weight:700;transition:color .52s linear,background-color .52s linear,border-color .52s linear,box-shadow .52s linear;display:inline-flex;box-shadow:0 4px 14px #235b6c0d}.arrow{width:16px;height:16px;transition:transform .24s var(--spring-snappy);margin-right:4px;display:inline-block;scale:.78}.arrow.falling{transform:rotate(180deg)}.tide-reading h1{font-variant-numeric:tabular-nums;justify-content:center;align-items:baseline;gap:8px;margin:5px 0 0;line-height:.94;display:flex}.height-value{letter-spacing:-.055em;font-size:clamp(4.125rem,19vw,5.125rem);font-weight:700}.height-unit{color:var(--label-secondary);letter-spacing:-.02em;font-size:1.5rem;font-weight:600;transition:color .52s linear}.next-tide{color:var(--label-secondary);margin:9px 0 0;font-size:1rem;font-weight:600;transition:color .52s linear}.surface-screen.is-dark .brand,.surface-screen.is-dark .location,.surface-screen.is-dark .tide-reading h1{color:#f4fbfc}.surface-screen.is-dark .location .ui-icon,.surface-screen.is-dark .date,.surface-screen.is-dark .height-unit,.surface-screen.is-dark .next-tide{color:#edf9fbb8}.surface-screen.is-dark .tide-reading{text-shadow:0 2px 14px #0216284d}.surface-screen.is-dark .day-phase{background:#07223647;border-color:#ffffff21}.surface-screen.is-dark .direction{color:#c5edf2;background:#052a407a;border-color:#ffffff24;box-shadow:0 6px 18px #0114221f}.surface-screen.is-dark .coefficient{color:#f4fbfc;background:#08273bb8;border-color:#ffffff1f;box-shadow:0 12px 30px #01142224,inset 0 1px #ffffff24}.surface-screen.is-dark .coefficient span{color:#edf9fb94}.surface-screen.is-dark .coefficient .coefficient-caption{color:#edf9fb8f}.surface-screen.is-dark .tide-mark-low{color:#dcf2f6d1}.controls{-webkit-backdrop-filter:blur(18px)saturate(1.08);backdrop-filter:blur(18px)saturate(1.08);background:#f9fcfce6;border:1px solid #ffffffe6;border-radius:27px;grid-template-columns:minmax(0,1fr);row-gap:4px;margin-top:auto;padding:12px 14px;transition:color .52s linear,background-color .52s linear,border-color .52s linear,box-shadow .52s linear;display:grid;position:relative;overflow:hidden;box-shadow:0 24px 55px #063d562b,0 4px 14px #063d5612,inset 0 1px #fff}.controls:before{content:"";opacity:0;pointer-events:none;background-image:radial-gradient(38px 9px at 18% 24%,#0000 44%,#96e2ee38 49%,#0000 58%),radial-gradient(44px 10px at 78% 74%,#0000 44%,#96e2ee2b 49%,#0000 58%);background-size:142px 98px,174px 124px;transition:opacity .52s linear;position:absolute;inset:0}.controls>*{z-index:1;position:relative}.time-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;min-height:44px;margin:0;display:flex}.time-row p{color:var(--label-secondary);letter-spacing:.065em;text-transform:uppercase;margin:0 0 2px;font-size:.6875rem;font-weight:700;transition:color .52s linear}.time-row strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:1.875rem;font-weight:600;line-height:1;transition:color .52s linear}.time-actions{align-items:center;gap:8px;display:flex}.live-button{min-width:84px;min-height:44px;color:var(--accent-strong);letter-spacing:.045em;text-transform:uppercase;cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), color .22s ease-out, border-color .22s ease-out, background-color .22s ease-out, box-shadow .22s ease-out;background:#ffffff85;border:1px solid #0878b929;border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:.6875rem;font-weight:750;display:inline-flex;box-shadow:inset 0 1px #ffffffb8}.live-button:active{transition-duration:var(--motion-press);transform:scale(.96)}.live-dot{background:0 0;border:1.5px solid;border-radius:50%;flex:none;width:7px;height:7px}.live-button.is-live{color:#087d69;background:#def8f1ad;border-color:#16947729;box-shadow:inset 0 1px #fffc,0 0 0 4px #1694770d}.live-button.is-live .live-dot{background:#e95f58;border-color:#e95f58;animation:2.2s ease-in-out infinite live-pulse;box-shadow:0 0 0 4px #e95f581f}@keyframes live-pulse{50%{box-shadow:0 0 0 6px #e95f580a}}.play{isolation:isolate;width:44px;height:44px;color:var(--accent-strong);cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), color .22s ease-out, border-color .22s ease-out, background-color .22s ease-out, opacity .18s ease-out, box-shadow .24s linear;background:#ffffff85;border:1px solid #0878b929;border-radius:14px;place-items:center;display:grid;position:relative;box-shadow:inset 0 1px #ffffffb8}.play:before{display:none}.play:active{opacity:.84;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.95)}.play.is-playing{color:var(--accent-strong);background:#0878b91a;border-color:#0878b93d;box-shadow:inset 0 1px #ffffff9e}.play .ui-icon{width:16px;height:16px;animation:control-icon-in .19s var(--spring-snappy) both}.play .ui-icon-play{margin-left:2px}@keyframes control-icon-in{0%{opacity:0;transform:scale(.82)}}.time-slider{--progress:50%;appearance:none;cursor:pointer;background:0 0;width:100%;height:44px;margin:0}.time-slider::-webkit-slider-runnable-track{background:linear-gradient(90deg, #ffffff4d 0 var(--progress), #fff0 var(--progress)), linear-gradient(90deg, #1a3454 0%, #b87e83 19%, #82c9d8 34%, #bce6e8 50%, #7dc4d6 66%, #da8a75 81%, #1a3454 100%);border-radius:999px;height:7px;box-shadow:inset 0 1px 2px #102b3a0f}.time-slider::-webkit-slider-thumb{appearance:none;background:linear-gradient(145deg, #45b8d2, var(--accent-strong));width:25px;height:25px;transition:transform var(--motion-release) var(--spring-snappy);border:5px solid #fff;border-radius:50%;margin-top:-9px;box-shadow:0 3px 9px #102b3a3d,0 0 0 1px #0878b914}.time-slider:active::-webkit-slider-thumb{transition-duration:var(--motion-press);transform:scale(1.1)}.time-slider::-moz-range-track{background:linear-gradient(90deg,#1a3454 0%,#b87e83 19%,#82c9d8 34%,#bce6e8 50%,#7dc4d6 66%,#da8a75 81%,#1a3454 100%);border:0;border-radius:999px;height:7px}.time-slider::-moz-range-progress{background:#ffffff47;border-radius:999px;height:7px}.time-slider::-moz-range-thumb{background:linear-gradient(145deg, #45b8d2, var(--accent-strong));width:17px;height:17px;transition:transform var(--motion-release) var(--spring-snappy);border:5px solid #fff;border-radius:50%;box-shadow:0 3px 9px #102b3a3d}.time-slider:active::-moz-range-thumb{transition-duration:var(--motion-press);transform:scale(1.1)}.range-labels{color:var(--label-tertiary);font-variant-numeric:tabular-nums;pointer-events:none;justify-content:space-between;align-self:end;margin:0 1px 1px;font-size:.6875rem;transition:color .52s linear;display:flex}.slider-stack{min-height:44px;display:grid;position:relative}.slider-stack .time-slider,.slider-stack .range-labels{grid-area:1/1}.fiction-notice{color:#8a6534;letter-spacing:.01em;align-items:baseline;gap:6px;margin:0 0 6px;font-size:.6875rem;line-height:1.35;display:flex}.fiction-notice-mark{background:#d69a4a;border-radius:50%;flex:none;align-self:center;width:6px;height:6px}.surface-screen.is-dark .fiction-notice{color:#f0d098db}.tide-events{background:0 0;border-radius:14px;grid-template-columns:repeat(auto-fit,minmax(48px,1fr));gap:4px;margin:0;padding:0;transition:background-color .52s linear;display:grid}.tide-events[data-fiction] .event-copy strong{text-underline-offset:3px;-webkit-text-decoration:underline dashed #be8a4299;text-decoration:underline dashed #be8a4299;text-decoration-thickness:1px}.surface-screen.is-dark .tide-events[data-fiction] .event-copy strong{text-decoration-color:#f0d0988c}.fiction-notice-forecast{color:#f4d69ee6;margin:0 0 10px;font-size:.75rem}.forecast-card-content[data-fiction] .forecast-tide strong{text-underline-offset:3px;-webkit-text-decoration:underline dashed #f4d69e80;text-decoration:underline dashed #f4d69e80;text-decoration-thickness:1px}.event{text-align:center;cursor:pointer;min-width:0;min-height:44px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, color .18s ease-out, background-color .18s ease-out, box-shadow .18s ease-out;background:0 0;border:0;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:0;padding:2px 1px;display:flex}.event:active{opacity:.82;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.96)}.event.is-active{color:var(--accent-strong);background:#ffffffc7;box-shadow:inset 0 0 0 1px #0878b924}.event-icon{width:14px;height:14px;color:var(--accent);background:#0878b917;border-radius:5px;place-items:center;font-size:.6875rem;font-weight:800;transition:color .36s linear,background-color .36s linear;display:grid}.event-icon .ui-icon{width:12px;height:12px;scale:.58}.event-icon.low{color:#3f7889;background:#3f788917}.event.is-active .event-icon{animation:event-select-in .26s var(--spring-snappy) both}@keyframes event-select-in{0%{opacity:.45;transform:scale(.72)}}.event-copy{justify-items:center;min-width:0;display:grid}.event-copy>span{max-width:100%;color:var(--label-secondary);letter-spacing:.01em;white-space:nowrap;text-overflow:ellipsis;font-size:.6875rem;font-weight:600;line-height:1;transition:color .52s linear;overflow:hidden}.event-copy strong{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:650;line-height:1.05}.event-height{display:none}.controls-footer{grid-template-columns:minmax(84px,1fr) auto;align-items:center;gap:6px;min-height:44px;display:grid}.forecast-button{width:100%;min-height:44px;color:var(--label-secondary);box-shadow:none;cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), color .18s ease-out, background-color .18s ease-out, opacity .16s ease-out;background:#0878b90b;border:0;border-radius:12px;place-items:center;margin:0;padding:11px 8px 2px;font-size:.6875rem;font-weight:650;line-height:1;display:grid;position:relative}.forecast-button:before{content:"";opacity:.38;width:34px;height:4px;transition:opacity .18s ease-out, transform var(--motion-release) var(--spring-snappy);pointer-events:none;background:currentColor;border-radius:999px;position:absolute;top:7px;left:50%;transform:translate(-50%)}.forecast-button>span{white-space:nowrap}.forecast-button small{color:var(--label-tertiary);font-size:inherit;font-weight:550;transition:color .52s linear}.forecast-button:active{opacity:.86;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.97)}.demo-note{color:var(--label-tertiary);text-align:center;margin:7px 0 -3px;font-size:.6875rem;transition:color .52s linear}.data-provenance{min-width:0;min-height:44px;color:var(--label-tertiary);text-align:center;justify-content:flex-end;align-items:center;gap:4px;margin:0;font-size:.6875rem;line-height:1;display:flex;overflow:visible}.source-badge{min-width:0;min-height:18px;color:var(--label-secondary);letter-spacing:.025em;text-overflow:ellipsis;white-space:nowrap;background:#ffffff8a;border:1px solid #102b3a14;border-radius:999px;justify-content:center;align-items:center;gap:5px;padding:0 7px;font-size:.6875rem;font-weight:700;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.source-badge:before{width:5px;height:5px;box-shadow:0 0 0 3px color-mix(in srgb, currentColor 12%, transparent);content:"";background:currentColor;border-radius:50%;flex:none}.source-note{min-width:0;color:var(--label-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.6875rem;font-weight:600;line-height:1;overflow:hidden}.source-note--fiction{color:#78541e;letter-spacing:.025em;background:#b5843c17;border:1px solid #9c6f2e26;border-radius:999px;align-items:center;min-height:18px;padding:0 7px;font-weight:700;display:inline-flex}.source-badge--official{color:var(--accent-strong);cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), background-color .16s ease-out;background:#0878b912;border-color:#0878b921}.source-badge--official:active{transition-duration:var(--motion-press);transform:scale(.96)}button.source-badge--official{min-width:56px;min-height:44px;padding-inline:8px}.surface-screen.is-dark .controls{color:#f1fafb;background:#071f2ff5;border-color:#bcebf21c;box-shadow:0 26px 58px #01131f57,0 4px 16px #01131f29,inset 0 1px #ffffff17}.surface-screen.is-dark .controls:before{opacity:.7}.surface-screen.is-dark .time-row p,.surface-screen.is-dark .range-labels,.surface-screen.is-dark .event-copy>span,.surface-screen.is-dark .event-height,.surface-screen.is-dark .demo-note,.surface-screen.is-dark .data-provenance{color:#e1f6f994}.surface-screen.is-dark .live-button,.surface-screen.is-dark .play{color:#ddf7fadb;background:#e1f8fb13;border-color:#bcebf221;box-shadow:inset 0 1px #ffffff14}.surface-screen.is-dark .play.is-playing{color:#a8eee2;background:#5dd3bb1a;border-color:#a8eee229}.surface-screen.is-dark .live-button.is-live{color:#a8eee2;background:#5dd3bb1a}.surface-screen.is-dark .forecast-button{color:#e1f6f9ad;background:#e5fafc0e}.surface-screen.is-dark .forecast-button small{color:#e1f6f97a}.surface-screen.is-dark .source-badge{color:#e1f6f9b8;background:#e5fafc12;border-color:#d2f3f81a}.surface-screen.is-dark .source-note{color:#e2f6fac7}.surface-screen.is-dark .source-note--fiction{color:#edcb8f;background:#ddae5c1a}.surface-screen.is-dark .source-badge--official{color:#b9eaf0;background:#7ed6e41a}.surface-screen.is-dark .tide-events{background:0 0}.surface-screen.is-dark .event.is-active{color:#c7f1f5;background:#7ed6e424;box-shadow:inset 0 0 0 1px #aee8f01a}.surface-screen.is-dark .event-icon{color:#9edfe9;background:#8fdeea1c}.surface-screen.is-dark .event-icon.low{color:#83bdca;background:#83bdca1a}.forecast-screen{--seabed-reserve:31.3%;--water-shallow:color-mix(in oklab, #075a7e, #04202f calc(var(--night) * 100%));--water-mid:color-mix(in oklab, #075171, #041521 calc(var(--night) * 100%));--water-deep:color-mix(in oklab, #042b40, #010a11 calc(var(--night) * 100%));overscroll-behavior:contain;min-height:0;padding:max(26px, var(--sa-top)) 20px max(20px, var(--sa-bottom));color:#f2fbfd;background:radial-gradient(ellipse 66% 38% at 88% 10%, color-mix(in oklab, #4eb2c733, transparent calc(var(--night) * 55%)), transparent 74%), radial-gradient(ellipse 82% 52% at -12% 56%, color-mix(in oklab, #0d6d8f33, transparent calc(var(--night) * 55%)), transparent 74%), linear-gradient(180deg, var(--water-shallow) 0%, color-mix(in oklab, var(--water-shallow), var(--water-mid) 60%) 25%, var(--water-mid) 57%, var(--water-deep) 100%);padding-bottom:calc(var(--seabed-reserve) + max(12px, var(--sa-bottom)));transition:background-color .52s linear;position:relative;overflow:clip auto}.forecast-screen:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(110% 120% at 50% -45%,#91e0ec26,#0000 72%);width:100%;height:170px;position:absolute;top:0;left:0}.forecast-screen:after{content:"";z-index:0;opacity:.1;pointer-events:none;background-image:radial-gradient(circle at 12% 18%,#fff 0 1px,#0000 1.5px),radial-gradient(circle at 79% 31%,#fff 0 1px,#0000 1.6px),radial-gradient(circle at 43% 78%,#fff 0 .8px,#0000 1.4px);background-size:94px 108px,126px 144px,82px 96px;position:absolute;inset:0}.underwater-light{z-index:0;opacity:.34;filter:blur(20px);pointer-events:none;background:radial-gradient(54% 90% at 28% 0,#c7f0f62b,#0000 70%),radial-gradient(42% 76% at 74% -8%,#8ad6e21a,#0000 73%);width:116%;height:390px;animation:9s ease-in-out infinite alternate underwater-light-sway;position:absolute;top:-28px;left:-8%;-webkit-mask-image:linear-gradient(#000 0%,#000000b8 50%,#0000 92%);mask-image:linear-gradient(#000 0%,#000000b8 50%,#0000 92%)}.seabed-caustics{z-index:2;opacity:calc(var(--daylight) * .3);pointer-events:none;background:radial-gradient(7% 21% at 9% 24%,#e4faff80,#0000 68%),radial-gradient(10% 16% at 27% 52%,#d6f6ff66,#0000 70%),radial-gradient(6% 25% at 43% 20%,#e4faff5c,#0000 68%),radial-gradient(11% 18% at 60% 58%,#d6f6ff61,#0000 70%),radial-gradient(7% 22% at 74% 30%,#e4faff6b,#0000 68%),radial-gradient(9% 17% at 90% 62%,#d6f6ff57,#0000 70%);transition:opacity .52s linear;animation:12s ease-in-out infinite alternate caustics-near;position:absolute;inset:44% -18% 0}.seabed-caustics:before{content:"";opacity:.66;background:radial-gradient(9% 18% at 17% 44%,#e2f9ff66,#0000 70%),radial-gradient(6% 23% at 35% 26%,#d4f4ff57,#0000 68%),radial-gradient(10% 16% at 52% 64%,#e2f9ff5c,#0000 70%),radial-gradient(7% 20% at 68% 38%,#d4f4ff52,#0000 68%),radial-gradient(9% 19% at 84% 22%,#e2f9ff4d,#0000 70%);animation:17s ease-in-out infinite alternate-reverse caustics-far;position:absolute;inset:0}@keyframes caustics-near{0%{transform:translate(-1.8%)scaleY(1)}to{transform:translate(1.8%)scaleY(1.07)}}@keyframes caustics-far{0%{transform:translate(1.4%)scaleX(1.05)}to{transform:translate(-1.4%)scaleX(.96)}}.water-drift{z-index:1;opacity:calc(.2 + var(--daylight) * .22);pointer-events:none;background:radial-gradient(1.5px at 11% 12%,#e2f6fcb3,#0000 62%),radial-gradient(1px at 28% 27%,#d6f0fa8c,#0000 62%),radial-gradient(1.5px at 46% 8%,#e2f6fc80,#0000 62%),radial-gradient(1px at 63% 34%,#d6f0fa99,#0000 62%),radial-gradient(1.5px at 81% 17%,#e2f6fc73,#0000 62%),radial-gradient(1px at 19% 46%,#d6f0fa80,#0000 62%),radial-gradient(1.5px at 38% 58%,#e2f6fc6b,#0000 62%),radial-gradient(1px at 72% 51%,#d6f0fa85,#0000 62%),radial-gradient(1.5px at 91% 41%,#e2f6fc66,#0000 62%),radial-gradient(1px at 55% 71%,#d6f0fa75,#0000 62%);transition:opacity .52s linear;animation:34s linear infinite water-drift;position:absolute;inset:-30% 0 0}@keyframes water-drift{0%{transform:translate(0)}to{transform:translate(-2.5%,-23%)}}.seabed{z-index:1;pointer-events:none;aspect-ratio:1400/931;width:100%;filter:var(--coast-shade);background:url(/assets/coast/seabed-v1.webp) bottom/100% 100% no-repeat;transition:filter .42s linear;position:absolute;bottom:0;left:0}.seabed:before{content:"";z-index:1;background:linear-gradient(180deg, color-mix(in oklab, var(--water-deep), transparent 62%) 0%, color-mix(in oklab, var(--water-deep), transparent 74%) 46%, color-mix(in oklab, var(--water-deep), transparent 88%) 76%, transparent 100%);pointer-events:none;height:30%;position:absolute;inset:44% 0 auto}.seabed-crab{z-index:5;opacity:.82;filter:drop-shadow(0 3px 3px #021f2b29);width:34px;height:21px;animation:20s ease-in-out infinite crab-scuttle;display:block;position:absolute;bottom:39px;left:31%}.crab-body{z-index:2;background:linear-gradient(145deg,#c58268,#8f5c55 72%);border-radius:52% 48% 44% 46%;width:18px;height:11px;position:absolute;bottom:3px;left:8px;box-shadow:inset 0 2px 2px #ffddbf2e}.crab-body:before,.crab-body:after{content:"";border-top:1px solid #8b5952;border-bottom:1px solid #8b5952;width:12px;height:8px;position:absolute;bottom:-5px}.crab-body:before{right:11px;transform:skew(-28deg)rotate(9deg)}.crab-body:after{left:11px;transform:skew(28deg)rotate(-9deg)}.crab-claw{z-index:1;border:3px solid #a76a5b;border-bottom-color:#0000;border-radius:50%;width:10px;height:8px;position:absolute;top:1px}.crab-claw-left{left:0;transform:rotate(-30deg)}.crab-claw-right{right:0;transform:rotate(30deg)}@keyframes crab-scuttle{0%,8%{transform:translate(0,0)}14%,25%{transform:translate(13px,-1px)}31%,57%{transform:translate(20px)}63%,82%{transform:translate(7px,-1px)}89%,to{transform:translate(0)}}@keyframes seabed-arrive{0%{opacity:.18;transform:translateY(46px)scale(1.035)}72%{opacity:1;transform:translateY(-3px)scale(.998)}to{opacity:.98;transform:none}}.screen-stack.is-underwater .seabed{animation:seabed-arrive .64s var(--spring-smooth) both}.bubble{z-index:0;border:1px solid #d3f5fa59;border-radius:50%;width:8px;height:8px;animation:8s ease-in infinite bubble-rise;position:absolute}.bubble-one{bottom:12%;left:9%}.bubble-two{width:13px;height:13px;animation-duration:10s;animation-delay:-3s;bottom:30%;right:8%}.bubble-three{width:5px;height:5px;animation-duration:7s;animation-delay:-1.5s;bottom:6%;left:76%}.screen-stack:not(.is-underwater) .bubble,.screen-stack:not(.is-underwater) .underwater-light,.screen-stack:not(.is-underwater) .seabed-caustics,.screen-stack:not(.is-underwater) .seabed-caustics:before,.screen-stack:not(.is-underwater) .water-drift,.screen-stack:not(.is-underwater) .seabed-crab{animation-play-state:paused}@keyframes bubble-rise{0%{opacity:0;transform:translateY(30px)scale(.7)}15%{opacity:.55}85%{opacity:.35}to{opacity:0;transform:translateY(-230px)scale(1.15)}}@keyframes underwater-light-sway{to{opacity:.4;transform:translate(10px)}}@keyframes underwater-content-in{0%{opacity:0;transform:translateY(12px)scale(.99)}}.screen-stack.is-underwater .forecast-header,.screen-stack.is-underwater .underwater-intro,.screen-stack.is-underwater .day-button,.screen-stack.is-underwater .forecast-card,.screen-stack.is-underwater .official-shom-panel,.screen-stack.is-underwater .forecast-screen .data-provenance,.screen-stack.is-underwater .underwater-note{animation:underwater-content-in .42s var(--spring-smooth) both}.screen-stack.is-underwater .forecast-header{animation-delay:70ms}.screen-stack.is-underwater .underwater-intro{animation-delay:.105s}.screen-stack.is-underwater .day-button:first-child{animation-delay:.12s}.screen-stack.is-underwater .day-button:nth-child(2){animation-delay:.14s}.screen-stack.is-underwater .day-button:nth-child(3){animation-delay:.16s}.screen-stack.is-underwater .day-button:nth-child(4){animation-delay:.18s}.screen-stack.is-underwater .day-button:nth-child(5){animation-delay:.2s}.screen-stack.is-underwater .day-button:nth-child(6){animation-delay:.22s}.screen-stack.is-underwater .day-button:nth-child(7){animation-delay:.24s}.screen-stack.is-underwater .forecast-card{animation-delay:.21s}.screen-stack.is-underwater .official-shom-panel{animation-delay:.23s}.screen-stack.is-underwater .forecast-screen .data-provenance{animation-delay:.245s}.screen-stack.is-underwater .underwater-note{animation-delay:.24s}.forecast-header,.underwater-intro,.calendar,.forecast-card,.official-shom-panel,.forecast-screen .data-provenance,.underwater-note{z-index:2;position:relative}.forecast-header{grid-template-columns:48px 1fr auto;align-items:center;gap:12px;display:grid}.back-button{color:#fff;cursor:pointer;width:48px;height:48px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out;background:#ffffff17;border:1px solid #ffffff2b;border-radius:18px;place-items:center;display:grid;box-shadow:inset 0 1px #ffffff1f}.back-button:active{opacity:.78;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.96)}.back-button .ui-icon{width:18px;height:18px}.forecast-header p,.forecast-header h2{margin:0}.forecast-header p{color:#e8f8fbe0;letter-spacing:.07em;text-transform:uppercase;margin-bottom:2px;font-size:.6875rem;font-weight:700}.forecast-header h2{letter-spacing:-.03em;white-space:nowrap;text-overflow:ellipsis;font-size:1.4375rem;font-weight:600;overflow:hidden}.forecast-header>div{min-width:0}.forecast-depth{color:#e2f6faf0;letter-spacing:.03em;place-items:center;min-height:36px;padding:0 4px;font-size:.6875rem;font-weight:600;display:grid}.underwater-intro{margin-top:36px}.underwater-intro p{color:#91d9e7;letter-spacing:.075em;text-transform:uppercase;margin:0 0 6px;font-size:.6875rem;font-weight:700}.underwater-intro h3{letter-spacing:-.048em;max-width:300px;margin:0;font-size:clamp(2rem,8.7vw,2.25rem);font-weight:600;line-height:.98}.calendar{scrollbar-width:none;touch-action:pan-x;background:#0323366b;border:1px solid #ffffff1a;border-radius:23px;grid-template-columns:repeat(7,minmax(44px,1fr));gap:4px;margin-top:27px;padding:6px;display:grid;overflow-x:auto;box-shadow:inset 0 1px #ffffff0d}.calendar::-webkit-scrollbar{display:none}.day-button{color:#ebfafcd1;cursor:pointer;min-width:0;min-height:70px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, color .18s ease-out, background-color .18s ease-out, box-shadow .18s ease-out;background:0 0;border:0;border-radius:17px;align-content:center;justify-items:center;gap:1px;padding:5px 2px;display:grid}.day-button:active{opacity:.78;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.96)}.day-button.is-selected{color:#073c56;background:#eefbfc;box-shadow:0 8px 18px #011c2b33}.day-button span{white-space:nowrap;max-width:100%;font-size:.6875rem;font-weight:600;overflow:hidden}.day-button span:first-letter{text-transform:uppercase;text-overflow:ellipsis}.day-button strong{font-variant-numeric:tabular-nums;font-size:1.125rem;line-height:1.1}.day-button small{min-width:23px;color:inherit;white-space:nowrap;background:#ffffff14;border-radius:999px;place-items:center;min-height:16px;margin-top:2px;padding:0 3px;font-size:.625rem;font-weight:700;line-height:1.35;display:grid}.day-button.is-selected small{color:var(--accent-strong);background:#0878b91a}.forecast-card{background:#032538d1;border:1px solid #ffffff1a;border-radius:27px;margin-top:16px;padding:18px;box-shadow:0 24px 48px #01162333,inset 0 1px #ffffff0d}.forecast-card-content{animation:forecast-card-refresh .26s var(--spring-smooth) both}@keyframes forecast-card-refresh{0%{opacity:0;transform:translateY(7px)}}.forecast-card-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.forecast-card-heading p,.forecast-card-heading h4{margin:0}.forecast-card-heading p:first-letter,.forecast-card-heading h4:first-letter{text-transform:uppercase}.forecast-card-heading p{color:#e2f6fa94;letter-spacing:.065em;text-transform:uppercase;margin-bottom:2px;font-size:.6875rem;font-weight:700}.forecast-card-heading h4{letter-spacing:-.035em;font-size:1.4375rem;font-weight:600}.forecast-coef{justify-items:end;min-width:76px;display:grid}.forecast-coef span{color:#e2f6fa8f;letter-spacing:.055em;text-transform:uppercase;font-size:.6875rem}.forecast-coef strong{color:#a5e2eb;letter-spacing:-.045em;font-size:1.9375rem;line-height:1}.forecast-spacer{height:clamp(0px, calc((var(--app-height,100svh) - 870px) / 2), 34px);pointer-events:none}.forecast-tides{grid-template-columns:1fr;gap:7px;margin-top:16px;display:grid}.forecast-tide{background:#fff1;border-radius:16px;grid-template-columns:27px 1fr auto;align-items:center;gap:7px;min-width:0;padding:10px;display:grid}.forecast-icon{color:#b7e9f1;background:#9ee1ec1f;border-radius:10px;place-items:center;width:27px;height:27px;font-size:.75rem;font-weight:800;display:grid}.forecast-icon.low{color:#7ab6c7}.forecast-icon .ui-icon{width:16px;height:16px;scale:.8}.forecast-tide p,.forecast-tide strong{margin:0}.forecast-tide p{color:#e2f6fa91;white-space:nowrap;text-overflow:ellipsis;font-size:.6875rem;font-weight:600;overflow:hidden}.forecast-tide strong{font-variant-numeric:tabular-nums;font-size:.875rem}.forecast-tide>span:last-child{color:#e2f6fa99;white-space:nowrap;font-size:.6875rem;font-weight:600}.underwater-note{color:#d9f1f6bd;text-align:center;margin:13px 0 0;padding:7px 12px;font-size:.6875rem}.underwater-note>p{margin:0}.forecast-screen .data-provenance{color:#d9f1f68f;margin-top:8px}.forecast-screen .source-badge{color:#e4f8fbbd;background:#fff1;border-color:#e0f8fb1c}.official-shom-panel{color:#eefbfd;-webkit-tap-highlight-color:transparent;text-align:left;cursor:pointer;min-width:0;min-height:54px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, border-color .18s ease-out, background-color .18s ease-out;background:linear-gradient(135deg,#9be1eb1c,#ffffff0b),#021f308a;border:1px solid #e2f8fb21;border-radius:19px;grid-template-columns:38px minmax(0,1fr) 28px;align-items:center;gap:10px;margin-top:10px;padding:7px 9px;text-decoration:none;display:grid;overflow:hidden;box-shadow:0 13px 28px #01162326,inset 0 1px #ffffff0f}.official-shom-panel:active{opacity:.82;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.98)}.official-shom-mark{color:#c3edf2;letter-spacing:.045em;background:#89dae71a;border:1px solid #d3f5fa24;border-radius:13px;place-items:center;width:38px;height:38px;font-size:.6875rem;font-weight:800;line-height:1;display:grid}.official-shom-copy{gap:2px;min-width:0;display:grid}.official-shom-copy strong,.official-shom-copy small{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.official-shom-copy strong{letter-spacing:-.01em;font-size:.75rem;font-weight:650}.official-shom-copy small{color:#ddf4f8db;font-size:.6875rem;line-height:1.25}.official-shom-chevron{color:#e4f8fbc2;width:28px;height:28px;transition:transform var(--motion-release) var(--spring-snappy), background-color .18s ease-out;background:#ffffff12;border-radius:10px;place-items:center;font-size:1.25rem;font-weight:500;line-height:1;display:grid}.official-shom-chevron .ui-icon{width:14px;height:14px;transform:rotate(-90deg)}.shom-dialog{width:min(620px,100vw - 36px);max-width:none;height:min(820px,100svh - 36px);max-height:none;color:var(--label);background:#f7fbfc;border:1px solid #102b3a1a;border-radius:34px;margin:0;padding:0;position:fixed;inset:50% auto auto 50%;overflow:hidden;transform:translate(-50%,-50%);box-shadow:0 42px 100px #0525345c,0 10px 28px #05253429,inset 0 1px #fffffff5}.shom-dialog[open]{animation:shom-dialog-in .42s var(--spring-smooth) both}.shom-dialog::backdrop{-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#051c287a;animation:.22s ease-out both shom-backdrop-in}.shom-dialog:focus{outline:none}.shom-sheet{height:100%;min-height:0;padding:max(14px, var(--sa-top)) 14px max(14px, var(--sa-bottom));flex-direction:column;display:flex}.shom-dialog-header{flex:none;justify-content:space-between;align-items:center;gap:16px;min-height:58px;padding:0 4px 10px 8px;display:flex}.shom-dialog-header>div{min-width:0}.shom-dialog-header p,.shom-dialog-header h2{margin:0}.shom-dialog-header p{color:var(--accent-strong);letter-spacing:.075em;text-transform:uppercase;margin-bottom:3px;font-size:.6875rem;font-weight:750}.shom-dialog-header h2{letter-spacing:-.04em;text-overflow:ellipsis;white-space:nowrap;font-size:1.625rem;font-weight:700;line-height:1.05;overflow:hidden}.shom-dialog-body{overscroll-behavior:contain;scrollbar-color:#0878b942 transparent;touch-action:pan-y pinch-zoom;-webkit-overflow-scrolling:touch;background:radial-gradient(circle at 85% 5%,#71c0d224,#0000 18rem),linear-gradient(#eef7f9 0%,#e3f0f3 100%);border:1px solid #102b3a12;border-radius:26px;flex:auto;min-height:0;padding:12px;overflow-y:auto;box-shadow:inset 0 1px #ffffffdb}.api-attribution{color:#102b3aa8;text-align:center;background:#ffffff94;border:1px solid #102b3a14;border-radius:16px;max-width:675px;margin:14px auto 2px;padding:12px 14px;font-size:.6875rem;line-height:1.45}.shom-dialog-body::-webkit-scrollbar{width:6px}.shom-dialog-body::-webkit-scrollbar-thumb{background:#0878b93d;border-radius:999px}.shom-close{min-width:68px;min-height:44px;color:var(--accent-strong);cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out;background:#0878b914;border:0;border-radius:15px;flex:none;place-items:center;padding:0 13px;font-size:.75rem;font-weight:700;display:inline-grid}.shom-close:active{opacity:.76;transition-duration:var(--motion-press);transform:scale(.96)}@keyframes shom-dialog-in{0%{opacity:0;transform:translate(-50%,calc(24px - 50%))scale(.985)}}@keyframes shom-dialog-in-mobile{0%{opacity:0;transform:translateY(26px)scale(.99)}}@keyframes shom-backdrop-in{0%{background:#051c2800}}.port-dialog{--phone-bottom-inset:max(6px, calc((100svh - min(880px, calc(100svh - 48px))) / 2 + 6px));inset:auto auto var(--phone-bottom-inset) 50%;width:min(398px,100vw - 36px);max-width:none;height:min(650px,78svh);max-height:calc(100svh - 48px);color:var(--label);background:#f9fcfc;border:1px solid #102b3a1a;border-radius:34px;margin:0;padding:0;position:fixed;overflow:hidden;transform:translate(-50%);box-shadow:0 34px 80px #092f3f4d,0 8px 24px #092f3f24,inset 0 1px #fffffff5}.port-dialog[open]{animation:port-sheet-in .42s var(--spring-smooth) both}.port-dialog::backdrop{background:#07212d57;animation:.22s ease-out both port-backdrop-in}.port-dialog:focus{outline:none}@keyframes port-sheet-in{0%{opacity:0;transform:translate(-50%,28px)scale(.985)}}@keyframes port-sheet-in-mobile{0%{opacity:0;transform:translateY(28px)scale(.99)}}@keyframes port-backdrop-in{0%{background:#07212d00}}.port-sheet{height:100%;min-height:0;padding:10px 16px max(14px, var(--sa-bottom));flex-direction:column;display:flex}.sheet-grabber{background:#102b3a29;border-radius:999px;flex:none;align-self:center;width:38px;height:5px;margin-bottom:11px}.port-sheet-header{justify-content:space-between;align-items:center;gap:16px;min-height:56px;display:flex}.port-sheet-header p,.port-sheet-header h2{margin:0}.port-sheet-header p{color:var(--accent-strong);letter-spacing:.075em;text-transform:uppercase;margin-bottom:3px;font-size:.6875rem;font-weight:700}.port-sheet-header h2{letter-spacing:-.045em;font-size:1.6875rem;font-weight:700;line-height:1}.sheet-close{min-width:68px;min-height:44px;color:var(--accent-strong);cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out;background:#0878b914;border:0;border-radius:15px;padding:0 13px;font-size:.75rem;font-weight:700}.port-search{background:var(--surface-soft);border:1px solid #102b3a14;border-radius:18px;grid-template-columns:20px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:52px;margin-top:17px;padding:0 8px 0 15px;transition:border-color .16s ease-out,box-shadow .16s ease-out,background-color .16s ease-out;display:grid}.port-search:focus-within{background:#fff;border-color:#0878b959;box-shadow:0 0 0 4px #0878b914}.port-search>.ui-icon{width:17px;height:17px;color:var(--label-tertiary)}.port-search input{width:100%;min-width:0;height:50px;color:var(--label);background:0 0;border:0;outline:0;padding:0;font-size:.9375rem}.port-search input::placeholder{color:var(--label-tertiary)}.port-search input::-webkit-search-cancel-button{appearance:none}.port-search input:focus-visible{outline:none}.port-search-clear{min-height:44px;color:var(--accent-strong);cursor:pointer;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out;background:0 0;border:0;border-radius:13px;padding:0 9px;font-size:.6875rem;font-weight:700}.port-list-heading{color:var(--label-tertiary);letter-spacing:.055em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:12px;margin-top:17px;padding:0 4px 8px;font-size:.6875rem;font-weight:700;display:flex}.port-list-heading span:last-child{letter-spacing:0;text-transform:none;font-weight:600}.port-list{scrollbar-color:#102b3a24 transparent;scrollbar-width:thin;overscroll-behavior:contain;flex:1;min-height:0;margin:0;padding:0 2px 0 0;list-style:none;overflow-y:auto}.port-list li+li{margin-top:5px}.port-dialog[open] .port-list li{animation:port-row-in .32s var(--spring-smooth) both}.port-dialog[open] .port-list li:first-child{animation-delay:70ms}.port-dialog[open] .port-list li:nth-child(2){animation-delay:92ms}.port-dialog[open] .port-list li:nth-child(3){animation-delay:.114s}.port-dialog[open] .port-list li:nth-child(4){animation-delay:.136s}.port-dialog[open] .port-list li:nth-child(5){animation-delay:.158s}.port-dialog[open] .port-list li:nth-child(6){animation-delay:.18s}.port-dialog[open] .port-list li:nth-child(7){animation-delay:.202s}.port-dialog[open] .port-list li:nth-child(8){animation-delay:.224s}@keyframes port-row-in{0%{opacity:0;transform:translateY(8px)}}.port-row{text-align:left;cursor:pointer;width:100%;min-height:66px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out, border-color .16s ease-out;background:0 0;border:1px solid #0000;border-radius:19px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:11px;padding:8px 10px;display:grid}.port-row:active{opacity:.82;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.975)}.port-row.is-selected{background:#0878b913;border-color:#0878b921}.port-row-mark{width:42px;height:42px;color:var(--accent-strong);background:#fff;border-radius:15px;place-items:center;display:grid;box-shadow:0 5px 14px #16485b14}.port-row-mark .ui-icon{width:18px;height:18px}.port-row-copy{gap:3px;min-width:0;display:grid}.port-row-copy strong{white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.port-row-copy small{color:var(--label-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.6875rem;overflow:hidden}.port-row-meta{justify-content:flex-end;align-items:center;gap:7px;min-width:56px;display:flex}.port-row-meta>small{color:var(--label-tertiary);white-space:nowrap;font-size:.6875rem;font-weight:700}.port-check{color:#fff;background:var(--accent);border-radius:9px;place-items:center;width:24px;height:24px;display:grid}.port-check .ui-icon{width:15px;height:15px}.port-empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;padding:24px 18px;display:flex}.port-empty-icon{width:52px;height:52px;color:var(--accent-strong);background:#0878b917;border-radius:19px;place-items:center;margin-bottom:13px;display:grid}.port-empty strong{letter-spacing:-.025em;font-size:1.125rem}.port-empty p{max-width:280px;color:var(--label-secondary);margin:7px 0 16px;font-size:.75rem;line-height:1.45}.port-empty button{color:#fff;background:var(--accent-strong);cursor:pointer;min-height:44px;transition:transform var(--motion-release) var(--spring-snappy), opacity .16s ease-out, background-color .16s ease-out;border:0;border-radius:15px;padding:0 16px;font-size:.75rem;font-weight:700}.sheet-close:active,.port-search-clear:active,.port-empty button:active{opacity:.76;transition-duration:var(--motion-press);transition-timing-function:cubic-bezier(.4,0,1,1);transform:scale(.96)}.port-demo-note{color:var(--label-tertiary);text-align:center;flex:none;margin:10px 0 0;font-size:.6875rem}@media (hover:hover) and (pointer:fine){.location:hover:not(:active){opacity:.76}.location:hover:not(:active) .ui-icon{transform:translateY(1px)}.play:hover:not(:active){background-color:#ffffffb8;transform:translateY(-1px)scale(1.015)}.live-button:hover:not(:active){background-color:#ffffffb8;transform:translateY(-1px)}.event:hover:not(:active):not(.is-active){background:#0878b90e}.surface-screen.is-dark .event:hover:not(:active):not(.is-active){background:#91deea14}.forecast-button:hover:not(:active){color:var(--accent-strong);background-color:#0878b913;transform:translateY(-1px)}.forecast-button:hover:not(:active):before{opacity:.56;transform:translate(-50%)translateY(-1px)scaleX(1.08)}.back-button:hover:not(:active){background:#ffffff26;transform:translateY(-1px)}.official-shom-panel:hover:not(:active){background:linear-gradient(135deg,#9be1eb26,#ffffff0f),#021f3094;border-color:#d7f6fa38;transform:translateY(-1px)}.official-shom-panel:hover:not(:active) .official-shom-chevron{background:#ffffff1f;transform:translate(2px)}.day-button:hover:not(:active):not(.is-selected){color:#f0fcfdd6;background:#ffffff0e}.sheet-close:hover,.shom-close:hover,.port-search-clear:hover{background:#0878b91f}.port-empty button:hover:not(:active){background:#075779;transform:translateY(-1px)}.port-row:hover:not(:active){background:#0878b90e}}.screen-stack.is-underwater .surface-screen .sky-cloud,.screen-stack.is-underwater .surface-screen .star-field:after,.screen-stack.is-underwater .surface-screen .water:before,.screen-stack.is-underwater .surface-screen .water:after,.screen-stack.is-underwater .surface-screen .water-caustics,.screen-stack.is-underwater .surface-screen .water-pattern,.screen-stack.is-underwater .surface-screen .water-current,.screen-stack.is-underwater .surface-screen .water-foam,.screen-stack.is-underwater .surface-screen .water-slosh,.screen-stack.is-underwater .surface-screen .water-spray,.screen-stack.is-underwater .surface-screen .water-glint,.screen-stack.is-underwater .surface-screen .lighthouse-beam,.screen-stack.is-underwater .surface-screen .sky-bird,.screen-stack.is-underwater .surface-screen .sky-bird:before,.screen-stack.is-underwater .surface-screen .sky-bird:after,.screen-stack.is-underwater .surface-screen .house-smoke{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .sky-cloud{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .star-field:after{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water:before{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water:after{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-caustics{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-pattern{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-current{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-foam{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-slosh{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-spray{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .water-glint{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .lighthouse-beam{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .sky-bird:before{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .sky-bird:after{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .house-smoke{animation-play-state:paused}.phone:has(:is(.port-dialog,.shom-dialog)[open]) .surface-screen .sky-bird{animation-play-state:paused}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button:focus-visible,input:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #0878b961}.surface-screen.is-dark button:focus-visible,.forecast-screen button:focus-visible,.forecast-screen a:focus-visible{outline-color:#b8eff6d1}@media (width<=520px){.app-stage{background:0 0;padding:0;display:block}html,body{height:var(--app-height,100%);overflow:hidden}.phone{width:100%;height:var(--app-height,100%);min-height:0;box-shadow:none;border:0;border-radius:0;position:relative}.app-stage{min-height:0;height:var(--app-height,100%);overflow:clip}.interface,.forecast-screen{padding-inline:18px}.tide-events{grid-template-columns:repeat(auto-fit,minmax(44px,1fr))}.live-button{padding-inline:9px}.official-shom-panel{grid-template-columns:36px minmax(0,1fr) 27px;gap:9px}.official-shom-mark{width:36px;height:36px}.shom-dialog{border-bottom:0;border-left:0;border-right:0;border-radius:34px 34px 0 0;width:100%;height:min(780px,94svh);max-height:100svh;inset:auto 0 0;transform:none}.shom-dialog[open]{animation-name:shom-dialog-in-mobile}.shom-sheet{padding:10px 10px max(10px, var(--sa-bottom))}.shom-dialog-header{padding-inline:8px 4px}.shom-dialog-body{border-radius:24px 24px 20px 20px;padding:9px}.port-dialog{border-bottom:0;border-left:0;border-right:0;border-radius:34px 34px 0 0;width:100%;height:min(650px,82svh);max-height:calc(100svh - 18px);inset:auto 0 0;transform:none}.port-dialog[open]{animation-name:port-sheet-in-mobile}}@media (width<=350px){.forecast-gesture{display:none}}@media (height<=740px){@media (width>=521px){.phone{min-height:640px}}.interface{padding-top:max(18px, var(--sa-top))}.tide-reading{margin-top:5px}.date{margin-bottom:6px}.height-value{font-size:3.625rem}.next-tide{margin-top:6px}.controls{padding:10px 12px}.time-row strong{font-size:1.75rem}.time-slider,.tide-events{margin:0}.event{min-height:44px}.forecast-button{min-height:44px;margin:0}.time-row{margin:0}.demo-note{margin-top:3px}.data-provenance{min-height:44px;margin:0}.source-badge{min-height:16px;padding-inline:6px;font-size:.6875rem}button.source-badge--official{min-height:44px}.underwater-intro{margin-top:20px}.underwater-intro h3{font-size:2.125rem}.calendar{margin-top:17px}.day-button{min-height:59px}.forecast-card{margin-top:11px;padding:14px}.forecast-tides{margin-top:10px}.forecast-tide{padding:8px}.official-shom-panel{border-radius:17px;grid-template-columns:32px minmax(0,1fr) 25px;gap:8px;min-height:46px;margin-top:7px;padding:5px 7px}.official-shom-mark{border-radius:11px;width:32px;height:32px;font-size:.6875rem}.official-shom-copy strong,.official-shom-copy small{font-size:.6875rem}.official-shom-chevron{width:25px;height:25px}.underwater-note{margin-top:7px}.port-dialog{height:min(560px,100svh - 24px)}.shom-dialog{height:calc(100svh - 12px)}.shom-dialog-header{min-height:50px;padding-bottom:6px}.shom-dialog-header h2{font-size:1.4375rem}.shom-dialog-body{padding:8px}.port-sheet{padding-top:8px}.sheet-grabber{margin-bottom:7px}.port-search,.port-list-heading{margin-top:11px}.port-row{min-height:60px}}@media (prefers-contrast:more){:root{--label-secondary:#102b3ad1;--label-tertiary:#102b3ac7;--separator:#102b3a47}.controls,.coefficient,.forecast-card,.calendar,.official-shom-panel,.source-badge,.shom-dialog,.port-dialog,.port-search,.port-row.is-selected{border-width:2px}}@media (prefers-reduced-transparency:reduce){.back-button{-webkit-backdrop-filter:none;background:#0a3f5a}.controls,.coefficient{background:#fbfdfd}.official-shom-panel{background:#073d59}.shom-dialog::backdrop{-webkit-backdrop-filter:none;backdrop-filter:none}.shom-dialog-body{background:#e8f3f6}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.port-dialog[open],.port-dialog::backdrop,.shom-dialog[open],.shom-dialog::backdrop,.port-dialog[open] .port-list li,.sky-cloud,.star-field:after,.water:before,.water:after,.water-caustics,.water-pattern,.water-current,.water-foam,.water-slosh,.water-spray,.water-glint,.beach-scene,.shoreline-track,.lighthouse-beam,.lighthouse-glare,.lighthouse-lamp,.sky-flock,.sky-bird,.sky-bird:before,.sky-bird:after,.beachgoers,.bubble,.underwater-light,.screen-stack.is-underwater .seabed,.seabed-crab,.screen-stack.is-underwater .forecast-header,.screen-stack.is-underwater .underwater-intro,.screen-stack.is-underwater .day-button,.screen-stack.is-underwater .forecast-card,.screen-stack.is-underwater .official-shom-panel,.screen-stack.is-underwater .forecast-screen .data-provenance,.screen-stack.is-underwater .underwater-note,.forecast-card-content,.play .ui-icon,.event.is-active .event-icon{animation:none!important}.screen-stack{transition:none!important}button:active,.official-shom-panel:active{transform:none!important}.time-slider:active::-webkit-slider-thumb{transform:none!important}.time-slider:active::-moz-range-thumb{transform:none!important}button:active{opacity:.74}}.underwater-note{z-index:2;background:color-mix(in oklab, var(--water-deep), transparent 20%);border-radius:14px;position:relative}.source-credit{color:#d6e8f0b8;text-align:center;text-wrap:balance;border-top:1px solid #d9f1f624;margin:6px 0 0;padding:6px 0 0;font-size:.625rem;line-height:1.45}.port-dialog,.shom-dialog{opacity:0;transition:opacity .26s ease-out, translate .42s var(--spring-smooth), scale .42s var(--spring-smooth), display .42s allow-discrete, overlay .42s allow-discrete;translate:0 18px;scale:.985}.port-dialog[open],.shom-dialog[open]{opacity:1;animation:none;translate:0;scale:1}@starting-style{.port-dialog[open],.shom-dialog[open]{opacity:0;translate:0 18px;scale:.985}}.port-dialog::backdrop,.shom-dialog::backdrop{opacity:0;transition:opacity .26s ease-out, display .26s allow-discrete, overlay .26s allow-discrete;animation:none}.port-dialog[open]::backdrop,.shom-dialog[open]::backdrop{opacity:1}@starting-style{.port-dialog[open]::backdrop,.shom-dialog[open]::backdrop{opacity:0}}@media (prefers-reduced-transparency:reduce){.controls,.coefficient,.direction,.day-phase,.port-dialog,.shom-dialog,.forecast-card,.official-shom-panel{-webkit-backdrop-filter:none}.controls{background:color-mix(in oklab, var(--surface) 96%, transparent)}.surface-screen.is-dark .controls{background:oklab(24.245% -.0203446 -.0391531/.96)}}.next-tide,.underwater-note,.source-credit,.fiction-notice,.port-demo-note,.official-shom-copy small{text-wrap:pretty}.tide-reading h1,.port-dialog h3{text-wrap:balance}.app-error{min-height:var(--app-height,100svh);padding:max(24px, var(--sa-top)) 20px max(24px, var(--sa-bottom));color:#eaf5f8;background:linear-gradient(#0a3a52 0%,#05202f 100%);place-items:center;display:grid}.app-error-card{background:#062230b8;border-radius:22px;gap:14px;max-width:32rem;padding:26px 22px;display:grid;box-shadow:0 20px 60px #00000059}.app-error-eyebrow{color:#8fd0e2;letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:.6875rem;font-weight:700}.app-error h1{text-wrap:balance;margin:0;font-size:1.5rem;line-height:1.2}.app-error p{color:#e2f3f8db;margin:0;font-size:.9375rem;line-height:1.55}.app-error-note{color:#e2f3f8a8!important;font-size:.8125rem!important}.app-error-actions{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.app-error-actions button,.app-error-actions a{color:#eaf5f8;cursor:pointer;background:#8fd0e224;border:1px solid #b4e2f047;border-radius:999px;align-items:center;min-height:44px;padding:0 18px;font-size:.9375rem;font-weight:600;text-decoration:none;display:inline-flex}.app-error-actions button{background:#8fd0e242;border-color:#b4e2f080}
