.sf-media{--m-gap:var(--media-gap,10px);--m-radius:var(--media-radius,10px);--m-slide:var(--media-slide-s,5s);margin:var(--media-margin,28px 0);padding:0}
.sf-media img,.sf-media video{display:block;width:100%;height:auto;border-radius:var(--m-radius);background:var(--media-bg,transparent)}
.sf-media figcaption{font-size:var(--media-cap-size,.88em);color:var(--media-cap-color,inherit);opacity:.82;margin-top:6px}
.sf-mframe{display:grid;overflow:hidden;border-radius:var(--m-radius)}
.sf-mframe>img{grid-area:1/1;aspect-ratio:var(--media-slide-ratio,3/2);object-fit:cover;border-radius:0}
.sf-mframe>img+img{opacity:0}
.sf-mrow{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--m-gap)}
.sf-mrow>img{aspect-ratio:var(--media-trip-ratio,4/5);object-fit:cover}
.sf-mstrip{display:flex;gap:var(--m-gap);overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px;overscroll-behavior-x:contain}
.sf-mitem{flex:0 0 var(--media-gal-w,78%);scroll-snap-align:start;margin:0}
.sf-mitem img{aspect-ratio:var(--media-gal-ratio,3/2);object-fit:cover}
@media (min-width:720px){.sf-mitem{flex-basis:var(--media-gal-w-wide,46%)}}
@media (max-width:520px){.sf-mrow{gap:4px}}
@keyframes sf-ms2{0%{opacity:0}10%{opacity:1}60%{opacity:1}70%{opacity:0}100%{opacity:0}}@keyframes sf-me2{0%{opacity:0}10%{opacity:1}50%{opacity:1}60%{opacity:0}100%{opacity:0}}.sf-n2 .sf-mframe>img+img{animation:sf-ms2 calc(var(--m-slide) * 2) linear infinite both}.sf-n2 .sf-mframe>img:last-child{animation-name:sf-me2}
@keyframes sf-ms3{0%{opacity:0}6.67%{opacity:1}40%{opacity:1}46.67%{opacity:0}100%{opacity:0}}@keyframes sf-me3{0%{opacity:0}6.67%{opacity:1}33.33%{opacity:1}40%{opacity:0}100%{opacity:0}}.sf-n3 .sf-mframe>img+img{animation:sf-ms3 calc(var(--m-slide) * 3) linear infinite both}.sf-n3 .sf-mframe>img:last-child{animation-name:sf-me3}
@keyframes sf-ms4{0%{opacity:0}5%{opacity:1}30%{opacity:1}35%{opacity:0}100%{opacity:0}}@keyframes sf-me4{0%{opacity:0}5%{opacity:1}25%{opacity:1}30%{opacity:0}100%{opacity:0}}.sf-n4 .sf-mframe>img+img{animation:sf-ms4 calc(var(--m-slide) * 4) linear infinite both}.sf-n4 .sf-mframe>img:last-child{animation-name:sf-me4}
@keyframes sf-ms5{0%{opacity:0}4%{opacity:1}24%{opacity:1}28%{opacity:0}100%{opacity:0}}@keyframes sf-me5{0%{opacity:0}4%{opacity:1}20%{opacity:1}24%{opacity:0}100%{opacity:0}}.sf-n5 .sf-mframe>img+img{animation:sf-ms5 calc(var(--m-slide) * 5) linear infinite both}.sf-n5 .sf-mframe>img:last-child{animation-name:sf-me5}
@keyframes sf-ms6{0%{opacity:0}3.33%{opacity:1}20%{opacity:1}23.33%{opacity:0}100%{opacity:0}}@keyframes sf-me6{0%{opacity:0}3.33%{opacity:1}16.67%{opacity:1}20%{opacity:0}100%{opacity:0}}.sf-n6 .sf-mframe>img+img{animation:sf-ms6 calc(var(--m-slide) * 6) linear infinite both}.sf-n6 .sf-mframe>img:last-child{animation-name:sf-me6}
@keyframes sf-ms7{0%{opacity:0}2.86%{opacity:1}17.14%{opacity:1}20%{opacity:0}100%{opacity:0}}@keyframes sf-me7{0%{opacity:0}2.86%{opacity:1}14.29%{opacity:1}17.14%{opacity:0}100%{opacity:0}}.sf-n7 .sf-mframe>img+img{animation:sf-ms7 calc(var(--m-slide) * 7) linear infinite both}.sf-n7 .sf-mframe>img:last-child{animation-name:sf-me7}
@keyframes sf-ms8{0%{opacity:0}2.5%{opacity:1}15%{opacity:1}17.5%{opacity:0}100%{opacity:0}}@keyframes sf-me8{0%{opacity:0}2.5%{opacity:1}12.5%{opacity:1}15%{opacity:0}100%{opacity:0}}.sf-n8 .sf-mframe>img+img{animation:sf-ms8 calc(var(--m-slide) * 8) linear infinite both}.sf-n8 .sf-mframe>img:last-child{animation-name:sf-me8}
@keyframes sf-ms9{0%{opacity:0}2.22%{opacity:1}13.33%{opacity:1}15.56%{opacity:0}100%{opacity:0}}@keyframes sf-me9{0%{opacity:0}2.22%{opacity:1}11.11%{opacity:1}13.33%{opacity:0}100%{opacity:0}}.sf-n9 .sf-mframe>img+img{animation:sf-ms9 calc(var(--m-slide) * 9) linear infinite both}.sf-n9 .sf-mframe>img:last-child{animation-name:sf-me9}
@keyframes sf-ms10{0%{opacity:0}2%{opacity:1}12%{opacity:1}14%{opacity:0}100%{opacity:0}}@keyframes sf-me10{0%{opacity:0}2%{opacity:1}10%{opacity:1}12%{opacity:0}100%{opacity:0}}.sf-n10 .sf-mframe>img+img{animation:sf-ms10 calc(var(--m-slide) * 10) linear infinite both}.sf-n10 .sf-mframe>img:last-child{animation-name:sf-me10}
.sf-slides .sf-mframe>img:nth-child(2){animation-delay:calc(var(--m-slide) * 1)}
.sf-slides .sf-mframe>img:nth-child(3){animation-delay:calc(var(--m-slide) * 2)}
.sf-slides .sf-mframe>img:nth-child(4){animation-delay:calc(var(--m-slide) * 3)}
.sf-slides .sf-mframe>img:nth-child(5){animation-delay:calc(var(--m-slide) * 4)}
.sf-slides .sf-mframe>img:nth-child(6){animation-delay:calc(var(--m-slide) * 5)}
.sf-slides .sf-mframe>img:nth-child(7){animation-delay:calc(var(--m-slide) * 6)}
.sf-slides .sf-mframe>img:nth-child(8){animation-delay:calc(var(--m-slide) * 7)}
.sf-slides .sf-mframe>img:nth-child(9){animation-delay:calc(var(--m-slide) * 8)}
.sf-slides .sf-mframe>img:nth-child(10){animation-delay:calc(var(--m-slide) * 9)}
@media (prefers-reduced-motion:reduce){.sf-slides .sf-mframe>img+img{animation:none!important;opacity:0}}
.sf-moframe{position:relative;overflow:hidden;display:block}
.sf-moframe>picture,.sf-moframe img{display:block}
.sf-moclip{position:absolute;inset:0;inline-size:100%;block-size:100%;object-fit:cover;opacity:0;pointer-events:none;transition:opacity var(--motion-fade,.7s) ease}
.sf-moclip.sf-live{opacity:1}
.sf-art .sf-moframe{border-radius:var(--art-radius,0);box-shadow:var(--art-shadow,none)}
.sf-art .sf-moframe img{box-shadow:none}
@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){@keyframes sf-mo-rise{from{opacity:0;translate:0 var(--motion-rise,120px);scale:.85}to{opacity:1;translate:0 0;scale:1}}@keyframes sf-mo-open{from{opacity:.2;clip-path:inset(var(--motion-open,14%) round 28px)}to{opacity:1;clip-path:inset(0 round 0)}}@keyframes sf-mo-slide{from{opacity:0;translate:var(--motion-slide,160px) 0;rotate:3deg}to{opacity:1;translate:0 0;rotate:0deg}}@keyframes sf-mo-zoom{from{scale:var(--motion-zoom,1.35)}to{scale:1}}@keyframes sf-mo-drift{from{translate:0 0;scale:1.02}to{translate:0 var(--motion-drift,15%);scale:1.35}}@keyframes sf-mo-head{from{opacity:0;translate:calc(-1 * var(--motion-head,60px)) 0}to{opacity:1;translate:0 0}}@keyframes sf-mo-text{from{opacity:.08;translate:0 var(--motion-text,36px)}to{opacity:1;translate:0 0}}@keyframes sf-mo-line{from{scale:0 1}to{scale:1 1}}@keyframes sf-mo-bar{from{scale:0 1}to{scale:1 1}}@keyframes sf-mo-fadeout{from{opacity:1}to{opacity:.25}}.sf-motion .sf-rise{animation:sf-mo-open linear both;animation-timeline:view();animation-range:entry 0% cover 45%}.sf-motion .sf-slide{animation:sf-mo-slide linear both;animation-timeline:view();animation-range:entry 0% cover 40%}.sf-motion .sf-zoom .sf-moframe,.sf-motion .sf-zoom>picture{overflow:hidden;display:block;border-radius:var(--art-radius,0)}.sf-motion .sf-zoom img,.sf-motion .sf-zoom .sf-moclip{animation:sf-mo-zoom linear both;animation-timeline:view();animation-range:cover 0% cover 100%}.sf-motion .sf-drift>picture,.sf-motion .sf-drift .sf-moframe{overflow:hidden;display:block}.sf-motion .sf-drift img,.sf-motion .sf-drift .sf-moclip{animation:sf-mo-drift linear both;animation-timeline:view();animation-range:exit 0% exit 100%}.sf-motion .sf-drift .sf-moframe,.sf-motion .sf-drift>picture{animation:sf-mo-fadeout linear both;animation-timeline:view();animation-range:exit 30% exit 100%}.sf-motion h2{animation:sf-mo-head linear both;animation-timeline:view();animation-range:entry 0% cover 30%}.sf-motion h2::after{content:"";display:block;inline-size:var(--motion-line,64px);block-size:3px;margin-block-start:10px;background:var(--motion-accent,currentColor);border-radius:2px;transform-origin:0 50%;animation:sf-mo-line linear both;animation-timeline:view();animation-range:entry 40% cover 35%}.sf-motion :is(p,li,blockquote,table):not(figure *){animation:sf-mo-text linear both;animation-timeline:view();animation-range:entry 0% entry 100%}.sf-motion::before{content:"";position:fixed;inset-block-start:0;inset-inline:0;block-size:var(--motion-bar-h,3px);z-index:50;background:var(--motion-bar,var(--motion-accent,currentColor));transform-origin:0 50%;animation:sf-mo-bar linear both;animation-timeline:scroll(root)}}}
@media (prefers-reduced-motion:reduce){.sf-moclip{display:none}}
@font-face{font-family:'Big Shoulders Display';font-style:normal;font-weight:600 900;font-display:swap;src:url(/static/fonts/big-shoulders-display-normal-600-900.woff2) format('woff2')}
@font-face{font-family:'Inter Tight';font-style:normal;font-weight:400 700;font-display:swap;src:url(/static/fonts/inter-tight-normal-400-700.woff2) format('woff2')}
@font-face{font-family:'Inter Tight';font-style:italic;font-weight:400;font-display:swap;src:url(/static/fonts/inter-tight-italic-400.woff2) format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400 600;font-display:swap;src:url(/static/fonts/jetbrains-mono-normal-400-600.woff2) format('woff2')}

