/* ============================================================
   Interior Fabrics, Fort Worth
   Design system: "the selvage edge"
   A fabric house signs the edge of its cloth. The woven selvage
   strip is the site's one signature; everything else stays quiet.
   Ground: flax linen (the cream walls). Structure: brand red from the sign + dark wood. No gold.
   A single madder thread lives only inside the selvage weave.
   ============================================================ */

:root{
  /* palette, pulled from the store's own materials */
  --flax:#F3EEE3;          /* unbleached linen ground */
  --flax-deep:#ECE5D5;     /* panel tone */
  --muslin:#E5DCC8;        /* swatch plate ground */
  --umber:#2B241B;         /* warm ink */
  --umber-70:rgba(43,36,27,.72);
  --umber-50:rgba(43,36,27,.66); /* AA floor: ~4.9:1 on flax at small sizes */
  /* structure = the store's own colors: brand red from the sign, maroon, dark wood fascia */
  --deep:#AD3029;          /* brand red from the sign: buttons, links, rules */
  --deep-dark:#8E2620;
  --deep-wash:rgba(173,48,41,.08);
  --band:#3A2A21;          /* dark wood fascia: CTA banner + footer */
  --accent:#AD3029;        /* brand red: eyebrows, markers (5.6:1 on flax) */
  --accent-on-dark:#E3A08F; /* the red, lightened for walnut (6.3:1) */
  --madder:#AD3029;        /* madder-dyed warp thread, selvage only */
  --line:rgba(43,36,27,.16);
  --line-soft:rgba(43,36,27,.09);
  --paper-on-deep:#F1EBDD;
  --muted-on-deep:rgba(241,235,221,.72);

  /* type */
  --serif:'Newsreader',Georgia,serif;
  --sans:'Archivo',-apple-system,'Helvetica Neue',sans-serif;
  --mono:Menlo,Consolas,monospace;
  --text-hero:clamp(2.3rem,4.3vw,3.55rem);
  --text-display:clamp(2rem,3.6vw,3rem);
  --text-h3:clamp(1.35rem,2vw,1.7rem);
  --text-lede:clamp(1.1rem,1.5vw,1.3rem);
  --text-body:1.0625rem;
  --text-small:.9rem;
  --text-tag:.72rem;

  /* rhythm */
  --selvage-w:34px;
  --gut:clamp(22px,5vw,72px);
  --container:1200px;
  --sect:clamp(64px,8vw,112px);

  /* motion */
  --ease-house:cubic-bezier(.22,.9,.32,1);
  --dur-ui:220ms;

  /* util bar + nav row; the drawer pads its top by this */
  --header-h:120px;
}
@media (max-width:820px){:root{--header-h:128px}}
@media (max-width:700px){:root{--header-h:114px}}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 16px)}
body{
  background:var(--flax);
  color:var(--umber);
  font-family:var(--serif);
  font-optical-sizing:auto;
  font-size:var(--text-body);
  line-height:1.68;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
img,svg,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
p a,li a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
p a:hover,li a:hover{text-decoration-color:var(--umber)}
::selection{background:var(--deep);color:var(--paper-on-deep)}
:focus-visible{outline:2px solid var(--deep);outline-offset:3px;border-radius:2px}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  html{scroll-behavior:auto}
}

.skip-link{
  position:absolute;left:-9999px;top:0;z-index:200;
  background:var(--deep);color:var(--paper-on-deep);
  font-family:var(--sans);font-size:var(--text-small);
  padding:10px 18px;
}
.skip-link:focus{left:12px;top:12px;outline:2px solid var(--paper-on-deep);outline-offset:-4px}

/* ---------- the selvage (signature) ---------- */
.selvage{
  position:fixed;top:0;left:0;bottom:0;width:var(--selvage-w);z-index:60;
  background:
    repeating-linear-gradient(90deg,
      var(--flax) 0 3px,
      var(--deep) 3px 5px,
      var(--flax) 5px 9px,
      var(--deep) 9px 10px,
      var(--flax) 10px 14px,
      var(--madder) 14px 16px,
      var(--flax) 16px 21px,
      var(--deep) 21px 23px,
      var(--flax) 23px 34px);
  border-right:1px solid var(--line);
}
.selvage span{
  position:absolute;top:0;left:0;width:100%;height:100%;
  writing-mode:vertical-rl;text-orientation:mixed;
  display:flex;align-items:center;justify-content:flex-start;
  font-family:var(--mono);font-size:.58rem;font-weight:500;
  letter-spacing:.34em;text-transform:uppercase;
  color:var(--umber-70);
  padding:26px 0;
  white-space:nowrap;
  overflow:hidden;
  background:linear-gradient(90deg,rgba(243,238,227,0) 0,rgba(243,238,227,.85) 40%,rgba(243,238,227,.85) 60%,rgba(243,238,227,0) 100%);
}
.selvage{display:none}

