/* === Self-hosted fonts (latin subset) ======================================
   Both faces sit in public/fonts/broadside/ and are declared in
   sites/happyendingmassageamsterdam.json theme.fonts.faces, which the build
   substitutes for the run of @font-face blocks below. No third-party stylesheet
   is loaded on any page of this network, so nothing here reaches Google.
   ========================================================================== */
@font-face {
  font-family: 'Big Shoulders Display';
  font-style: normal;
  font-weight: 600 900;
  font-display: swap;
  src: url('/fonts/broadside/big-shoulders-display-normal-600-900.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: 'Public Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url('/fonts/broadside/public-sans-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;
}

/* ============================================================================
   HAPPY ENDING MASSAGE AMSTERDAM, theme "broadside"
   A printed broadside. One red ground, cream ink, a single gold signal, a
   condensed display face set very large, hairline rules, numbered sections and
   an edge-to-edge band of portraits. Flat material only: no scene is drawn
   anywhere, and nothing on any page moves. Every motion property the owner
   ruled out on 2026-09-20 is absent from this file, and a hover changes a
   colour or a rule instantly or not at all.

   Two jobs in one stylesheet:
     1. the theme's own pages (home, profile, technique, hub, guide, indexes)
     2. a compatibility layer for the SHARED templates this theme inherits -
        about, faq, contact, booking, terms, privacy, dmca, the age statement,
        the glossary and 404 - which render .container/.reading/.hero/.t-card/
        .price-table and friends. Both speak the same language, so an inherited
        page is not an orphan inside this chrome.
   ============================================================================ */

:root{
  /* ground ---------------------------------------------------------------- */
  --ground:  #B81A20;
  --deep:    #8C1018;
  --darkest: #6E0C13;

  /* ink ------------------------------------------------------------------- */
  --ink:     #FFF6EC;
  --dim:     #EFD3C2;
  --muted:   #EFD3C2;
  --faint:   #EFD3C2;

  /* signal ---------------------------------------------------------------- */
  --gold:    #FFC53D;   /* display type only: numerals, rules, the focus ring */
  --gold-2:  #FFD46B;   /* the same signal, lightened for type under 24px (AA on --ground) */

  /* rules ----------------------------------------------------------------- */
  --rule:    rgba(255,246,236,.34);
  --hair:    rgba(255,246,236,.18);

  /* aliases the inherited shared templates name inline, so they resolve into
     this palette instead of dropping out of the cascade */
  --cloud:   #B81A20;
  --sky-3:   #8C1018;
  --white:   #FFF6EC;
  --wa:      #FFF6EC;

  /* type ------------------------------------------------------------------ */
  --display: 'Big Shoulders Display', 'Public Sans', 'Arial Narrow', Impact, sans-serif;
  --sans:    'Public Sans', system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif;
  --serif:   'Big Shoulders Display', 'Public Sans', 'Arial Narrow', Impact, sans-serif;

  /* measure --------------------------------------------------------------- */
  --wrap:    1600px;
  --max:     1600px;
  --reading: 72ch;
  --gut:     4vw;
  --pad:     clamp(40px,5.2vw,78px);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--ground)}
body{
  margin:0;
  background:var(--ground);
  color:var(--ink);
  font-family:var(--sans);
  font-size:17px;
  line-height:1.6;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,h5,p,ul,ol,dl,dd,figure,blockquote{margin:0}
ul{list-style:none;padding:0}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
.sr,.rates-card__sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.wrap-any{overflow-wrap:anywhere}
.skip{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip:focus{position:fixed;left:16px;top:16px;width:auto;height:auto;clip:auto;z-index:60;background:var(--ink);color:var(--ground);padding:10px 16px;font-weight:700}

.wrap,.container{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.disp{font-family:var(--display);font-weight:800;line-height:.9;letter-spacing:.005em;text-transform:uppercase}
.gold{color:var(--gold)}

/* ---- 21+ bar: a thin strip above the masthead ----------------------------- */
.age-bar{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 16px;
  background:var(--darkest);border-bottom:1px solid var(--hair);
  padding:8px var(--gut);
  font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--dim);
}
.age-bar[hidden],body.age-confirmed .age-bar{display:none}
.age-bar__txt b{color:var(--gold-2);margin-right:8px}
.age-bar__ok{
  font:inherit;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;
  padding:5px 13px;border:1px solid var(--ink);background:transparent;color:var(--ink);
  border-radius:0;cursor:pointer;line-height:1.3;
}
.age-bar__ok:hover{background:var(--ink);color:var(--ground)}

/* ---- masthead ------------------------------------------------------------- */
.site-header{border-bottom:1px solid var(--rule);background:var(--ground)}
.toprow{display:flex;align-items:baseline;justify-content:space-between;gap:12px 20px;padding-top:14px;padding-bottom:14px}
.logo,.brand{
  font-family:var(--display);font-weight:900;font-size:1.25rem;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink);
}
.agenote{font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);font-weight:600}
.navrow{border-top:1px solid var(--hair);display:flex;flex-wrap:wrap;align-items:center;gap:0 clamp(16px,2.2vw,32px);padding:0 var(--gut)}
.site-header nav{display:flex;flex-wrap:wrap;gap:0 clamp(16px,2.2vw,32px);margin-right:auto}
.site-header nav a{
  display:block;padding:11px 0;font-size:.74rem;font-weight:600;
  letter-spacing:.17em;text-transform:uppercase;color:var(--dim);
  border-bottom:2px solid transparent;
}
.site-header nav a:hover{color:var(--ink);border-bottom-color:var(--gold-2)}
.header-cta{display:flex;gap:10px;align-items:center;padding:7px 0}
.nav-toggle{
  display:none;font:inherit;font-size:.74rem;font-weight:700;letter-spacing:.17em;text-transform:uppercase;
  padding:8px 14px;margin:6px 0;border:1px solid var(--ink);background:transparent;color:var(--ink);
  border-radius:0;cursor:pointer;
}
.nav-toggle:hover{background:var(--ink);color:var(--ground)}

/* ---- the poster ----------------------------------------------------------- */
.poster{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:clamp(22px,3vw,44px) var(--gut) clamp(26px,3.4vw,50px);
  display:grid;grid-template-columns:1fr;gap:clamp(24px,3vw,40px);align-items:end;
}
.poster .kick{
  font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold-2);
  margin-bottom:clamp(12px,1.6vw,20px);
}
.poster h1{
  font-family:var(--display);font-weight:800;text-transform:uppercase;
  font-size:clamp(3.1rem,7.6vw,7.4rem);line-height:.84;letter-spacing:.004em;
  overflow-wrap:break-word;color:var(--ink);
}
.poster h1::first-line{color:var(--gold)}
.posterfoot{display:grid;gap:22px 40px;grid-template-columns:1fr}
.posterfoot .lede{
  font-size:clamp(1rem,1.2vw,1.12rem);max-width:46ch;color:var(--ink);
  grid-column:1 / -1;border-top:2px solid var(--ink);padding-top:14px;margin:0;
}
.kvstack{display:grid;gap:22px 40px;grid-template-columns:1fr 1fr}
.kvrow{border-top:1px solid var(--rule);padding-top:12px}
.kv{font-size:.74rem;letter-spacing:.17em;text-transform:uppercase;color:var(--dim);font-weight:600;margin-bottom:4px}
.kvbig{font-family:var(--display);font-weight:800;font-size:clamp(2rem,3.4vw,3.1rem);line-height:.9;text-transform:uppercase}
@media (min-width:1081px){
  .poster{grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:0 clamp(28px,4vw,64px)}
  .posterfoot{align-content:space-between;align-self:stretch;gap:26px;padding-top:6px}
  .kvstack{grid-template-columns:1fr;gap:26px}
  .posterfoot .lede{border-top:0;padding-top:0}
  .posterfoot .kvrow{border-top:2px solid var(--ink);padding-top:12px}
}