/* Blue Water (design A, approved 2026-Nov-14): a dark descent from the surface to the abyss, sun-gold accents.
   Every colour, font and size lives in these tokens. The site is dark by design in both modes; the dark-mode
   block only deepens it a touch for people who ask for dark. */
:root{
  --surface:#1aa3c4;--shallow:#0d6d8c;--mid:#0a3d57;--deep:#06243a;--abyss:#030f1a;
  --foam:#eaf7fb;--mist:#a9cfdc;--dim:#7fa6b5;--sun:#f4b840;--sun2:#ffd27a;--ink-on-sun:#030f1a;
  --line:rgba(234,247,251,.16);--panel:rgba(234,247,251,.05);--panel2:rgba(3,15,26,.38);--credit-ink:#7f98a4;
  --good:rgba(26,163,196,.6);--slow:rgba(169,207,220,.12);
  --display:'Big Shoulders Display',Impact,'Arial Narrow',sans-serif;--body:'Inter Tight',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
  --gut:clamp(16px,4vw,48px);--wide:1240px;--read:70ch;--radius:2px;
  --fs-body:17px;--fs-small:14px;--fs-mono:12px;--hero-h:min(88vh,860px);
  --shadow:0 18px 40px rgba(0,0,0,.35);
  /* The fishing map (/map/, static/sf-map.js): sea, land and every marker colour */
  --map-land:#0e1f24;--map-woods:#11282a;--map-park:#143029;--map-water:#0b4560;--map-river:#0f5f7f;--map-shore:rgba(26,163,196,.55);
  --map-road:#22404a;--map-road-major:#365761;--map-border:#6f8c96;--map-label:#a9cfdc;--map-halo:#030f1a;--map-name-ink:#eaf7fb;
  --map-charter:#f4b840;--map-marina:#1aa3c4;--map-lodge:#e58c5a;--map-dive:#7fd6c2;--map-ring:#eaf7fb;--map-icon-ink:#030f1a;
  --map-town:#eaf7fb;--map-town-quiet:#7fa6b5;--map-town-ring:#030f1a;--map-town-ink:#ffd27a;
  --map-group:#0a3d57;--map-group-ring:#f4b840;--map-group-ink:#eaf7fb;
  --map-notake:#e5484d;--map-notake-line:#ff6b6f;--map-restricted:#a77fe6;--map-restricted-line:#c9a8ff;
  --map-responsible:#34b37a;--map-responsible-line:#63d99a;--map-zone-ink:#eaf7fb;
  --map-fish:#f4b840;--map-fish-bg:rgba(3,15,26,.84);--map-fish-mark:rgba(3,15,26,.7);
  --map-fish-sailfish:#6aa9ff;--map-fish-marlin:#b4c8ff;--map-fish-roosterfish:#e9eef0;--map-fish-dorado:#9fe36a;--map-fish-tuna:#ffd84d;
  --map-fish-wahoo:#64d2ff;--map-fish-snapper:#ff7a6b;--map-fish-grouper:#d7a272;--map-fish-amberjack:#f2b36d;--map-fish-snook:#c4e3a1;
  --map-fish-tarpon:#dfe7f2;--map-fish-seabass:#a9b6c2;
  --map-h:clamp(460px,74vh,820px);--map-mini-h:clamp(340px,58vh,580px);--band:#041b2c;--mini-bg-opacity:.15;--mini-bg-cycle:80s;--descent-shift:52px;--reel-crew-opacity:.6;--reel-crew-h:820px;--reel-end-opacity:.4;--map-panel:310px;
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--deep:#051f33;--abyss:#020b14}}
:root[data-theme="dark"]{--deep:#051f33;--abyss:#020b14}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--deep);color:var(--foam);font:var(--fs-body)/1.6 var(--body);overflow-x:hidden}
body.sf-home{background:linear-gradient(180deg,var(--shallow) 0,var(--mid) 1400px,var(--deep) 2800px,var(--abyss) 100%)}
body.sf-inner{background:linear-gradient(180deg,var(--mid) 0,var(--deep) 900px,var(--abyss) 100%)}
a{color:var(--sun);text-underline-offset:4px;text-decoration-thickness:1px}
a:hover{color:var(--sun2)}
img{max-width:100%;height:auto;display:block}
picture{display:contents}
h1,h2,h3{font-family:var(--display);font-weight:800;line-height:.95;text-transform:uppercase;letter-spacing:0;margin:0;text-wrap:balance}
:focus-visible{outline:2px solid var(--sun);outline-offset:3px}
.sf-shell{max-width:var(--wide);margin:0 auto;padding:0 var(--gut)}
.sf-jump{position:absolute;left:-999px;top:8px;background:var(--sun);color:var(--ink-on-sun);padding:10px 14px;z-index:60}
.sf-jump:focus{left:8px}
.sf-vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sf-eyebrow{font:600 var(--fs-mono)/1.4 var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--sun);margin:0 0 10px}
.sf-num{font:600 var(--fs-mono)/1 var(--mono);color:var(--sun)}

/* Header: over the hero on the homepage, a solid deep bar elsewhere */
.sf-top{position:relative;z-index:20;background:var(--abyss);border-bottom:1px solid var(--line)}
.sf-home .sf-top{position:absolute;inset:0 0 auto;background:linear-gradient(180deg,rgba(3,15,26,.6),rgba(3,15,26,0));border:0}
.sf-top-row{display:flex;align-items:center;gap:24px;padding-top:16px;padding-bottom:16px}
.sf-brand{font:900 26px/.9 var(--display);letter-spacing:.02em;text-transform:uppercase;text-decoration:none;color:var(--foam);display:inline-grid}
.sf-brand span{display:block}
.sf-brand small{font:600 10px/1.6 var(--mono);letter-spacing:.18em;color:var(--sun);margin-top:4px}
.sf-brand:hover{color:var(--foam)}
.sf-routes{margin-left:auto}
.sf-routes ul{display:flex;flex-wrap:wrap;gap:6px 22px;list-style:none;margin:0;padding:0}
.sf-routes a{font:600 13px var(--body);letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--foam);opacity:.92}
.sf-routes a:hover,.sf-routes a[aria-current]{color:var(--sun);opacity:1}
.sf-seek{color:var(--foam);display:inline-flex;padding:6px}
.sf-seek:hover{color:var(--sun)}

