
:root{
  --paper:#FBF9F5; --raise:#F3EFE6; --ink:#1B1A17; --ink-2:#6C6960; --ink-3:#918D82;
  --line:#E7E2D6; --hair:#EEEADF;
  --bcn:#AA4E1C; --rom:#8E362A; --par:#37536F; --lon:#2C5A4A;
  --city:#8E362A;
  --go:#2E7D52; --go-ink:#1F5D3C; --wait:#C07A24; --bad:#A8402E;
  --disp:"Fraunces","Iowan Old Style",Georgia,serif;
  --disp-ls:.0em;
  --sans:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  --wrap:680px; --gut:22px;
  --shadow:0 18px 50px -28px rgba(24,20,12,.34);
}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){
  --paper:#141310; --raise:#1B1A15; --ink:#ECE7DB; --ink-2:#9C978A; --ink-3:#7C776B;
  --line:#2A2820; --hair:#211F19;
  --bcn:#D98A4C; --rom:#D0664F; --par:#7BA0C4; --lon:#5CA588;
  --city:#D0664F;
  --go:#6FCF97; --go-ink:#8FE0B0; --wait:#E0A060; --bad:#E08069;
  --shadow:0 20px 60px -30px rgba(0,0,0,.7);
}}
:root[data-theme=dark]{
  --paper:#141310; --raise:#1B1A15; --ink:#ECE7DB; --ink-2:#9C978A; --ink-3:#7C776B;
  --line:#2A2820; --hair:#211F19;
  --bcn:#D98A4C; --rom:#D0664F; --par:#7BA0C4; --lon:#5CA588;
  --city:#D0664F;
  --go:#6FCF97; --go-ink:#8FE0B0; --wait:#E0A060; --bad:#E08069;
  --shadow:0 20px 60px -30px rgba(0,0,0,.7);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.68;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
::selection{background:var(--city);color:#fff}
a{color:inherit;text-decoration:none}
p a,li a,.md a{border-bottom:1px solid color-mix(in srgb,var(--city) 45%,transparent);transition:border-color .15s}
p a:hover,li a:hover,.md a:hover{border-bottom-color:var(--city)}
:focus-visible{outline:2px solid var(--city);outline-offset:3px;border-radius:2px}
img{max-width:100%;display:block}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.disp{font-family:var(--disp);font-weight:400;letter-spacing:var(--disp-ls)}

.eyebrow{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ink-3)}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.rule{border:0;border-top:1px solid var(--line);margin:44px 0}

/* ---------- fixed top bar: transparent over hero, solidifies on scroll ---------- */
.top{position:fixed;inset:0 0 auto 0;z-index:60;transition:background .3s,border-color .3s,color .3s;
  color:#F3EFE6;border-bottom:1px solid transparent}
.top.solid{background:color-mix(in srgb,var(--paper) 96%,transparent);
  backdrop-filter:saturate(1.3) blur(12px);border-bottom-color:var(--line);color:var(--ink)}
.top .in{max-width:var(--wrap);margin:0 auto;padding:12px var(--gut);display:flex;align-items:center;gap:12px}
.crumbs{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;display:flex;gap:7px;
  align-items:center;flex-wrap:wrap;min-width:0;text-transform:uppercase}
.crumbs a{opacity:.82}.crumbs a:hover{opacity:1}
.crumbs .sep{opacity:.4}.crumbs .here{opacity:1;font-weight:500}
.tgl{margin-left:auto;width:30px;height:30px;border-radius:99px;border:1px solid color-mix(in srgb,currentColor 55%,transparent);
  background:rgba(120,110,95,.18);color:inherit;cursor:pointer;font-size:12px;opacity:.85;flex-shrink:0;line-height:1;
  backdrop-filter:blur(4px)}
.top.solid .tgl{background:transparent}
.tgl:hover{opacity:1}
.nojs .top{position:sticky;background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:blur(10px);border-bottom-color:var(--line);color:var(--ink)}

/* ---------------------------------- hero ---------------------------------- */
.hero{position:relative;width:100vw;left:50%;margin-left:-50vw;
  min-height:var(--hero-h,72vh);display:flex;align-items:flex-end;overflow:hidden;background:var(--ink)}
.hero.tall{--hero-h:88vh}
.hero.band{--hero-h:58vh}
.hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  object-position:var(--hero-pos,50% 50%)}
.hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(14,11,7,.52) 0%,rgba(14,11,7,.10) 26%,rgba(14,11,7,.24) 58%,rgba(14,11,7,.88) 100%)}
.hero .inner{position:relative;z-index:2;max-width:var(--wrap);margin:0 auto;width:100%;
  padding:96px var(--gut) 44px;color:#F6F2E9}
.hero .eyebrow{color:#F1E7D5;text-shadow:0 1px 12px rgba(0,0,0,.65)}
.hero h1{font-family:var(--disp);font-weight:400;letter-spacing:var(--disp-ls);
  line-height:1.02;margin:.18em 0 .16em;text-wrap:balance;
  font-size:clamp(2.5rem,7.4vw,4.6rem);text-shadow:0 2px 34px rgba(0,0,0,.4)}
.hero h1 em{font-style:italic}
.hero .sub{font-size:1.03rem;max-width:44ch;color:#F0E9DB;text-wrap:pretty;
  text-shadow:0 1px 16px rgba(0,0,0,.5)}
.hero .citline{width:52px;height:3px;background:var(--city);margin-bottom:16px}
.cd{display:inline-flex;align-items:baseline;flex-wrap:wrap;justify-content:center;gap:4px 9px;
  margin-top:20px;padding:7px 15px 6px;max-width:100%;border:1px solid var(--line);border-radius:22px}
.cd b{font-family:var(--disp);font-weight:400;font-size:1.45rem;line-height:1;color:var(--city);
  font-variant-numeric:tabular-nums}
.cd span{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2)}
.hero .cd{border-color:rgba(246,242,233,.4);background:rgba(14,11,7,.34);backdrop-filter:blur(6px)}
.hero .cd b{color:#F6F2E9;text-shadow:0 1px 14px rgba(0,0,0,.5)}
.hero .cd span{color:#EDE4D2;text-shadow:0 1px 10px rgba(0,0,0,.5)}

/* --------------------------------- home ---------------------------------- */
.lede{font-size:1.22rem;line-height:1.6;color:var(--ink);max-width:34ch}
.intro{color:var(--ink-2);font-size:1.06rem;margin-top:16px;max-width:60ch}
main{display:block;padding-bottom:90px}
.section{padding-top:8px}
h2.h{font-family:var(--disp);font-weight:400;letter-spacing:var(--disp-ls);
  font-size:clamp(1.8rem,4.6vw,2.5rem);line-height:1.08;margin:54px 0 4px;text-wrap:balance}
h3.sub{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3);margin:40px 0 12px;font-weight:500}
p+p{margin-top:12px}
.col{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}

/* route: stacked full-bleed city panels */
.route{margin-top:40px}
.panel{position:relative;width:100vw;left:50%;margin-left:-50vw;min-height:78vh;
  display:flex;align-items:flex-end;overflow:hidden;background:var(--ink)}
.panel+.panel{margin-top:3px}
.panel img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.panel:hover img{transform:scale(1.035)}
.panel::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(12,10,7,.30) 0%,rgba(12,10,7,.10) 34%,rgba(12,10,7,.78) 100%)}
.panel .p-in{position:relative;z-index:2;max-width:var(--wrap);margin:0 auto;width:100%;
  padding:110px var(--gut) 40px;color:#F6F2E9}
.panel .p-num{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:#F1E7D5;text-shadow:0 1px 12px rgba(0,0,0,.65)}
.panel h3{font-family:var(--pf);font-weight:400;font-size:clamp(2.6rem,7vw,4rem);line-height:1;margin:.12em 0 .18em;
  text-shadow:0 2px 30px rgba(0,0,0,.4)}
.panel p{font-size:1rem;max-width:32ch;color:#EFE7D9;text-shadow:0 1px 14px rgba(0,0,0,.5)}
.panel .p-days{font-family:var(--mono);font-size:11px;letter-spacing:.08em;margin-top:12px;color:#E0D5C0}
.pf-barcelona{--pf:"DM Serif Display",Georgia,serif}
.pf-rome{--pf:"Cormorant",Georgia,serif}
.pf-paris{--pf:"Bodoni Moda",Georgia,serif}
.pf-london{--pf:"Libre Caslon Display",Georgia,serif}

/* two secondary links (budget / prep) */
.duo{display:grid;gap:14px;margin-top:30px}
@media(min-width:620px){.duo{grid-template-columns:1fr 1fr}}
@media(min-width:820px){.duo.trio{grid-template-columns:1fr 1fr 1fr}}

.cta{display:block;margin:26px 0 4px;padding:16px 18px;border:1px solid var(--city);
  border-left-width:4px;border-radius:3px;background:var(--raise);font-size:.95rem;color:var(--ink)}
.cta:hover{background:color-mix(in srgb,var(--city) 8%,var(--raise))}
.cta b{font-weight:600}
.duo a{display:block;padding:22px;border:1px solid var(--line);border-radius:3px;background:var(--raise)}
.duo a:hover{border-color:var(--city)}
.duo h4{font-family:var(--disp);font-weight:400;font-size:1.5rem;margin-bottom:6px}
.duo p{font-size:.93rem;color:var(--ink-2)}

/* ------------------------------- day index ------------------------------ */
.days{margin-top:22px;border-top:1px solid var(--line)}
.days a{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:baseline;
  padding:17px 2px;border-bottom:1px solid var(--line)}
.days a:hover{background:var(--raise)}
.days .d-n{font-family:var(--disp);font-weight:400;font-size:1.7rem;line-height:1;color:var(--city);min-width:1.4em}
.days .d-b b{font-weight:500;font-size:1.04rem}
.days .d-b span{display:block;font-size:.9rem;color:var(--ink-2);margin-top:2px}
.days .d-x{font-family:var(--mono);font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.days.mini .d-n{font-size:12px;font-family:var(--mono);color:var(--ink-3);align-self:center}

/* --------------------------------- prose -------------------------------- */
.drop::first-letter{float:left;font-family:var(--disp);font-weight:400;font-size:3.5em;
  line-height:.82;padding:.06em .12em 0 0;color:var(--city)}
.facts{display:flex;flex-wrap:wrap;gap:6px 26px;margin:22px 0;font-family:var(--mono);
  font-size:12px;color:var(--ink-2)}
.facts b{color:var(--ink);font-weight:500}
.note{border-left:2px solid var(--city);padding:2px 0 2px 18px;margin:22px 0;color:var(--ink-2);font-size:.98rem}
.note b{color:var(--ink);font-weight:500}
.opt{margin:18px 0;padding:12px 14px;background:var(--raise);border-radius:3px;font-size:.9rem;color:var(--ink-2)}
.opt b{color:var(--ink);font-weight:500}
.calflag{display:inline-flex;align-items:center;gap:8px;margin:16px 0 4px;padding:6px 12px;
  border:1px solid var(--city);border-radius:99px;font-family:var(--mono);font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;color:var(--city)}
.calflag::before{content:"";width:6px;height:6px;border-radius:99px;background:var(--city)}
.pp{display:inline-block;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.11em;
  text-transform:uppercase;background:var(--wait);color:#1c1305;padding:2px 8px 1px;border-radius:3px;
  margin:3px 6px 3px 0;vertical-align:middle}
.ppline{margin:14px 0;font-size:.92rem;color:var(--ink)}
.ppline b{font-weight:600}
.pp.dl{background:#2C5E8A;color:#eaf3fb}
:root:not([data-theme=light]) .pp.dl{background:#6AA6D8;color:#0c1c2b}
:root[data-theme=dark] .pp.dl{background:#6AA6D8;color:#0c1c2b}
.ppline a{color:var(--city);text-decoration:underline}

/* ---- dress-code palette swatches + wardrobe diagram ---- */
.pal{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 6px}
.sw{flex:0 0 auto;width:96px}
.sw i{display:block;height:52px;border-radius:3px;border:1px solid rgba(120,110,95,.28)}
.sw b{display:block;font-size:11.5px;margin-top:5px;color:var(--ink);font-weight:500;line-height:1.25}
.sw span{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.02em}
.wcap{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-3);margin:20px 0 2px}
@media(max-width:520px){.sw{width:84px}}

blockquote.pull{font-family:var(--disp);font-weight:400;font-size:clamp(1.5rem,4vw,2rem);
  line-height:1.28;margin:30px 0;padding-left:20px;border-left:3px solid var(--city);text-wrap:pretty}
blockquote.pull cite{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);font-style:normal;margin-top:14px}

/* --------------------------------- tables ------------------------------- */
.tscroll{overflow-x:auto;margin:18px 0}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:top}
thead th{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);font-weight:500;white-space:nowrap;border-bottom-color:var(--ink-3)}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:right;font-family:var(--mono);white-space:nowrap}
.rowsum td{border-top:2px solid var(--ink);font-weight:600}

/* --------------------------------- tags --------------------------------- */
.tag{display:inline-block;font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;
  text-transform:uppercase;padding:3px 7px 2px;border:1px solid var(--line);border-radius:2px;
  color:var(--ink-3);white-space:nowrap;vertical-align:middle}
.tag.ok{border-color:var(--city);color:var(--city)}
.tag.todo{border-color:var(--ink-3);color:var(--ink-3)}
.tag.src{border:0;padding-left:0;color:var(--ink-3)}

/* -------------------------------- day page ------------------------------ */
.subnav{position:sticky;top:46px;z-index:40;width:100vw;left:50%;margin-left:-50vw;
  background:color-mix(in srgb,var(--paper) 96%,transparent);
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.subnav .in{max-width:var(--wrap);margin:0 auto;padding:11px var(--gut);display:flex;gap:18px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;overflow-x:auto}
.subnav a{color:var(--ink-2);white-space:nowrap}.subnav a:hover{color:var(--city)}

.wx{display:flex;flex-wrap:wrap;gap:4px 18px;margin:24px 0;padding:14px 0;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:13px}
.wx .t{font-family:var(--mono);color:var(--ink)}
.wx .we{color:var(--ink-2)}

.watch{display:flex;gap:14px;align-items:baseline;margin:24px 0;padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.watch .wl{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap}
.watch p{font-size:.95rem}

.block{margin-top:46px}
.block>h2{font-family:var(--disp);font-weight:400;font-size:clamp(1.7rem,4.4vw,2.3rem);
  margin-bottom:4px;display:flex;align-items:baseline;gap:12px}
.block>h2 .bn{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--city);text-transform:uppercase}
.chips{display:flex;flex-wrap:wrap;gap:5px 14px;margin:8px 0 4px;font-family:var(--mono);
  font-size:11px;letter-spacing:.04em;color:var(--ink-3)}
.chips a:hover{color:var(--city)}

.sched{margin-top:14px}
.slot{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:12px 0;border-top:1px solid var(--hair)}
.slot:first-child{border-top:0}
.slot .st{font-family:var(--mono);font-size:11.5px;color:var(--city);padding-top:3px;letter-spacing:.02em}
.slot .sl-w{font-size:1rem}.slot .sl-w b{font-weight:600}
.slot.move .sl-w{font-size:.9rem;color:var(--ink-2)}
.slot.move .st{color:var(--ink-3)}
.slot .sn{font-size:.86rem;color:var(--ink-2);margin-top:4px}
.slot .sn a{font-size:.86rem}

.meal{padding:18px 0;border-top:1px solid var(--line)}
.meal:first-of-type{border-top:0}
.meal .mh{display:flex;justify-content:space-between;gap:12px;align-items:baseline;flex-wrap:wrap}
.meal .ml{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.meal .mp{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.meal .mt{font-family:var(--disp);font-weight:400;font-size:1.4rem;margin:3px 0 4px}
.meal .md{font-size:.95rem;color:var(--ink-2)}
.meal .mo{font-size:.93rem;margin-top:8px}.meal .mo b{font-weight:600;color:var(--ink)}
.meal .mx{margin-top:9px;display:flex;gap:16px;font-family:var(--mono);font-size:11.5px}

.docs{margin:18px 0;padding:15px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  font-size:.9rem;color:var(--ink-2)}
.docs b{color:var(--ink);font-weight:500}
.ics{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-family:var(--mono);
  font-size:11.5px;letter-spacing:.06em;color:var(--city);border-bottom:1px solid var(--city);padding-bottom:2px}

.tips{display:grid;gap:0;margin-top:14px}
@media(min-width:640px){.tips{grid-template-columns:1fr 1fr;gap:0 34px}}
.tip{padding:15px 0;border-top:1px solid var(--line)}
.tip .tl{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:5px;color:var(--city)}
.tip p{font-size:.93rem;color:var(--ink-2)}
.tip .src{display:block;margin-top:6px;font-family:var(--mono);font-size:10px;color:var(--ink-3)}

.look{margin-top:14px}
.look li{list-style:none;padding:12px 0;border-top:1px solid var(--hair);font-size:.95rem;color:var(--ink-2)}
.look li b{color:var(--ink);font-weight:500}

dl.eat{margin-top:14px}
dl.eat>div{display:grid;grid-template-columns:1fr;gap:2px;padding:13px 0;border-top:1px solid var(--hair)}
@media(min-width:620px){dl.eat>div{grid-template-columns:210px 1fr;gap:18px;align-items:baseline}}
dl.eat dt{font-family:var(--disp);font-weight:400;font-size:1.15rem;line-height:1.2}
dl.eat dd{font-size:.92rem;color:var(--ink-2);line-height:1.55}

.res{margin-top:16px;display:flex;flex-direction:column;gap:2px}
.res .r{padding:16px 0;border-top:1px solid var(--line)}
.res .r:first-child{border-top:0}
.res .rt{font-family:var(--disp);font-weight:400;font-size:1.3rem;line-height:1.15}
.res .rw{font-family:var(--mono);font-size:12px;color:var(--city);margin-top:5px;letter-spacing:.02em}
.res .rd{font-size:.92rem;color:var(--ink-2);margin-top:5px;line-height:1.55}
.res .rl{margin-top:9px;display:flex;flex-wrap:wrap;gap:8px 10px}
.res .rl a{font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;border:1px solid var(--city);
  color:var(--city);padding:5px 10px;border-radius:3px}
.res .rl a:hover{background:var(--city);color:#fff}
.res .rdo{font-size:.9rem;margin-top:9px;padding:9px 12px;background:var(--raise);border-radius:3px;color:var(--ink)}
.res .rdo b{font-weight:600}
.res .rb{font-size:.88rem;margin-top:8px;padding:8px 12px;border:1px solid var(--line);border-left:2px solid var(--city);
  border-radius:3px;color:var(--ink-2);line-height:1.5}
.res .rb b{color:var(--ink);font-weight:600}
.res .r.booked{border-left:3px solid var(--go);padding-left:15px}
.res .r.pending{border-left:3px solid var(--wait);padding-left:15px;
  background:linear-gradient(90deg,color-mix(in srgb,var(--wait) 8%,transparent),transparent 55%)}
.rstat{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  margin-top:7px;padding:2px 8px 1px;border-radius:99px;border:1px solid currentColor}
.rstat.booked{color:var(--go)}
.rstat.pending{color:var(--wait)}
.rbooked{font-size:.9rem;margin-top:8px;padding:9px 12px;border-radius:3px;
  background:color-mix(in srgb,var(--go) 10%,var(--raise));color:var(--ink);line-height:1.5}
.rbooked b{font-weight:600;color:var(--go-ink)}
.dash{margin:24px 0 10px;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.dash .dh{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:13px 16px;background:var(--raise)}
.dash .dh b{font-family:var(--disp);font-weight:400;font-size:1.15rem}
.dash .dh span{font-family:var(--mono);font-size:11px;color:var(--ink-2);letter-spacing:.04em;white-space:nowrap}
.dash .dbar{height:6px;background:var(--line)}
.dash .dbar i{display:block;height:100%;background:var(--go)}
.dash .dl>summary{display:none}
.dash .dl>ul{display:block}
.dash ul{list-style:none;margin:0;padding:10px 16px 14px;column-gap:26px}
@media(min-width:620px){.dash ul{columns:2}}
/* on phones the jump list collapses so it isn't a two-screen scroll past */
@media(max-width:640px){
  .dash .dl:not([open])>ul{display:none}
  .dash .dl>summary{display:flex;justify-content:space-between;align-items:center;gap:10px;
    padding:11px 16px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;
    text-transform:uppercase;color:var(--ink-2);cursor:pointer;list-style:none;
    border-top:1px solid var(--line)}
  .dash .dl>summary::-webkit-details-marker{display:none}
  .dash .dl>summary span{font-size:12px;letter-spacing:0;color:var(--ink-3)}
  .dash .dl>summary::after{content:"\203A";transform:rotate(90deg);font-size:15px;color:var(--ink-3)}
  .dash .dl[open]>summary::after{transform:rotate(-90deg)}
}
.dash li{padding:5px 0;font-size:.9rem;color:var(--ink-2);break-inside:avoid;display:flex;gap:9px;align-items:baseline}
.dash li::before{font-family:var(--mono);font-size:12px;flex:0 0 auto}
.dash li.done{color:var(--ink)}
.dash li.done::before{content:"\2713";color:var(--go)}
.dash li.todo::before{content:"\25CB";color:var(--wait)}
.dash li a{color:inherit;border-bottom:1px solid transparent}
.dash li a:hover{border-bottom-color:currentColor}
.res .r{scroll-margin-top:76px}
.res .r:target{animation:rflash 2.4s ease-out 1}
@keyframes rflash{0%,18%{background:color-mix(in srgb,var(--city) 12%,transparent)}100%{background:transparent}}
.res .rl a.vch{border-color:var(--go);color:var(--go)}
.res .rl a.vch:hover{background:var(--go);color:var(--paper)}
/* ---- lodging decision cards + price-drift summary ---- */
.drift{margin:6px 0 14px;border:1px solid var(--line);border-radius:5px;padding:13px 15px;background:var(--raise)}
.drift-note{font-size:.86rem;line-height:1.55;color:var(--ink-2);margin:0}
.drift-note b{color:var(--ink)}
.drift table{width:100%;border-collapse:collapse;margin:12px 0 4px;font-size:.84rem}
.drift th,.drift td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}
.drift th{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);font-weight:400}
.drift td.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.drift td.n.over{color:var(--wait)}
.drift td.n.in{color:var(--go-ink)}
.drift .drift-tot td{border-bottom:0;border-top:2px solid var(--ink-3);font-weight:600;color:var(--ink)}
.drift-foot{font-size:.8rem;line-height:1.5;color:var(--ink-3);margin:6px 0 0}
.drift-foot b{color:var(--ink-2)}

.lcard{margin-top:12px;border:1px solid var(--line);border-radius:6px;overflow:hidden;
  border-left:4px solid var(--ink-3)}
.lcard.lc-up,.lcard.lc-con{border-left-color:var(--wait)}
.lcard.lc-val,.lcard.lc-stop{border-left-color:var(--go)}
.lc-photo{margin:0;line-height:0;background:var(--raise)}
.lc-photo img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.lc-match{padding:11px 15px;background:color-mix(in srgb,var(--go) 7%,var(--raise));
  border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px}
.lc-match-lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--go-ink)}
.lc-match b{font-family:var(--disp);font-weight:400;font-size:1.1rem;color:var(--ink);line-height:1.25}
.lc-match-sub{font-size:.82rem;color:var(--ink-2);line-height:1.5}
.lc-top{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;padding:12px 15px 10px;background:var(--raise)}
.lc-label{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;flex:0 0 auto}
.lcard.lc-up .lc-label,.lcard.lc-con .lc-label{color:var(--wait)}
.lcard.lc-val .lc-label,.lcard.lc-stop .lc-label{color:var(--go-ink)}
.lc-pick{font-size:.95rem;color:var(--ink-2)}
.lc-pick b{font-family:var(--disp);font-weight:400;font-size:1.25rem;color:var(--ink);display:block;line-height:1.15}
.lc-pick i{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;color:var(--ink-3);font-style:normal}
.lc-money{padding:2px 15px}
.lc-mrow{display:grid;grid-template-columns:9.5em auto 1fr;gap:4px 12px;align-items:baseline;
  padding:9px 0;border-bottom:1px solid var(--hair)}
.lc-mrow:last-child{border-bottom:0}
.lc-k{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.lc-v{font-family:var(--mono);font-size:1rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.lc-sub{font-size:.8rem;color:var(--ink-3);line-height:1.4}
.lc-diff .lc-v{font-size:1.1rem}
.lc-diff.over .lc-v{color:var(--wait)}
.lc-diff.in .lc-v{color:var(--go-ink)}
.lc-diff.over .lc-k,.lc-diff.in .lc-k{color:var(--ink-2)}
.lc-verdict{padding:11px 15px 0;font-family:var(--disp);font-size:1.08rem;line-height:1.3;color:var(--ink)}
.lc-why,.lc-extra,.lc-trigger{padding:9px 15px 0;font-size:.88rem;line-height:1.6;color:var(--ink-2)}
.lc-why b,.lc-extra b,.lc-trigger b{color:var(--ink)}
.lc-extra{padding-top:10px;color:var(--ink-2)}
.lc-trigger{padding-bottom:2px}
.lc-btns{display:flex;flex-wrap:wrap;gap:8px;padding:12px 15px 14px}
.lc-btn{font-family:var(--mono);font-size:11px;letter-spacing:.03em;padding:7px 13px;border-radius:4px;
  border:1px solid var(--city);color:var(--city)}
.lc-btn:hover{background:var(--city);color:#fff}
.lc-btn.ghost{border-color:var(--line);color:var(--ink-2)}
.lc-btn.ghost:hover{background:var(--raise);color:var(--ink);border-color:var(--ink-3)}
.lc-alts{border-top:1px solid var(--line);background:color-mix(in srgb,var(--raise) 55%,transparent)}
.lc-alts>summary{list-style:none;cursor:pointer;padding:10px 15px;font-family:var(--mono);font-size:10px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.lc-alts>summary::-webkit-details-marker{display:none}
.lc-alts>summary::before{content:"+ "}
.lc-alts[open]>summary::before{content:"\2212 "}
.lc-albody{padding:0 15px 12px}
.lc-alt{padding:9px 0;border-top:1px solid var(--hair)}
.lc-alt-h{display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.lc-alt-h a{color:var(--ink);border-bottom:1px solid var(--city)}
.lc-alt-h a:hover{color:var(--city)}
.lc-alt-fig{font-family:var(--mono);font-size:.82rem;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.lc-alt-fig em{font-style:normal}
.lc-alt-fig em.over{color:var(--wait)}
.lc-alt-fig em.in{color:var(--go-ink)}
.lc-alt-sub{font-family:var(--mono);font-size:10px;letter-spacing:.02em;color:var(--ink-3);margin-top:2px}
.lc-alt-note{font-size:.83rem;color:var(--ink-2);line-height:1.5;margin-top:4px}
.lc-altnote{font-size:.83rem;color:var(--ink-3);line-height:1.5;border-top:1px solid var(--hair);padding-top:8px;margin-top:8px}
@media(max-width:640px){
  .lc-mrow{grid-template-columns:1fr auto;gap:2px 10px}
  .lc-sub{grid-column:1 / -1}
  .drift th:nth-child(3),.drift td:nth-child(3){display:none}
}
/* city soundscape control */
.snd{position:fixed;right:16px;bottom:16px;z-index:55;display:inline-flex;align-items:center;gap:7px;
  font:inherit;font-family:var(--mono);font-size:11px;letter-spacing:.04em;
  padding:8px 13px;border-radius:99px;cursor:pointer;
  background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(8px);
  border:1px solid var(--line);color:var(--ink-2);box-shadow:0 6px 20px -12px rgba(24,20,12,.3)}
.snd:hover{color:var(--ink);border-color:var(--ink-3)}
.snd .snd-i{font-size:12px;line-height:1}
.snd.on{color:var(--city);border-color:color-mix(in srgb,var(--city) 45%,var(--line))}
.snd.on .snd-i{animation:sndpulse 2.4s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){ .snd.on .snd-i{animation:none} }
@keyframes sndpulse{0%,100%{opacity:.55}50%{opacity:1}}
.snd:focus-visible{outline:2px solid var(--city);outline-offset:2px}
.snd-toast{position:fixed;right:16px;bottom:58px;z-index:55;
  color:var(--ink);background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(8px);
  border:1px solid var(--line);border-radius:6px;padding:8px 14px;opacity:0;transform:translateY(6px);
  transition:opacity .4s,transform .4s;pointer-events:none;max-width:min(70vw,260px);text-align:right}
.snd-toast b{display:block;font-family:var(--disp);font-weight:400;font-size:1.1rem;line-height:1.2}
.snd-toast span{display:block;font-size:.78rem;color:var(--ink-2);margin-top:2px}
.snd-toast.in{opacity:1;transform:translateY(0)}
.sndcred{margin-top:10px}
.sc-row{display:grid;grid-template-columns:2em 1fr;gap:10px;padding:9px 0;border-top:1px solid var(--hair);align-items:baseline}
.sc-row:first-child{border-top:0}
.sc-n{font-family:var(--mono);font-size:11px;color:var(--ink-3)}
.sc-row b{font-family:var(--disp);font-weight:400;font-size:1.05rem}
.sc-t{font-size:.85rem;color:var(--ink-2)}
.sc-src{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;color:var(--ink-3);margin-top:3px}
.sc-src a{color:var(--ink-3);border-bottom:1px solid var(--line)}
.sc-src a:hover{color:var(--ink-2)}
@media(max-width:640px){
  .snd{right:12px;bottom:12px;padding:7px 11px;font-size:10px}
  .snd .snd-t{display:none}
  .snd.on .snd-t,.snd[data-rich] .snd-t{display:inline}
  .snd-toast{right:12px;bottom:52px;font-size:1rem}
}
.resnote{margin:20px 0;padding:14px 16px;border:1px solid var(--line);border-radius:3px;font-size:.9rem;color:var(--ink-2)}
.resnote b{color:var(--ink);font-weight:500}

/* ---- reservations: category progress, status, filters, collapsible sections ---- */
.prog{margin:26px 0 6px}
.prog-lbl{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);margin:16px 0 8px}
.prog-lbl:first-child{margin-top:0}
.catgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.catgrid.one{grid-template-columns:1fr;max-width:none}
.catcard{display:block;border:1px solid var(--line);border-radius:5px;padding:12px 13px 11px;
  background:var(--paper);color:inherit;transition:border-color .15s}
.catcard:hover{border-color:var(--ink-3)}
.cc-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.cc-name{font-family:var(--disp);font-weight:400;font-size:1.02rem;line-height:1.15}
.cc-chk{color:var(--go)}
.cc-frac{font-family:var(--mono);font-size:12px;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.cc-bar{height:5px;border-radius:3px;background:var(--hair);margin:9px 0 7px;overflow:hidden}
.cc-bar i{display:block;height:100%;border-radius:3px;background:var(--ink-3)}
.catcard.st-done .cc-bar i{background:var(--go)}
.catcard.st-now .cc-bar i,.catcard.st-over .cc-bar i{background:var(--wait)}
.cc-note{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.catcard.st-done{border-color:color-mix(in srgb,var(--go) 45%,var(--line))}
.catcard.st-done .cc-note{color:var(--go-ink)}
.catcard.st-now .cc-note{color:var(--wait)}
.catcard.st-over{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}
.catcard.st-over .cc-note{color:var(--bad)}

.smsg{margin:20px 0 8px;padding:13px 16px;border-radius:4px;border:1px solid var(--line);
  display:flex;flex-direction:column;gap:3px}
.smsg b{font-family:var(--disp);font-weight:400;font-size:1.22rem;line-height:1.2}
.smsg span{font-size:.9rem;color:var(--ink-2)}
.smsg.good{border-color:color-mix(in srgb,var(--go) 40%,var(--line));background:color-mix(in srgb,var(--go) 6%,transparent)}
.smsg.good b{color:var(--go-ink)}
.smsg.warn{border-color:color-mix(in srgb,var(--wait) 40%,var(--line));background:color-mix(in srgb,var(--wait) 6%,transparent)}
.smsg.warn b{color:var(--wait)}
.smsg.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line));background:color-mix(in srgb,var(--bad) 7%,transparent)}
.smsg.bad b{color:var(--bad)}
.cc-time{font-family:var(--mono);font-size:9.5px;letter-spacing:.03em;color:var(--ink-3);margin-top:4px}
.catcard.st-now .cc-time{color:var(--wait)}
.handson{font-size:.86rem;color:var(--ink-2);margin:12px 0 6px;line-height:1.5}
.handson b{color:var(--ink)}
.mission{margin:8px 0 18px}
.mission h2{font-family:var(--disp);font-weight:400;font-size:1.1rem;margin:0 0 8px}
.mrow{display:flex;flex-wrap:wrap;gap:8px}
.mbtn{font:inherit;font-size:.84rem;color:var(--ink);background:var(--paper);border:1px solid var(--line);
  border-radius:99px;padding:7px 14px;cursor:pointer;transition:border-color .12s,background .12s}
.mbtn:hover{border-color:var(--ink-3)}
.mbtn.on{background:var(--city);color:#fff;border-color:var(--city)}
.mnote{margin:9px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.02em;color:var(--ink-2)}
.catdone{margin:2px 0 6px;padding:10px 13px;border-radius:4px;font-size:.9rem;line-height:1.5;
  background:color-mix(in srgb,var(--go) 8%,var(--raise));color:var(--ink)}
.catdone b{font-family:var(--disp);font-weight:400;font-size:1.05rem;color:var(--go-ink);display:block}
.rreward{margin-top:8px;font-size:.86rem;line-height:1.5;color:var(--go-ink);
  border-left:2px solid var(--go);padding-left:10px}
.reconline{font-size:.82rem;color:var(--ink-3);margin:0 0 22px;line-height:1.5}
.reconline b{color:var(--ink-2)}
.reconline a{color:var(--city);border-bottom:1px solid transparent}
.reconline a:hover{border-bottom-color:currentColor}

.nextact{margin:6px 0 24px;border:1px solid var(--line);border-radius:5px;padding:14px 16px 15px;background:var(--raise)}
.nextact h2{font-family:var(--disp);font-weight:400;font-size:1.15rem;margin:0 0 8px}
.nextact ol{list-style:none;margin:0;padding:0;counter-reset:na}
.nextact li{counter-increment:na;display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:7px 0;border-top:1px solid var(--line)}
.nextact li:first-child{border-top:0}
.nextact li::before{content:counter(na);font-family:var(--mono);font-size:11px;color:var(--ink-3);flex:0 0 auto}
.nextact li a{flex:1;color:var(--ink);border-bottom:1px solid transparent}
.nextact li a:hover{border-bottom-color:var(--city);color:var(--city)}
.na-cue{font-family:var(--mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--wait);white-space:nowrap}
.na-all{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:11px;letter-spacing:.04em;
  color:var(--ink-2);border-bottom:1px solid var(--line)}

.filterbar{margin:0 0 8px;position:sticky;top:48px;z-index:5;background:var(--paper);padding:8px 0}
.catsec,.tl,.ref,.catsec.apps{scroll-margin-top:104px}
.fb-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.fb-row select{font:inherit;font-size:.82rem;color:var(--ink);background:var(--paper);
  border:1px solid var(--line);border-radius:4px;padding:6px 26px 6px 9px;-webkit-appearance:none;appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23918D82' fill='none' stroke-width='1.4'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 9px center}
.fb-row select:focus{outline:2px solid var(--city);outline-offset:1px}
.fb-clear{font:inherit;font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;
  color:var(--ink-2);background:none;border:1px solid var(--line);border-radius:4px;padding:6px 11px;cursor:pointer}
.fb-clear:hover{border-color:var(--ink-3);color:var(--ink)}
.fb-active{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.fb-active span{font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;
  background:var(--raise);border:1px solid var(--line);border-radius:99px;padding:3px 9px;color:var(--ink-2)}
.fb-count{margin-top:6px;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--ink-3)}

.cats{margin-top:4px}
.catsec{border-top:1px solid var(--line)}
.catsec>summary{list-style:none;cursor:pointer;padding:15px 0;display:flex;justify-content:space-between;
  align-items:baseline;gap:14px}
.catsec>summary::-webkit-details-marker{display:none}
.catsec>summary::after{content:"";flex:0 0 auto;width:8px;height:8px;border-right:1.5px solid var(--ink-3);
  border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.catsec[open]>summary::after{transform:rotate(-135deg) translateY(-1px)}
.cs-name{font-family:var(--disp);font-weight:400;font-size:1.32rem;line-height:1.1}
.cs-meta{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;color:var(--ink-3);text-align:right;
  flex:1;text-transform:lowercase}
.cs-body{padding-bottom:14px}
.sub{margin-top:10px}
.sub-h{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--wait);
  margin-bottom:2px}
details.sub{border:0}
details.sub>summary{list-style:none;cursor:pointer;font-family:var(--mono);font-size:10px;letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-3);padding:8px 0;border-top:1px solid var(--hair)}
details.sub>summary::-webkit-details-marker{display:none}
details.sub>summary::before{content:"+ ";color:var(--ink-3)}
details.sub[open]>summary::before{content:"\2212 "}
.sub[data-sub="complete"]>summary{color:var(--go-ink)}
.rcbox{font-size:.85rem;color:var(--ink-2);line-height:1.5;padding:4px 0 2px}
.rcbox p{margin:6px 0}
.rcbox b{color:var(--ink)}
.rcbox-foot{font-size:.78rem;color:var(--ink-3);border-top:1px solid var(--hair);padding-top:6px;margin-top:8px}
.rcbox-foot a,.rrc a{color:var(--city)}

/* time / difficulty chip on pending rows */
.res .r .rtime{font-family:var(--mono);font-size:10px;letter-spacing:.03em;color:var(--ink-3);margin-top:5px}
/* booking clarity card */
.bcard{margin-top:11px;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.bc-photo{margin:0;line-height:0;position:relative}
.bc-photo img{width:100%;display:block;max-height:340px;object-fit:cover;object-position:top}
.bc-photo-cap{position:absolute;left:0;right:0;bottom:0;padding:5px 10px;font-size:.75rem;
  color:#F3EFE6;background:linear-gradient(0deg,rgba(10,8,5,.72),rgba(10,8,5,0));line-height:1.4}
.bc-blk,.bc-line{padding:10px 14px;border-top:1px solid var(--hair);font-size:.88rem;line-height:1.55;color:var(--ink-2)}
.bcard>.bc-blk:first-child,.bcard>.bc-line:first-child,.bcard>.bc-photo+.bc-blk{border-top:0}
.bcard>.bc-photo{border-bottom:1px solid var(--hair)}
.bc-h{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-3);margin-bottom:3px}
.bc-didbook{background:color-mix(in srgb,var(--go) 7%,transparent)}
.bc-didbook>div{font-size:.85rem;color:var(--ink-2);font-style:italic}
.bc-target{background:var(--raise)}
.bc-target>div{font-size:.95rem;color:var(--ink);line-height:1.5}
.bc-choose>.bc-pick{font-family:var(--disp);font-size:1.12rem;color:var(--ink);line-height:1.3}
.bc-line .bc-h{display:inline;margin-right:6px}
.bc-steps{margin:2px 0 0;padding-left:1.1em;font-family:var(--mono);font-size:.8rem;color:var(--ink-2);line-height:1.7}
.bc-code{display:inline-block;margin-top:2px;font-family:var(--mono);font-size:.82rem;background:var(--raise);
  border:1px solid var(--line);border-radius:4px;padding:4px 9px;color:var(--ink);user-select:all}
.bc-x,.bc-tick{list-style:none;margin:3px 0 0;padding:0;font-size:.85rem;line-height:1.6}
.bc-x li,.bc-tick li{padding-left:1.4em;position:relative}
.bc-x li::before{content:"\00d7";position:absolute;left:0;color:var(--bad);font-weight:600}
.bc-tick li::before{content:"\2713";position:absolute;left:0;color:var(--go)}
.bc-avoid{background:color-mix(in srgb,var(--bad) 5%,transparent)}
.bc-match{background:color-mix(in srgb,var(--go) 5%,transparent)}
.bc-done>div{color:var(--ink)}
.bc-panic{padding:9px 14px;border-top:1px solid var(--hair);font-size:.8rem;line-height:1.5;color:var(--wait);
  background:color-mix(in srgb,var(--wait) 6%,transparent)}
.res .r .rstat.st-action_now{color:var(--wait)}
.res .r .rstat.st-waiting{color:var(--ink-3)}
.res .r .rstat.st-complete{color:var(--go)}
.res .r .rstat.st-overdue{color:var(--bad)}
.res .r .rstat.st-reconfirm{color:var(--ink-3)}
.res .r[data-st="waiting"]{border-left-color:var(--ink-3);
  background:linear-gradient(90deg,color-mix(in srgb,var(--ink-3) 6%,transparent),transparent 55%)}
.rrc{font-size:.85rem;margin-top:8px;padding:8px 12px;border:1px solid var(--line);border-left:2px solid var(--ink-3);
  border-radius:3px;color:var(--ink-2);line-height:1.5}
.rrc b{color:var(--ink-2);font-weight:600}

.tl,.ref{border-top:1px solid var(--line)}
.tl>summary,.ref>summary,.catsec.apps>summary{list-style:none;cursor:pointer;padding:15px 0;display:flex;
  justify-content:space-between;align-items:baseline;gap:14px}
.tl>summary::-webkit-details-marker,.ref>summary::-webkit-details-marker{display:none}
.tl>summary::after,.ref>summary::after,.catsec.apps>summary::after{content:"";flex:0 0 auto;width:8px;height:8px;
  border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);
  transform:rotate(45deg) translateY(-2px);transition:transform .15s}
.tl[open]>summary::after,.ref[open]>summary::after,.catsec.apps[open]>summary::after{transform:rotate(-135deg) translateY(-1px)}
.tlgrp{margin-top:14px}
.tlgrp-h{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);
  margin-bottom:4px}
.tlgrp ul{list-style:none;margin:0;padding:0}
.tlgrp li{padding:3px 0;font-size:.9rem}
.tlgrp li a{color:var(--ink-2)}
.tlgrp li a:hover{color:var(--city)}

@media(max-width:640px){
  .catgrid{grid-template-columns:1fr 1fr;gap:8px}
  .catcard{padding:10px 11px 9px}
  .cc-name{font-size:.92rem}
  .cs-name{font-size:1.15rem}
  .cs-meta{font-size:9.5px}
  .filterbar{position:static}
  .fb-row{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  .fb-row select,.fb-clear{flex:0 0 auto}
  .smsg b{font-size:1.1rem}
  .nextact li{flex-wrap:wrap;gap:2px 12px}
}
@media(max-width:380px){
  .catgrid{grid-template-columns:1fr}
}
.hw p{font-size:.95rem;color:var(--ink-2);margin-top:12px}
.hw p b{color:var(--ink);font-weight:500}

.memory{margin-top:42px;padding-top:22px;border-top:2px solid var(--ink)}
.memory h3{font-family:var(--disp);font-weight:400;font-size:1.5rem;margin-bottom:6px}
.memory>p{font-size:.95rem;color:var(--ink-2);max-width:52ch}
.memtext{margin-top:14px;font-size:1rem;line-height:1.72;color:var(--ink);max-width:60ch}
.memtext p+p{margin-top:10px}
.memtext a{border-bottom:1px solid color-mix(in srgb,var(--city) 45%,transparent)}
.mevent{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--ink-3);margin:22px 0 10px}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:8px;margin-top:16px}
.mgrid+.mevent{margin-top:26px}
.mfig{margin:0;min-width:0}
.mfig button{display:block;width:100%;padding:0;border:0;background:var(--raise);cursor:zoom-in;
  line-height:0;border-radius:3px;overflow:hidden}
.mfig img{width:100%;aspect-ratio:1/1;object-fit:cover;transition:transform .5s cubic-bezier(.2,.7,.2,1)}
.mfig button:hover img{transform:scale(1.04)}
.mfig button:focus-visible{outline:2px solid var(--city);outline-offset:2px}
.mfig figcaption{font-size:.8rem;color:var(--ink-2);line-height:1.45;padding:6px 2px 2px}
.mfig.mvid button{position:relative}
.mplay{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:44px;height:44px;
  border-radius:99px;background:rgba(14,11,7,.5);pointer-events:none}
.mplay::after{content:"";position:absolute;left:53%;top:50%;transform:translate(-50%,-50%);
  border-style:solid;border-width:8px 0 8px 13px;border-color:transparent transparent transparent #F6F2E9}
@media(min-width:640px){.mgrid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}}

/* voice moments */
.mclips{margin-top:18px;display:flex;flex-direction:column;gap:14px}
.mclip{margin:0;border:1px solid var(--line);border-left:2px solid var(--city);border-radius:4px;
  padding:11px 13px;background:var(--raise)}
.mclip figcaption{font-size:.9rem;color:var(--ink);line-height:1.5;margin-bottom:7px}
.mclip audio{width:100%;height:34px;display:block}
.mclip-d{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.06em;
  color:var(--ink-3);margin-top:5px}
.mclip-q{margin:18px 0 6px}
.mclip-q+.mclip{margin-top:0}

/* trip album page */
.alb-city{margin-top:52px}
.alb-city>h2{font-family:var(--disp);font-weight:400;font-size:clamp(1.7rem,4.4vw,2.3rem);
  border-bottom:1px solid var(--line);padding-bottom:8px;margin-bottom:4px}
.alb-day{margin-top:30px}
.alb-day>h3{font-family:var(--disp);font-weight:400;font-size:1.3rem;line-height:1.15}
.alb-day>.d-when{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}
.alb-empty{margin-top:28px;padding:18px 20px;border:1px solid var(--line);border-radius:4px;
  background:var(--raise);font-size:.95rem;color:var(--ink-2);line-height:1.65}
.alb-empty b{color:var(--ink)}

/* full-screen photo viewer */
.lb{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;
  background:rgba(10,8,5,.94);opacity:0;transition:opacity .25s}
.lb.in{opacity:1}
.lb[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.lb{transition:none}}
.lb-stage{flex:1;display:flex;align-items:center;justify-content:center;padding:46px 14px 6px;min-height:0}
.lb-stage img,.lb-stage video{max-width:100%;max-height:100%;object-fit:contain;border-radius:2px;
  box-shadow:0 30px 80px -20px rgba(0,0,0,.7)}
.lb-stage video{background:#000}
.lb-cap{color:#EDE7DB;font-size:.9rem;line-height:1.5;text-align:center;
  padding:8px 16px 18px;max-width:64ch;margin:0 auto;min-height:1.1em}
.lb-cap span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;
  text-transform:uppercase;color:rgba(237,231,219,.6);margin-bottom:3px}
.lb-btn{position:absolute;border:0;background:none;color:#F3EFE6;cursor:pointer;
  line-height:1;padding:14px;opacity:.82}
.lb-btn:hover{opacity:1}
.lb-btn:focus-visible{outline:2px solid #F3EFE6;outline-offset:-4px}
.lb-x{top:0;right:6px;font-size:22px}
.lb-nav{top:50%;transform:translateY(-50%);font-size:30px;width:52px;height:64px;
  display:grid;place-items:center}
.lb-nav[hidden]{display:none}
.lb-prev{left:2px}.lb-next{right:2px}
.lb-count{position:absolute;top:16px;left:16px;font-family:var(--mono);font-size:11px;
  letter-spacing:.08em;color:rgba(243,239,230,.7)}
@media(max-width:600px){.lb-nav{width:40px;font-size:24px}.lb-stage{padding:42px 4px 4px}}

.pager{display:flex;gap:12px;margin-top:56px;font-size:13px}
.pager a{flex:1;padding:16px 0;border-top:1px solid var(--ink);color:var(--ink-2)}
.pager a:hover{color:var(--city)}
.pager a.n{text-align:right}
.pager .pl{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);margin-bottom:4px}
.pager a.off{opacity:.3;pointer-events:none}

/* -------------------------------- budget bar ---------------------------- */
.meter{height:8px;background:var(--raise);border-radius:99px;margin:16px 0 6px;position:relative;overflow:hidden}
.meter .fill{position:absolute;inset:0 auto 0 0;background:var(--city);border-radius:99px}
.meter .tgt{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink)}
.mrow{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--ink-3)}
.big{font-family:var(--disp);font-weight:400;font-size:3rem;line-height:1}

/* .rv is a hook kept for later; content is always visible */
.rv{opacity:1!important;transform:none!important}

/* ------------------------------ phone tuning --------------------------- */
/* Cuts the wasted vertical space that made the phone read as endless scroll:
   shorter heroes, content-height route panels, tighter section rhythm,
   and full-width body text instead of the desktop narrow measure. */
@media(max-width:640px){
  .hero{--hero-h:48vh}
  .hero.tall{--hero-h:52vh}
  .hero.band{--hero-h:40vh}
  .hero .inner{padding:48px var(--gut) 26px}
  .hero .sub{max-width:none;font-size:1rem}
  .hero h1{font-size:clamp(2.1rem,9vw,2.9rem)}

  .route{margin-top:20px}
  .panel{min-height:32vh}
  .panel .p-in{padding:40px var(--gut) 28px}
  .panel p{max-width:none}
  .panel h3{font-size:clamp(2.2rem,11vw,3rem)}
  .panel+.panel{margin-top:2px}

  h2.h{margin:30px 0 4px}
  h3.sub{margin:24px 0 10px}
  .route + h2.h, .route + .section > h2.h{margin-top:24px}
  .block{margin-top:32px}

  .lede{font-size:1.04rem;line-height:1.5;max-width:none}
  .drop::first-letter{font-size:2.7em;padding:.02em .1em 0 0}
  .intro{max-width:none}
  .memory>p,.memtext{max-width:none}

  .slot{grid-template-columns:46px 1fr;gap:10px}
  .wx{margin:16px 0;padding:11px 0}
  .watch{flex-direction:column;gap:4px;padding:13px 0}

  /* booking-progress checklist: 2 columns so it isn't a 3-screen list */
  .dash ul{columns:2;column-gap:16px;padding:10px 14px 12px}
  .dash li{font-size:.78rem;padding:3px 0;gap:6px}

  main{padding-bottom:48px}
  footer{margin-top:40px}
}

footer{border-top:1px solid var(--line);margin-top:70px}
footer .wrap{padding:26px var(--gut) 46px;color:var(--ink-3);font-size:12px}
footer p{max-width:66ch;margin-bottom:6px}
footer .tag{margin:0 2px}