/* ---------- layout primitives ---------- */
.container{max-width:var(--container);margin:0 auto;padding:0 var(--gut)}
.section{padding:var(--sect) 0}
.section--tight{padding:calc(var(--sect)*.62) 0}
.section--panel{background:var(--flax-deep);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.section--dark{background:var(--band);color:var(--paper-on-deep)}
.section--dark ::selection{background:var(--accent-on-dark);color:var(--umber)}

.eyebrow{
  font-family:var(--sans);font-size:.74rem;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--accent);
  display:block;margin-bottom:18px;
}
.section--dark .eyebrow{color:var(--accent-on-dark)}

h1,h2,h3{font-family:var(--serif);font-weight:470;line-height:1.08;letter-spacing:-.015em}
h1{font-size:var(--text-hero);font-variation-settings:'opsz' 72}
h2{font-size:var(--text-display);font-variation-settings:'opsz' 60}
h3{font-size:var(--text-h3);font-variation-settings:'opsz' 32;line-height:1.2}
.lede{font-size:var(--text-lede);line-height:1.5;color:var(--umber-70);max-width:34em}
.section--dark .lede{color:var(--muted-on-deep)}
.prose{max-width:62ch}
.prose p{margin:14px 0}
.prose p:first-child{margin-top:0}
.small{font-size:var(--text-small);color:var(--umber-50)}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:50;
  background:var(--flax);
  border-bottom:1px solid var(--line);
}
.util-bar{background:var(--band);color:var(--paper-on-deep)}
.util-inner{
  max-width:var(--container);margin:0 auto;padding:0 var(--gut);height:36px;
  display:flex;align-items:center;gap:22px;
  font-family:var(--sans);font-size:.76rem;font-weight:500;letter-spacing:.02em;
}
.util-inner span{color:var(--muted-on-deep)}
.util-gallery{margin-left:auto}
.util-phone{color:var(--paper-on-deep);font-weight:700;letter-spacing:.03em;
  display:inline-flex;align-items:center;align-self:stretch;padding:0 2px}