/* ---- section furniture ---------------------------------------------------- */
.sect{border-top:1px solid var(--rule);padding:var(--pad) 0}
.sect.deep{background:var(--deep);border-top:1px solid var(--hair)}

.head{display:flex;align-items:flex-start;gap:clamp(16px,2.4vw,34px);margin-bottom:clamp(22px,3vw,40px)}
.num{font-family:var(--display);font-weight:900;font-size:clamp(3.4rem,8vw,6.6rem);line-height:.8;color:var(--gold)}
.htext{min-width:0}
.htext h2{font-family:var(--display);font-weight:800;font-size:clamp(2rem,4.4vw,3.6rem);line-height:.92;text-transform:uppercase;color:var(--ink)}
.htext p{color:var(--dim);max-width:54ch;margin-top:8px}
.sectfoot{margin-top:clamp(22px,3vw,38px);font-size:.92rem;color:var(--dim)}
.close h2{font-size:clamp(2.4rem,6.4vw,5rem);max-width:20ch;line-height:.88}
.postertop{min-width:0}

/* ---- technique / step lists ----------------------------------------------- */
.tech{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(24px,3vw,48px)}
.tech li{border-top:1px solid var(--hair);padding:16px 0 18px;min-width:0}
.tech a{display:block}
.tech h3,.tech .nm{
  display:block;font-family:var(--display);font-weight:700;font-size:1.72rem;line-height:1;
  text-transform:uppercase;margin-bottom:5px;color:var(--ink);
}
.tech p,.tech .ds{display:block;font-size:.97rem;color:var(--dim)}
.tech .num-sm{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-2);font-weight:600;display:block;margin-bottom:6px}
a.tech-item:hover .nm,a.tech-item:hover h3{color:var(--gold)}

