/* === Self-hosted fonts (latin subset), public/fonts/throughthetype/ ===
   Archivo Black  display: the headline, the section headings, every figure
   Karla          text: body, labels, buttons, tables
   No third-party stylesheet is loaded on any page of this network, so the three
   faces below are the whole type system. The build rewrites this run from
   sites/massagesamsterdam.json theme.fonts.faces; keep the two in step. */
@font-face {
  font-family: 'Archivo Black';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/throughthetype/archivo-black-normal-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Karla';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fonts/throughthetype/karla-normal-400-700.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Karla';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url('/fonts/throughthetype/karla-italic-400.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================================================================
   MASSAGES AMSTERDAM, theme "throughthetype"
   One flat field of bottle green. The headline is set enormous in Archivo Black
   and the roster is seen THROUGH it: the photographs are clipped to the
   letterforms and appear nowhere else on that first screen. Under it the page
   runs as wide bands of the same green, one band in cadmium, a long measure and
   a hairline rule under every label.

   NOTHING ON ANY PAGE MOVES. No keyframe rule, no timed property, no easing,
   no script of this theme's own, nothing that fades or travels on scroll. A
   hover changes a colour or an underline and does it at once, in one frame, so
   there is no reduced-motion block here: it would have nothing to say. Keep it
   that way when this file grows.

   NOTHING IS DRAWN EITHER. Every mark on every page is a photograph, a letter,
   a flat rectangle or a rule. No scene, no object, no building, no vehicle, no
   character. The only exceptions are the two messenger glyphs on the buttons.

   Two jobs in one file:
     1. this theme's own pages (home, profile, technique, hub, guide, indexes)
     2. a compatibility layer for the SHARED templates it inherits: about, faq,
        contact, booking, terms, privacy, dmca, the age statement, the glossary,
        the booking terms and 404, which render .container / .reading / .hero /
        .btn / .label-top / .form-row.
   ============================================================================ */

:root{
  --ground:#0B2E22;
  --deep:#07201A;
  --lift:#0F3B2C;
  --bone:#F4EEE2;
  --dim:#BFD3C4;
  --cad:#FF6A1A;
  --cad-deep:#E2530A;
  --on-cad:#06190F;
  --rule:rgba(244,238,226,0.24);
  --hair:rgba(244,238,226,0.13);
  --wa:#25D366;
  /* tokens the SHARED templates reference from inline styles: keep them
     declared so an inherited page never falls back to an invalid value */
  --ink:#F4EEE2;
  --muted:#BFD3C4;
  --faint:#A9C1B0;
  --cloud:#0B2E22;
  --sky-3:#07201A;
  --disp:'Archivo Black','Arial Black',Impact,sans-serif;
  --sans:'Karla',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --serif:'Karla',Georgia,'Times New Roman',serif;
  --max:1500px;
  --reading:680px;
  --gutter:clamp(16px,4vw,54px);
}

/* ---------- ground -------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;background:var(--ground);}
html,body{margin:0;padding:0;max-width:100%;overflow-x:hidden;}
@supports (overflow:clip){html,body{overflow-x:clip;}}
body{
  background:var(--ground);
  color:var(--bone);
  font-family:var(--sans);
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
main{display:block;}
img{max-width:100%;display:block;border:0;}
p{margin:0 0 14px;}
a{color:inherit;text-decoration:none;}
ul,ol{margin:0;padding:0;}
li{list-style:none;}
button{font:inherit;color:inherit;border-radius:0;}
table{border-collapse:collapse;width:100%;}
:focus-visible{outline:3px solid var(--cad);outline-offset:3px;}
.wrap{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--gutter);}
.sr-only,.rates-card__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.no-save,.no-save img{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;}
.wrap-any{overflow-wrap:anywhere;}
.skip{position:absolute;left:-9999px;}
.skip:focus{left:14px;top:14px;z-index:90;background:var(--bone);color:var(--ground);padding:10px 16px;font-weight:600;}

/* ---------- display type -------------------------------------------------- */
.disp,h1,h2,h3{
  font-family:var(--disp);
  font-weight:400;
  text-transform:uppercase;
  letter-spacing:-.01em;
  margin:0;
}
h1{font-size:clamp(2rem,5.6vw,4.6rem);line-height:.92;}
h2{font-size:clamp(1.7rem,3.6vw,3rem);line-height:.98;max-width:19ch;}
h3{font-size:1.16rem;line-height:1.12;letter-spacing:.005em;}
.eye,.kicker,.label-top,.rates-card__title{
  font-size:.7rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase;
  color:var(--cad);font-family:var(--sans);
}
.kicker span{color:var(--dim);}
.bhead{margin-bottom:clamp(22px,3.4vw,46px);}
.bhead .eye{display:block;margin-bottom:12px;}

/* ---------- the 21 bar (raised by the shared app.js) ---------------------- */
.age-bar{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;justify-content:center;
  background:var(--deep);border-bottom:1px solid var(--hair);
  padding:9px clamp(14px,4vw,40px);font-size:.78rem;color:var(--dim);
}
.age-bar__txt b{color:var(--cad);font-weight:700;letter-spacing:.06em;}
.age-bar__ok{
  background:none;border:1px solid var(--rule);color:var(--bone);
  padding:6px 13px;font-size:.7rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;
}
.age-bar__ok:hover{border-color:var(--cad);color:var(--cad);}
body.age-confirmed .age-bar{display:none;}

/* ---------- top bar ------------------------------------------------------- */
.site-header{border-bottom:1px solid var(--hair);background:var(--ground);}
.topbar{
  width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--gutter);
  display:flex;align-items:center;gap:14px;min-height:62px;flex-wrap:wrap;
}
.brand{
  font-family:var(--disp);font-size:clamp(.92rem,1.4vw,1.14rem);
  letter-spacing:.13em;text-transform:uppercase;margin:0;margin-right:auto;
}
.brand:hover{color:var(--cad);}
.agepill{
  font-size:.66rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;
  color:var(--dim);border:1px solid var(--rule);padding:6px 11px;
}
.nav-toggle{
  display:none;background:none;border:1px solid var(--rule);color:var(--bone);
  padding:7px 13px;font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;cursor:pointer;
}
.nav-toggle:hover{border-color:var(--cad);color:var(--cad);}
.site-header nav{
  flex-basis:100%;border-top:1px solid var(--hair);
  display:flex;flex-wrap:wrap;gap:0 clamp(14px,2.2vw,30px);padding:10px 0 12px;
}
.site-header nav a{
  font-size:.72rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--dim);
  padding:5px 0;border-bottom:2px solid transparent;
}
.site-header nav a:hover{color:var(--cad);border-bottom-color:var(--cad);}

