:root{
  --ink:#101d26;
  --paper:#f2ede2;
  --paper-dim:#e9e2d2;
  --ice:#7fa8bd;
  --ice-deep:#3d6478;
  --brass:#b8863f;
  --line:#d8cfba;
  --text:#1d2a33;
  --text-soft:#5b6a72;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:#e3dcc9;
  color:var(--text);
  font-family:'Inter',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--ice-deep); text-decoration-thickness:1px; text-underline-offset:2px;}
a:hover{color:var(--brass);}
img{max-width:100%; height:auto; display:block;}
.eyebrow{
  font-family:'IBM Plex Mono',monospace;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase;
  color:var(--brass);
}

/* Topbar */
.topbar{ position:sticky; top:0; z-index:40; background:var(--ink); color:var(--paper); }
.topbar-inner{
  display:flex; align-items:center; gap:.9rem;
  max-width:1180px; margin:0 auto; padding:.85rem 1.1rem;
}
.brand{ font-family:'Fraunces',serif; font-weight:600; font-size:1.05rem;
  color:var(--paper); text-decoration:none; }
.brand small{
  display:block; font-family:'IBM Plex Mono',monospace; font-weight:400;
  font-size:.62rem; letter-spacing:.12em; color:#93a6ae; text-transform:uppercase; margin-top:.15rem;
}
#menuBtn{
  display:none; background:none; border:1px solid #3a4a53; color:var(--paper);
  border-radius:6px; width:38px; height:38px; font-size:1rem; cursor:pointer; flex:none;
}

/* Shell / layout */
.shell{
  display:grid; grid-template-columns:250px 1fr; max-width:1180px; margin:0 auto; min-width:0;
  background:var(--paper);
  box-shadow:0 0 0 1px var(--line), 0 25px 70px -35px rgba(16,29,38,.25);
}

