/* legitour v2 "The Chart Room". Tokens are the ONLY place a colour, family or radius is written.
   Spec: ../../UI-SPEC.md. Logical properties throughout so HE/AR mirror without overrides. */
:root{
  --paper:#F4F2EC; --band:#ECE8DE; --sea:#D8E5E7; --buff:#E6DCC2;
  --ink:#13202A; --ink-2:#4A5761; --rule:#CCCFCD; --mag:#9C1D5A; --mag-deep:#8A1850;
  --f-display:"EB Garamond","Times New Roman",serif;
  --f-text:"Ysabeau Office","Segoe UI",sans-serif;
  --f-chart:"EB Garamond","Times New Roman",serif;
  --f-chart-text:"Ysabeau Office","Segoe UI",sans-serif;
  --r0:0px; --r1:2px; --r3:12px; --pill:999px;
  --card:#FAF8F3;
  --s1:4px; --s2:8px; --s3:12px; --s4:16px; --s5:24px; --s6:32px; --s7:48px; --s8:64px; --s9:96px; --s10:128px;
  --t11:.6875rem; --t12:.75rem; --t14:.875rem; --t16:1rem; --t18:1.125rem; --t21:1.3125rem; --t28:1.75rem; --t38:2.375rem;
  --t44:2.75rem; --t50:3.125rem; --t56:3.5rem; --t67:4.1875rem; --t84:5.25rem;
  --display:var(--t44); --h2:var(--t38); --tph1:var(--t38);
  --scrim:rgba(19,32,42,.38);
  --wrap:1320px; --gut:clamp(16px,3.2vw,40px);
  --ease:cubic-bezier(.16,1,.3,1);
  color-scheme:light;
}
html[lang="he"]{--f-display:"Frank Ruhl Libre","EB Garamond",serif;--f-text:"Assistant","Ysabeau Office",sans-serif}
html[lang="ar"]{--f-display:"Amiri","EB Garamond",serif;--f-text:"Noto Naskh Arabic","Ysabeau Office",sans-serif}
html[lang="zh-CN"]{--f-display:"Noto Serif SC","EB Garamond",serif;--f-text:"Noto Sans SC","Ysabeau Office",sans-serif}
html.i18n-pending body{visibility:hidden}
/* scripts with no true italic: never synthesise one (Hebrew and Arabic typography do not slant; CJK obliques are fake) */
html:is([lang="he"],[lang="ar"],[lang="zh-CN"]) :is(em,i,.hero-tag,.kicker,.promise h2,.fare-req,.quote p,.tagline,.sec-head .kicker){font-style:normal}
html[lang="zh-CN"]{--display:var(--t38)}
html[lang="zh-CN"] .hero h1 em{white-space:nowrap}
html[lang="zh-CN"] body{line-height:1.75}
html[lang="ar"] body{line-height:1.85}
html[lang="ar"]{--display:var(--t38)}
html[lang="ar"] .hero h1{line-height:1.25}
html[lang="he"] .hero h1{line-height:1.08}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:24px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--f-text);font-size:var(--t16);line-height:1.62;font-weight:400;font-variant-numeric:lining-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}
a:hover{text-decoration-color:var(--mag)}
:focus-visible{outline:2px solid var(--mag);outline-offset:3px;border-radius:var(--r1)}
button,input,select,textarea{font:inherit;color:inherit}
p{margin:0}
h1,h2,h3{font-family:var(--f-display);font-weight:400;margin:0;letter-spacing:-.005em;overflow-wrap:break-word}
.wrap{width:min(100% - 2*var(--gut),var(--wrap));margin-inline:auto}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;inset-inline-start:var(--gut);top:-60px;z-index:50;background:var(--ink);color:var(--paper);padding:var(--s3) var(--s4);border-radius:var(--r1);text-decoration:none}
.skip:focus{top:var(--s3)}