/* ---------- build-injected breadcrumbs and related pages ------------------ */
nav.crumbs{
  max-width:var(--max);margin:0 auto;padding:16px var(--gutter) 0;
  font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;
}
nav.crumbs ol{opacity:1;gap:4px 10px;}
nav.crumbs li{color:var(--dim);gap:10px;}
nav.crumbs li+li::before{content:"/";opacity:1;color:var(--cad);}
nav.crumbs a{color:var(--dim);border-bottom:1px solid transparent;}
nav.crumbs a:hover{color:var(--cad);border-bottom-color:var(--cad);}
nav.crumbs [aria-current]{opacity:1;color:var(--bone);}
aside.seo-related{max-width:var(--max);margin:0 auto;padding:clamp(34px,4vw,56px) var(--gutter) clamp(38px,5vw,60px);}
aside.seo-related .seo-related__in{border-top:2px solid var(--cad);padding-top:20px;}
aside.seo-related .seo-related__h{
  margin:0 0 14px;font-size:.7rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase;
  color:var(--cad);opacity:1;
}
aside.seo-related ul{gap:0 clamp(24px,4vw,64px);}
aside.seo-related a{
  border-bottom:1px solid var(--hair);font-size:.97rem;color:var(--dim);padding:11px 0;
}
aside.seo-related a:hover{opacity:1;color:var(--cad);}