/* ---- roster band ---------------------------------------------------------- */
.bandhead{padding-bottom:clamp(20px,3vw,34px)}
.band{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0;width:100%}
.band .card{border-left:1px solid var(--hair);min-width:0;display:block}
.band .card:first-child{border-left:0}
.band .card img{width:100%;aspect-ratio:3/4;object-fit:cover;filter:saturate(.86)}
.cap{display:block;padding:10px 12px 16px}
.cap b{font-family:var(--display);font-weight:700;font-size:1.3rem;letter-spacing:.02em;text-transform:uppercase;display:block;line-height:1.05}
.cap span{display:block;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:600;margin-top:2px}
a.card:hover .cap b{color:var(--gold-2)}

/* a bordered grid of portraits, used on index and inner pages */
.people{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;border-top:1px solid var(--rule)}
.people .card{border-left:1px solid var(--hair);border-bottom:1px solid var(--hair);min-width:0;display:block;padding-bottom:2px}
.people .card:nth-child(6n+1){border-left:0}
.people .card img{width:100%;aspect-ratio:3/4;object-fit:cover;filter:saturate(.86)}

/* ---- rates ---------------------------------------------------------------- */
.rates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(16px,2.4vw,34px)}
.rate{border-top:2px solid var(--ink);padding-top:14px;min-width:0}
.rate .dur{font-size:.76rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);font-weight:600}
.rate .fig{font-family:var(--display);font-weight:900;font-size:clamp(3rem,6.2vw,5.1rem);line-height:.85;margin:6px 0 4px;color:var(--ink)}
.rate p{font-size:.97rem;color:var(--dim)}
.note{margin-top:clamp(22px,3vw,38px);display:grid;grid-template-columns:1fr 1fr;gap:20px 44px}
.note p,.note li{max-width:52ch;font-size:.97rem;color:var(--dim)}
.note li{border-top:1px solid var(--hair);padding-top:12px}

/* ---- tag rows ------------------------------------------------------------- */
.places,.tags,.service-tags{display:flex;flex-wrap:wrap;gap:10px 12px;margin-top:6px}
.places li,.tag{
  border:1px solid var(--rule);padding:8px 14px;font-size:.78rem;
  letter-spacing:.13em;text-transform:uppercase;font-weight:600;color:var(--ink);display:inline-block;
}
a.tag:hover,.places li a:hover{border-color:var(--gold-2);color:var(--gold-2)}