/* Homepage cover */
.sf-stage{position:relative;min-height:var(--hero-h);display:grid;align-items:end;overflow:hidden;isolation:isolate}
.sf-stage-pic,.sf-stage-pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%;z-index:-2}
.sf-stage::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(3,15,26,.6) 0%,rgba(3,15,26,0) 60%),linear-gradient(180deg,rgba(3,15,26,.5) 0%,rgba(3,15,26,0) 28%,rgba(13,109,140,.25) 55%,var(--shallow) 100%)}
.sf-stage-words{width:100%;padding-top:140px;padding-bottom:64px}
.sf-stage h1{font-weight:900;font-size:clamp(64px,12vw,176px);line-height:.82;margin:12px 0 18px;max-width:9ch}
.sf-stage h1 span{display:block;color:var(--foam)}
.sf-lede{font-size:clamp(17px,1.6vw,20px);line-height:1.55;max-width:56ch;margin:0 0 26px;color:var(--foam)}
.sf-btns{display:flex;flex-wrap:wrap;gap:12px;margin:0}
.sf-btn{display:inline-flex;align-items:center;gap:10px;font:700 15px var(--body);letter-spacing:.04em;text-decoration:none;padding:14px 22px;border-radius:var(--radius);background:var(--sun);color:var(--ink-on-sun)}
.sf-btn:hover{background:var(--sun2);color:var(--ink-on-sun)}
.sf-ghost{background:transparent;color:var(--foam);box-shadow:inset 0 0 0 1.5px var(--foam)}
.sf-ghost:hover{background:var(--foam);color:var(--abyss)}
.sf-credit{max-width:var(--wide);margin:0 auto;padding:6px var(--gut) 0;text-align:right;font:400 11px/1.4 var(--body);color:var(--credit-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-credit a{color:var(--credit-ink)}

/* The descent: depth gauge + sections */
.sf-descent{display:grid;grid-template-columns:72px minmax(0,1fr);gap:0 32px}
.sf-gauge{position:sticky;top:90px;align-self:start;height:calc(100vh - 160px);max-height:640px;margin-top:70px;border-right:1px solid var(--line);font:400 11px var(--mono);color:var(--mist)}
.sf-gauge ol{list-style:none;margin:0;padding:0;height:100%;display:flex;flex-direction:column;justify-content:space-between}
.sf-gauge li{display:flex;align-items:center;gap:6px}
.sf-gauge li::after{content:"";width:10px;height:1px;background:var(--mist);margin-left:auto}
.sf-needle{position:absolute;right:-6px;top:0;width:11px;height:11px;border-radius:50%;background:var(--sun);box-shadow:0 0 0 4px rgba(244,184,64,.25);transition:top .2s}
.sf-readout{position:absolute;left:0;top:-30px;font:600 12px var(--mono);color:var(--sun)}
.sf-deep{min-width:0}
.sf-sec{padding:80px 0 30px}
.sf-sec h2{font-size:clamp(40px,5.5vw,72px);margin:4px 0 14px}
.sf-sec-intro{max-width:62ch;line-height:1.6;color:var(--mist);margin:0 0 30px}
.sf-more{margin:22px 0 0}
.sf-more a{display:inline-flex;align-items:center;gap:8px;font:600 13px var(--mono);letter-spacing:.08em;text-transform:uppercase;text-decoration:none}

.sf-coasts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.sf-coast{text-decoration:none;color:var(--foam);background:var(--panel2);padding:22px 20px 24px;display:grid;gap:8px;align-content:start}
.sf-coast:hover{background:rgba(3,15,26,.6);color:var(--foam)}
.sf-coast:hover b{color:var(--sun)}
.sf-coast code{font:400 12px var(--mono);color:var(--sun)}
.sf-coast b{font:800 30px/.95 var(--display);text-transform:uppercase}
.sf-coast span{font-size:15px;line-height:1.5;color:var(--mist)}
.sf-coast em{font:600 12px var(--mono);font-style:normal;letter-spacing:.06em;text-transform:uppercase}
.sf-coast small{font:400 12px var(--mono);color:var(--dim)}

.sf-strip{overflow-x:auto;border:1px solid var(--line);background:var(--panel2)}
.sf-strip table{border-collapse:collapse;width:100%;min-width:720px;font:400 12px var(--mono)}
.sf-strip th,.sf-strip td{padding:10px 6px;text-align:center;border-bottom:1px solid var(--line);font-weight:400}
.sf-strip thead th{color:var(--mist)}
.sf-strip thead th.now{color:var(--sun);font-weight:600}
.sf-strip tbody th{text-align:left;padding-left:16px;font:600 14px var(--body);color:var(--foam);white-space:nowrap}
.sf-strip tbody th a{color:var(--foam);text-decoration:none}
.sf-strip tbody th a:hover{color:var(--sun)}
.sf-strip tbody th span{display:block;font:400 11px var(--mono);color:var(--mist)}
.sf-strip td.now{background:rgba(244,184,64,.07)}
.sf-strip i,.sf-key i{display:block;height:16px;border-radius:var(--radius);background:var(--slow)}
.sf-strip i.g,.sf-key i.g{background:var(--good)}
.sf-strip i.p,.sf-key i.p{background:var(--sun)}
.sf-key{display:flex;gap:18px;font:400 12px var(--mono);color:var(--mist);margin-top:12px}
.sf-key span{display:flex;align-items:center;gap:6px}
.sf-key i{width:14px;height:10px}

.sf-boats{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}
.sf-boat{display:grid;grid-template-rows:auto 1fr;background:var(--panel);border:1px solid var(--line);text-decoration:none;color:var(--foam)}
.sf-boat img,.sf-boat .sf-blank{width:100%;aspect-ratio:3/2;object-fit:cover}
.sf-boat .sf-blank{display:grid;place-items:center;background:linear-gradient(160deg,var(--shallow),var(--abyss));font:900 44px var(--display);color:var(--mist)}
.sf-boat div{padding:16px 18px 20px;display:grid;gap:6px;align-content:start}
.sf-boat code{font:400 11px var(--mono);letter-spacing:.12em;color:var(--sun);text-transform:uppercase}
.sf-boat b{font:800 26px/1 var(--display);text-transform:uppercase}
.sf-boat span{font-size:var(--fs-small);line-height:1.5;color:var(--mist)}
.sf-boat:hover{color:var(--foam);border-color:rgba(244,184,64,.5)}
.sf-boat:hover b{color:var(--sun)}

.sf-fishlist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.sf-fishlist a{display:grid;gap:6px;padding:18px 18px 20px;background:var(--panel2);text-decoration:none;color:var(--foam);height:100%}
.sf-fishlist b{font:800 24px/1 var(--display);text-transform:uppercase}
.sf-fishlist span{font-size:var(--fs-small);color:var(--mist);line-height:1.45}
.sf-fishlist a:hover b{color:var(--sun)}

.sf-log{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.sf-log a{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 14px;padding:18px 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--foam)}
.sf-log .sf-num{grid-row:span 2;padding-top:6px}
.sf-log b{font:800 26px/1 var(--display);text-transform:uppercase}
.sf-log small{font-size:var(--fs-small);color:var(--mist)}
.sf-log a:hover b{color:var(--sun)}

/* Section and simple pages */
.sf-path ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0 0 18px;padding:0;font:400 12px var(--mono);color:var(--mist)}
.sf-path li+li::before{content:"/";margin-right:6px;color:var(--dim)}
.sf-path a{color:var(--mist);text-decoration:none}
.sf-path a:hover{color:var(--sun)}
.sf-pagehead{padding-top:56px;padding-bottom:30px}
.sf-pagehead h1{font-size:clamp(48px,7vw,96px);margin:4px 0 16px}
.sf-intro{max-width:62ch;color:var(--mist);font-size:18px;line-height:1.6;margin:0}
.sf-hubbody{padding-bottom:70px}
.sf-part{padding:26px 0}
.sf-part h2{font-size:clamp(30px,4vw,48px);margin:0 0 20px}
.sf-plain{padding-top:56px;padding-bottom:80px;max-width:calc(var(--read) + 2 * var(--gut))}
.sf-plain h1{font-size:clamp(44px,6vw,80px);margin:0 0 16px}
.sf-plain h2{font-size:32px;margin:36px 0 14px}
.sf-lookup{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0 30px}
.sf-lookup label{flex-basis:100%;font:600 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mist)}
.sf-lookup input{flex:1 1 240px;font:16px var(--body);padding:13px 14px;background:var(--panel2);color:var(--foam);border:1px solid var(--line);border-radius:var(--radius)}
.sf-lookup button{font:700 15px var(--body);padding:13px 22px;border:0;border-radius:var(--radius);background:var(--sun);color:var(--ink-on-sun);cursor:pointer}
.sf-crew{display:flex;gap:24px;align-items:flex-start;flex-wrap:wrap}
.sf-face{border-radius:50%;object-fit:cover}
.sf-crew .sf-face{width:120px;height:120px}
.sf-list{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.sf-list a,.sf-chip{display:inline-flex;gap:8px;padding:9px 14px;border:1px solid var(--line);text-decoration:none;color:var(--foam);font-size:15px}
.sf-list a:hover,.sf-chip:hover{border-color:var(--sun);color:var(--sun)}
.sf-reflist{padding-left:20px}

/* Articles */
.sf-opener{position:relative}
.sf-opener-pic{margin:0;position:relative}
.sf-opener-pic img{width:100%;max-height:min(70vh,640px);object-fit:cover}
.sf-opener-pic figcaption{max-width:var(--wide);margin:0 auto;padding:6px var(--gut) 0;text-align:right;font:400 11px/1.4 var(--body);color:var(--credit-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-opener-pic figcaption a{color:var(--credit-ink)}
.sf-opener-words{padding-top:40px;padding-bottom:10px}
.sf-opener h1{font-size:clamp(46px,7vw,100px);margin:0 0 10px;max-width:16ch}
.sf-sub{font:600 18px/1.4 var(--body);color:var(--sun);margin:0 0 14px}
.sf-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.sf-tags span{font:600 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--sun);border:1px solid rgba(244,184,64,.4);padding:4px 8px}
.sf-opener .sf-lede{max-width:64ch;color:var(--foam)}
.sf-byline{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;font:400 13px var(--mono);color:var(--mist);margin:0}
.sf-byline a{color:var(--foam)}
.sf-column{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px 56px;padding-top:30px;padding-bottom:70px}
.sf-side{grid-column:2;grid-row:1;align-self:start;position:sticky;top:20px;display:grid;gap:20px}
.sf-main{grid-column:1;grid-row:1;min-width:0;max-width:var(--read)}
.sf-sheet{border:1px solid var(--line);background:var(--panel2);padding:20px}
.sf-sheet h2{font-size:26px;margin:0 0 12px}
.sf-sheet h3{font:600 12px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sun);margin:18px 0 8px}
.sf-sheet dl{margin:0;display:grid;gap:10px}
.sf-sheet dl div{display:grid;gap:2px}
.sf-sheet dt{font:400 11px var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--mist)}
.sf-sheet dd{margin:0;font-size:15px;line-height:1.45;overflow-wrap:anywhere}
.sf-sheet .sf-btn{margin-top:18px;width:100%;justify-content:center}
.sf-checked{font:400 11px var(--mono);color:var(--dim);margin:12px 0 0}
.sf-jumps{border-left:2px solid var(--sun);padding-left:14px}
.sf-jumps p{font:600 12px var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mist);margin:0 0 8px}
.sf-jumps ol{margin:0;padding-left:18px;font-size:var(--fs-small);line-height:1.5}
.sf-jumps a{color:var(--foam);text-decoration:none}
.sf-jumps a:hover{color:var(--sun)}
.sf-copy{font-size:18px;line-height:1.7}
.sf-copy h2{font-size:clamp(32px,4vw,46px);margin:46px 0 14px}
.sf-copy h3{font-size:26px;margin:30px 0 10px}
.sf-copy p,.sf-copy ul,.sf-copy ol{margin:0 0 18px}
.sf-copy li{margin-bottom:6px}
.sf-copy img{margin:26px 0 6px;width:100%}
.sf-copy blockquote{margin:24px 0;padding:6px 0 6px 18px;border-left:3px solid var(--sun);color:var(--mist)}
.sf-copy table{border-collapse:collapse;width:100%;font-size:15px;margin:0 0 20px;display:block;overflow-x:auto}
.sf-copy th,.sf-copy td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left}
.sf-qa{margin-top:46px}
.sf-qa h2{font-size:clamp(30px,4vw,42px);margin:0 0 16px}
.sf-qa details{border-top:1px solid var(--line);padding:14px 0}
.sf-qa details:last-child{border-bottom:1px solid var(--line)}
.sf-qa summary{cursor:pointer;font:600 18px/1.4 var(--body);list-style:none;display:flex;justify-content:space-between;gap:12px}
.sf-qa summary::after{content:"+";color:var(--sun);font:600 20px var(--mono)}
.sf-qa details[open] summary::after{content:"−"}
.sf-qa summary::-webkit-details-marker{display:none}
.sf-qa details p{margin:10px 0 0;color:var(--mist)}
.sf-updnote{font:400 12px var(--mono);color:var(--dim);margin:18px 0 0}
.sf-listed,.sf-refs{margin-top:46px}
.sf-listed h2,.sf-refs h2{font-size:30px;margin:0 0 14px}
.sf-refs ol{padding-left:20px;font-size:var(--fs-small);color:var(--mist)}
.sf-refs a{color:var(--mist)}
.sf-morebox{border-top:1px solid var(--line);padding:56px 0 70px;background:var(--panel2)}
.sf-morebox h2{font-size:clamp(34px,4.5vw,56px);margin:0 0 24px}