/* ---------- header ---------- */
.top{border-bottom:1px solid var(--rule)}
.top .wrap{display:flex;align-items:center;gap:var(--s5);min-height:64px}
.brand{display:flex;align-items:baseline;gap:var(--s2);text-decoration:none;margin-inline-end:auto}
.brand b{font-family:var(--f-display);font-weight:400;font-size:var(--t28);line-height:1;letter-spacing:-.01em}
.brand i{font-family:var(--f-display);font-style:italic;font-size:var(--t18);color:var(--ink-2)}
.nav{display:flex;gap:var(--s5)}
.nav a{font-size:var(--t14);text-decoration:none;color:var(--ink-2);padding-block:var(--s2)}
.nav a:hover{color:var(--ink)}
.langs{display:flex;gap:2px;align-items:center}
.langs button{background:none;border:0;cursor:pointer;font-size:var(--t14);color:var(--ink-2);min-width:36px;min-height:44px;padding:0 var(--s1);border-bottom:1px solid transparent}
.langs button[aria-pressed="true"]{color:var(--mag);border-bottom-color:var(--mag)}
.langs button:hover{color:var(--ink)}
.top-wa{font-size:var(--t14);text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums;min-height:44px;display:inline-flex;align-items:center}
@media (max-width:1100px){.nav{display:none}}
@media (max-width:680px){.top-wa{display:none}.brand i{display:none}.top .wrap{gap:var(--s2)}.langs button{min-width:32px;font-size:var(--t12)}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:48px;padding:0 var(--s5);border-radius:var(--r1);font-size:var(--t16);font-weight:600;text-decoration:none;border:1px solid var(--ink);cursor:pointer;transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease)}
.btn svg{width:18px;height:18px;flex:none}
.btn-ink{background:var(--ink);color:var(--paper)}
.btn-ink:hover{background:var(--mag-deep);border-color:var(--mag-deep);text-decoration:none}
.btn-line{background:transparent;color:var(--ink)}
.btn-line:hover{border-color:var(--mag);color:var(--mag)}
.link{font-size:var(--t16);text-decoration:underline;text-decoration-color:var(--rule);min-height:48px;display:inline-flex;align-items:center}
.link:hover{text-decoration-color:var(--mag)}

/* ---------- hero ---------- */
.hero .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(var(--s6),4vw,var(--s8));align-items:center;padding-block:var(--s6) var(--s8)}
.hero-text{padding-block:var(--s2)}
.hero-tag{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink-2);margin-bottom:var(--s4)}
.hero h1{font-size:var(--display);line-height:1.02;letter-spacing:-.015em;margin-bottom:var(--s5);text-wrap:balance}
.hero h1 em{font-style:italic;color:var(--ink)}
.lede{font-size:var(--t18);line-height:1.6;color:var(--ink-2);max-width:34em;margin-bottom:var(--s5)}
.hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3) var(--s5);margin-bottom:var(--s5)}
.hero-strap{font-size:var(--t14);line-height:1.7;color:var(--ink-2);border-top:1px solid var(--rule);padding-top:var(--s4);max-width:34em;font-variant-numeric:tabular-nums}
@media (max-width:919px){.hero .wrap{grid-template-columns:minmax(0,1fr);align-items:start}.hero-text{padding-block:0}}