/* Sidebar */
.sidebar{ background:var(--ink); color:#c9d3d7; padding:1.4rem 1rem 3rem; min-height:calc(100vh - 58px); }
.sidebar .section-label{
  font-family:'IBM Plex Mono',monospace; font-size:.66rem; letter-spacing:.14em;
  text-transform:uppercase; color:#5b7482; margin:1.3rem 0 .55rem .4rem;
}
.sidebar .section-label:first-child{ margin-top:0; }
.stop-list{ list-style:none; margin:0; padding:0; }
.stop-list li a{
  display:flex; align-items:baseline; gap:.55rem; text-decoration:none;
  padding:.42rem .4rem; border-radius:6px; font-size:.87rem; color:#c9d3d7;
}
.stop-list li a .num{
  font-family:'IBM Plex Mono',monospace; font-size:.68rem; color:#5b7482; flex:none; width:1.4rem;
}
.stop-list li a:hover{ background:#1b2a33; }
.stop-list li a.current{ background:#1b2a33; color:#fff; box-shadow:inset 3px 0 0 var(--brass); }
.stop-list li a.current .num{ color:var(--brass); }
.plain-links{ list-style:none; margin:0; padding:0; }
.plain-links li a{ display:block; padding:.4rem .4rem; font-size:.85rem; color:#9db0b8; text-decoration:none; border-radius:6px; }
.plain-links li a:hover{ background:#1b2a33; color:#fff; }

/* Voyage strip */
.voyage-strip{ background:var(--paper-dim); border-bottom:1px solid var(--line); padding:.9rem 1.4rem; overflow-x:auto; min-width:0; }
.content-col{ min-width:0; }
.voyage-track{ display:flex; align-items:center; min-width:max-content; position:relative; }
.voyage-track::before{ content:""; position:absolute; left:0; right:0; top:50%; height:1px; background:var(--line); transform:translateY(-50%); z-index:0; }
.waypoint{ position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; width:84px; flex:none; text-decoration:none; color:var(--text-soft); }
.waypoint .dot{ width:9px; height:9px; border-radius:50%; background:var(--paper-dim); border:2px solid var(--ice); margin-bottom:.4rem; }
.waypoint .date{ font-family:'IBM Plex Mono',monospace; font-size:.62rem; color:var(--text-soft); }
.waypoint .place{ font-size:.68rem; text-align:center; margin-top:.15rem; line-height:1.2; max-width:80px; }
.waypoint.current .dot{ background:var(--brass); border-color:var(--brass); width:11px; height:11px; }
.waypoint.current .place{ color:var(--ink); font-weight:600; }
.waypoint.done .dot{ background:var(--ice); border-color:var(--ice); }

/* Main content */
main{ padding:2.4rem 2.6rem 4rem; }
.page-head{ margin:0 auto 1.8rem; max-width:66ch; }
.page-head h1{ font-family:'Fraunces',serif; font-weight:500; font-size:2.6rem; line-height:1.05; margin:.35rem 0 .3rem; color:var(--ink); display:flex; align-items:baseline; gap:.3em; flex-wrap:wrap; }
.page-head .meta{ font-family:'IBM Plex Mono',monospace; font-size:.85rem; color:var(--ice-deep); }
.h1-map-link{ display:inline-flex; align-items:center; }
.h1-map-icon{ height:1em; width:1em; object-fit:contain; vertical-align:middle; }

.eyebrow{ max-width:66ch; margin:0 auto; }

.body-copy{ max-width:66ch; margin:0 auto; }
.body-copy p{ font-size:1.02rem; line-height:1.75; color:var(--text); margin:0 0 1.25rem; }
.body-copy i{ color:var(--text-soft); }

figure.photo{ margin:1.8rem auto; max-width:66ch; text-align:center; }
figure.photo img{
  border-radius:2px; box-shadow:0 1px 2px rgba(16,29,38,.08), 0 12px 28px -16px rgba(16,29,38,.4);
  cursor:zoom-in; margin:0 auto;
}
figure.photo figcaption{
  font-family:'Fraunces',serif; font-style:italic; font-size:.92rem; color:var(--text-soft);
  margin-top:.6rem;
}
.photo--single{ max-width:min(66ch, 100%); }

/* Journey nav */
.journey-nav{
  display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--line);
  border:1px solid var(--line); margin:2.6rem auto 0; border-radius:4px; overflow:hidden; max-width:66ch;
}
.journey-nav a{ background:var(--paper); text-decoration:none; padding:1.1rem 1.3rem; display:flex; flex-direction:column; gap:.3rem; transition:background .15s ease; }
.journey-nav a:hover{ background:var(--paper-dim); }
.journey-nav .next{ text-align:right; align-items:flex-end; }
.journey-nav .dir{ font-family:'IBM Plex Mono',monospace; font-size:.65rem; letter-spacing:.1em; text-transform:uppercase; color:var(--brass); }
.journey-nav .place{ font-family:'Fraunces',serif; font-size:1.15rem; color:var(--ink); }

footer.note{
  max-width:66ch; margin:3rem auto 0; padding:0 2.6rem 3rem; font-size:.82rem; color:var(--text-soft); line-height:1.6;
}
footer.note a{ color:var(--text-soft); }

/* Home page extras */
.hero-head h1{ font-size:2.9rem; }
.book-promo, .tsf-box{
  display:flex; gap:1.6rem; align-items:flex-start; background:var(--paper-dim);
  border:1px solid var(--line); border-radius:4px; padding:1.4rem; margin:0 0 1.8rem;
}
.book-promo .book-cover{ width:150px; flex:none; border-radius:2px; box-shadow:0 8px 20px -10px rgba(16,29,38,.4); cursor:zoom-in; }
.book-kicker{
  font-family:'IBM Plex Mono',monospace; font-size:.7rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--brass); margin:0 0 .5rem !important;
}
.tsf-box img{ width:130px; flex:none; border-radius:2px; }
.tsf-links{ list-style:none; padding:0; margin:.6rem 0 0; font-size:.88rem; }
.tsf-links li{ margin-bottom:.3rem; }
.map-instruction{ text-align:center; font-family:'IBM Plex Mono',monospace; font-size:.8rem; letter-spacing:.02em; }
.kmz-link{
  display:inline-block; font-family:'IBM Plex Mono',monospace; font-size:.85rem;
  background:var(--ink); color:var(--paper) !important; padding:.7rem 1.3rem; border-radius:4px;
  text-decoration:none; letter-spacing:.02em;
}
.kmz-link:hover{ background:var(--ice-deep); }
figure.photo.map-photo{ max-width:640px; margin:1.8rem auto; text-align:center; }
figure.photo.map-photo img{ margin:0 auto; }
.pull-quote{
  border-left:3px solid var(--brass); margin:2rem 0; padding:.2rem 0 .2rem 1.4rem; max-width:64ch;
}
.pull-quote p{ font-family:'Fraunces',serif; font-style:normal; font-size:1.1rem; color:var(--ink); line-height:1.6; margin:0; }

@media (max-width:600px){
  .book-promo, .tsf-box{ flex-direction:column; align-items:center; text-align:center; }
}

/* Lightbox for click-to-enlarge photos */
.lightbox{
  position:fixed; inset:0; z-index:100; background:rgba(16,29,38,.9);
  display:none; align-items:center; justify-content:center; padding:2rem; cursor:zoom-out;
}
.lightbox.open{ display:flex; }
.lightbox img{
  max-width:100%; max-height:100%; width:auto; height:auto;
  border-radius:2px; box-shadow:0 20px 60px rgba(0,0,0,.5);
}
.lightbox .lb-caption{
  position:absolute; bottom:1.4rem; left:0; right:0; text-align:center;
  font-family:'Fraunces',serif; font-style:italic; color:#e9e2d2; font-size:.95rem; padding:0 2rem;
}
.lightbox .lb-close{
  position:absolute; top:1.2rem; right:1.4rem; background:none; border:1px solid rgba(255,255,255,.3);
  color:#e9e2d2; width:38px; height:38px; border-radius:6px; font-size:1.1rem; cursor:pointer;
}

/* Mobile */
.backdrop{ display:none; }
@media (max-width:860px){
  .shell{ display:block; }
  #menuBtn{ display:block; }
  .sidebar{
    position:fixed; top:0; left:0; bottom:0; width:270px; transform:translateX(-100%);
    transition:transform .25s ease; z-index:50; min-height:100vh; overflow-y:auto;
    box-shadow:20px 0 40px rgba(0,0,0,.25);
  }
  .sidebar.open{ transform:translateX(0); }
  .backdrop.open{ display:block; position:fixed; inset:0; background:rgba(16,29,38,.45); z-index:45; }
  main{ padding:1.6rem 1.2rem 3rem; }
  .page-head h1{ font-size:1.9rem; }
  .voyage-strip{ padding:.8rem 1rem; }
  footer.note{ padding:0 1.2rem 2.5rem; }
  .journey-nav{ grid-template-columns:1fr; }
  .journey-nav .next{ text-align:left; align-items:flex-start; }
}