/* ---- link index lists ----------------------------------------------------- */
.linklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:0 clamp(24px,3vw,48px)}
.linklist li{border-top:1px solid var(--hair);min-width:0}
.linklist a{display:block;padding:14px 0;font-size:1.02rem;line-height:1.35;color:var(--ink)}
.linklist a:hover{color:var(--gold-2)}

.index,.journal-list{display:grid;border-top:1px solid var(--rule)}
.index li,.journal-item{border-bottom:1px solid var(--hair);min-width:0}
.index a,.journal-item{
  display:grid;gap:4px;padding:20px 0;grid-template-columns:minmax(0,1fr);align-items:baseline;
}
.index__t,.journal-item h3{
  font-family:var(--display);font-weight:700;font-size:clamp(1.5rem,2.6vw,2.15rem);
  line-height:.98;text-transform:uppercase;color:var(--ink);
}
.index a:hover .index__t,.journal-item:hover h3{color:var(--gold)}
.index__d,.journal-item .lede{font-size:.97rem;color:var(--dim);max-width:70ch;margin:0}
.index__m,.journal-item .date{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);font-weight:600}

/* ---- prose ---------------------------------------------------------------- */
/* break-word, not anywhere: a long token (the contact address on /terms/, a domain
   in a policy clause) wraps only when it cannot fit on a line of its own, so ordinary
   words are never split. Without it the 38-character address overflows below ~370px. */
.prose,.reading{max-width:var(--reading);overflow-wrap:break-word}
.prose p,.reading p{margin:0 0 1.05em;color:var(--dim)}
.prose p:last-child,.reading p:last-child{margin-bottom:0}
.prose h2,.reading h2,.prose h3,.reading h3{
  font-family:var(--display);font-weight:800;text-transform:uppercase;color:var(--ink);
  line-height:.96;margin:1.6em 0 .5em;
}
.prose h2,.reading h2{font-size:clamp(1.7rem,3.2vw,2.6rem)}
.prose h3,.reading h3{font-size:clamp(1.3rem,2.1vw,1.8rem)}
.prose h2:first-child,.reading h2:first-child,.prose h3:first-child,.reading h3:first-child{margin-top:0}
.prose a,.reading a{color:var(--ink);border-bottom:1px solid var(--gold)}
.prose a:hover,.reading a:hover{color:var(--gold-2)}
.prose ul,.reading ul,.prose ol,.reading ol{margin:0 0 1.05em;padding:0}
.prose ol,.reading ol{padding-left:1.2em;list-style:decimal}
.prose ul li,.reading ul li{border-top:1px solid var(--hair);padding:12px 0;color:var(--dim)}
.prose ol li,.reading ol li{padding:5px 0;color:var(--dim)}
.prose strong,.reading strong{color:var(--ink);font-weight:700}
.prose table,.reading table{width:100%;border-collapse:collapse;display:block;overflow-x:auto}
.prose th,.prose td,.reading th,.reading td{border-bottom:1px solid var(--hair);padding:9px 10px;text-align:left}
.independence{margin:18px 0 0;max-width:62ch;font-size:.9rem;line-height:1.7;color:var(--dim)}
.independence a{color:inherit;text-decoration:underline;text-underline-offset:2px}

/* ---- two-column inner pages ---------------------------------------------- */
.cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);gap:clamp(28px,4vw,64px);align-items:start}
.facts{border-top:2px solid var(--ink);padding-top:14px;min-width:0}
.facts .label{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-2);font-weight:600;margin:26px 0 10px}
.spec{margin:0}
.spec div{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--hair);font-size:.9rem}
.spec dt{color:var(--dim);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem;font-weight:600;padding-top:2px}
.spec dd{margin:0;text-align:right;min-width:0;overflow-wrap:anywhere;color:var(--ink);font-weight:600}

/* ---- photographs ---------------------------------------------------------- */
.gallery,.gallery-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}
.gallery img,.gallery-grid img{width:100%;aspect-ratio:3/4;object-fit:cover;filter:saturate(.86)}
.no-save,.no-save img{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}