/* ---------- the chart ---------- */
.chart{margin:0}
.chart-box{position:relative;aspect-ratio:966/1117;margin-inline:auto;background:var(--sea);box-shadow:0 0 0 1px var(--rule)}
.hero .chart-box{height:clamp(520px,calc(100svh - 150px),900px);width:auto}
.chart-box svg{width:100%;height:100%}
.chart .sea{fill:var(--sea)}
.chart .wl{fill:none;stroke:var(--ink);vector-effect:non-scaling-stroke;stroke-linejoin:round}
.chart .wl-cut{fill:none;stroke:var(--sea);vector-effect:non-scaling-stroke;stroke-linejoin:round}
.chart .land{fill:var(--buff);stroke:var(--ink);stroke-width:.8px;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.chart .park{fill:none;stroke:var(--mag);stroke-width:1px;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;opacity:.8}
.chart .course{fill:none;stroke:var(--mag);stroke-width:1.5px;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:0}
.motion .chart .course{stroke-dashoffset:1;animation:course 1.2s var(--ease) .2s forwards}
.motion .chart .course:nth-of-type(2){animation-delay:.32s}.motion .chart .course:nth-of-type(3){animation-delay:.44s}
.motion .chart .course:nth-of-type(4){animation-delay:.56s}.motion .chart .course:nth-of-type(5){animation-delay:.68s}.motion .chart .course:nth-of-type(6){animation-delay:.8s}
@keyframes course{to{stroke-dashoffset:0}}
.chart .pier{fill:var(--paper);stroke:var(--mag);stroke-width:1.5px;vector-effect:non-scaling-stroke}
.chart .mark{fill:var(--ink)}
.chart .compass circle{fill:none;stroke:var(--ink);stroke-width:.7px;vector-effect:non-scaling-stroke}
.chart .compass path{fill:none;stroke:var(--ink);stroke-width:.7px;vector-effect:non-scaling-stroke}
.chart .compass .c-star{fill:var(--paper)}.chart .compass .c-half{fill:var(--ink);stroke:none}
.chart .scalebar rect{stroke:var(--ink);stroke-width:.7px;vector-effect:non-scaling-stroke}
.chart .sb-a{fill:var(--ink)}.chart .sb-b{fill:var(--paper)}
.chart .gr-bar{stroke:var(--ink);stroke-width:6px;fill:none}
.chart .gr-frame{fill:none;stroke:var(--ink);stroke-width:.8px;vector-effect:non-scaling-stroke}
.chart-labels{position:absolute;inset:0;pointer-events:none;font-family:var(--f-chart);color:var(--ink)}
.chart-labels span{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;line-height:1.1;text-align:center}
.chart-labels .isl-1{font-size:var(--t18);font-variant:small-caps;letter-spacing:.08em}
.chart-labels .isl-2{font-size:var(--t14);font-variant:small-caps;letter-spacing:.06em}
.chart-labels .isl-3{font-size:var(--t12);font-style:italic;color:var(--ink-2)}
.chart-labels .park-l small{display:block;font-style:italic;font-variant:normal;letter-spacing:0;font-size:var(--t11);color:var(--mag-deep)}
.chart-labels .water-l{font-style:italic;color:var(--ink-2);letter-spacing:.18em}
.chart-labels .water-1{font-size:var(--t18)}
.chart-labels .water-2{font-size:var(--t12)}
.chart-labels .town-l{font-size:var(--t12);font-variant:small-caps;letter-spacing:.06em;color:var(--ink-2)}
.chart-labels .pier-l{font-family:var(--f-chart-text);font-size:var(--t11);color:var(--mag-deep);font-weight:500}
.chart-labels .mark-l{font-family:var(--f-chart-text);font-size:var(--t11);color:var(--ink-2)}
.chart-labels .course-l{font-style:italic;font-size:var(--t12);color:var(--mag-deep);background:var(--sea);padding:0 3px}
.chart-labels .compass-l{font-size:var(--t14)}
.chart-labels .sb-l{font-family:var(--f-chart-text);font-size:var(--t11);color:var(--ink-2);transform:translate(0,-50%)}
.chart-labels .sb-mid{transform:translate(-50%,-50%)}
.chart-labels .g-lat{font-family:var(--f-chart-text);font-size:var(--t11);color:var(--ink-2);transform:translate(0,-130%)}
.chart-labels .g-lon{font-family:var(--f-chart-text);font-size:var(--t11);color:var(--ink-2);transform:translate(-50%,0)}
.chart figcaption{font-size:var(--t12);line-height:1.5;color:var(--ink-2);margin-top:var(--s3);max-width:52em}
@media (max-width:919px){.hero .chart-box{height:auto;width:100%}.chart-labels .mark-l,.chart-labels .g-lat:nth-child(even),.chart-labels .g-lon:nth-child(even){display:none}}
@media (max-width:919px){.chart-labels .isl-1,.chart-labels .water-1{font-size:var(--t14)}.chart-labels .isl-2,.chart-labels .course-l{font-size:var(--t12)}.chart-labels .isl-3{font-size:var(--t11)}}
@media (max-width:560px){.chart-labels .mark-l,.chart-labels .water-2,.chart-labels .town-l,.chart-labels .g-lat,.chart-labels .g-lon,.chart-labels .isl-3,.chart-labels .pier-l{display:none}}

/* ---------- promises ---------- */
.promises{border-block:1px solid var(--rule);background:var(--band)}
.promises .wrap{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.promise{padding:var(--s6) var(--s5) var(--s6) 0}
.promise+.promise{border-inline-start:1px solid var(--rule);padding-inline-start:var(--s5)}
.promise h2{font-size:var(--t28);line-height:1.15;margin-bottom:var(--s2);font-style:italic}
.promise p{font-size:var(--t16);color:var(--ink-2);max-width:32em}
@media (max-width:919px){.promises .wrap{grid-template-columns:minmax(0,1fr)}.promise{padding:var(--s5) 0}.promise+.promise{border-inline-start:0;border-top:1px solid var(--rule);padding-inline-start:0}}

/* ---------- section heads ---------- */
.sec{padding-block:clamp(var(--s8),8vw,var(--s10)) var(--s6)}
.sec-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--s6);align-items:end;margin-bottom:var(--s7)}
.sec-head .kicker{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink-2);margin-bottom:var(--s3)}
.sec-head h2{font-size:var(--h2);line-height:1.04;letter-spacing:-.012em;text-wrap:balance}
.sec-head p{font-size:var(--t18);color:var(--ink-2);max-width:36em}
.sub-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--s3) var(--s6);border-top:2px solid var(--ink);padding-top:var(--s4);margin-top:var(--s8)}
.sub-head:first-of-type{margin-top:0}
.sub-head h3{font-size:var(--t38);line-height:1.1}
.sub-head p{font-size:var(--t16);color:var(--ink-2);max-width:40em}
@media (max-width:919px){.sec-head{grid-template-columns:minmax(0,1fr);gap:var(--s4)}.sub-head h3{font-size:var(--t28)}}