.util-phone:hover{color:#fff}
@media (max-width:820px){
  .util-inner{height:44px}
  .util-addr,.util-hours{display:none}
  .util-gallery{margin-left:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
  .util-phone{padding:0 4px;margin-right:-4px;font-size:.84rem;white-space:nowrap}
  .util-phone{margin-left:auto}
}
.nav-row{
  max-width:var(--container);margin:0 auto;padding:0 var(--gut);
  display:flex;align-items:center;gap:24px;height:84px;
}
.wordmark{display:flex;align-items:center;flex-shrink:0}
.wordmark img{height:58px;width:auto;display:block}
@media (max-width:700px){.wordmark img{height:44px}.nav-row{height:70px}}
.site-nav{display:flex;align-items:center;gap:22px;margin-left:auto}
.site-nav a{
  font-family:var(--sans);font-size:.74rem;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;
  padding:6px 0;color:var(--umber);
  transition:color var(--dur-ui) var(--ease-house);
}
.site-nav a:hover{color:var(--deep)}
.site-nav a[aria-current="page"]{color:var(--deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px}
.header-actions{display:flex;align-items:center;gap:18px;flex-shrink:0}
@media (min-width:1161px) and (max-width:1300px){
  .nav-row{gap:18px}
  .site-nav{gap:17px}
  .site-nav a{letter-spacing:.1em}
}

/* buttons */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--sans);font-size:.9rem;font-weight:600;
  padding:14px 26px;border-radius:2px;border:1px solid transparent;
  cursor:pointer;white-space:nowrap;
  transition:background var(--dur-ui) var(--ease-house),border-color var(--dur-ui) var(--ease-house),color var(--dur-ui) var(--ease-house),transform var(--dur-ui) var(--ease-house);
}
.btn-solid{background:var(--deep);color:var(--paper-on-deep)}
.btn-solid:hover{background:var(--deep-dark);transform:translateY(-1px)}
.btn-line{border-color:var(--umber-50);color:var(--umber)}
.btn-line:hover{border-color:var(--umber);background:rgba(43,36,27,.04)}
.section--dark .btn-solid{background:var(--paper-on-deep);color:var(--band)}
.section--dark .btn-solid:hover{background:#fff}
.section--dark .btn-line{border-color:var(--muted-on-deep);color:var(--paper-on-deep)}
.section--dark .btn-line:hover{border-color:var(--paper-on-deep)}
.btn--sm{padding:10px 18px;font-size:.84rem}

/* ---------- mobile nav: burger + right-hand drawer (pattern ported from wlfclub-site) ----------
   Below 1161px the desktop links are hidden and the burger opens .mnav, a panel that
   slides in from the right over a scrim. Markup is written by scripts/build.py.
   THE DRAWER IS A SIBLING OF <header>, NEVER A CHILD: backdrop-filter, transform,
   filter or will-change on an ancestor turns it into the containing block for
   position:fixed, and the drawer collapses to a sliver while scroll stays locked.
   SCROLL LOCK IS ON body ONLY: overflow:hidden on <html> kills position:sticky,
   which would carry the header (and the close button) off screen.
   Z-order: scrim 88 < drawer 89 < header 95 while open, so the burger stays the
   close control. */
.nav-burger{display:none}
.mnav,.mnav-scrim{display:none}
@media (max-width:1160px){
  .site-nav{display:none}
  .header-actions .btn{display:none}
  .nav-burger{display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;
    width:48px;height:48px;margin-left:auto;margin-right:-10px;flex:none;
    background:none;border:0;border-radius:2px;cursor:pointer;padding:0;color:var(--umber)}
  .nav-burger span{display:block;width:24px;height:2px;background:currentColor;border-radius:1px;
    transition:transform .25s var(--ease-house),opacity .18s ease}
  .nav-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-burger[aria-expanded="true"] span:nth-child(2){opacity:0}
  .nav-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  .mnav-scrim{display:block;position:fixed;inset:0;z-index:88;background:rgba(43,36,27,.5);
    touch-action:none;opacity:0;visibility:hidden;
    transition:opacity .26s ease,visibility 0s linear .26s}
  body.mnav-open .mnav-scrim{opacity:1;visibility:visible;transition:opacity .26s ease}
  body.mnav-open .site-header{z-index:95}

  .mnav{display:block;position:fixed;top:0;right:0;bottom:0;z-index:89;
    width:min(88vw,380px);background:var(--flax);border-left:1px solid var(--line);
    box-shadow:-24px 0 60px rgba(43,36,27,.22);
    overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
    transform:translateX(100%);visibility:hidden;
    transition:transform .28s cubic-bezier(.4,0,.2,1),visibility 0s linear .28s}
  body.mnav-open .mnav{transform:none;visibility:visible;transition:transform .28s cubic-bezier(.4,0,.2,1)}
  body.mnav-open{overflow:hidden}

  .mnav-inner{display:flex;flex-direction:column;min-height:100%;
    padding:calc(var(--header-h) + 8px) 28px calc(24px + env(safe-area-inset-bottom,0px))}
  .mnav-link{display:flex;align-items:center;min-height:50px;
    font-family:var(--sans);font-size:.9rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
    color:var(--umber);border-bottom:1px solid var(--line-soft)}
  .mnav-link:hover{color:var(--deep)}
  .mnav-link[aria-current="page"]{color:var(--deep)}
  .mnav-link[aria-current="page"]::before{content:"";width:3px;height:18px;background:var(--deep);margin-right:12px}
  .mnav-foot{margin-top:auto;padding-top:26px;display:flex;flex-direction:column;gap:12px}
  .mnav-foot .btn{justify-content:center;width:100%}
  .mnav-tel{display:flex;align-items:center;justify-content:center;min-height:48px;
    font-family:var(--sans);font-weight:700;font-size:1rem;color:var(--deep);
    border:1px solid var(--umber-50);border-radius:2px}
  .mnav-hours{font-family:var(--sans);font-size:.84rem;color:var(--umber-70);text-align:center;line-height:1.6;margin-top:6px}
}
@media (max-width:1160px) and (max-height:700px){
  .mnav-link{min-height:44px;font-size:.84rem}
  .mnav-foot{padding-top:16px;gap:8px}
  .mnav-hours{display:none}
}

/* ---------- swatch plates (art-directed photo slots) ---------- */
/* Every plate is a real image slot. The woven texture + ticket tag
   carry the exact shot spec until the showroom shoot replaces them. */
.plate{
  position:relative;overflow:hidden;border-radius:2px;
  border:1px solid var(--line);
  background:
    repeating-linear-gradient(0deg,rgba(43,36,27,.045) 0 1px,transparent 1px 4px),
    repeating-linear-gradient(90deg,rgba(43,36,27,.045) 0 1px,transparent 1px 4px),
    var(--muslin);
}
.plate--dark{
  background:
    repeating-linear-gradient(0deg,rgba(241,235,221,.05) 0 1px,transparent 1px 4px),
    repeating-linear-gradient(90deg,rgba(241,235,221,.05) 0 1px,transparent 1px 4px),
    var(--deep);
}
.plate--flax{
  background:
    repeating-linear-gradient(0deg,rgba(43,36,27,.04) 0 1px,transparent 1px 4px),
    repeating-linear-gradient(90deg,rgba(43,36,27,.04) 0 1px,transparent 1px 4px),
    var(--flax-deep);
}
.plate::after{ /* woven grain */
  content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:
    repeating-linear-gradient(45deg,rgba(43,36,27,.02) 0 2px,transparent 2px 6px);
}
.plate img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.plate:has(img){background:var(--muslin);border-color:transparent}
.plate:has(img)::after{display:none}
.plate-tag{
  position:absolute;left:14px;bottom:14px;z-index:2;max-width:calc(100% - 28px);
  background:var(--flax);border:1px dashed var(--umber-50);border-radius:2px;
  padding:8px 12px;
  font-family:var(--mono);font-size:.66rem;font-weight:500;
  letter-spacing:.06em;line-height:1.5;color:var(--umber-70);
}
.plate-tag b{display:block;color:var(--madder);letter-spacing:.2em;text-transform:uppercase;font-weight:500}
/* common crops */
.crop-32{aspect-ratio:3/2}
.crop-45{aspect-ratio:4/5}
.crop-11{aspect-ratio:1/1}
.crop-169{aspect-ratio:16/9}
.crop-band{aspect-ratio:21/9}
@media (max-width:700px){.crop-band{aspect-ratio:16/10}}

/* ---------- hero ---------- */
.hero{padding:calc(var(--sect)*.8) 0 var(--sect)}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(32px,5vw,72px);align-items:center}
.hero-copy .lede{margin:22px 0 34px}
.hero-ctas{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.trust-line{
  margin-top:34px;padding-top:22px;border-top:1px solid var(--line);
  font-family:var(--sans);font-size:.86rem;color:var(--umber-70);
  display:flex;flex-direction:column;gap:6px;
}
/* One claim per line at every width: an inline row wrapped mid-list and left a stray separator. */
.trust-line--links{flex-direction:row;flex-wrap:wrap;gap:8px 20px}
@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr}
  .hero{padding-top:calc(var(--sect)*.5)}
}