/* Footer */
.sf-end{border-top:1px solid var(--line);background:var(--abyss);color:var(--mist);font-size:15px}
.sf-end-grid{display:grid;grid-template-columns:1.4fr repeat(3,1fr);gap:30px;padding-top:50px;padding-bottom:30px}
.sf-end-brand p{max-width:40ch;margin:16px 0 0;line-height:1.55}
.sf-end h2{font:600 12px var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--sun);margin:4px 0 12px}
.sf-end ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.sf-end a{color:var(--foam);text-decoration:none}
.sf-end a:hover{color:var(--sun)}
.sf-end-base{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;padding-top:22px;padding-bottom:36px;border-top:1px solid var(--line);font:400 12px var(--mono)}
.sf-end-base p{margin:0}
.sf-footlogo{display:inline-grid;gap:6px;justify-items:start}
.sf-footlogo img{width:150px;height:auto}
.sf-footcap{font:400 11px var(--mono);letter-spacing:.08em;color:var(--mist)}

@media (max-width:980px){
  .sf-column{grid-template-columns:minmax(0,1fr)}
  .sf-side,.sf-main{grid-column:1;grid-row:auto;position:static}
  .sf-end-grid{grid-template-columns:1fr 1fr}
  .sf-end-brand{grid-column:1/-1}
}
@media (max-width:860px){
  .sf-top-row{flex-wrap:wrap;gap:10px 16px}
  .sf-seek{margin-left:auto}
  .sf-routes{order:3;flex-basis:100%;margin:0;overflow-x:auto;scrollbar-width:none}
  .sf-routes ul{flex-wrap:nowrap;gap:18px;padding-bottom:2px}
  .sf-routes a{white-space:nowrap;font-size:12px}
  .sf-descent{grid-template-columns:minmax(0,1fr)}
  :root{--descent-shift:0px}
  .sf-gauge{display:none}
  .sf-sec{padding-top:56px}
}
@media (max-width:520px){
  .sf-end-grid{grid-template-columns:1fr}
  .sf-coasts{grid-template-columns:1fr}
  .sf-stage-words{padding-bottom:40px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.sf-needle{transition:none}}

/* ---------- The fishing map (/map/) ---------- */
.sf-chart{border-bottom:1px solid var(--line);background:var(--band)}
.sf-chart-map{position:relative;height:var(--map-h);background:var(--map-water)}
.sf-chart-wait{position:absolute;inset:auto 0 50%;text-align:center;font:600 var(--fs-mono) var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--mist)}
.sf-chart-panel{border-top:1px solid var(--line);padding:22px 0 26px}
.sf-chart-key{max-width:var(--wide);margin:0 auto;padding:0 var(--gut);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:4px 36px}
.sf-chart-key .sf-chart-note{grid-column:1/-1}
.sf-chart-note p{margin:0 0 4px;color:var(--mist)}
.sf-chart-note ol{margin:0;padding-left:20px;display:grid;gap:4px}
@media (max-width:860px){.sf-chart-key{grid-template-columns:minmax(0,1fr)}}
.sf-chart-panel .sf-eyebrow{margin-top:4px}
.sf-chart-layers,.sf-chart-fish{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 18px}
.sf-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);
  color:var(--foam);font:500 13px/1.2 var(--body);cursor:pointer}