/* ============================ THE OPENING SCREEN ========================== */
.open{
  padding-top:clamp(18px,3vh,40px);
  padding-bottom:clamp(24px,3.4vh,46px);
  display:flex;flex-direction:column;gap:clamp(14px,2vh,26px);
}
/* the headline, and the roster seen through it. The url() list is written on the
   element by home.mustache from this site's own lead photographs; the strip
   geometry below is fixed, so six layers tile the word exactly once. */
.type{
  line-height:.86;
  font-family:var(--disp);
  font-weight:400;
  text-transform:uppercase;
  letter-spacing:-.008em;
  color:var(--bone);
  overflow-wrap:break-word;
  filter:contrast(1.16) saturate(1.2) brightness(1.03);
  background-size:16.7% 100%;
  background-position:0% 24%,20% 21%,40% 24%,60% 20%,80% 23%,100% 21%;
  background-repeat:no-repeat;
  background-color:var(--deep);
}
@supports ((-webkit-background-clip:text) or (background-clip:text)){
  .type{
    -webkit-background-clip:text;
    background-clip:text;
    color:transparent;
    background-color:transparent;
  }
}
h1.type{font-size:clamp(2.4rem,8.2vw,7.6rem);max-width:15ch;}
/* one photograph behind one word: the profile heading */
.type--solo{background-size:cover;background-position:50% 18%;filter:contrast(1.06) saturate(1.12) brightness(1.14);}

.lede{
  font-size:clamp(1.08rem,1.5vw,1.4rem);line-height:1.45;max-width:66ch;color:var(--bone);
  border-top:2px solid var(--cad);padding-top:16px;margin:0;
}
.shelf{
  display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);
  gap:clamp(20px,3vw,56px);align-items:end;padding-top:clamp(16px,3vh,32px);
}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,2vw,28px);}
.facts li{border-top:1px solid var(--rule);padding-top:11px;}
/* home: the buttons alone under the lede, the three facts in their own band below the roster */
.shelf--solo{grid-template-columns:1fr;}
.shelf--solo .btns{justify-content:flex-start;}
.facts .k{display:block;font-size:.66rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;color:var(--dim);margin-bottom:5px;}
.facts .v{font-family:var(--disp);font-size:clamp(1.1rem,1.8vw,1.56rem);line-height:1;letter-spacing:.01em;text-transform:uppercase;}

/* ---------- inner-page opening: type and a rule, no photograph ------------ */
.phero{padding-top:clamp(26px,4vw,52px);padding-bottom:clamp(22px,3vw,40px);}
.phero .kicker{display:block;margin-bottom:14px;}
.phero h1{max-width:20ch;}
.phero .lede{margin-top:clamp(18px,2.4vw,30px);}
.phero .btns{margin-top:clamp(20px,3vw,34px);}

/* ---------- buttons ------------------------------------------------------- */
.btns{display:flex;flex-wrap:wrap;gap:12px;}
.shelf .btns{justify-content:flex-end;}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:54px;padding:0 24px;border:2px solid var(--cad);
  font-family:var(--sans);font-weight:700;font-size:.95rem;letter-spacing:.09em;text-transform:uppercase;
}
.btn svg{width:19px;height:19px;flex:none;fill:currentColor;}
.btn-a{background:var(--cad);color:var(--on-cad);}
.btn-a:hover,.btn-a:focus-visible{background:var(--cad-deep);border-color:var(--cad-deep);}
.btn-b{background:transparent;color:var(--cad);}
.btn-b:hover,.btn-b:focus-visible{background:var(--cad);color:var(--on-cad);}