/* orchestrated load: hero only, once */
@media (prefers-reduced-motion:no-preference){
  .rise{opacity:0;transform:translateY(18px);animation:rise .7s var(--ease-house) forwards}
  .rise-2{animation-delay:.12s}
  .rise-3{animation-delay:.24s}
  .rise-4{animation-delay:.36s}
  @keyframes rise{to{opacity:1;transform:none}}
}

/* ---------- split sections (asymmetric anchors) ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:center}
.split--wide-media{grid-template-columns:1.2fr .8fr}
.split--wide-copy{grid-template-columns:.8fr 1.2fr}
.split > .split-copy .btn{margin-top:26px}
.split-copy h2{margin-bottom:16px}
.split-copy .prose{margin-top:14px}
@media (max-width:900px){
  .split,.split--wide-media,.split--wide-copy{grid-template-columns:1fr}
  .split .plate{order:-1}
}

/* offset gallery rows */
.plate-row{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(18px,3vw,40px)}
.plate-row .span-7{grid-column:span 7}
.plate-row .span-5{grid-column:span 5;margin-top:56px}
.plate-row .span-4{grid-column:span 4}
.plate-row .span-8{grid-column:span 8}
@media (max-width:820px){
  .plate-row .span-7,.plate-row .span-5,.plate-row .span-4,.plate-row .span-8{grid-column:span 12;margin-top:0}
}