.sf-chip b{font:600 11px var(--mono);color:var(--mist)}
.sf-chip img{display:block;width:30px;height:16px}
.sf-chip:hover{border-color:var(--mist)}
.sf-chip[aria-pressed="false"]{opacity:.42;background:none}
.sf-chip-all{font-weight:600}
.sf-sw{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--sw);box-shadow:0 0 0 1.5px var(--abyss),0 0 0 2.5px var(--map-ring)}
.sf-sw-town{background:var(--map-town);width:14px;height:14px}
.sf-sw-charter{--sw:var(--map-charter)}.sf-sw-marina{--sw:var(--map-marina)}.sf-sw-lodge{--sw:var(--map-lodge)}.sf-sw-dive{--sw:var(--map-dive)}
.sf-sw-notake{--sw:var(--map-notake)}.sf-sw-restricted{--sw:var(--map-restricted)}.sf-sw-responsible{--sw:var(--map-responsible)}
.sf-chart-note{font-size:var(--fs-small);color:var(--dim);margin:6px 0 0}
/* The map page header: same dark band as the map's key */
.sf-maphead{background:var(--band);border-bottom:1px solid var(--line);padding:30px 0 26px}
.sf-maphead h1{font-size:clamp(40px,6vw,84px);margin:6px 0 0}
@media (max-width:600px){:root{--map-h:min(72vh,560px)}}
/* The homepage map: a darker band right across the page (the shadow + clip trick avoids a sideways scroll) */
.sf-mini{position:relative;margin:80px 0 0;padding:56px 0 44px;background:var(--band);box-shadow:0 0 0 100vmax var(--band);clip-path:inset(0 -100vmax)}
.sf-mini h2{margin-bottom:24px}
.sf-mini>*{position:relative}
/* Fish photos drifting behind the homepage map: 8 slides, each on screen ~10s, slow zoom and pan (like tropisphere.com) */
.sf-mini>.sf-mini-bg{position:absolute;top:0;bottom:0;left:calc(50% - 50vw - var(--descent-shift));right:calc(50% - 50vw + var(--descent-shift));overflow:hidden;opacity:var(--mini-bg-opacity);pointer-events:none}
.sf-mini-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;animation:sf-swim var(--mini-bg-cycle) linear infinite both}
.sf-mini-bg img:nth-child(1){animation-delay:0s;--x0:-2%;--y0:1%;--x1:2%;--y1:-1%}
.sf-mini-bg img:nth-child(2){animation-delay:calc(var(--mini-bg-cycle) / 8 * 1);--x0:2%;--y0:-1%;--x1:-2%;--y1:1%}
.sf-mini-bg img:nth-child(3){animation-delay:calc(var(--mini-bg-cycle) / 8 * 2);--x0:0%;--y0:2%;--x1:1%;--y1:-2%}
.sf-mini-bg img:nth-child(4){animation-delay:calc(var(--mini-bg-cycle) / 8 * 3);--x0:-1%;--y0:-2%;--x1:2%;--y1:1%}
.sf-mini-bg img:nth-child(5){animation-delay:calc(var(--mini-bg-cycle) / 8 * 4);--x0:2%;--y0:1%;--x1:-1%;--y1:-1%}
.sf-mini-bg img:nth-child(6){animation-delay:calc(var(--mini-bg-cycle) / 8 * 5);--x0:-2%;--y0:0%;--x1:2%;--y1:1%}
.sf-mini-bg img:nth-child(7){animation-delay:calc(var(--mini-bg-cycle) / 8 * 6);--x0:1%;--y0:2%;--x1:-1%;--y1:-1%}
.sf-mini-bg img:nth-child(8){animation-delay:calc(var(--mini-bg-cycle) / 8 * 7);--x0:-1%;--y0:-1%;--x1:1%;--y1:2%}
@keyframes sf-swim{
  0%{opacity:0;transform:translate(var(--x0),var(--y0)) scale(1.06)}
  4%{opacity:1}
  13%{opacity:1}
  17%{opacity:0;transform:translate(var(--x1),var(--y1)) scale(1.16)}
  100%{opacity:0;transform:translate(var(--x1),var(--y1)) scale(1.16)}}