/* ============================ BANDS ======================================= */
.band{padding:clamp(44px,6vw,92px) 0;border-top:1px solid var(--hair);}
.band.deep{background:var(--deep);}
.band.cad{background:var(--cad);color:var(--on-cad);border-top:0;}
.band.cad .eye{color:var(--on-cad);}
.band.cad a{color:var(--on-cad);}
.band--tight{padding:clamp(32px,4vw,62px) 0;}
.say{max-width:64ch;display:grid;gap:16px;}
.say p{font-size:clamp(1.02rem,1.25vw,1.2rem);line-height:1.62;color:var(--dim);margin:0;}
.say p strong{color:var(--bone);font-weight:600;}
.band.cad p,.band.cad .say p,.band.cad .lede{color:var(--on-cad);}
.band.cad .lede{border-top-color:var(--on-cad);}
.more{margin:clamp(22px,3vw,34px) 0 0;font-size:.95rem;}
.more a{border-bottom:2px solid var(--cad);padding-bottom:2px;color:var(--bone);}
.more a:hover{color:var(--cad);}
.band.cad .more a{border-bottom-color:var(--on-cad);}

/* ---------- the numbered list of techniques ------------------------------- */
.tech{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(26px,4vw,72px);}
.tech li{border-top:1px solid var(--hair);padding:17px 0 19px;display:grid;grid-template-columns:2.4rem minmax(0,1fr);gap:0 14px;}
.tech .no{font-family:var(--disp);font-size:.88rem;color:var(--cad);padding-top:5px;}
.tech h3{margin-bottom:5px;}
.tech a{display:block;}
.tech a:hover h3{color:var(--cad);}
.tech p{color:var(--dim);font-size:.98rem;max-width:44ch;margin:0;}
.tech .px{display:block;margin-top:5px;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--cad);}

/* ---------- roster, printed in full colour -------------------------------- */
.roster{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,2vw,30px);}
.roster li{min-width:0;}
/* the shared app.js shuffles these grids and reveals N cards; until it runs,
   the extra cards never paint */
[data-shuffle="8"] > :nth-child(n+9){display:none;}
[data-shuffle="4"] > :nth-child(n+5){display:none;}
.roster img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;object-position:50% 22%;background:var(--lift);}
.roster .tag{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:12px 0 0;border-top:2px solid var(--cad);margin-top:12px;}
.roster .nm{font-family:var(--disp);font-size:1.06rem;text-transform:uppercase;letter-spacing:.02em;}
.roster .mt{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);text-align:right;}
.roster a:hover .nm{color:var(--cad);}

/* ---------- the photograph run on a profile ------------------------------- */
.shots{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.6vw,22px);}
.shots img{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;background:var(--lift);}

/* ============================ FIGURES ===================================== */
.rates{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:clamp(18px,3vw,46px);}
.rates li{border-top:3px solid var(--on-cad);padding-top:14px;}
.rates .len{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;}
.rates .amt{font-family:var(--disp);font-size:clamp(2.4rem,6vw,4.6rem);line-height:.88;letter-spacing:-.02em;margin:8px 0 6px;}
.rates p{font-size:.98rem;max-width:26ch;margin:0;}
.cadnote{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px clamp(24px,4vw,64px);margin-top:clamp(24px,3.4vw,42px);padding-top:22px;border-top:1px solid rgba(6,25,15,0.34);}
.cadnote p{font-size:1.02rem;max-width:46ch;margin:0;}
.band.cad .btn{border-color:var(--on-cad);}
.band.cad .btn-a{background:var(--on-cad);color:var(--cad);}
.band.cad .btn-a:hover{background:var(--deep);border-color:var(--deep);}
/* The global focus ring is cadmium, which is this band's own background, so a
   keyboard user sees nothing there. Inside the cadmium band the ring switches to
   the band's ink instead. */