/* ---- buttons -------------------------------------------------------------- */
.btn,.cta{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:56px;padding:0 26px;font-weight:700;font-size:1rem;letter-spacing:.02em;
  border:2px solid var(--ink);color:var(--ink);background:transparent;border-radius:0;line-height:1.25;
  text-align:center;
}
.btn svg,.cta svg{width:20px;height:20px;flex:none}
.btn-a,.btn-primary,.btn--wa,.cta{background:var(--ink);color:var(--ground);border-color:var(--ink)}
.btn-a:hover,.btn-primary:hover,.btn--wa:hover,.cta:hover{background:var(--gold);border-color:var(--gold);color:var(--deep)}
.btn-b,.btn-ghost{background:transparent;color:var(--ink)}
.btn-b:hover,.btn-ghost:hover,.btn:hover{color:var(--gold-2);border-color:var(--gold-2)}
.acts,.actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:clamp(22px,3vw,34px)}
.actnote{font-size:.9rem;color:var(--dim);margin-top:14px;max-width:58ch}

/* ---- questions ------------------------------------------------------------ */
.faq{border-top:1px solid var(--rule);max-width:82ch}
.faq details{border-bottom:1px solid var(--hair);padding:16px 0}
.faq summary{
  cursor:pointer;list-style:none;font-family:var(--display);font-weight:700;
  font-size:clamp(1.25rem,2vw,1.6rem);line-height:1.05;text-transform:uppercase;color:var(--ink);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--gold)}
.faq .a{padding-top:10px}
.faq .a p{margin:0;color:var(--dim);max-width:70ch}

/* ============================================================================
   SHARED-TEMPLATE COMPATIBILITY LAYER
   The inherited pages (about, faq, contact, booking, terms, privacy, dmca, the
   age statement, the glossary and 404) render markup this theme does not own.
   These rules give that markup the same voice.
   ============================================================================ */
section{padding:var(--pad) 0;border-top:1px solid var(--rule)}
section:first-of-type{border-top:0}
.reading.container{margin-inline:0;padding-inline:var(--gut);max-width:calc(var(--reading) + 2 * var(--gut))}
h1{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(2.6rem,6.4vw,5.4rem);line-height:.86;letter-spacing:.005em;color:var(--ink);overflow-wrap:break-word}
h2{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(1.8rem,3.6vw,2.9rem);line-height:.92;color:var(--ink)}
h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:clamp(1.3rem,2.1vw,1.85rem);line-height:1;color:var(--ink)}
h4,h5{font-size:1rem;font-weight:700;color:var(--ink)}

.hero{padding:var(--pad) var(--gut);border-bottom:1px solid var(--rule);background:var(--deep)}
.hero-small{padding-top:clamp(28px,3.4vw,50px)}
.label,.label-top{display:block;font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold-2);margin-bottom:14px}
.lede{font-size:clamp(1.02rem,1.2vw,1.16rem);line-height:1.6;color:var(--dim);max-width:58ch;margin-top:16px}
.hero .lede{color:var(--ink)}
section p{color:var(--dim);line-height:1.7}
section p+p,section h3+p{margin-top:1em}

.t-grid,.like-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:0;border-top:1px solid var(--rule)}
.t-grid>*,.like-grid>*{min-width:0}
.t-card,.like-card{display:block;min-width:0;border-left:1px solid var(--hair);border-bottom:1px solid var(--hair)}
.t-grid .t-card:nth-child(6n+1),.like-grid .like-card:nth-child(6n+1){border-left:0}
.t-card .photo,.like-photo{aspect-ratio:3/4;overflow:hidden;background:var(--deep)}
.t-card .photo img,.like-photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.86)}
.t-card .name,.like-name{font-family:var(--display);font-weight:700;font-size:1.3rem;line-height:1.05;letter-spacing:.02em;text-transform:uppercase;color:var(--ink);padding:10px 12px 2px}
.t-card .meta,.like-meta{padding:0 12px 14px;font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:600}
.t-card:hover .name,.like-card:hover .like-name{color:var(--gold)}