@media (prefers-reduced-motion:reduce){.sf-mini-bg img{animation:none}.sf-mini-bg img:first-child{opacity:1}}
.sf-mini-credit{margin:22px 0 0;font:400 11px/1.5 var(--body);color:var(--credit-ink)}
.sf-mini-credit a{color:var(--credit-ink)}
.sf-mini-map{position:relative;height:var(--map-mini-h);background:var(--map-water);border:1px solid var(--line)}
.sf-mini-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 28px;margin-top:16px}
.sf-mini-key{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px;font-size:var(--fs-small);color:var(--mist)}
.sf-mini-key li{display:inline-flex;align-items:center;gap:8px}
.sf-mini-fish{color:var(--map-fish-sailfish)}
.sf-mini-fish svg{display:block}
.sf-mini .sf-more{margin:0}
/* Background reels (static/sf-reel.js, theme.reel): clips on pure black, blended so the black drops out. The opacity sits on
   each video, not the holder, or the black would show. Slow drift while a clip is on. */
.sf-has-reel,.sf-end{position:relative}
.sf-has-reel>:not(.sf-reel),.sf-end>:not(.sf-reel){position:relative}
.sf-reel{position:absolute;top:0;bottom:0;left:calc(50% - 50vw - var(--descent-shift));right:calc(50% - 50vw + var(--descent-shift));overflow:hidden;pointer-events:none}
.sf-end>.sf-reel{left:0;right:0}
.sf-reel video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;mix-blend-mode:screen;transition:opacity 2s ease}
.sf-reel video.on{animation:sf-reel-drift 30s ease-in-out infinite alternate}
.sf-reel-crew video.on{opacity:var(--reel-crew-opacity)}
.sf-reel-crew{bottom:auto;height:min(100%,var(--reel-crew-h))}
.sf-reel-end video.on{opacity:var(--reel-end-opacity)}
@keyframes sf-reel-drift{from{transform:scale(1.02) translate(-1%,0)}to{transform:scale(1.12) translate(1%,-1%)}}
@media (prefers-reduced-motion:reduce){.sf-reel{display:none}}
/* The map's own controls and cards, in the site's colours instead of the library's white */
:is(.sf-chart,.sf-mini) .maplibregl-popup-content{background:var(--deep);color:var(--foam);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px 12px;font:var(--fs-small)/1.5 var(--body)}
:is(.sf-chart,.sf-mini) .maplibregl-popup-tip{border-top-color:var(--deep);border-bottom-color:var(--deep)}
:is(.sf-chart,.sf-mini) .maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--deep)}
:is(.sf-chart,.sf-mini) .maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--deep)}
:is(.sf-chart,.sf-mini) .maplibregl-popup-close-button{color:var(--mist);font-size:20px;padding:2px 8px;background:none}
:is(.sf-chart,.sf-mini) .maplibregl-popup-close-button:focus:not(:focus-visible){outline:none}
:is(.sf-chart,.sf-mini) .maplibregl-popup-close-button:hover{color:var(--sun);background:none}
.sf-pop h4{font:800 20px/1 var(--display);text-transform:uppercase;margin:2px 0 6px;color:var(--foam)}
.sf-pop p{margin:0 0 6px}
.sf-pop ul{margin:0 0 6px;padding-left:18px}
.sf-pop-cat{font:600 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--sun)}
.sf-pop-fish{display:flex;align-items:center;gap:6px}
.sf-pop-rule[data-rule="no-take"]{color:var(--map-notake-line)}
.sf-pop-rule[data-rule="restricted"]{color:var(--map-restricted-line)}
.sf-pop-rule[data-rule="responsible"]{color:var(--map-responsible-line)}
.sf-pop-where{color:var(--mist)}
.sf-pop-small{font-size:12px;color:var(--dim)}
.sf-pop-links{display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:8px!important}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-group{background:var(--deep);border:1px solid var(--line);box-shadow:none}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-group button+button{border-top:1px solid var(--line)}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-group button .maplibregl-ctrl-icon{filter:invert(1) brightness(1.4)}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl .maplibregl-ctrl-attrib,:is(.sf-chart,.sf-mini) .maplibregl-ctrl-attrib.maplibregl-compact-show,:is(.sf-chart,.sf-mini) .maplibregl-ctrl-attrib.maplibregl-compact{background:rgba(3,15,26,.82);color:var(--dim)}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-bottom-right>.maplibregl-ctrl-attrib.maplibregl-compact-show{background:rgba(3,15,26,.82)}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-attrib a{color:var(--mist)}
:is(.sf-chart,.sf-mini) .maplibregl-ctrl-attrib-button{filter:invert(1)}
:is(.sf-chart,.sf-mini) .maplibregl-cooperative-gesture-screen{background:rgba(3,15,26,.7);color:var(--foam);font:var(--fs-small) var(--body)}