.band.cad :focus-visible{outline-color:var(--on-cad);}
.band.cad .btn-b{color:var(--on-cad);background:transparent;}
.band.cad .btn-b:hover{background:var(--on-cad);color:var(--cad);}

/* the plain ladder on technique and hub pages */
.ladder{max-width:520px;}
.ladder th,.ladder td{border-top:1px solid var(--hair);padding:12px 0;text-align:left;font-size:1rem;}
.ladder th{font-weight:500;color:var(--dim);}
.ladder td{font-family:var(--disp);text-align:right;letter-spacing:.01em;}

/* the profile rate card (shared partials/rates.mustache) */
.rates-card{border-top:2px solid var(--cad);padding-top:18px;}
.rates-card__title{margin:0 0 16px;}
.rates-card__table{margin-bottom:22px;}
.rates-card__table caption{
  text-align:left;font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--dim);padding-bottom:8px;
}
.rates-card__table th,.rates-card__table td{border-top:1px solid var(--hair);padding:10px 0;font-size:.96rem;text-align:right;}
.rates-card__table thead th{font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.rates-card__table tbody th{text-align:left;font-weight:500;color:var(--dim);}
.rates-card__table td{font-family:var(--disp);letter-spacing:.01em;}
.rates-card__terms{margin:0;font-size:.9rem;}
.rates-card__terms a{border-bottom:1px solid var(--cad);}
.rates-card__terms a:hover{color:var(--cad);}
/* the same card standing on the cadmium band */
.band.cad .rates-card{border-top-color:var(--on-cad);}
.band.cad .rates-card__title{color:var(--on-cad);}
.band.cad .rates-card__table caption,
.band.cad .rates-card__table thead th,
.band.cad .rates-card__table tbody th{color:var(--on-cad);}
.band.cad .rates-card__table th,
.band.cad .rates-card__table td{border-top-color:rgba(6,25,15,0.3);}
.band.cad .rates-card__terms a{border-bottom-color:var(--on-cad);}
.band.cad .ladder th{color:var(--on-cad);}
.band.cad .ladder th,.band.cad .ladder td{border-top-color:rgba(6,25,15,0.3);}
.band.cad .more a{color:var(--on-cad);}

/* ============================ WHERE SHE COMES TO ========================== */
.split{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(24px,4vw,72px);}
.places{display:flex;flex-wrap:wrap;gap:9px;}
.places li,.tags .tag{
  border:1px solid var(--rule);padding:8px 13px;
  font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);
}
.places li.on{border-color:var(--cad);color:var(--cad);}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:0;}
a.tag:hover{border-color:var(--cad);color:var(--cad);}
.plnote{margin-top:18px;color:var(--dim);font-size:.96rem;max-width:44ch;}

/* ============================ LISTS AND PROSE ============================= */
.index{display:grid;gap:0;}
.index li{border-top:1px solid var(--hair);}
.index li:last-child{border-bottom:1px solid var(--hair);}
.index a{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px clamp(18px,3vw,44px);padding:20px 0;align-items:baseline;}
.index__t{font-family:var(--disp);font-size:clamp(1.05rem,1.7vw,1.4rem);text-transform:uppercase;line-height:1.08;letter-spacing:-.005em;}
.index__d{grid-column:1;color:var(--dim);font-size:.98rem;max-width:70ch;}
.index__m{grid-row:1;grid-column:2;font-size:.68rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);}
.index a:hover .index__t{color:var(--cad);}

.linklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 clamp(24px,4vw,64px);}
.linklist li{border-top:1px solid var(--hair);}
.linklist a{display:block;padding:14px 0;font-size:1rem;color:var(--dim);}
.linklist a:hover{color:var(--cad);}