/* ---------- Group / Private switch (the v1 pills, now a working tab control) ---------- */
.tabs{display:flex;flex-wrap:wrap;gap:var(--s2);margin:0 0 var(--s6)}
.tab{display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s5);border:1px solid var(--rule);border-radius:var(--pill);background:var(--card);color:var(--ink);font-size:var(--t14);text-decoration:none;transition:background-color .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease)}
.tab:hover{border-color:var(--ink);text-decoration:none}
.tab[aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.js:not([data-tab="private"]) #private{display:none}
.js[data-tab="private"] #group{display:none}
.panel{scroll-margin-top:24px}
.panel-head{max-width:46em;margin-bottom:var(--s5)}
.panel-head h3{font-size:var(--t38);line-height:1.1;margin-bottom:var(--s2)}
.panel-head p{color:var(--ink-2)}
@media (max-width:919px){.panel-head h3{font-size:var(--t28)}}

/* ---------- tour cards (the v1 card stack Albert preferred, 2026-09-24) ---------- */
.cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:var(--s5)}
.card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--rule);border-radius:var(--r3);overflow:hidden;scroll-margin-top:24px}
.card-fig{display:block;aspect-ratio:16/10;background:var(--band);overflow:hidden}
.card-fig img{width:100%;height:100%;object-fit:cover}
.card-fig.is-chart{background:var(--sea);display:grid;place-items:center}
.card-fig.is-chart .loc{width:38%;height:auto}
.card-body{display:flex;flex-direction:column;gap:var(--s2);flex:1;padding:var(--s4) var(--s5) var(--s5)}
.card-sub{display:flex;align-items:center;gap:var(--s2);font-size:var(--t12);color:var(--ink-2)}
.card-sub .loc{width:30px;height:auto;flex:none;background:var(--sea);padding:2px 3px;box-shadow:0 0 0 1px var(--rule)}
.card h3{font-size:var(--t21);line-height:1.2}
.card h3 a{text-decoration:none}
.card h3 a:hover{text-decoration:underline;text-decoration-color:var(--mag)}
.card-v{font-size:var(--t14);line-height:1.5;color:var(--ink-2);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.card-meta{font-size:var(--t12);color:var(--ink-2)}
.card-fares{border-top:1px solid var(--rule);padding-top:var(--s3);margin-top:var(--s1);font-variant-numeric:tabular-nums}
.card-incl{font-size:var(--t12);line-height:1.55;color:var(--ink-2)}
.card-act{display:flex;gap:var(--s2);margin-top:auto;padding-top:var(--s3)}
.card-act .btn{flex:1 1 0;min-width:0;min-height:44px;padding:0 var(--s3);font-size:var(--t14)}
.btn-plan-card[aria-pressed="true"]{color:var(--mag);border-color:var(--mag)}
.card-pickup{border:1px solid var(--rule);border-radius:var(--r1);padding:0 var(--s3);font-size:var(--t12)}
.card-pickup summary{cursor:pointer;min-height:40px;display:flex;align-items:center;gap:var(--s2);color:var(--ink);list-style:none}
.card-pickup summary::-webkit-details-marker{display:none}
.card-pickup summary::before{content:"+";font-family:var(--f-display);font-size:var(--t16);width:1ch}
.card-pickup[open] summary::before{content:"\2212"}
.card-pickup table{width:100%;border-collapse:collapse;margin:0 0 var(--s3);font-variant-numeric:tabular-nums}
.card-pickup th,.card-pickup td{text-align:start;font-weight:400;padding:var(--s1) 0;border-bottom:1px solid var(--rule);color:var(--ink-2)}
.card-pickup thead th{color:var(--ink);font-weight:600}
.card-pickup tbody th{color:var(--ink)}
.card-pickup td{white-space:nowrap;padding-inline-start:var(--s3)}
.card-pickup tr:last-child th,.card-pickup tr:last-child td{border-bottom:0}
.tp-pickup{margin-top:var(--s4)}

/* ---------- fares (cards and tour pages) ---------- */
.row-fares{font-variant-numeric:tabular-nums}
.fares{width:100%;border-collapse:collapse;font-size:var(--t14)}
.fares th{font-weight:400;text-align:start;color:var(--ink-2);padding:0;font-size:var(--t12)}
.fares tr.lbl th{padding-top:var(--s2)}
.fares tr.lbl:first-child th{padding-top:0}
.fares td{padding:0;vertical-align:baseline;white-space:nowrap}
.fares tr.one th,.fares tr.one td{padding-block:var(--s1);border-bottom:1px solid var(--rule)}
.fares tr.one td{text-align:end}
.fares tr.one:last-child th,.fares tr.one:last-child td{border-bottom:0}
.fares .amt{unicode-bidi:isolate;direction:ltr;font-family:var(--f-display);font-size:var(--t21);color:var(--ink);letter-spacing:-.005em}
.fares .unit{color:var(--ink-2);margin-inline-start:.35em;font-size:var(--t12)}
.fares .ages{color:var(--ink-2);font-size:var(--t12)}
.fares td+td{padding-inline-start:var(--s4)}
.fares .one td{padding-inline-start:0}
.fare-note{font-size:var(--t12);color:var(--ink-2);margin-top:var(--s2);line-height:1.5}
.fare-req{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink)}