/* ---------- misc components ---------- */
.services-list{display:grid;grid-template-columns:1fr 1fr 1fr;gap:clamp(20px,3vw,44px);margin-top:44px}
.service-item{border-top:2px solid var(--deep);padding-top:20px}
.service-item h3{margin-bottom:10px}
.service-item p{color:var(--umber-70)}
.service-item a{display:inline-block;margin-top:14px;font-family:var(--sans);font-size:.88rem;font-weight:600;color:var(--deep)}
.service-item a:hover{color:var(--deep-dark)}
.service-item:has(.service-photo){border-top:0;padding-top:0}
.service-photo{margin:0 0 20px}
@media (max-width:820px){.services-list{grid-template-columns:1fr}}

.steps{margin-top:44px;display:grid;grid-template-columns:1fr 1fr 1fr;gap:clamp(20px,3vw,44px)}
.step{padding-top:20px;border-top:1px solid var(--line)}
.step .step-k{font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:12px}
.step h3{font-size:1.2rem;margin-bottom:8px}
.step p{color:var(--umber-70);font-size:var(--text-small);line-height:1.6}
@media (max-width:820px){.steps{grid-template-columns:1fr}}

.brand-index{margin-top:40px;border-top:1px solid var(--line)}
.brand-index li{
  list-style:none;display:flex;align-items:baseline;gap:18px;
  padding:22px 4px;border-bottom:1px solid var(--line);
}
.brand-index .brand-name{font-family:var(--serif);font-size:clamp(1.5rem,3vw,2.2rem);font-weight:470;font-variation-settings:'opsz' 44;letter-spacing:-.01em}
@media (max-width:700px){
  .brand-index li{flex-direction:column;gap:6px}
}

.faq{margin-top:36px;max-width:70ch}
.faq details{border-top:1px solid var(--line);padding:6px 0}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{
  cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px;align-items:baseline;
  font-family:var(--serif);font-size:1.15rem;font-weight:500;padding:16px 4px;
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-weight:500;color:var(--accent);font-size:1.25rem;line-height:1}
.faq details[open] summary::after{content:"\2212"}
.faq details p{padding:0 4px 18px;color:var(--umber-70);max-width:60ch}

.cta-banner{text-align:left}
.cta-banner .cta-inner{display:grid;grid-template-columns:1.2fr .8fr;gap:clamp(28px,4vw,64px);align-items:center}
.cta-banner h2{margin-bottom:14px}
.cta-banner p{color:var(--muted-on-deep);max-width:36em}
.cta-banner .hero-ctas{margin-top:0;justify-content:flex-end}
@media (max-width:900px){
  .cta-banner .cta-inner{grid-template-columns:1fr}
  .cta-banner .hero-ctas{justify-content:flex-start;margin-top:24px}
}

/* ---------- form ---------- */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.form-grid .full{grid-column:1/-1}
@media (max-width:700px){.form-grid{grid-template-columns:1fr}}
.field label{
  display:block;font-family:var(--sans);font-size:.82rem;font-weight:600;
  letter-spacing:.02em;margin-bottom:7px;color:var(--umber);
}
.field label .opt{font-weight:400;color:var(--umber-50)}
.field input,.field select,.field textarea{
  width:100%;font-family:var(--sans);font-size:1rem;color:var(--umber);
  background:#FBF8F1;border:1px solid var(--umber-50);border-radius:2px;
  padding:13px 14px;transition:border-color var(--dur-ui) var(--ease-house),box-shadow var(--dur-ui) var(--ease-house);
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--deep);box-shadow:0 0 0 3px var(--deep-wash);
}
.field textarea{min-height:120px;resize:vertical}
.form-note{font-family:var(--sans);font-size:.84rem;color:var(--umber-50);margin-top:14px;max-width:52ch;line-height:1.6}


