:root{
  --paper:#f6f1e7; --paper2:#efe7d6; --ink:#14324a; --ink2:#3d5568; --sea:#2c7a86; --moss:#56782a; --ochre:#c38f22; --rust:#b0412a;
  --line:#dcd2bf; --white:#fffdf8; --radius:14px;
  --fell:"IM Fell English", "EB Garamond", Georgia, serif;
  --serif:"EB Garamond", Georgia, serif;
  --sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}
*,*::before,*::after{box-sizing:border-box;font-style:normal !important;font-synthesis:none}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.55;
  font-variant-numeric:lining-nums tabular-nums}
em,i,cite,address,dfn,var{font-style:normal}
img{max-width:100%;display:block}
a{color:var(--sea)}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.08;font-weight:400}
.fell{font-family:var(--fell);font-weight:400;text-transform:uppercase;letter-spacing:.02em;font-variant-numeric:normal}
.fell .num,.num{font-family:var(--serif);font-weight:600;font-variant-numeric:lining-nums tabular-nums;text-transform:none;letter-spacing:0}
.serif{font-family:var(--serif);font-weight:600;font-variant-numeric:lining-nums}
.wrap{max-width:1180px;margin:0 auto;padding:0 18px}
.eyebrow{font-family:var(--sans);font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--sea)}
.btn{display:inline-flex;align-items:center;gap:.4em;padding:.8em 1.2em;border-radius:999px;background:var(--ink);color:var(--white);
  text-decoration:none;font-weight:600;border:0;font:600 1rem var(--sans);cursor:pointer}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 2px var(--ink)}
.btn.small{padding:.5em .9em;font-size:.9rem}