.prose{max-width:var(--reading);}
.prose--wide{max-width:74ch;}
.prose p{color:var(--dim);font-size:1.03rem;line-height:1.7;margin:0 0 16px;}
.prose h2{margin:40px 0 14px;font-size:clamp(1.4rem,2.5vw,2.1rem);max-width:24ch;}
.prose h3{margin:28px 0 10px;color:var(--bone);}
.prose ul,.prose ol{margin:0 0 18px;}
.prose li{border-top:1px solid var(--hair);padding:11px 0;color:var(--dim);font-size:1rem;}
.prose a{color:var(--bone);border-bottom:2px solid var(--cad);}
.prose a:hover{color:var(--cad);}
.prose em{font-style:italic;color:var(--bone);}
.prose strong{color:var(--bone);font-weight:600;}
.independence{color:var(--dim);font-size:.98rem;border-top:1px solid var(--hair);padding-top:14px;margin-top:18px;}
.independence a{color:var(--bone);border-bottom:2px solid var(--cad);}
.independence a:hover{color:var(--cad);}

.cols{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:clamp(26px,4vw,72px);align-items:start;}
.panel{border-top:2px solid var(--cad);padding-top:18px;}
.panel .label{display:block;font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin:22px 0 10px;}
.spec{margin:0;}
.spec > div{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid var(--hair);padding:9px 0;}
.spec dt{font-size:.72rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);}
.spec dd{margin:0;font-size:.95rem;text-align:right;}

/* ---------- questions ----------------------------------------------------- */
.faq{border-top:1px solid var(--hair);}
.faq details{border-bottom:1px solid var(--hair);}
.faq summary{
  list-style:none;cursor:pointer;padding:16px 34px 16px 0;position:relative;
  font-size:1.02rem;font-weight:600;color:var(--bone);
}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";position:absolute;right:4px;top:14px;font-family:var(--disp);color:var(--cad);font-size:1.1rem;}
.faq details[open] summary::after{content:"\2013";}
.faq summary:hover{color:var(--cad);}
.faq .a p{color:var(--dim);font-size:1rem;margin:0 0 16px;max-width:70ch;}
.faq .a a{color:var(--bone);border-bottom:2px solid var(--cad);}

/* ============================================================================
   SHARED-TEMPLATE COMPATIBILITY LAYER
   about, faq, contact, booking, terms, privacy, dmca, the age statement, the
   glossary, the booking terms and 404 render markup this theme does not own.
   These rules give that markup the same language as the rest of the site.
   ============================================================================ */
.container{max-width:var(--max);margin:0 auto;padding:0 var(--gutter);width:100%;}
.reading{max-width:var(--reading);}
.reading.container{max-width:var(--max);padding:0 var(--gutter);}
section .reading > *{max-width:var(--reading);}
section{padding:clamp(32px,4.4vw,64px) 0;}
.hero{max-width:var(--max);margin:0 auto;padding:clamp(28px,4vw,56px) var(--gutter) clamp(22px,3vw,38px);}
.hero-small{padding-top:clamp(24px,3vw,44px);}
.hero .container{padding:0;}
.hero h1{max-width:20ch;}
.hero .lede{margin-top:clamp(18px,2.4vw,30px);}
.label-top{display:block;margin-bottom:14px;}
section .container > h1{margin-bottom:16px;}
section p{color:var(--dim);line-height:1.68;}
section .reading h2{margin:40px 0 14px;font-size:clamp(1.4rem,2.6vw,2.2rem);}
section .reading h3{margin:26px 0 8px;color:var(--bone);}
/* Body links inside an inherited page, but NOT the two shared buttons: the
   shared templates put .btn.btn-primary and .btn.btn-ghost inside .reading, and
   a plain "section .reading a" outranks .btn-primary. :not(.btn) hands the
   buttons back to their own rules. */