/* ---------- tour-page hero pieces ---------- */
.row-fig{margin:0;overflow:hidden}
.row-fig.is-chart{background:var(--sea);display:grid;place-items:center;aspect-ratio:3/2}
.row-fig.is-chart .loc{width:40%;height:auto}
.row-sub{display:flex;align-items:center;gap:var(--s3);font-size:var(--t14);color:var(--ink-2);margin-bottom:var(--s2)}
.row-sub .loc{width:40px;height:auto;flex:none;background:var(--sea);padding:3px 4px;box-shadow:0 0 0 1px var(--rule)}
.row-meta{font-size:var(--t14);color:var(--ink-2)}
.row-act{display:flex;gap:var(--s2);align-items:center}
.btn-plan{background:none;border:0;min-height:44px;cursor:pointer;font-size:var(--t14);color:var(--ink-2);text-align:start;padding:0;display:flex;align-items:center;gap:var(--s2)}
.btn-plan::before{content:"+";font-family:var(--f-display);font-size:var(--t21);line-height:1;width:1ch;color:var(--ink)}
.btn-plan:hover{color:var(--ink)}
.btn-plan[aria-pressed="true"]{color:var(--mag)}
.btn-plan[aria-pressed="true"]::before{content:"\2713";color:var(--mag);font-family:var(--f-text);font-size:var(--t16)}

/* ---------- guests ---------- */
.guests{background:var(--band);border-block:1px solid var(--rule)}
.quotes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6)}
.quote{margin:0;border-top:1px solid var(--ink);padding-top:var(--s4)}
.quote p{font-family:var(--f-display);font-style:italic;font-size:var(--t21);line-height:1.45}
.quote footer{font-size:var(--t14);color:var(--ink-2);margin-top:var(--s4)}
.quotes-note{font-size:var(--t14);color:var(--ink-2);margin-top:var(--s6);max-width:40em}
@media (max-width:919px){.quotes{grid-template-columns:minmax(0,1fr)}}

/* ---------- questions ---------- */
.faq-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s7)}
.faq-list details{border-top:1px solid var(--rule)}
.faq-list details:nth-last-child(-n+2){border-bottom:1px solid var(--rule)}
.faq-list summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:var(--s4);align-items:baseline;padding-block:var(--s4);font-family:var(--f-display);font-size:var(--t21);line-height:1.3}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";font-size:1.2em;line-height:1;color:var(--ink-2);flex:none}
.faq-list details[open] summary::after{content:"\2212"}
.faq-list details p{padding-bottom:var(--s5);color:var(--ink-2);max-width:40em}
@media (max-width:919px){.faq-list{grid-template-columns:minmax(0,1fr)}.faq-list details:nth-last-child(2){border-bottom:0}}