/* top bar */
.topbar{position:sticky;top:0;z-index:1000;display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 18px;background:rgba(246,241,231,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.brand{font-size:clamp(1.05rem,5.2vw,1.35rem);color:var(--ink);text-decoration:none;white-space:nowrap}
.menu-btn{display:none;font:600 .95rem var(--sans);background:var(--ink);color:var(--white);border:0;border-radius:999px;padding:.5em 1em}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{color:var(--ink);text-decoration:none;font-weight:600;font-size:.95rem;padding:.45em .8em;border-radius:999px}
.nav a:hover,.nav a.on{background:var(--paper2)}
@media (max-width:760px){
  .menu-btn{display:block}
  .nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;background:var(--paper);padding:8px 12px 14px;border-bottom:1px solid var(--line)}
  .nav.open{display:flex}
  .nav a{font-size:1.1rem;padding:.7em .8em}
}

/* hero */
.hero{position:relative;overflow:hidden;background:linear-gradient(180deg,var(--paper) 0%,var(--paper2) 100%)}
.hero-in{display:grid;grid-template-columns:1fr;grid-template-areas:"head" "art" "copy";max-width:1180px;margin:0 auto}
.hero-head{grid-area:head;padding:22px 20px 0;position:relative;z-index:2}
.hero-art{grid-area:art;position:relative;margin:-10px auto 0;width:100%;max-width:560px}
.hero-art img{mix-blend-mode:multiply;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;-webkit-mask-image:radial-gradient(ellipse 95% 96% at 50% 50%,#000 74%,transparent 100%);mask-image:radial-gradient(ellipse 95% 96% at 50% 50%,#000 74%,transparent 100%)}
.hero-copy{grid-area:copy;padding:6px 20px 10px;position:relative;z-index:2}
.wordmark{font-size:clamp(2.3rem,13vw,6.8rem);line-height:.9;color:var(--ink);margin:.08em 0 0;max-width:100%;overflow-wrap:normal}
.wordmark span{display:block;white-space:nowrap}
.hero-head{min-width:0}
.tagline{font-family:var(--serif);font-weight:600;font-size:clamp(1.35rem,4.8vw,2rem);line-height:1.2;margin:0 0 .5em;max-width:24ch}
.lede{color:var(--ink2);max-width:46ch;margin:0 0 1.2em}
.hero-cta{display:flex;flex-wrap:wrap;gap:10px}
.maplabel{position:absolute;transform:translate(-50%,-50%);background:rgba(255,253,248,.92);color:var(--ink);text-decoration:none;
  font:700 .78rem var(--sans);letter-spacing:.06em;text-transform:uppercase;padding:.45em .8em;border-radius:999px;box-shadow:0 2px 10px rgba(20,50,74,.25);white-space:nowrap}
.maplabel:hover{background:var(--ink);color:var(--white)}
.maplabel small{display:block;font-size:.66rem;font-weight:600;letter-spacing:.04em;text-transform:none;color:var(--sea)}
.maplabel:hover small{color:#cfe6ea}
@media (min-width:900px){
  .hero-in{grid-template-columns:1.05fr 1fr;grid-template-areas:"head art" "copy art";grid-template-rows:auto 1fr;padding:20px 18px 0;column-gap:20px}
  .hero-head{padding:60px 0 0;align-self:end}
  .hero-copy{padding:18px 0 40px}
  .hero-art{max-width:none;margin:0}
}

/* sections */
section.band{padding:46px 0}
.band h2{font-size:clamp(2rem,7vw,3.2rem)}
.band .sub{color:var(--ink2);max-width:60ch;margin:-.2em 0 1.4em}
.routes{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.route-card{display:block;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:18px;text-decoration:none;color:var(--ink);transition:transform .15s}
.route-card:hover{transform:translateY(-2px);border-color:var(--ink)}
.route-card .codes{font-family:var(--serif);font-weight:700;font-size:1.5rem;letter-spacing:.04em}
.route-card .codes .arrow{color:var(--sea);margin:0 .2em}
.route-card h3{font-family:var(--serif);font-weight:600;font-size:1.25rem;margin:.2em 0}
.route-card p{margin:0;color:var(--ink2);font-size:.95rem}
.route-card .meta{margin-top:10px;font-size:.85rem;color:var(--sea);font-weight:600}

.themes{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media (min-width:700px){.themes{grid-template-columns:repeat(3,1fr);gap:14px}}
@media (min-width:1050px){.themes{grid-template-columns:repeat(4,1fr)}}
.tile{position:relative;display:block;border-radius:var(--radius);overflow:hidden;aspect-ratio:4/5;color:#fff;text-decoration:none;background:var(--ink)}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s}
.tile:hover img{transform:scale(1.04)}
.tile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,25,38,0) 35%,rgba(10,25,38,.82) 100%)}
.tile .t{position:absolute;left:12px;right:12px;bottom:12px;z-index:2}
.tile .t b{display:block;font-family:var(--fell);font-weight:400;text-transform:uppercase;letter-spacing:.02em;font-size:clamp(1.25rem,4.6vw,1.7rem);line-height:1}
.tile .t span{font-size:.8rem;opacity:.9}
.tile .count{position:absolute;top:10px;right:10px;z-index:2;background:rgba(255,253,248,.92);color:var(--ink);border-radius:999px;padding:.1em .6em;font-family:var(--serif);font-weight:700;font-size:.95rem}

.strip{display:grid;grid-auto-flow:column;grid-auto-columns:min(82%,320px);gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}
.strip>*{scroll-snap-align:start}

.lies{background:var(--ink);color:var(--paper)}
.lies h2{color:var(--white)}
.lies .sub{color:#c9d6df}
.lie-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin:0;padding:0;list-style:none}
.lie-list li{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);padding:16px}
.lie-list h3{font-family:var(--serif);font-weight:600;font-size:1.2rem;color:var(--white)}
.lie-list p{margin:0;color:#dbe4ea;font-size:.95rem}
.lies a.btn{background:var(--paper);color:var(--ink)}

/* cards */
.cards{display:grid;grid-template-columns:1fr;gap:12px}
@media (min-width:700px){.cards{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1050px){.cards{grid-template-columns:repeat(3,1fr)}}
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 14px;display:flex;flex-direction:column;gap:6px;position:relative}
.card .tag{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2)}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.card h3{font-family:var(--serif);font-weight:600;font-size:1.35rem;margin:0}
.card h3 a{color:var(--ink);text-decoration:none}
.card h3 a::after{content:"";position:absolute;inset:0}
.card .where{font-size:.88rem;color:var(--ink2)}
.card .take{margin:4px 0 2px;font-size:.98rem}
.card .facts{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:6px}
.chip{display:inline-block;font-size:.78rem;font-weight:600;background:var(--paper2);color:var(--ink);border-radius:999px;padding:.25em .7em}
.chip.free{background:#e2eed2;color:#36531a}
.chip.warn{background:#f6dcd4;color:#7d2a19}

/* page heads */
.pagehead{position:relative;color:#fff;background:var(--ink);overflow:hidden}
.pagehead img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.75}
.pagehead::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(10,25,38,.15),rgba(10,25,38,.8))}
.pagehead .wrap{position:relative;z-index:2;padding-top:90px;padding-bottom:26px}
.pagehead h1{font-size:clamp(2.6rem,11vw,5rem);line-height:.95}
.pagehead p{max-width:52ch;margin:0;font-size:1.05rem}
.pagehead .eyebrow{color:#cfe6ea}
.plainhead{padding:30px 0 6px}
.plainhead h1{font-size:clamp(2.4rem,10vw,4.4rem)}

/* filters */
.filters{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.fbtn{flex:none;font:600 .88rem var(--sans);border:1.5px solid var(--line);background:var(--white);color:var(--ink);border-radius:999px;padding:.45em .9em;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.fbtn.on{background:var(--ink);color:var(--white);border-color:var(--ink)}

/* planner */
.planner-controls{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:14px;display:grid;gap:12px;margin-bottom:16px}
.route-pick{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
@media (min-width:760px){.route-pick{grid-template-columns:repeat(4,1fr)}}
.rp{border:1.5px solid var(--line);border-radius:12px;padding:10px;background:var(--paper);text-decoration:none;color:var(--ink);display:block}
.rp.on{border-color:var(--ink);background:var(--ink);color:var(--white)}
.rp b{display:block;font-family:var(--serif);font-weight:700;font-size:1.15rem;letter-spacing:.03em}
.rp span{font-size:.8rem}
.weeks{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.stepper{display:inline-flex;align-items:center;border:1.5px solid var(--ink);border-radius:999px;overflow:hidden}
.stepper button{width:46px;height:44px;border:0;background:var(--white);font:700 1.4rem var(--serif);color:var(--ink);cursor:pointer}
.stepper output{min-width:110px;text-align:center;font-family:var(--serif);font-weight:700;font-size:1.25rem}
.notice{border-radius:12px;padding:12px 14px;background:#fff5dc;border:1px solid #ecd59a;font-size:.95rem}
.notice.bad{background:#f8e1da;border-color:#e3a594}
.mapbox{height:52vh;min-height:300px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:#dfe9ea}
.week{margin:26px 0 8px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;border-top:2px solid var(--ink);padding-top:12px}
.week h2{font-size:clamp(1.8rem,7vw,2.6rem);margin:0}
.week .via{color:var(--ink2);font-size:.92rem}
.endbox{background:var(--white);border:1px solid var(--line);border-left:6px solid var(--moss);border-radius:var(--radius);padding:16px 18px;margin:16px 0}
.endbox.sell{border-left-color:var(--ochre)}
.endbox.ferry{border-left-color:var(--sea)}
.endbox h3{font-family:var(--serif);font-weight:700;font-size:1.3rem}
.endbox ul{margin:0;padding-left:1.1em}
.endbox li{margin:.3em 0}
.stat{display:inline-flex;flex-direction:column;margin-right:22px}
.stat b{font-family:var(--serif);font-weight:700;font-size:2rem;line-height:1}
.stat span{font-size:.8rem;color:var(--ink2)}

/* spot page */
.spot-grid{display:grid;gap:18px}
@media (min-width:900px){.spot-grid{grid-template-columns:1.2fr 1fr}}
.take-big{font-family:var(--serif);font-weight:600;font-size:clamp(1.3rem,4.6vw,1.65rem);line-height:1.3;border-left:5px solid var(--ochre);padding-left:14px;margin:8px 0 18px}
dl.facts{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:0}
dl.facts dt{font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink2);padding-top:3px}
dl.facts dd{margin:0}
.small-map{height:300px}

.credits-list{padding-left:1.1em}
.credits-list li{margin:.4em 0}

/* footer */
.footer{background:var(--ink);color:#d9e2e8;margin-top:50px;padding:34px 0 20px;font-size:.92rem}
.footer a{color:#fff}
.footer-in{display:grid;gap:18px}
@media (min-width:760px){.footer-in{grid-template-columns:2fr 1fr}}
.footer-mark{font-size:1.8rem;color:#fff}
.footer-links{display:flex;flex-direction:column;gap:6px}
.credit{margin-top:22px;padding-top:14px;border-top:1px solid rgba(255,255,255,.15);font-size:.88rem}

.leaflet-popup-content{font-family:var(--sans);font-size:.95rem}
.leaflet-popup-content b{font-family:var(--serif);font-size:1.15rem}
.pinnum{background:var(--ink);color:#fff;border:2px solid #fff;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font:700 .8rem var(--serif);box-shadow:0 1px 4px rgba(0,0,0,.4)}
.empty{padding:20px;background:var(--white);border-radius:var(--radius);border:1px dashed var(--line)}
:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}