section .reading a:not(.btn){color:var(--bone);border-bottom:2px solid var(--cad);}
section .reading a:not(.btn):hover{color:var(--cad);}
section .reading ul{padding-left:0;margin:0 0 20px;}
section .reading ul li{border-top:1px solid var(--hair);padding:11px 0;font-size:1rem;color:var(--dim);}
section .reading em{font-style:italic;color:var(--bone);}
.btn-primary{
  background:var(--cad);color:var(--on-cad);border:2px solid var(--cad);display:inline-block;
  font-weight:700;font-size:.92rem;letter-spacing:.09em;text-transform:uppercase;padding:16px 24px;
}
.btn-primary:hover{background:var(--cad-deep);border-color:var(--cad-deep);color:var(--on-cad);}
.btn-ghost{
  background:none;color:var(--cad);border:2px solid var(--cad);display:inline-block;
  font-weight:700;font-size:.92rem;letter-spacing:.09em;text-transform:uppercase;padding:16px 24px;
}
.btn-ghost:hover{background:var(--cad);color:var(--on-cad);}
.form-row{margin-top:18px;}
.form-row .label{display:block;margin:0 0 8px;font-size:.68rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);}
.form-row select,.form-row input{
  width:100%;max-width:100%;padding:14px 12px;border:1px solid var(--rule);
  background:var(--deep);font-family:var(--sans);font-size:1rem;color:var(--bone);border-radius:0;
}
.form-row select:focus,.form-row input:focus{outline:3px solid var(--cad);outline-offset:1px;}