/* ---------- book ---------- */
.book{background:var(--band);border-top:1px solid var(--rule)}
.book-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(var(--s6),5vw,var(--s9))}
.book-grid>div:first-child>p:not(.kicker){color:var(--ink-2);max-width:32em;margin-top:var(--s5)}
.book .kicker{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink-2);margin-bottom:var(--s3)}
.book h2{font-size:var(--h2);line-height:1.04;letter-spacing:-.012em;text-wrap:balance}
.picks summary{cursor:pointer;min-height:44px;display:flex;align-items:center;gap:var(--s2);font-size:var(--t14);color:var(--ink);list-style:none}
.picks summary::-webkit-details-marker{display:none}
.picks summary::before{content:"+";font-family:var(--f-display);font-size:1.2em;width:1ch}
.picks[open] summary::before{content:"\2212"}
.plan-list{list-style:none;margin:0 0 var(--s3);padding:0;border-top:1px solid var(--rule)}
.plan-list li{display:flex;justify-content:space-between;align-items:center;gap:var(--s3);min-height:44px;border-bottom:1px solid var(--rule);font-size:var(--t16)}
.plan-list button{background:none;border:0;cursor:pointer;color:var(--ink-2);min-width:44px;min-height:44px;font-size:var(--t21)}
.plan-list button:hover{color:var(--mag)}
.contacts{margin:var(--s6) 0 0;display:grid;grid-template-columns:auto 1fr;border-top:1px solid var(--rule)}
.contacts dt,.contacts dd{margin:0;padding-block:var(--s3);border-bottom:1px solid var(--rule);font-size:var(--t14)}
.contacts dt{color:var(--ink-2);padding-inline-end:var(--s5)}
.contacts dd{text-align:end;font-variant-numeric:tabular-nums}
.contacts a{text-decoration:none;display:inline-flex;align-items:center;min-height:44px}.contacts a:hover{text-decoration:underline}
.contacts dt,.contacts dd{display:flex;align-items:center}
.contacts dd{justify-content:flex-end}
.form fieldset{border:0;margin:0 0 var(--s5);padding:0}
.form legend{font-family:var(--f-display);font-size:var(--t21);margin-bottom:var(--s3);padding:0}
.checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s5);border-top:1px solid var(--rule)}
.checks label{display:flex;align-items:center;gap:var(--s3);min-height:44px;border-bottom:1px solid var(--rule);font-size:var(--t14);cursor:pointer}
.checks input{width:18px;height:18px;accent-color:var(--mag);flex:none;margin:0}
.checks .grp{grid-column:1/-1;font-size:var(--t12);color:var(--ink-2);padding-top:var(--s4);border-bottom:1px solid var(--rule);padding-bottom:var(--s2)}
.fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s4)}
.fields label{display:flex;flex-direction:column;gap:var(--s1);font-size:var(--t12);color:var(--ink-2)}
.fields input{min-height:48px;border:1px solid var(--rule);border-radius:var(--r1);background:var(--paper);padding:0 var(--s3);font-size:var(--t16);color:var(--ink)}
.fields input:focus-visible{border-color:var(--ink)}
.form .btn{margin-top:var(--s5);width:100%}
.form-note{font-size:var(--t12);color:var(--ink-2);margin-top:var(--s3)}
@media (max-width:919px){.book-grid{grid-template-columns:minmax(0,1fr)}.fields{grid-template-columns:minmax(0,1fr)}.checks{grid-template-columns:minmax(0,1fr)}}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--rule);padding-block:var(--s7) calc(var(--s7) + 64px)}
.foot .wrap{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--s5) var(--s7);align-items:start}
.foot p{font-size:var(--t14);color:var(--ink-2);max-width:34em;margin-top:var(--s2)}
.foot-links{display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5);font-size:var(--t14);justify-content:end}
.foot-links a{min-height:44px;display:inline-flex;align-items:center}
.foot-fine{grid-column:1/-1;border-top:1px solid var(--rule);padding-top:var(--s4);display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s2) var(--s5);font-size:var(--t12);color:var(--ink-2)}
@media (max-width:919px){.foot .wrap{grid-template-columns:minmax(0,1fr)}.foot-links{justify-content:start}}

/* ---------- plan bar + mobile bar ---------- */
.planbar{position:fixed;inset-inline:0;bottom:0;z-index:30;background:var(--ink);color:var(--paper);transform:translateY(110%);visibility:hidden;transition:transform .2s var(--ease),visibility 0s linear .2s}
.planbar.is-on{transform:none;visibility:visible;transition:transform .2s var(--ease),visibility 0s}
.planbar .wrap{display:flex;align-items:center;gap:var(--s4);min-height:64px}
.planbar .count{font-family:var(--f-display);font-size:var(--t28);line-height:1;font-variant-numeric:tabular-nums}
.planbar .lbl{font-size:var(--t14);margin-inline-end:auto}
.planbar button,.planbar a{background:none;border:0;color:var(--paper);cursor:pointer;min-height:44px;font-size:var(--t14)}
.planbar .go{border:1px solid var(--paper);border-radius:var(--r1);padding:0 var(--s5);font-weight:600;text-decoration:none;display:inline-flex;align-items:center}
.planbar .go:hover{background:var(--paper);color:var(--ink)}
.mbar{display:none}
.mbar.is-off{transform:translateY(110%)}
@media (max-width:919px){
  .mbar{display:flex;position:fixed;inset-inline:0;bottom:0;z-index:25;padding:var(--s2) var(--gut) calc(var(--s2) + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--rule);transition:transform .2s var(--ease)}
  body.has-plan .mbar{transform:translateY(110%)}
  .mbar .btn{width:100%}
  .planbar .wrap{padding-bottom:env(safe-area-inset-bottom)}
}