/* ---------- visit page ---------- */
.nap-card{border:1px solid var(--line);border-radius:2px;background:#FBF8F1;padding:30px 32px}
.nap-card + .nap-card{margin-top:18px}
.nap-card h3{margin-bottom:14px}
.nap-card .nap-line{font-family:var(--sans);font-size:.95rem;margin:6px 0;color:var(--umber-70)}
.nap-card .nap-line b{color:var(--umber);font-weight:600}
.hours-table{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:.95rem}
.hours-table td{padding:9px 4px;border-bottom:1px solid var(--line-soft);color:var(--umber-70)}
.hours-table td:last-child{text-align:right;color:var(--umber);font-weight:500}
.hours-table tr:last-child td{border-bottom:none}

/* ---------- footer ---------- */
.site-footer{background:var(--band);color:var(--paper-on-deep);margin-top:0}
.site-footer .foot-weave{height:0;border-top:1px solid rgba(241,235,221,.16)}
.foot-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(28px,4vw,60px);
  padding:64px 0 52px;
}
.foot-brand img{height:64px;width:auto;display:block;margin-bottom:18px}
.foot-brand b{font-family:var(--serif);font-weight:500;font-size:1.4rem;display:block;margin-bottom:4px}
.foot-brand small{font-family:var(--sans);font-size:.62rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent-on-dark);display:block;margin-bottom:18px}
.foot-brand p{color:var(--muted-on-deep);font-size:var(--text-small);max-width:30em;line-height:1.65}
.foot-col h4,.foot-h{font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-on-dark);margin-bottom:16px}
.foot-col ul{list-style:none}
.foot-col li{margin:9px 0}
.foot-col a,.foot-col span{font-family:var(--sans);font-size:.92rem;color:var(--muted-on-deep)}
.foot-col a:hover{color:var(--paper-on-deep)}
.foot-legal{
  border-top:1px solid rgba(241,235,221,.16);
  padding:22px 0 30px;display:flex;flex-wrap:wrap;gap:10px 26px;align-items:center;
  font-family:var(--sans);font-size:.8rem;color:rgba(241,235,221,.72);
}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.foot-grid{grid-template-columns:1fr}}

/* ---------- utilities ---------- */
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
[hidden]{display:none!important}

/* ---------- visit page bits ---------- */
.nap-h{font-size:var(--text-h3);font-variation-settings:'opsz' 32;line-height:1.2;margin-bottom:14px}
.nap-note{margin-top:12px}
.hours-table th{font-weight:400;text-align:left;padding:9px 4px;border-bottom:1px solid var(--line-soft);color:var(--umber-70)}
.hours-table tr:last-child th{border-bottom:none}
.consult-photo{margin-top:32px}
.nap-card a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}

/* ---------- consultation form: inline validation ---------- */
.req{color:var(--deep);font-weight:700;margin-left:2px}
.form-req-note{font-family:var(--sans);font-size:.82rem;color:var(--umber-70);margin-bottom:14px}
.field-error{display:none;align-items:flex-start;gap:7px;margin-top:8px;
  font-family:var(--sans);font-size:.86rem;font-weight:500;line-height:1.45;color:var(--deep-dark)}
.field-error.show{display:flex}
.field-error::before{content:"!";flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:17px;height:17px;margin-top:1px;border-radius:50%;background:var(--deep-dark);color:#fff;
  font-size:.7rem;font-weight:700;line-height:1}