.s-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(24px,3vw,48px)}
.s-grid>*{min-width:0}
.s-card{display:block;border-top:1px solid var(--hair);padding:16px 0 18px}
.s-card .num{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-2);font-weight:600}
.s-card .nm{font-family:var(--display);font-weight:700;font-size:1.72rem;line-height:1;text-transform:uppercase;color:var(--ink);margin:6px 0 5px}
.s-card .ds{font-size:.97rem;color:var(--dim)}
a.s-card:hover .nm{color:var(--gold)}

.price-table,.stats-table,.rates-table,.ladder{width:100%;border-collapse:collapse;max-width:560px}
.price-table td,.price-table th,.stats-table td,.stats-table th,.rates-table td,.rates-table th,.ladder td,.ladder th{
  padding:13px 0;border-bottom:1px solid var(--hair);vertical-align:baseline;text-align:left;font-weight:400;color:var(--dim);
}
.price-table td:first-child,.stats-table td:first-child,.rates-table td:first-child,.ladder th{
  font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);font-weight:600;
}
.price-table td:last-child,.stats-table td:last-child,.rates-table td:last-child,.ladder td{
  text-align:right;color:var(--ink);font-family:var(--display);font-weight:800;font-size:1.65rem;line-height:1;white-space:nowrap;
}
.price-table{border-top:2px solid var(--ink)}

.tabs{margin:0}
.tab-nav{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--rule);margin-bottom:24px}
.tab-btn{
  padding:13px 18px;background:transparent;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;
  font:inherit;font-size:.74rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);cursor:pointer;
}
.tab-btn:hover{color:var(--ink)}
.tab-btn.active{color:var(--gold-2);border-bottom-color:var(--gold)}
.tab-panel{display:none}
.tab-panel.active{display:block}

.carousel{position:relative}
.carousel-track{display:flex;gap:2px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
.carousel-track::-webkit-scrollbar{display:none}
.carousel-slide{flex:0 0 calc(20% - 1.6px);scroll-snap-align:start;aspect-ratio:3/4;background:var(--deep)}
.carousel-slide img{width:100%;height:100%;object-fit:cover;filter:saturate(.86)}
.carousel-prev,.carousel-next{
  position:absolute;top:50%;margin-top:-22px;z-index:4;width:44px;height:44px;
  background:var(--ground);color:var(--ink);border:1px solid var(--ink);
  font-size:20px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:0;
}
.carousel-prev{left:10px}
.carousel-next{right:10px}
.carousel-prev:hover,.carousel-next:hover{background:var(--ink);color:var(--ground)}
.carousel-dots{display:flex;justify-content:center;gap:6px;margin-top:12px}
.carousel-dot{width:18px;height:2px;background:var(--hair)}
.carousel-dot.active{background:var(--gold)}

.book-banner{background:var(--deep);padding:24px var(--gut);border-bottom:1px solid var(--hair)}
.book-banner p{color:var(--ink);margin:0}
.book-banner a{color:var(--gold-2);border-bottom:1px solid var(--gold-2)}

.form-row{margin-top:20px}
.form-row label{display:block;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);font-weight:600}
.form-row select,.form-row input{
  width:100%;max-width:100%;padding:14px;margin-top:9px;border-radius:0;
  border:1px solid var(--rule);background:var(--deep);color:var(--ink);font:inherit;font-size:1rem;
}
.form-row select:focus,.form-row input:focus{outline:3px solid var(--gold);outline-offset:1px}

/* ---- injected by the build: breadcrumbs + related pages ------------------- */
nav.crumbs{
  max-width:var(--wrap);margin:0 auto;padding:14px var(--gut) 0;
  font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;line-height:1.6;
}
nav.crumbs ol{opacity:1;gap:0 10px}
nav.crumbs li{color:var(--dim);gap:10px}
nav.crumbs li+li::before{content:"/";opacity:1;color:var(--gold-2)}
nav.crumbs a{color:var(--dim);border-bottom:1px solid transparent}
nav.crumbs a:hover{color:var(--gold-2);border-bottom-color:var(--gold-2)}
nav.crumbs [aria-current]{opacity:1;color:var(--ink)}
aside.seo-related{max-width:none;margin:0;padding:var(--pad) var(--gut);background:var(--deep);border-top:1px solid var(--rule)}
aside.seo-related .seo-related__in{max-width:var(--wrap);margin:0 auto;border-top:2px solid var(--ink);padding-top:16px}
aside.seo-related .seo-related__h{margin:0 0 14px;font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold-2);opacity:1}
aside.seo-related ul{max-width:var(--wrap);margin:0 auto;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 clamp(24px,3vw,48px)}
aside.seo-related li{min-width:0}
aside.seo-related a{
  display:block;padding:13px 0;border-bottom:1px solid var(--hair);
  font-size:1rem;line-height:1.35;color:var(--dim);
}
aside.seo-related a:hover{opacity:1;color:var(--gold-2)}