/* ---------- policy drawer (bottom sheet, not a modal box) ---------- */
.drawer{position:fixed;inset:0;z-index:60;display:none;background:var(--scrim)}
.drawer.is-open{display:block}
.drawer-card{position:absolute;inset-inline:0;bottom:0;background:var(--paper);border-top:2px solid var(--ink);max-height:88vh;overflow:auto;padding:var(--s6) 0 calc(var(--s6) + env(safe-area-inset-bottom));animation:up .2s var(--ease)}
@keyframes up{from{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}
.drawer-card .wrap{max-width:760px}
.drawer h2{font-size:var(--t38);line-height:1.1;margin-bottom:var(--s5)}
.drawer ol{margin:0 0 var(--s6);padding:0;list-style:none;counter-reset:p;border-top:1px solid var(--rule)}
.drawer li{counter-increment:p;display:grid;grid-template-columns:2.2em 1fr;padding-block:var(--s3);border-bottom:1px solid var(--rule);font-size:var(--t16)}
.drawer li::before{content:counter(p);font-family:var(--f-display);font-style:italic;color:var(--ink-2)}
.drawer-act{display:flex;flex-wrap:wrap;gap:var(--s3);justify-content:flex-end}

/* ---------- tour pages ---------- */
.crumbs{font-size:var(--t14);color:var(--ink-2);padding-top:var(--s5)}
.crumbs a{color:inherit}
.tp-hero .wrap{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(var(--s6),4vw,var(--s8));padding-block:var(--s6) var(--s8)}
.tp-hero h1{font-size:var(--tph1);line-height:1.04;margin:var(--s3) 0 var(--s4);text-wrap:balance}
.tp-hero .tagline{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink-2);margin-bottom:var(--s6);max-width:30em}
.tp-hero .row-fares{border-top:1px solid var(--rule);padding-top:var(--s4);margin-bottom:var(--s6)}
.tp-hero .row-act{flex-direction:row;flex-wrap:wrap;gap:var(--s3) var(--s5);align-items:center}
.tp-fig{margin:0}
.tp-fig img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.tp-fig figcaption{font-size:var(--t12);color:var(--ink-2);margin-top:var(--s2)}
.tp-body{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(var(--s6),5vw,var(--s9));padding-bottom:var(--s8)}
.prose p{max-width:62ch;margin-bottom:var(--s4)}
.prose p:first-child{font-family:var(--f-display);font-size:var(--t21);line-height:1.5}
.facts{margin:0;display:grid;grid-template-columns:auto 1fr;border-top:2px solid var(--ink)}
.facts dt,.facts dd{margin:0;padding-block:var(--s3);border-bottom:1px solid var(--rule);font-size:var(--t14)}
.facts dt{color:var(--ink-2);padding-inline-end:var(--s5)}
.inc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--s6);margin-top:var(--s7)}
.inc h3,.itin h2,.tp-faq h2,.related h2{font-size:var(--t28);margin-bottom:var(--s4)}
.inc ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--rule)}
.inc li{padding-block:var(--s2);border-bottom:1px solid var(--rule);font-size:var(--t14)}
.inc .no li{color:var(--ink-2)}
.itin{padding-block:var(--s7);border-top:1px solid var(--rule)}
.itin ol{margin:0;padding:0;list-style:none}
.itin li{display:grid;grid-template-columns:5.5em 1fr;gap:var(--s4);padding-block:var(--s3);border-bottom:1px solid var(--rule)}
.itin time{font-family:var(--f-display);font-size:var(--t21);font-variant-numeric:tabular-nums;line-height:1.2}
.tp-faq{padding-block:var(--s7);border-top:1px solid var(--rule)}
.tp-faq .faq-list{grid-template-columns:minmax(0,1fr)}
.related{padding-block:var(--s7);border-top:1px solid var(--rule)}
.related ul{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s6)}
.related a{text-decoration:none;display:block}
.related img{aspect-ratio:4/3;object-fit:cover;width:100%;height:auto;margin-bottom:var(--s3)}
.related b{font-family:var(--f-display);font-weight:400;font-size:var(--t21);display:block}
.related span{font-size:var(--t14);color:var(--ink-2)}
.other-langs{font-size:var(--t14);color:var(--ink-2);display:flex;flex-wrap:wrap;gap:var(--s2) var(--s4);align-items:center}
@media (max-width:919px){.tp-hero .wrap,.tp-body{grid-template-columns:minmax(0,1fr)}.inc{grid-template-columns:minmax(0,1fr)}.related ul{grid-template-columns:minmax(0,1fr)}.tp-fig{order:-1}}

/* ---------- locator miniature (the chart, echoed per tour) ---------- */
.loc{overflow:visible}
.loc use{fill:var(--buff);stroke:var(--ink)}
.loc .hl{fill:var(--mag)}
.loc .hp{fill:var(--mag)}
.row-fig.is-chart .loc use{fill:var(--buff)}

/* ---------- display steps (fixed sizes on the declared scale; no fluid in-between values) ---------- */
@media (min-width:560px){:root{--display:var(--t56)}}
@media (min-width:920px){:root{--display:var(--t67);--h2:var(--t50);--tph1:var(--t56)}}
@media (min-width:1280px){:root{--display:var(--t84);--tph1:var(--t67)}}
@media (min-width:920px){html[lang="zh-CN"],html[lang="ar"]{--display:var(--t56)}}
@media (min-width:1280px){html[lang="zh-CN"],html[lang="ar"]{--display:var(--t67)}}

