:root{--color-ground:#1a1e21;--color-surface:#22272b;--color-rule:#3a4247;--color-rule-strong:#6e787f;--color-ink:#dce1e4;--color-ink-2:#9aa4ab;--color-ink-3:#879198;--color-slack:#a9ccc5;--font-sans:"Public Sans", system-ui, sans-serif;--text-display:clamp(2.75rem, 11vw, 4rem);--text-h1:clamp(1.75rem, 5.5vw, 2.25rem);--text-h2:1.5rem;--text-body:1rem;--text-small:.875rem;--text-label:.75rem;--tracking-label:.08em;--leading-display:1;--leading-h1:1.15;--leading-h2:1.25;--leading-body:1.55;--leading-small:1.5;--leading-label:1.4;--weight-regular:400;--weight-medium:500;--measure:34rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2.5rem;--space-7:4rem;--space-8:6rem;--width-page:60rem;--target-min:44px;--radius:2px;--radius-notif:12px;--radius-dot:50%;--hairline:1px;--underline-offset:.2em;--focus-ring:2px;--focus-offset:3px;--chart-stroke:1.5px;--chart-dash:2 4;--ease-settle:cubic-bezier(.32, 0, .16, 1);--dur-hover:.16s;--dur-enter:.48s;--dur-draw:1.2s;--stagger:80ms;--rise:8px}*,:before,:after{box-sizing:border-box}body{background:var(--color-ground);color:var(--color-ink);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-body);font-weight:var(--weight-regular);font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%;margin:0}p,h1,h2,h3,dl,dd,figure{margin:0}.site-header,.page{max-width:var(--width-page);padding-inline:max(var(--space-5), env(safe-area-inset-left)) max(var(--space-5), env(safe-area-inset-right));margin-inline:auto}.site-header{justify-content:space-between;align-items:baseline;gap:var(--space-4);padding-top:max(var(--space-5), env(safe-area-inset-top));padding-bottom:var(--space-5);border-bottom:var(--hairline) solid var(--color-rule);display:flex}.page{padding-bottom:var(--space-7)}.site-footer{max-width:var(--width-page);padding:var(--space-5) max(var(--space-5), env(safe-area-inset-right)) max(var(--space-6), env(safe-area-inset-bottom)) max(var(--space-5), env(safe-area-inset-left));border-top:var(--hairline) solid var(--color-rule);margin-inline:auto}.site-footer .src{max-width:var(--measure)}.closing .lede{margin-top:var(--space-4)}.closing-cta{margin-top:var(--space-5)}.wordmark{font-weight:var(--weight-medium);font-size:var(--text-body)}.header-note,.label,.src{font-size:var(--text-label);line-height:var(--leading-label)}.header-note,.label{letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:var(--weight-medium);color:var(--color-ink-2)}.h1{font-size:var(--text-h1);line-height:var(--leading-h1);font-weight:var(--weight-medium);max-width:22ch}.h2{font-size:var(--text-h2);line-height:var(--leading-h2);font-weight:var(--weight-medium)}.lede,.alert-copy{max-width:var(--measure);color:var(--color-ink-2)}.src{color:var(--color-ink-3)}.hero{padding-top:var(--space-7)}.hero-intro{gap:var(--space-4);display:grid}.definition{max-width:var(--measure);font-size:var(--text-small);line-height:var(--leading-small);color:var(--color-ink-3)}.definition i{color:var(--color-ink);font-style:normal}.hero-pair{gap:var(--space-5);margin-top:var(--space-6);display:grid}@media (width>=52rem){.hero-pair{grid-template-columns:1.4fr 1fr;align-items:start}}.card{background:var(--color-surface);border:var(--hairline) solid var(--color-rule);border-radius:var(--radius);padding:var(--space-5)}.slack-time{margin-top:var(--space-3);font-size:var(--text-display);line-height:var(--leading-display);font-weight:var(--weight-medium);color:var(--color-slack)}.slack-zone{margin-left:var(--space-2);font-size:var(--text-body);font-weight:var(--weight-regular);color:var(--color-ink-2)}.rows{margin-top:var(--space-5)}.row{justify-content:space-between;gap:var(--space-4);padding-block:var(--space-2);border-top:var(--hairline) solid var(--color-rule);font-size:var(--text-small);line-height:var(--leading-small);display:flex}.row dt{color:var(--color-ink-2)}.row dd{text-align:right;white-space:nowrap}.card .src{margin-top:var(--space-4)}.alert{gap:var(--space-4);padding-top:var(--space-2);display:grid}.notif-figure{gap:var(--space-2);display:grid}.notif{background:var(--color-surface);border:var(--hairline) solid var(--color-rule);border-radius:var(--radius-notif);padding:var(--space-3) var(--space-4);font-size:var(--text-small);line-height:var(--leading-small)}.notif-app{font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-ink-2)}.notif-title{margin-top:var(--space-1);font-weight:var(--weight-medium)}.notif-body{color:var(--color-ink-2)}.hero-cta{align-items:center;gap:var(--space-3) var(--space-5);margin-top:var(--space-6);flex-wrap:wrap;display:flex}.cta-note{font-size:var(--text-small);color:var(--color-ink-2)}.rows-before{margin-top:var(--space-3)}.section{margin-top:var(--space-7);padding-top:var(--space-6);border-top:var(--hairline) solid var(--color-rule)}.section-title{margin-top:var(--space-3);margin-bottom:var(--space-4)}@media (width>=52rem){.section{margin-top:var(--space-8)}}.chart{margin-top:var(--space-6)}.chart-title{margin-top:var(--space-5);margin-bottom:var(--space-5);font-size:var(--text-small);line-height:var(--leading-small);color:var(--color-ink-2)}.chart-title:first-child{margin-top:0}.plot{position:relative}.plot-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.plot-svg line,.plot-svg path{vector-effect:non-scaling-stroke;fill:none}.grid{stroke:var(--color-rule);stroke-width:var(--hairline)}.axis{stroke:var(--color-rule-strong);stroke-width:var(--hairline)}.slack-mark{stroke:var(--color-slack);stroke-width:var(--hairline);stroke-dasharray:var(--chart-dash)}.current-line{stroke:var(--color-ink);stroke-width:var(--chart-stroke)}.tide-line{stroke:var(--color-ink-2);stroke-width:var(--chart-stroke)}.pt{width:var(--space-2);height:var(--space-2);border-radius:var(--radius-dot);background:var(--color-ink);position:absolute;translate:-50% -50%}.pt-slack{background:var(--color-slack)}.pt-tide{background:var(--color-ink-2)}.plot-label{font-size:var(--text-label);line-height:var(--leading-label);color:var(--color-ink-2);white-space:nowrap;position:absolute}.plot-label-slack{color:var(--color-slack)}.wide-only{display:none}@media (width>=40rem){.wide-only{display:inline}}.hours{margin-top:var(--space-2);padding-top:var(--space-2);border-top:var(--hairline) solid var(--color-rule);font-size:var(--text-label);line-height:var(--leading-label);color:var(--color-ink-3);justify-content:space-between;display:flex}.chart-src{margin-top:var(--space-4);max-width:var(--measure)}.day-table{width:100%;margin-top:var(--space-6);border-collapse:collapse;font-size:var(--text-small);line-height:var(--leading-small)}.day-table caption{text-align:left;padding-bottom:var(--space-3)}.day-table th{text-align:left;font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;font-weight:var(--weight-medium);color:var(--color-ink-3);padding:0 var(--space-3) var(--space-2) 0}.day-table td{padding:var(--space-2) var(--space-3) var(--space-2) 0;border-top:var(--hairline) solid var(--color-rule);color:var(--color-ink-2);vertical-align:top}.day-table td:first-child{color:var(--color-ink)}.day-table .is-slack td{color:var(--color-slack)}.btn{min-height:var(--target-min);padding:var(--space-3) var(--space-5);font:inherit;font-weight:var(--weight-medium);color:var(--color-ground);background:var(--color-ink);border:var(--hairline) solid var(--color-ink);border-radius:var(--radius);cursor:pointer;transition:background-color var(--dur-hover) var(--ease-settle), border-color var(--dur-hover) var(--ease-settle);align-items:center;text-decoration:none;display:inline-flex}@media (hover:hover) and (pointer:fine){.btn:hover{background:var(--color-slack);border-color:var(--color-slack)}}.btn:focus-visible{outline:var(--focus-ring) solid var(--color-slack);outline-offset:var(--focus-offset)}.btn:active{background:var(--color-ink-2);border-color:var(--color-ink-2)}.btn[aria-disabled=true]{color:var(--color-ink-3);border-color:var(--color-rule-strong);cursor:not-allowed;background:0 0}.link{color:var(--color-ink);text-decoration:underline;-webkit-text-decoration-color:var(--color-rule-strong);text-decoration-color:var(--color-rule-strong);text-decoration-thickness:var(--hairline);text-underline-offset:var(--underline-offset);transition:text-decoration-color var(--dur-hover) var(--ease-settle), color var(--dur-hover) var(--ease-settle)}@media (hover:hover) and (pointer:fine){.link:hover{-webkit-text-decoration-color:var(--color-ink);text-decoration-color:var(--color-ink)}}.link:focus-visible{outline:var(--focus-ring) solid var(--color-slack);outline-offset:var(--focus-offset);border-radius:var(--radius)}.link:active{color:var(--color-ink-2)}.link[aria-disabled=true]{color:var(--color-ink-3);-webkit-text-decoration-color:var(--color-rule);text-decoration-color:var(--color-rule);cursor:not-allowed}@keyframes settle-in{0%{opacity:0;transform:translateY(var(--rise))}to{opacity:1;transform:none}}.enter{animation:settle-in var(--dur-enter) var(--ease-settle) both;animation-delay:calc(var(--i,0) * var(--stagger))}@keyframes draw-line{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.draw{animation:draw-line var(--dur-draw) var(--ease-settle) both}.after-draw{animation:fade-in var(--dur-enter) var(--ease-settle) var(--dur-draw) both}@media (prefers-reduced-motion:reduce){.enter,.draw,.after-draw{animation:none}.btn,.link{transition:none}}