/* ============================ FOOTER ====================================== */
.site-footer{background:var(--deep);border-top:1px solid var(--hair);padding:clamp(34px,4vw,56px) 0 clamp(26px,3vw,40px);color:var(--dim);font-size:.92rem;}
.site-footer__in{max-width:var(--max);margin:0 auto;padding:0 var(--gutter);display:grid;gap:30px clamp(24px,4vw,64px);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
.site-footer__h{font-family:var(--disp);text-transform:uppercase;font-size:.88rem;letter-spacing:.06em;color:var(--bone);margin:0 0 12px;}
.site-footer__note{max-width:42ch;line-height:1.6;}
.site-footer ul{display:grid;gap:7px;}
.site-footer li{line-height:1.5;}
.site-footer a{color:var(--dim);border-bottom:1px solid transparent;}
.site-footer a:hover{color:var(--cad);border-bottom-color:var(--cad);}
.site-footer__legal{
  max-width:var(--max);margin:clamp(26px,3vw,40px) auto 0;padding:18px var(--gutter) 0;
  border-top:1px solid var(--hair);display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:space-between;
  font-size:.8rem;letter-spacing:.04em;
}
.site-footer__legal .age21{color:var(--cad);font-weight:700;letter-spacing:.14em;text-transform:uppercase;}

/* ============================ MOBILE DOCK ================================= */
.m-dock{display:none;}

/* ============================ NARROWER SCREENS ============================ */
@media (max-width:1080px){
  .shelf{grid-template-columns:1fr;align-items:start;gap:22px;}
  .shelf .btns{justify-content:flex-start;}
  .lede{max-width:56ch;}
  .split,.cols{grid-template-columns:1fr;}
  .roster{gap:12px;}
  .roster .nm{font-size:1rem;}
  .shots{grid-template-columns:repeat(3,minmax(0,1fr));}
}
@media (max-width:760px){
  body{font-size:16px;padding-bottom:84px;}
  .topbar{min-height:58px;gap:10px;}
  .brand{font-size:.88rem;letter-spacing:.1em;}
  .agepill{display:none;}
  .nav-toggle{display:inline-block;}
  .site-header nav{display:none;}
  .site-header nav.open{display:flex;flex-direction:column;gap:0;}
  .site-header nav.open a{border-bottom:1px solid var(--hair);padding:12px 0;}
  .open{padding-bottom:26px;gap:16px;}
  .kicker{font-size:.64rem;letter-spacing:.2em;}
  h1.type{font-size:clamp(2.1rem,10.4vw,4rem);max-width:none;}
  .lede{font-size:1.04rem;padding-top:14px;}
  .facts{grid-template-columns:1fr;gap:0;}
  .facts li{border-top:1px solid var(--hair);padding:12px 0;}
  .facts li:first-child{border-top:2px solid var(--cad);}
  .facts .k{display:inline-block;margin:0;width:9.4em;}
  .facts .v{display:inline;}
  .tech{grid-template-columns:1fr;}
  .roster,.shots{grid-template-columns:repeat(2,minmax(0,1fr));}
  .rates{grid-template-columns:1fr;gap:20px;}
  .cadnote{grid-template-columns:1fr;}
  .index a{grid-template-columns:1fr;}
  .index__m{grid-row:auto;grid-column:1;}
  .open .btns,.phero .btns{display:none;}
  .band.cad .btns,.band--write .btns{display:flex;}
  .m-dock{
    display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:10px;
    position:fixed;left:0;right:0;bottom:0;z-index:60;
    background:var(--deep);border-top:1px solid var(--rule);
    padding:10px 14px calc(10px + env(safe-area-inset-bottom));
  }
  .m-dock a{
    display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 8px;
    border:2px solid var(--cad);font-size:.8rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  }
  .m-dock svg{width:16px;height:16px;flex:none;fill:currentColor;}
  /* the headline clipped to photographs turns to solid bone type on a phone */
  .type,.type--solo{
    background-image:none !important;background-color:transparent;
    -webkit-background-clip:border-box;background-clip:border-box;
    color:var(--bone);filter:none;
  }
  .shelf--solo{display:none;}
  body{padding-bottom:calc(88px + env(safe-area-inset-bottom));}
  .nav-toggle,.age-bar__ok{min-height:44px;}
  .site-header nav.open a{min-height:44px;display:flex;align-items:center;}
  .tech p,.index__d,.plnote,.linklist a,.spec dd,.site-footer,.cadnote p,.independence,.rates-card__terms,.faq .a p{font-size:1rem;}
  /* the shared booking template sets its closing note inline at 14px */
  main p[style*="font-size:14px"]{font-size:16px !important;}
  .m-dock__wa{background:var(--cad);color:var(--on-cad);}
  .m-dock__tg,.m-dock__alt{background:transparent;color:var(--cad);}
}
@media (max-width:420px){
  .roster .mt{font-size:.64rem;letter-spacing:.08em;}
  .roster .nm{font-size:.94rem;}
  .roster .tag{flex-direction:column;align-items:flex-start;gap:2px;}
  .roster .mt{text-align:left;}
  .spec > div{flex-direction:column;gap:2px;}
  .spec dd{text-align:left;}
}

/* ---- injected by build: breadcrumbs + related pages ---- */
.crumbs{position:relative;z-index:3;max-width:var(--max,1200px);margin:0 auto;padding:14px clamp(18px,4vw,40px) 0;font-size:12.5px;line-height:1.5;letter-spacing:.02em}
.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px 8px;opacity:.72}
.crumbs li{display:inline-flex;align-items:center;gap:8px;min-width:0}
.crumbs li+li::before{content:"/";opacity:.5}
.crumbs a{color:inherit;text-decoration:none;border-bottom:1px solid transparent}
.crumbs a:hover{border-bottom-color:currentColor}
.crumbs [aria-current]{opacity:.85;overflow-wrap:anywhere}
.seo-related{position:relative;z-index:3;max-width:var(--max,1200px);margin:0 auto;padding:clamp(28px,4vw,48px) clamp(18px,4vw,40px)}
.seo-related__in{border-top:1px solid rgba(128,128,128,.28);padding-top:22px}
.seo-related__h{margin:0 0 14px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;opacity:.7}
.seo-related ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px 28px}
.seo-related a{color:inherit;text-decoration:none;display:block;padding:6px 0;border-bottom:1px solid rgba(128,128,128,.16);font-size:15px;line-height:1.4}
.seo-related a:hover{opacity:.75}