/* ---------- Amendment 3 (2026-09-24): catalogue band, reveals, wordmark ----------
   Taken from references read in the frontend-ultimate archive (audit.json, captured 2026-09-24, 1536x860):
   kudanil.com clip-path curtains on its own curve (.785,.135,.15,.86); thedamai.com expo settles around 1.3s;
   kisawasanctuary.com one ink line on a pale aerial band, no scrim; soneva.com photo zoom 1.12 over 1.2s. */
:root{--ease-curtain:cubic-bezier(.785,.135,.15,.86);--ease-soft:cubic-bezier(.33,1,.45,1);
  --band-h2:var(--t38)}
@media (min-width:560px){:root{--band-h2:var(--t44)}}
@media (min-width:920px){:root{--band-h2:var(--t56)}}
@media (min-width:1280px){:root{--band-h2:var(--t67)}}
@media (min-width:920px){html[lang="zh-CN"],html[lang="ar"]{--band-h2:var(--t44)}}
@media (min-width:1280px){html[lang="zh-CN"],html[lang="ar"]{--band-h2:var(--t56)}}

/* the brand is one mark in every language (it followed the per-language display face before) */
.brand b{font-family:var(--f-chart)}

/* catalogue band: one full-bleed photograph, the catalogue's own kicker + h2 in ink on its calm water */
.cat{padding-top:0}
.cat-band{position:relative;height:min(78vh,760px);min-height:460px;overflow:hidden;background:var(--sea);margin-bottom:var(--s8)}
.band-fig{position:absolute;inset:-8% 0;margin:0}
.band-fig img{width:100%;height:100%;object-fit:cover;object-position:30% 64%;transform-origin:30% 72%;transition:transform 1.6s var(--ease)}
/* RTL: mirrored around the CENTRE (mirroring around the 30% focal point slid the photo off the band) */
html[dir="rtl"] .band-fig img{transform:scaleX(-1);transform-origin:50% 72%}
.band-text{position:absolute;inset-inline:0;bottom:0;padding-bottom:clamp(var(--s6),5vw,var(--s8))}
.band-text .kicker{font-family:var(--f-display);font-style:italic;font-size:var(--t21);color:var(--ink);margin-bottom:var(--s3)}
.band-text h2{font-size:var(--band-h2);line-height:1.03;letter-spacing:-.015em;max-width:12em;text-wrap:balance;color:var(--ink)}
@media (max-width:559px){.cat-band{height:auto;aspect-ratio:3/4;min-height:0}.band-fig img{object-position:18% 70%}}

/* reveals: html.rv-on is set by v2.js only (motion allowed + IntersectionObserver), so no script means no hiding */
.rv-init .rv,.rv-init .card-fig,.rv-init .card-fig img,.rv-init .band-fig img{transition:none!important}
.rv-on .rv{opacity:0;transform:translateY(24px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.rv-on .rv.is-in{opacity:1;transform:none}
.rv-on .cat-band:not(.is-in) .band-fig img{transform:scale(1.12)}
html[dir="rtl"].rv-on .cat-band:not(.is-in) .band-fig img{transform:scale(-1.12,1.12)}
/* the resting state must be an inset() too: clip-path cannot interpolate from inset() to none, it just jumps */
.card-fig{clip-path:inset(0 0 0 0);transition:clip-path 1s var(--ease-curtain)}
.card-fig img{transition:transform 1.2s var(--ease-soft)}
.rv-on .card:not(.is-in) .card-fig{clip-path:inset(0 0 100% 0)}
.rv-on .card:not(.is-in) .card-fig img{transform:scale(1.08)}
@media (hover:hover){.card:hover .card-fig img{transform:scale(1.06)}}
.js .panel{animation:panel-in .2s var(--ease) both}
@keyframes panel-in{from{opacity:0}to{opacity:1}}

/* footer wordmark (gallery pattern 12): an SVG whose viewBox is the measured ink of "Legitour" at 84px, so it fills the
   column at every width and is cut 3 units under the baseline; the text itself stays at the declared 84px size */
.foot{padding-bottom:0}
.foot-mark{grid-column:1/-1;display:block;color:var(--ink);text-decoration:none;margin-top:var(--s6)}
.foot-mark svg{display:block;width:100%;height:auto;overflow:hidden}
.foot-mark text{font-family:var(--f-chart);fill:currentColor}
.foot-mark:hover{color:var(--ink-2)}
@media (max-width:919px){.foot{padding-bottom:64px}}