/* ---- footer --------------------------------------------------------------- */
.site-footer{background:var(--darkest);border-top:1px solid var(--rule);padding:var(--pad) 0 26px}
.site-footer__in{
  max-width:var(--wrap);margin:0 auto;padding:0 var(--gut);
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:30px clamp(24px,3vw,48px);
}
.site-footer__col{min-width:0}
.site-footer__h{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold-2);margin:0 0 14px}
.site-footer ul{display:grid;gap:9px}
.site-footer li{font-size:.94rem;line-height:1.45;color:var(--dim)}
.site-footer a:hover{color:var(--gold-2)}
/* overflow-wrap:anywhere, not break-word: these are flex children, and only
   `anywhere` shrinks a flex item's min-content width. The domain sits here in
   uppercase with .16em tracking, so on a 320px phone it is wider than the line. */
.site-footer__legal{
  max-width:var(--wrap);margin:30px auto 0;padding:16px var(--gut) 0;border-top:1px solid var(--hair);
  display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;overflow-wrap:anywhere;
  font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--dim);
}
.legal{
  max-width:var(--wrap);margin:30px auto 0;padding:16px var(--gut) 0;border-top:1px solid var(--hair);
  display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:space-between;align-items:center;
  overflow-wrap:anywhere;
  font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--dim);
}
.legal a:hover{color:var(--gold-2)}
.age21{
  display:inline-block;padding:4px 9px;border:1px solid var(--ink);color:var(--ink);
  font-family:var(--display);font-weight:800;font-size:1rem;line-height:1;letter-spacing:.04em;
}
.footnote{font-size:.94rem;color:var(--dim);max-width:44ch;margin-top:12px;letter-spacing:0;text-transform:none;font-weight:400;line-height:1.55}

/* ---- mobile dock ---------------------------------------------------------- */
.m-dock{display:none}

/* ---- the profile rates table (partials/rates.mustache) -------------------- */
.rates-card{width:100%;max-width:620px;margin:0}
.rates-card__title{margin:0 0 6px;font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;color:var(--gold-2)}
.rates-card__table{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:24px}
.rates-card__table caption{caption-side:top;text-align:left;padding:0 0 10px;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;font-weight:600;color:var(--gold-2)}
.rates-card__table th,.rates-card__table td{padding:12px 0;border-bottom:1px solid var(--hair);font-weight:400;vertical-align:baseline}
.rates-card__table thead th{padding-top:0;font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;text-align:right;color:var(--dim);font-weight:600}
.rates-card__table thead th:first-child{width:40%;text-align:left}
.rates-card__table tbody th{text-align:left;font-size:.9rem;line-height:1.3;padding-right:10px;color:var(--dim)}
.rates-card__table td{text-align:right;white-space:nowrap;font-family:var(--display);font-weight:800;font-size:1.5rem;line-height:1;color:var(--ink)}
.rates-card__extra td{color:var(--gold-2)}
.rates-card__cur{font-family:var(--sans);font-style:normal;font-weight:600;font-size:.52em;color:var(--dim);margin-right:.4em;letter-spacing:.06em}
.rates-card__terms{margin:18px 0 0;font-size:.92rem;color:var(--dim)}
.rates-card__terms a{color:var(--ink);border-bottom:1px solid var(--gold)}

/* ============================================================================
   RESPONSIVE
   ============================================================================ */