.field [aria-invalid="true"]{border-color:var(--deep-dark);border-width:2px;padding:12px 13px;background:#FDF6F3}
.field [aria-invalid="true"]:focus{box-shadow:0 0 0 3px rgba(173,48,41,.18)}
.form-errors{border:2px solid var(--deep-dark);border-radius:2px;background:#FDF6F3;padding:18px 22px;margin-bottom:24px}
.form-errors:focus{outline:2px solid var(--deep-dark);outline-offset:3px}
.form-errors-h{font-family:var(--sans);font-size:.95rem;font-weight:700;letter-spacing:0;color:var(--deep-dark);margin-bottom:8px}
.form-errors ul{margin:0;padding-left:20px;font-family:var(--sans);font-size:.92rem}
.form-errors li{margin:4px 0}
.form-errors a{color:var(--deep-dark);text-decoration:underline;text-underline-offset:3px}
.hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}
.consult-form{position:relative}
.form-errors,.form-panel,.field input,.field select,.field textarea{scroll-margin-top:calc(var(--header-h) + 24px)}
.form-submit{min-height:48px;position:relative}
.form-submit[aria-busy="true"]{cursor:progress;opacity:.9}
.form-submit[aria-busy="true"]::before{content:"";width:15px;height:15px;border-radius:50%;
  border:2px solid rgba(241,235,221,.4);border-top-color:var(--paper-on-deep);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.form-submit[aria-busy="true"]::before{animation:none;border-top-color:rgba(241,235,221,.4)}}
.form-panel{border-radius:2px;padding:26px 28px}
.form-panel:focus{outline:2px solid var(--deep);outline-offset:3px}
.form-panel h3{margin-bottom:8px}
.form-panel p{color:var(--umber-70)}
.form-panel a{color:var(--deep-dark);font-weight:600;text-decoration:underline;text-underline-offset:3px}
.form-panel--ok{border:1px solid var(--deep);background:var(--deep-wash)}
.form-panel--ok h3::before{content:"";display:inline-block;width:.55em;height:.95em;margin-right:.45em;
  border:solid var(--deep);border-width:0 3px 3px 0;transform:rotate(45deg) translateY(-.12em)}
.form-panel--call{border:1px solid var(--umber-50);background:#FBF8F1}
.turnstile-slot:empty{display:none}

/* ---------- blog ---------- */
.crumbs{font-family:var(--sans);font-size:.82rem;color:var(--umber-70);margin-bottom:22px}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px}
.crumbs li+li::before{content:"/";margin-right:6px;color:var(--umber-50)}
.crumbs a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
.post-list{margin-top:44px;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr));gap:clamp(24px,3vw,44px)}
.post-card{display:flex;flex-direction:column}
.post-card .plate{margin-bottom:18px}
.post-card .post-area{font-family:var(--sans);font-size:.74rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.post-card h2{font-size:clamp(1.3rem,1.8vw,1.55rem);line-height:1.2;margin-bottom:10px}
.post-card h2 a:hover{color:var(--deep)}
.post-card p{color:var(--umber-70);font-size:var(--text-small);line-height:1.6}
.post-card .read{margin-top:14px;font-family:var(--sans);font-size:.88rem;font-weight:600;color:var(--deep);text-decoration:underline;text-underline-offset:3px}
.post-hero{padding:calc(var(--sect)*.6) 0 calc(var(--sect)*.4)}
.post-hero h1{font-size:clamp(2rem,3.6vw,3rem);max-width:22em}
.post-meta{margin-top:18px;font-family:var(--sans);font-size:.86rem;color:var(--umber-70)}
.post-figure{margin-top:36px}
.article{max-width:68ch;margin:0 auto}
.article h2{font-size:clamp(1.55rem,2.4vw,2rem);margin:46px 0 14px}
.article h3{font-size:1.25rem;margin:30px 0 8px}
.article p,.article li{margin:14px 0}
.article ul,.article ol{padding-left:22px}
.article li{margin:8px 0}
.article .answer{font-size:var(--text-lede);line-height:1.55;border-left:3px solid var(--deep);padding:4px 0 4px 20px;margin:0 0 28px;color:var(--umber)}
.article a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
.article a:hover{text-decoration-color:var(--umber)}
.article .note{font-family:var(--sans);font-size:.9rem;color:var(--umber-70);border-top:1px solid var(--line);padding-top:18px;margin-top:40px}
.related{margin-top:10px}

/* ---------- legal + 404 ---------- */
.legal{max-width:70ch}
.legal h2{font-size:clamp(1.4rem,2.2vw,1.8rem);margin:40px 0 12px}
.legal p,.legal li{margin:12px 0}
.legal ul{padding-left:22px}
.legal a{text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
.legal .updated{font-family:var(--sans);font-size:.86rem;color:var(--umber-70)}
.nf-links{margin-top:30px;display:flex;flex-wrap:wrap;gap:12px}

/* ---------- footer legal links ---------- */
.foot-links{display:flex;gap:4px 18px;margin-left:auto;flex-wrap:wrap}
.foot-links a{color:rgba(241,235,221,.8);text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:32px}
.foot-links a:hover{color:var(--paper-on-deep)}
.foot-col li a{display:inline-block;padding:3px 0}
@media (max-width:700px){.foot-links{margin-left:0}}
