:root{--navy:#061521;--ink:#e7f3f4;--muted:#8ba2a7;--cyan:#8ce8ef;--orange:#ff5b1a;--panel:#0a1c28;--line:rgba(151,216,220,.2);--grid:rgba(134,205,210,.07);--sans:Inter,'Helvetica Neue',Arial,sans-serif;--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace;color-scheme:dark}
*{box-sizing:border-box}
html{scroll-behavior:smooth;background:var(--navy)}
body{margin:0;background:var(--navy);color:var(--ink);font:400 1rem/1.6 var(--sans);overflow-x:hidden;transition:background .65s,color .65s}
body[data-water="day"]{--navy:#d9e7e5;--ink:#071b25;--muted:#4e676d;--cyan:#006e83;--orange:#f04b14;--panel:#c8d9d8;--line:rgba(5,35,45,.22);--grid:rgba(6,40,50,.07);color-scheme:light}
body[data-water="rain"]{--navy:#17212a;--ink:#ecf3ef;--muted:#9baaa8;--cyan:#a6d7cf;--orange:#ffb000;--panel:#202d36;--line:rgba(213,234,227,.18);--grid:rgba(213,234,227,.05)}
body[data-water="night"]{--navy:#050711;--ink:#eef0ff;--muted:#898ba2;--cyan:#00e7ff;--orange:#ff3864;--panel:#0b0c1b;--line:rgba(115,127,255,.22);--grid:rgba(105,119,255,.07)}
a{color:inherit;text-decoration:none}
button{font:inherit}
.skip-link{position:fixed;left:1rem;top:1rem;z-index:100;padding:.7rem 1rem;background:var(--orange);color:#07131b;transform:translateY(-180%)}.skip-link:focus{transform:none}
.map-grid{position:fixed;inset:0;pointer-events:none;z-index:20;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(to bottom,black,transparent 85%)}
.topbar{height:92px;padding:0 clamp(1.1rem,3vw,3.5rem);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;border-bottom:1px solid var(--line);position:relative;z-index:30;background:color-mix(in srgb,var(--navy),transparent 8%);backdrop-filter:blur(12px)}
.logo{display:flex;align-items:center;gap:.8rem;font:700 .72rem/1.05 var(--mono);letter-spacing:.13em;width:max-content}.logo-box{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--cyan);color:var(--cyan);font-size:1rem;letter-spacing:0;position:relative}.logo-box:after{content:"";position:absolute;right:-5px;bottom:-5px;width:8px;height:8px;background:var(--orange)}
nav{display:flex;gap:2rem;font:500 .72rem var(--mono);letter-spacing:.08em;text-transform:uppercase}nav a{padding:.5rem 0;border-bottom:1px solid transparent}nav a:hover,nav a:focus-visible{border-color:var(--orange)}
.edition{justify-self:end;display:flex;flex-direction:column;text-align:right;font:400 .63rem/1.55 var(--mono);letter-spacing:.1em;color:var(--muted)}.edition span:first-child{color:var(--orange)}
.control-deck{min-height:calc(100svh - 92px);display:grid;grid-template-columns:1.05fr .95fr;position:relative}
.deck-copy{padding:clamp(3rem,6vw,6.5rem) clamp(1.1rem,5vw,6rem);display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}
.kicker,.section-index p,.control-title,.photo-tag,.ethics-label{font:500 .68rem var(--mono);text-transform:uppercase;letter-spacing:.13em}
.kicker{color:var(--cyan);margin:0 0 2rem}
h1,h2,h3,p{margin-top:0}
h1{font:800 clamp(4.2rem,10vw,11rem)/.78 var(--sans);letter-spacing:-.085em;text-transform:uppercase;margin:0 0 3rem}h1 span{color:transparent;-webkit-text-stroke:1.5px var(--orange);text-shadow:12px 12px 0 color-mix(in srgb,var(--orange),transparent 90%)}
.deck-intro{max-width:37rem;font-size:clamp(1.05rem,1.6vw,1.35rem);color:var(--muted);min-height:4.5rem}
.mode-control{margin-top:2rem;border:1px solid var(--line);background:color-mix(in srgb,var(--panel),transparent 18%)}
.control-title{padding:.65rem .8rem;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted)}.control-title span:first-child{color:var(--orange)}
.mode-buttons{display:grid;grid-template-columns:repeat(4,1fr)}
.mode{appearance:none;border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);padding:1rem .6rem;cursor:pointer;text-align:left;font:600 .72rem var(--mono);text-transform:uppercase;transition:.25s}.mode:last-child{border:0}.mode small{display:block;font-size:.58rem;font-weight:400;margin-bottom:.35rem}.mode:hover,.mode:focus-visible,.mode.is-active{background:var(--orange);color:#07131b}.mode:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.readout{display:grid;grid-template-columns:repeat(3,1fr);margin-top:1.5rem;border-top:1px solid var(--line)}.readout>div{padding:1rem .7rem .8rem 0}.readout-label{display:block;font:500 .56rem var(--mono);letter-spacing:.12em;color:var(--orange);margin-bottom:.25rem}.readout strong{font-size:.76rem;font-weight:500;color:var(--muted)}
.hero-map{margin:0;position:relative;min-height:620px;overflow:hidden;border-left:1px solid var(--line);background:var(--panel)}
.hero-map:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(2,10,16,.76)),linear-gradient(90deg,color-mix(in srgb,var(--cyan),transparent 86%),transparent 45%);mix-blend-mode:screen;transition:.65s}
.hero-map img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.78) contrast(1.12);transition:filter .65s,transform 1.1s}.hero-map:hover img{transform:scale(1.025)}
.hero-map figcaption{position:absolute;z-index:3;left:1.5rem;right:1.5rem;bottom:1.5rem;display:grid;grid-template-columns:1fr auto;gap:.2rem 1rem;font:500 .59rem var(--mono);letter-spacing:.1em;color:#dff7f8}.hero-map figcaption strong{grid-row:1/3;grid-column:2;font-size:1rem;color:#fff}.hero-map figcaption span:last-child{color:#8ba7aa}
.vertical-mark{position:absolute;z-index:3;top:1.5rem;right:1.2rem;writing-mode:vertical-rl;font:500 .55rem var(--mono);letter-spacing:.17em;color:#fff}
.cross{position:absolute;z-index:3;width:42px;height:42px;border:1px solid rgba(255,255,255,.55)}.cross:before,.cross:after{content:"";position:absolute;background:var(--orange)}.cross:before{width:15px;height:1px;left:13px;top:20px}.cross:after{height:15px;width:1px;top:13px;left:20px}.cross-a{left:16%;top:21%}.cross-b{right:27%;bottom:28%;transform:scale(.65)}
.ticker{overflow:hidden;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--orange);color:#07131b;height:43px;display:flex;align-items:center}.ticker div{white-space:nowrap;font:700 .66rem var(--mono);letter-spacing:.15em;animation:flow 26s linear infinite}@keyframes flow{to{transform:translateX(-50%)}}
.signals,.routes{padding:clamp(6rem,11vw,11rem) clamp(1.1rem,5vw,6rem);display:grid;grid-template-columns:180px 1fr;gap:clamp(2rem,5vw,7rem)}
.section-index{font-family:var(--mono);border-top:1px solid var(--orange);padding-top:1rem;display:flex;gap:1.5rem;align-items:flex-start}.section-index>span{font-size:2.8rem;line-height:1;color:var(--orange)}.section-index p{color:var(--muted);line-height:1.45;margin:0}
h2{font:800 clamp(2.8rem,6.3vw,7rem)/.92 var(--sans);letter-spacing:-.065em;text-transform:uppercase;margin-bottom:3rem}h2 em{font-style:normal;color:transparent;-webkit-text-stroke:1.25px var(--cyan)}
.signals-content>.lead{font-size:clamp(1.25rem,2vw,1.85rem);max-width:52rem;color:var(--muted);margin:0 0 5rem}
.signal-grid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.signal-grid article{padding:1.5rem;border-right:1px solid var(--line);min-height:365px}.signal-grid article:last-child{border:0}.signal-code{font:500 .63rem var(--mono);color:var(--orange)}
.signal-diagram{height:110px;margin:2.5rem 0;display:flex;align-items:center;gap:8px}.signal-diagram i{display:block;height:1px;background:var(--cyan);width:26%}.signal-diagram i:nth-child(2){width:43%;transform:translateY(12px)}.signal-diagram i:nth-child(3){width:18%;transform:translateY(-9px)}
.signal-diagram.ring{position:relative}.signal-diagram.ring i{position:absolute;border:1px solid var(--cyan);background:transparent;border-radius:50%;width:50px;height:50px}.signal-diagram.ring i:nth-child(2){width:78px;height:78px;transform:none}.signal-diagram.ring i:nth-child(3){width:106px;height:106px;transform:none}
.signal-diagram.pulse{gap:3px;align-items:flex-end}.signal-diagram.pulse i{width:3px;height:72%;box-shadow:14px 0 0 var(--cyan),28px 0 0 var(--cyan),42px 0 0 var(--cyan),56px 0 0 var(--cyan)}.signal-diagram.pulse i:nth-child(2){height:34%;transform:none}.signal-diagram.pulse i:nth-child(3){height:90%;transform:none}
.signal-grid h3,.route-list h3{font:700 1.5rem var(--sans);text-transform:uppercase;margin:0 0 1rem}.signal-grid p{font-size:.9rem;color:var(--muted)}
.read-water{display:grid;grid-template-columns:.82fr 1.18fr;background:var(--panel);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.water-photo{min-height:880px;position:relative;overflow:hidden}.water-photo img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.78) contrast(1.12)}.photo-tag{position:absolute;left:1rem;bottom:1rem;background:var(--orange);color:#07131b;padding:.6rem .8rem}
.water-copy{padding:clamp(5rem,9vw,10rem) clamp(1.1rem,7vw,9rem);display:flex;flex-direction:column;justify-content:center}.section-index.compact{max-width:230px;margin-bottom:4rem}.water-copy h2 em{-webkit-text-stroke-color:var(--orange)}
.water-notes article{display:grid;grid-template-columns:150px 1fr;gap:2rem;border-top:1px solid var(--line);padding:1.2rem 0}.water-notes article:last-child{border-bottom:1px solid var(--line)}.water-notes span{font:500 .63rem var(--mono);color:var(--orange)}.water-notes p{margin:0;color:var(--muted);font-size:.93rem}
.routes{background:var(--navy)}.routes-main h2{max-width:64rem}.route-list{border-top:1px solid var(--line)}.route-list article{display:grid;grid-template-columns:70px .65fr 1fr auto;gap:2rem;align-items:center;padding:2rem 0;border-bottom:1px solid var(--line);transition:.25s}.route-list article:hover{padding-left:1rem;background:color-mix(in srgb,var(--orange),transparent 92%)}.route-no,.route-meta{font:500 .63rem var(--mono);color:var(--orange)}.route-list h3,.route-list p{margin:0}.route-list p{color:var(--muted);font-size:.92rem}.route-meta{text-align:right;color:var(--cyan)}
.ethics{padding:clamp(7rem,13vw,14rem) clamp(1.1rem,8vw,10rem);background:var(--orange);color:#06131b;position:relative}.ethics-label{margin-bottom:3rem}.ethics h2{max-width:80rem}.ethics h2 span{color:transparent;-webkit-text-stroke:1.5px #06131b}.ethics-grid{display:grid;grid-template-columns:1fr 1fr;max-width:1100px;margin-left:auto;border-top:1px solid rgba(6,19,27,.35)}.ethics-grid p{display:grid;grid-template-columns:48px 1fr;gap:1rem;padding:1.5rem;border-bottom:1px solid rgba(6,19,27,.35);margin:0}.ethics-grid p:nth-child(odd){border-right:1px solid rgba(6,19,27,.35)}.ethics-grid b{font:600 .75rem var(--mono)}.ethics-grid span{font-size:.95rem}
footer{padding:4.5rem clamp(1.1rem,5vw,6rem) 2rem;background:#030a0f;color:#e8f3f2;display:grid;grid-template-columns:1fr 1fr 1fr;gap:3rem}.footer-title{font:800 clamp(2.8rem,5vw,5.5rem)/.78 var(--sans);letter-spacing:-.07em}.footer-title span{font-size:.55rem;vertical-align:top;letter-spacing:0}.footer-title+p{font-size:.83rem;color:#809398}.legal-links{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem}.legal-links button{border:0;background:none;color:#b9c8c8;padding:0;border-bottom:1px solid transparent;cursor:pointer;font-size:.82rem}.legal-links button:hover,.legal-links button:focus-visible{color:#fff;border-color:var(--orange)}.copyright{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.13);padding-top:1.5rem;margin:1rem 0 0;font:400 .62rem var(--mono);color:#64777a}
dialog{width:min(760px,calc(100% - 2rem));max-height:84svh;padding:0;border:1px solid #29404b;background:#06131b;color:#e7f3f4;box-shadow:0 30px 100px rgba(0,0,0,.68)}dialog::backdrop{background:rgba(1,6,10,.86);backdrop-filter:blur(8px)}.dialog-head{display:flex;justify-content:space-between;gap:1rem;padding:1.5rem 2rem;border-bottom:1px solid #29404b;position:sticky;top:0;background:#06131b}.dialog-head h2{font-size:1.6rem;letter-spacing:-.03em;text-transform:none;margin:0}.dialog-close{border:0;background:none;color:#fff;font-size:2rem;line-height:1;cursor:pointer}.dialog-body{padding:2rem;overflow:auto;color:#a9babc}.dialog-body h3{font-size:1.05rem;text-transform:uppercase;letter-spacing:.04em;color:#fff;margin:2rem 0 .65rem}.dialog-body strong{color:#fff}
.reveal{opacity:0;transform:translateY(28px);transition:opacity .75s ease,transform .75s ease}.reveal.is-visible{opacity:1;transform:none}
@media(max-width:1000px){.topbar{grid-template-columns:1fr auto}.topbar nav{display:none}.control-deck{grid-template-columns:1fr}.deck-copy{min-height:720px}.hero-map{min-height:78svh;border-left:0;border-top:1px solid var(--line)}.signals,.routes{grid-template-columns:1fr}.section-index{max-width:240px}.read-water{grid-template-columns:1fr}.water-photo{min-height:75svh}.signal-grid{grid-template-columns:1fr 1fr}.signal-grid article:nth-child(2){border-right:0}.signal-grid article:last-child{grid-column:1/-1;border-top:1px solid var(--line)}footer{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.topbar{height:74px}.edition{font-size:.53rem}.logo-box{width:36px;height:36px}.control-deck{min-height:calc(100svh - 74px)}.deck-copy{min-height:700px;padding-top:3rem}.kicker{margin-bottom:1.5rem}h1{font-size:clamp(4rem,21vw,7rem)}.mode-buttons{grid-template-columns:1fr 1fr}.mode:nth-child(2){border-right:0}.mode:nth-child(-n+2){border-bottom:1px solid var(--line)}.readout{grid-template-columns:1fr}.readout>div{border-bottom:1px solid var(--line)}.hero-map figcaption{grid-template-columns:1fr}.hero-map figcaption strong{grid-row:auto;grid-column:auto}.signal-grid{grid-template-columns:1fr}.signal-grid article{border-right:0;border-bottom:1px solid var(--line);min-height:auto}.signal-grid article:last-child{grid-column:auto}.water-photo{min-height:620px}.water-notes article{grid-template-columns:1fr;gap:.5rem}.route-list article{grid-template-columns:50px 1fr;gap:1rem}.route-list p,.route-meta{grid-column:2}.route-meta{text-align:left}.ethics-grid{grid-template-columns:1fr}.ethics-grid p:nth-child(odd){border-right:0}footer{grid-template-columns:1fr}.copyright{grid-column:auto}.dialog-head,.dialog-body{padding:1.25rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.reveal{opacity:1;transform:none}}