@media (max-width:1280px){
  .people,.t-grid,.like-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .people .card:nth-child(6n+1),.t-grid .t-card:nth-child(6n+1),.like-grid .like-card:nth-child(6n+1){border-left:1px solid var(--hair)}
  .people .card:nth-child(4n+1),.t-grid .t-card:nth-child(4n+1),.like-grid .like-card:nth-child(4n+1){border-left:0}
  .gallery,.gallery-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .carousel-slide{flex:0 0 calc(25% - 1.5px)}
}
@media (max-width:1080px){
  .tech,.s-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .band{grid-template-columns:repeat(4,minmax(0,1fr))}
  .band .card:nth-child(4n+1){border-left:0}
  .cols{grid-template-columns:minmax(0,1fr)}
  .site-footer__in{grid-template-columns:repeat(2,minmax(0,1fr))}
  aside.seo-related ul{grid-template-columns:repeat(2,minmax(0,1fr))}
  .site-header nav{
    display:none;width:100%;flex-direction:column;gap:0;
    border-top:1px solid var(--hair);padding-bottom:10px;
  }
  .site-header nav.open{display:flex}
  .site-header nav a{padding:13px 0;border-bottom:1px solid var(--hair);border-top:0}
  .site-header nav a:hover{border-bottom-color:var(--hair);color:var(--gold-2)}
  .nav-toggle{display:inline-block}
  .navrow{flex-wrap:wrap}
  .header-cta{display:none}
  [id]{scroll-margin-top:70px}
}
@media (max-width:760px){
  :root{--gut:16px}
  body{font-size:16px;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  .poster h1{font-size:clamp(2.6rem,12.5vw,4.4rem)}
  .kvstack{grid-template-columns:1fr}
  .toprow{flex-wrap:wrap;gap:4px 16px;padding-top:11px;padding-bottom:11px}
  .logo,.brand{font-size:1.06rem}
  .agenote{font-size:.64rem;letter-spacing:.16em}
  .tech,.s-grid,.rates,.note,.linklist{grid-template-columns:minmax(0,1fr)}
  .head{flex-direction:column;gap:6px}
  .num{font-size:3.2rem}
  .cap{padding:8px 9px 14px}
  .cap b{font-size:1rem}
  .cap span{font-size:.62rem;letter-spacing:.08em}
  .people,.t-grid,.like-grid,.gallery,.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .people .card:nth-child(4n+1),.t-grid .t-card:nth-child(4n+1),.like-grid .like-card:nth-child(4n+1){border-left:1px solid var(--hair)}
  .people .card:nth-child(2n+1),.t-grid .t-card:nth-child(2n+1),.like-grid .like-card:nth-child(2n+1){border-left:0}
  .carousel-slide{flex:0 0 calc(50% - 1px)}
  .site-footer__in{grid-template-columns:minmax(0,1fr)}
  aside.seo-related ul{grid-template-columns:minmax(0,1fr)}
  .acts,.actions{display:grid;grid-template-columns:minmax(0,1fr)}
  .age-bar{font-size:.64rem;letter-spacing:.12em;gap:6px 12px}
  .m-dock{
    display:grid;grid-template-columns:1fr 1fr;gap:10px;
    position:fixed;left:0;right:0;bottom:0;z-index:50;
    background:var(--darkest);border-top:1px solid var(--rule);
    padding:10px 16px calc(10px + env(safe-area-inset-bottom));
  }
  .m-dock a{
    display:flex;align-items:center;justify-content:center;gap:9px;min-width:0;
    height:50px;padding:0 10px;border:2px solid var(--ink);color:var(--ink);
    font-weight:700;font-size:.95rem;line-height:1;
  }
  .m-dock a svg{width:19px;height:19px;flex:none}
  .m-dock a.m-dock__wa{background:var(--ink);color:var(--ground)}
  .m-dock a.m-dock__tg,.m-dock a.m-dock__alt{background:transparent;color:var(--ink)}
}
@media (max-width:520px){
  .band{grid-template-columns:repeat(2,minmax(0,1fr))}
  .band .card:nth-child(2n+1){border-left:0}
  .cap b{font-size:1.05rem}
  .cap span{font-size:.62rem}
  .rate .fig{font-size:3.2rem}
}

/* ---- 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}
