/* Coastal field guide. Shared visual system, layered after feature CSS. */
:root,[data-theme=light]{color-scheme:light;--display:'Fraunces',Georgia,serif;--paper:#f5f4ec;--surface:#fffef8;--cream:#fffef8;--ink:#183d32;--muted:#53675c;--line:#c7d1c4;--control-border:#849588;--soft:#e8ede2;--gold:#f2c953;--gold-text:#75551a;--orange:#a64427;--orange-text:#a64427;--forest:#183d32;--green:#285943;--green-text:#285943;--blue:#446963;--blue-text:#345e60;--hover:#f0f2e9;--note:#f7edcf;--coast-water:#dce9e4;--coast-land:#f1f0df;--radius:10px}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#102d28;--surface:#183a32;--cream:#183a32;--ink:#eff2e8;--muted:#b4c7bb;--line:#466457;--control-border:#7d9b88;--soft:#224a3d;--orange:#f29d76;--orange-text:#f29d76;--gold-text:#f2c953;--green:#8fbca0;--green-text:#a6cdb5;--blue:#9bbab7;--blue-text:#b0cdc7;--hover:#204438;--note:#3c412c;--coast-water:#254b44;--coast-land:#173d31}}
[data-theme=dark]{color-scheme:dark;--paper:#102d28;--surface:#183a32;--cream:#183a32;--ink:#eff2e8;--muted:#b4c7bb;--line:#466457;--control-border:#7d9b88;--soft:#224a3d;--orange:#f29d76;--orange-text:#f29d76;--gold-text:#f2c953;--green:#8fbca0;--green-text:#a6cdb5;--blue:#9bbab7;--blue-text:#b0cdc7;--hover:#204438;--note:#3c412c;--coast-water:#254b44;--coast-land:#173d31}
body{font:400 16px/1.5 Barlow,Arial,sans-serif;background:var(--paper);color:var(--ink)}
button,a,summary{touch-action:manipulation}button,input,select{font-family:Barlow,Arial,sans-serif}
h1,h2,h3,h4,h5{font-family:Barlow,Arial,sans-serif;letter-spacing:0;line-height:1.25;font-weight:600}h2{font-size:22px}h3{font-size:20px}h4{font-size:17px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--orange-text);outline-offset:4px}
/* Crossing cards clip their edges, so disclosure focus stays inside the card. */
.crossing>details>summary:focus-visible{outline-offset:-5px}
.skip:focus{background:var(--surface);color:var(--ink);border:1px solid var(--control-border)}
header{min-height:82px;padding:18px max(32px,calc((100% - 1088px)/2));background:var(--paper);color:var(--ink);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:9px;color:var(--ink);letter-spacing:0}
.brand .brand-lockup{display:flex;flex-direction:column;gap:4px;min-width:0}
.brand .brand-name{font:600 29px/1.05 var(--display);letter-spacing:-1px;white-space:nowrap}
.brand .brand-region{font:600 9px/1.35 Barlow,Arial,sans-serif;letter-spacing:1.45px;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.brand .brand-badge{position:relative;display:grid;place-items:center;width:34px;height:41px;flex:none;clip-path:polygon(0 0,100% 0,100% 77%,50% 100%,0 77%);border-radius:3px 3px 0 0;background:var(--forest);color:#fffef8;padding:2px 4px 8px}
.brand-badge:after{content:'';position:absolute;bottom:8px;width:18px;height:2px;background:var(--gold)}.brand-badge svg{width:25px;height:25px}
.header-note{font:500 11px/1.4 Barlow,Arial,sans-serif;letter-spacing:1.5px;color:var(--muted)}
main{max-width:1152px;padding:0 32px 24px}.shell{overflow:visible;border:0;border-radius:0;background:var(--paper);box-shadow:none}
.app-nav{padding:0;gap:28px;border-bottom:1px solid var(--line);align-items:stretch}
.app-nav .tab{display:flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;font:600 14px/1.25 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:0;min-height:50px;padding:13px 0;color:var(--muted);border-bottom-width:3px}
.app-nav .tab.active{color:var(--ink);border-bottom-color:var(--ink);background:transparent;border-radius:0}
.app-nav .tab[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}
.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin:28px 0 24px}
.eyebrow{font:600 11px/1.5 Barlow,Arial,sans-serif;letter-spacing:1.5px;color:var(--muted);margin:0 0 7px}
.intro h1{font:500 clamp(32px,4vw,42px)/1.13 var(--display);letter-spacing:-1px;margin:0;text-wrap:balance}
.intro h1 em{font:inherit;font-style:italic;color:inherit}
.intro .intro-blurb{font-size:14px;line-height:1.5;max-width:250px;color:var(--muted);margin:0 0 2px}
#stage{padding:0}
#finder{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px}
.form-title{align-items:center}.form-title h2{font-size:21px;margin:0}.form-title .eyebrow{font-size:10px;letter-spacing:1.2px;margin-bottom:5px}
.day-label{font-size:12px;font-weight:400;color:var(--muted)}
.finder{grid-template-columns:minmax(0,1.3fr) minmax(0,1.3fr) minmax(0,1fr) minmax(0,.85fr);gap:14px;margin:20px 0 12px}
label{font-size:12px;font-weight:600;color:var(--muted)}
input,select{min-height:54px;padding:12px;font-size:16px;font-weight:500;line-height:1.2;border-radius:5px;border-color:var(--control-border);background:var(--surface);color:var(--ink)}
.finder input,.finder select{margin-top:6px;min-height:54px}.terminal-choice{color:var(--muted)}
.nearby-tools{margin:8px 0 0;gap:8px 16px}.nearby-trigger{background:transparent;border:0;padding:0;min-height:40px;font-size:13px}.nearby-trigger>span{color:var(--muted);font-size:21px}.nearby-tools p{font-size:12px}
.return-choice{margin:14px 0 16px;padding-top:14px;border-top:1px solid var(--line)}
.return-choice legend{font:600 13px/1.4 Barlow,Arial,sans-serif;margin-bottom:8px;padding-right:10px}
.return-choice-options{gap:8px 20px}.return-choice-options label{background:transparent;border:0;border-radius:0;padding:4px 0;min-height:40px;width:auto;color:var(--ink);font-size:13px;font-weight:400;gap:8px}
.return-choice-options label:has(input:checked){background:transparent;border:0;box-shadow:none}
.return-choice input[type=radio]{accent-color:var(--green-text);width:17px;height:17px;flex:0 0 17px}.return-choice p{font-size:12px;margin-top:4px}
.btn{background:var(--gold);border:1px solid #b18a2b;border-radius:5px;color:#17382c;font-size:14px;font-weight:600;min-height:44px;padding:11px 18px;gap:10px}
.btn.secondary{background:var(--surface);color:var(--ink);border-color:var(--control-border)}.btn.small{padding:8px 11px;min-height:44px;font-size:13px}
.text-button,.card-actions .secondary-link{font-size:13px;min-height:44px}.pills{gap:6px}
.pill{border:1px solid var(--line);border-radius:5px;font-size:12px;padding:7px 10px;min-height:40px;background:var(--surface)}.pill.active{border-color:var(--ink)}
.form-tail{gap:12px;margin-top:10px}.schedule-status{font-size:12px;line-height:1.5;margin:13px 0 20px;color:var(--muted)}
.results-heading{align-items:baseline;margin:25px 0 13px;gap:20px}.results-heading h2{font:600 20px/1.3 Barlow,Arial,sans-serif;letter-spacing:0}.results-heading .quiet{font-size:12px;white-space:normal}
.route-stack{gap:20px;grid-template-columns:repeat(auto-fill,minmax(min(100%,26rem),1fr))}
.crossing{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);--category-color:var(--line);--category-text:var(--muted)}
.crossing>details>summary,.crossing-preview>details>summary{padding:22px 24px 0}.crossing details[open]>summary{background:var(--surface)}
.operator{font:500 12px/1.4 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:0;color:var(--muted);gap:7px}.category-icon{font-size:16px}.context{font:400 12px/1.4 Barlow,Arial,sans-serif;margin-top:6px}
.crossing h3,.crossing-preview h3{font:500 31px/1.15 var(--display);letter-spacing:-.65px;margin:12px 0 7px}
.card-summary{font-size:14px;line-height:1.55;margin:6px 0 14px}.facts{font-size:13px;line-height:1.5;gap:7px 18px}.facts strong{font-weight:600}
.expand-label{border-top:1px solid var(--line);margin:18px -24px 0;padding:13px 24px;min-height:50px;font-size:13px;font-weight:500;color:var(--ink);gap:12px}.expand-label .plus{font:400 21px/1 Barlow,Arial,sans-serif;color:var(--muted)}
.crossing details[open]>summary>.expand-label{background:var(--soft)}.crossing-preview .expand-label{margin-top:17px;min-height:50px}.card-notices p{border-color:var(--orange-text);font-size:13px}
.card-actions,.crossing-preview .card-actions{padding:15px 24px;gap:10px 18px}.card-actions .btn{margin-left:auto}.card-actions .secondary-link{display:inline-flex;align-items:center;min-height:44px}
.sailing-summary{min-width:0}.sailing-mark{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:13px}
.sailing-operator{display:inline-flex;align-items:center;gap:7px;font:500 12px/1.4 Barlow,Arial,sans-serif;color:var(--muted);min-width:0}.sailing-operator svg{flex:none}
.sailing-recommendation{display:inline-flex;align-items:center;gap:5px;flex:none;font-size:11px;line-height:1.3;color:var(--ink)}.sailing-recommendation:before{content:'';width:6px;height:6px;flex:none;border-radius:50%;background:var(--ink)}
.crossing .sailing-destination{font:500 33px/1.14 var(--display);letter-spacing:-.7px;margin:0 0 5px}.sailing-area{font-size:13px;line-height:1.4;color:var(--muted);margin:0}
.sailing-times{display:grid;grid-template-columns:minmax(0,1fr) 74px minmax(0,1fr);align-items:end;gap:12px;margin-top:22px}
.sailing-end{min-width:0}.sailing-end:last-child{text-align:right}.sailing-time-label{display:block;font-size:11px;line-height:1.4;color:var(--muted);margin-bottom:5px}
.sailing-clock{display:block;font:600 42px/1 'Barlow Condensed',Arial,sans-serif;letter-spacing:-.7px;white-space:nowrap;color:var(--ink);font-variant-numeric:tabular-nums;margin:0}
.sailing-clock small{font:500 18px/1 'Barlow Condensed',Arial,sans-serif;letter-spacing:0;margin-left:-2px}
.sailing-duration{align-self:center;color:var(--muted);font-size:12px;line-height:1.4;text-align:center;white-space:nowrap;padding-bottom:10px}
.sailing-duration i{position:relative;display:block;height:1px;background:var(--control-border);margin-top:9px}
.sailing-duration i:before,.sailing-duration i:after{content:'';position:absolute;top:-3px;width:7px;height:7px;box-sizing:border-box;border:1px solid var(--ink);border-radius:50%;background:var(--surface)}.sailing-duration i:before{left:0}.sailing-duration i:after{right:0;background:var(--ink)}
.sailing-facts{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 14px;border-top:1px solid var(--line);padding-top:13px;margin-top:21px;font-size:13px;line-height:1.45}.sailing-facts strong{font-weight:600}.sailing-facts .fare-basis{color:var(--muted)}
.sailing-boarding{font-size:12px;color:var(--muted);line-height:1.5;margin:17px 0 0}.sailing-boarding strong{color:var(--ink);font-weight:500}
.expanded{padding:24px}.card-section{margin-bottom:26px}.card-section h4,.schedule-header h4{font:600 17px/1.35 Barlow,Arial,sans-serif;letter-spacing:0}.card-section p{font-size:14px;line-height:1.6}
.schedule-table{font-size:14px;font-variant-numeric:tabular-nums}.schedule-table caption{font-size:12px;line-height:1.5;padding-bottom:14px}
.schedule-table th,.crossing .schedule-table th{font:500 11px/1.4 Barlow,Arial,sans-serif;text-transform:none;letter-spacing:0;border-bottom:1px solid var(--line);padding:8px 6px}
.schedule-table td,.crossing .schedule-table td{font-size:14px;padding:11px 6px;line-height:1.4}.schedule-table td:first-child{font-weight:600}
.schedule-table .btn.small,.crossing .schedule-table .btn.small{min-height:44px;font-size:12px;border-color:var(--control-border);background:var(--surface);color:var(--ink);padding:7px 10px}
.schedule-table [aria-pressed=true],.schedule-table [aria-current=true],.schedule-table [aria-current=step],.schedule-table .btn.is-selected{background:var(--ink)!important;border-color:var(--ink)!important;color:var(--surface)!important}
.schedule-table .next,.schedule-table .selected{background:var(--soft)}.sailing-actions{gap:2px}.sailing-actions .water-boarding-link{font-size:12px}
.schedule-table .past{opacity:1;color:var(--muted)}
.smallprint,.sources .smallprint{font-size:12px;line-height:1.55}.crossing-detail-actions{gap:8px 18px;margin-bottom:20px}.crossing-detail-actions a{font-size:13px}.crossing-intro{font-size:14px;line-height:1.6}
.empty,.loading{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:27px}.empty h2,.empty h3,.loading h2{font:500 28px/1.2 var(--display);letter-spacing:-.5px}.empty p,.loading p{font-size:14px;line-height:1.6;max-width:70ch}
.note,.notice,.return-note,.trip-warning{border-radius:6px;font-size:14px;line-height:1.6}.notice{border:1px solid var(--line);padding:15px 18px}.note,.trip-warning{border-left-color:var(--orange-text)}.bottom-close{font-size:13px}
/* Practical headings stay sans; destination and editorial titles use the serif. */
.plan-surface{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);margin-top:24px}.plan-head{padding:25px;background:var(--surface)}
.plan-head h2{font:500 34px/1.18 var(--display);letter-spacing:-.7px;max-width:26ch}.plan-head>p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:1.6}.plan-head .facts{margin-top:17px;font-size:13px}.plan-body{padding:25px}
.timeline{border-left:1px solid var(--line);padding-left:25px}.step{padding-bottom:27px}.step:before{background:var(--forest);border:2px solid var(--surface);left:-30px;top:6px;width:8px;height:8px;box-shadow:0 0 0 1px var(--line)}
.step .time{font:600 13px/1.4 Barlow,Arial,sans-serif;letter-spacing:.1px;color:var(--muted)}.step h3{font:600 20px/1.3 Barlow,Arial,sans-serif;margin:7px 0}.step p{font-size:14px;line-height:1.6}
.activity-list{counter-reset:shore-stop}.activity-list li{counter-increment:shore-stop;position:relative;padding:14px 0 14px 31px}.activity-list li:before{content:counter(shore-stop,decimal-leading-zero);position:absolute;left:0;top:15px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.activity-list strong{font-weight:600;font-size:14px}.activity-list p{font-size:13px;line-height:1.55;margin-top:4px}.activity-list a{display:inline-flex;align-items:center;min-height:40px;font-size:12px}.plan-extra summary{font-size:14px}
.water-heading h2,body[data-view=water] .intro h1{font:500 34px/1.18 var(--display);letter-spacing:-.65px}body[data-view=water] .intro{margin:25px 0 20px}.water-heading{align-items:center;padding:0 0 7px}.water-heading p:not(.eyebrow){font-size:14px;line-height:1.6}.water-hero-art{width:125px;color:var(--muted)}
.water-sailing{border:1px solid var(--line);border-radius:var(--radius)}.water-sailing h3,.water-has-sailing .water-sailing h3{font:500 29px/1.2 var(--display);letter-spacing:-.5px}.water-times strong{font-weight:600}.water-sailing-kicker,.water-times small{font-size:12px}.water-clock strong{font-size:14px}.water-next-connection h3{font:600 19px/1.3 Barlow,Arial,sans-serif}
.crossing-explorer{border-radius:var(--radius)}.crossing-explorer>summary strong{font:600 18px/1.3 Barlow,Arial,sans-serif}.explore-compass{color:var(--muted);font-size:25px}.explore-toolbar button{border-color:var(--control-border);font-weight:500}
.explore-terminal-info h4,.condition-heading h4,.condition-forecast h5{font:600 17px/1.35 Barlow,Arial,sans-serif}.condition-tile strong{font-weight:600}.connection-walk-title>strong{font:600 18px/1.3 Barlow,Arial,sans-serif}
.discovery-intro h4{font:500 28px/1.2 var(--display);letter-spacing:-.4px}.discovery-card-title>strong{font:600 18px/1.3 Barlow,Arial,sans-serif}.discovery-kicker{font-weight:600;letter-spacing:1.2px;color:var(--muted)}
.basics-grid{gap:16px;margin-top:18px;grid-template-columns:repeat(auto-fill,minmax(min(100%,23rem),1fr))}.basics-grid .compact h3{font:500 26px/1.2 var(--display);letter-spacing:-.4px}
.sources{margin-top:32px}.sources>h2{font-size:22px}.sources .crossing p{font-size:14px}.sources .compact h3,.terminal-grid .compact h3{font:600 20px/1.3 Barlow,Arial,sans-serif;letter-spacing:0}.terminal-grid{gap:16px}.terminal-grid .card-summary{font-size:13px}.terminal-grid .crossing>details>summary{padding-top:19px}
#bay-map{margin-top:27px}#bay-map>details>summary{padding:17px 22px 0}#bay-map>details>summary h3{font:600 20px/1.3 Barlow,Arial,sans-serif;margin:8px 0}#bay-map .card-summary{font-size:13px}#bay-map .expand-label{margin:14px -22px 0;padding:12px 22px}
/* The small pier drawing sits after sailing choices, away from the task controls. */
.below{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;gap:32px;margin-top:30px;padding:25px 0 28px;border-top:1px solid var(--line)}
.shore-edit{display:grid;grid-template-columns:minmax(0,1fr) 138px;gap:18px;align-items:center;background:var(--soft);border-radius:var(--radius);padding:24px;min-width:0}.shore-edit .eyebrow{font-size:10px;letter-spacing:1.2px;margin:0 0 9px}.shore-edit h2{font:500 28px/1.15 var(--display);letter-spacing:-.5px;margin:0}.shore-edit p:not(.eyebrow){font-size:12px;line-height:1.6;margin-top:12px;color:var(--muted)}.pier-illustration{width:100%;max-width:160px;height:auto;color:var(--ink)}
.source-box{border-left:0;padding:0;font-size:13px;line-height:1.65;max-width:44ch}.source-box strong{font-weight:600;color:var(--ink)}.source-box p{margin:8px 0}.source-box .text-button{display:inline-flex;align-items:center;font-size:12px}
.crossing-map-aside{min-width:0}.crossing-map-aside .route-map{margin:0}.crossing-map-aside .route-map-svg{aspect-ratio:1.65}.crossing-map-aside .route-map-heading{padding:17px 18px 12px}.crossing-map-aside .route-map-endpoints{padding:17px 18px}.crossing-map-aside .route-map-caption{padding:13px 18px}.crossing-map-aside .route-map-place{font-size:13px}
@media(min-width:900px){
 #finder{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 24px}
 #finder>.form-title,#finder>.finder,#finder>.day-extra,#finder>.form-tail{grid-column:1/-1;margin:0}
 #finder>.finder{margin-top:4px}
 #finder>.nearby-tools{grid-column:1;grid-row:3;align-content:center;align-items:flex-start;flex-direction:column;justify-content:center;gap:0;margin:0}
 #finder>.nearby-results{grid-column:1/-1;margin:0}
 #finder>.return-choice{grid-column:2;grid-row:3;margin:0;padding:0;border:0}
 #finder>.return-choice legend{margin-bottom:4px;padding:0}
 #finder>.return-choice>p{display:none}
 #finder>.return-choice .return-choice-options{gap:6px 18px}
 #finder>.form-tail{padding-top:4px}
 .route-stack.single:has(.crossing-map-aside){grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:24px;align-items:start}
 .full-page .route-stack.single:has(.crossing-map-aside){grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}
}
footer{padding:20px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.5}.footer-brand{font:600 23px/1.1 var(--display);letter-spacing:-.7px}footer p{margin:6px 0;color:var(--muted)}.theme-switcher{gap:5px;margin-top:10px}.theme-switcher button{border-color:var(--control-border);font-size:12px;min-height:40px;padding:7px 10px}
@media(hover:hover){.app-nav .tab:hover{color:var(--orange-text)}.btn:hover:not(:disabled){background:#eabb3d;border-color:#aa7f22}.btn.secondary:hover:not(:disabled),.schedule-table .btn.small:hover{background:var(--soft);border-color:var(--ink)}input:hover,select:hover{border-color:var(--ink)}.crossing>details>summary:hover{background:var(--surface)}.crossing>details>summary:hover .expand-label{background:var(--soft)}}
@media(max-width:850px){.intro .intro-blurb{max-width:215px}.route-stack{gap:16px}.below{gap:24px;grid-template-columns:1fr 1fr}.shore-edit{grid-template-columns:minmax(0,1fr) 95px;gap:10px;padding:21px}.shore-edit h2{font-size:26px}}
@media(max-width:760px){
 header{padding:calc(17px + env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) 17px max(20px,env(safe-area-inset-left,0px));min-height:76px}main{padding:0 max(20px,env(safe-area-inset-right,0px)) 20px max(20px,env(safe-area-inset-left,0px))}
 .brand .brand-name{font-size:27px}.app-nav{gap:24px;padding:0}.intro{margin:25px 0 21px;gap:20px}.intro h1{font-size:35px}.intro .intro-blurb{display:none}#stage{padding:0}#finder{padding:20px}
 .form-title h2{font-size:20px}.day-label{margin-top:7px}.finder{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;margin-top:16px}.finder .finder-terminal{grid-column:1/-1}.finder input,.finder select{min-height:52px}.return-choice{margin-top:15px}.return-choice-options label{flex:initial;width:auto;min-height:40px;padding:4px 0}
 .results-heading{margin-top:24px}.results-heading h2{font-size:19px}.crossing>details>summary,.crossing-preview>details>summary{padding:20px 20px 0}.crossing h3{font-size:30px}.expand-label{margin-left:-20px;margin-right:-20px;padding:12px 20px}.card-actions,.crossing-preview .card-actions{padding:14px 20px}.expanded{padding:20px}
 .sailing-times{grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);gap:9px}.sailing-clock{font-size:39px}.sailing-clock small{font-size:17px}.plan-head,.plan-body{padding:22px}.plan-head h2{font-size:31px}.water-heading h2{font-size:31px}
 .below{grid-template-columns:1fr;gap:23px;margin-top:25px;padding:23px 0}.shore-edit{grid-template-columns:minmax(0,1fr) 138px;padding:22px}.source-box{max-width:60ch}footer{flex-direction:row;gap:25px}
}
@media(max-width:680px){.trip-editor #finder{border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.trip-editor-edit{color:var(--orange-text)}.trip-editor-label strong{font-family:Barlow,Arial,sans-serif}.trip-editor .terminal-choice{display:block}}
@media(max-width:600px){
 .app-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;padding:0}.app-nav .tab{font-size:12px;line-height:1.3;min-height:50px;padding:9px 0;white-space:normal}.app-nav .tab.active{background:transparent}.intro h1{font-size:32px;letter-spacing:-.85px}.intro .eyebrow{font-size:10px;letter-spacing:1.4px}
 .form-tail{align-items:stretch;flex-direction:column}.form-tail>.btn{width:100%}.form-tail .pills{justify-content:flex-start;gap:7px}.pill{font-size:12px;min-height:40px;padding:7px 9px}.card-actions,.crossing-preview .card-actions{flex-direction:column;align-items:stretch;gap:10px}.card-actions .btn,.crossing-preview .card-actions .btn{width:100%;margin:0;flex:auto}.schedule-table .table-btn{white-space:normal}
 .water-hero-art{width:83px}.water-has-sailing .water-heading h2{font:500 28px/1.2 var(--display)}body[data-view=water] .intro h1{font-size:28px}.water-has-sailing .water-sailing h3{font-size:27px}.basics-grid .compact h3{font-size:26px}footer{flex-direction:column;gap:17px}
}
@media(max-width:416px){
 header{padding-left:max(17px,env(safe-area-inset-left,0px));padding-right:max(17px,env(safe-area-inset-right,0px));min-height:74px}main{padding-left:max(17px,env(safe-area-inset-left,0px));padding-right:max(17px,env(safe-area-inset-right,0px))}.brand .brand-name{font-size:26px}.brand{gap:8px}
 .app-nav{gap:7px}.app-nav .tab{font-size:11.5px;min-height:47px}.intro{margin:22px 0 18px}.intro h1{font-size:30px}#finder{padding:17px 15px}.form-title h2{font-size:19px}.finder input[type=date],.finder input[type=time]{padding:12px 9px}.return-choice-options{gap:7px 15px}.return-choice-options label{font-size:13px}
 .results-heading{margin:22px 0 12px;gap:12px}.results-heading .quiet{font-size:11px;max-width:115px}.crossing>details>summary,.crossing-preview>details>summary{padding:18px 17px 0}.expand-label{margin-left:-17px;margin-right:-17px;padding:12px 17px}.card-actions,.crossing-preview .card-actions{padding:14px 17px}
 .crossing .sailing-destination{font-size:31px}.sailing-mark{margin-bottom:12px;gap:6px}.sailing-operator{font-size:11px}.sailing-recommendation{font-size:10px}.sailing-times{margin-top:20px;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);gap:8px}.sailing-clock{font-size:36px}.sailing-clock small{font-size:16px}.sailing-duration{font-size:11px}.sailing-facts{font-size:12px;margin-top:19px;gap:7px 12px}.sailing-boarding{font-size:12px}
 .crossing>details>.expanded{padding:18px 13px}.card-section h4{font-size:16px}.schedule-table td,.crossing .schedule-table td{font-size:13px;padding:10px 4px}.crossing .schedule-table .btn.small{font-size:12px;padding:8px 7px}.schedule-table caption{font-size:12px}.sources .compact h3,.terminal-grid .compact h3{font-size:19px}
 .empty,.loading{padding:22px 19px}.empty h2,.empty h3,.loading h2{font-size:25px}.plan-head,.plan-body{padding:20px 17px}.plan-head h2{font-size:29px}.water-heading h2{font-size:29px}.water-hero-art{width:67px}.crossing-explorer>summary strong{font-size:17px}.condition-heading h4,.condition-forecast h5{font-size:16px}.discovery-intro h4{font-size:26px}
 #bay-map>details>summary{padding:17px 17px 0}#bay-map .expand-label{margin-left:-17px;margin-right:-17px;padding:12px 17px}.shore-edit{grid-template-columns:minmax(0,1fr) 102px;gap:10px;padding:21px 18px}.shore-edit h2{font-size:25px}.shore-edit .eyebrow{font-size:9px;letter-spacing:1px}
}
@media(max-width:350px){.intro h1{font-size:27px;letter-spacing:-.7px}.app-nav{gap:5px}.app-nav .tab{font-size:11px;line-height:1.25;min-height:49px}.finder{grid-template-columns:minmax(0,1fr)}.return-choice-options{flex-direction:column;gap:2px}.sailing-times{grid-template-columns:minmax(0,1fr) 34px minmax(0,1fr);gap:7px}.sailing-clock{font-size:32px}.sailing-clock small{font-size:15px}.sailing-mark{align-items:flex-start;flex-wrap:wrap}.sailing-recommendation{font-size:11px}.shore-edit{grid-template-columns:minmax(0,1fr) 74px}.shore-edit h2{font-size:23px}.crossing .sailing-destination{font-size:28px}}
/* Five destinations keep full-size labels; all remain visible on a phone. */
@media(max-width:680px){
 .app-nav{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0 12px;padding:0}
 .app-nav .tab{grid-column:span 2;font-size:14px;line-height:1.3;min-height:52px;padding:9px 0;white-space:normal;text-wrap:balance}
 .app-nav .tab:nth-child(n+4){grid-column:span 3}
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{body{--ink:#183d32;--muted:#53675c;--surface:#fff;--cream:#fff;--paper:#fff;--soft:#e8ede2;--line:#c7d1c4;color:#183d32;background:#fff}.shell{background:white}main,#stage{padding:0}.crossing,.plan-surface{box-shadow:none}.brand-badge,.below,.theme-switcher{display:none}.plan-head h2{font-size:28px}.plan-head,.plan-body{padding:16px 0}}
/* Source detail stays readable without turning the timetable into a dashboard. */
.source-dates{display:grid;gap:4px;margin:20px 0}
.source-dates dt{font-size:12px;font-weight:600;letter-spacing:.3px;color:var(--muted);margin-top:10px}
.source-dates dd{margin:0;font-size:15px;line-height:1.5;overflow-wrap:anywhere}
.earlier-sailings{margin-top:20px;border-top:1px solid var(--line);padding-top:8px}
.earlier-sailings>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:10px 4px;cursor:pointer;font-size:15px;font-weight:600;color:var(--ink)}
.earlier-sailings>summary span{font-size:13px;font-weight:400;color:var(--muted)}
.earlier-sailings>summary:focus-visible{outline:3px solid var(--orange-text);outline-offset:2px}
.earlier-sailings[open]>summary{margin-bottom:12px}
.earlier-sailings>.smallprint{margin:0 0 12px;font-size:13px;line-height:1.5}
@media(max-width:900px){.intro .intro-blurb{display:block;max-width:38ch;font-size:14px;margin:8px 0 0}.intro{flex-wrap:wrap}.intro .intro-blurb{flex-basis:100%}}
