/* ============================================================
   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. Structure: textile indigo. Hairlines: brass.
   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 */
  --indigo:#26374F;        /* textile indigo, structural */
  --indigo-deep:#1D2B3F;   /* footer depth */
  --indigo-wash:rgba(38,55,79,.08);
  --brass:#8A6A34;         /* hardware brass, hairlines + eyebrows */
  --madder:#96412F;        /* madder-dyed warp thread, selvage only */
  --line:rgba(43,36,27,.16);
  --line-soft:rgba(43,36,27,.09);
  --paper-on-indigo:#F1EBDD;
  --muted-on-indigo:rgba(241,235,221,.72);

  /* type */
  --serif:'Newsreader',Georgia,serif;
  --sans:'Archivo',-apple-system,'Helvetica Neue',sans-serif;
  --mono:'DM Mono',Menlo,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(72px,10vw,140px);

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

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
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(--brass)}
p a:hover,li a:hover{text-decoration-color:var(--umber)}
::selection{background:var(--indigo);color:var(--paper-on-indigo)}
:focus-visible{outline:2px solid var(--indigo);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(--indigo);color:var(--paper-on-indigo);
  font-family:var(--sans);font-size:var(--text-small);
  padding:10px 18px;
}
.skip-link:focus{left:var(--selvage-w)}

/* ---------- 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(--indigo) 3px 5px,
      var(--flax) 5px 9px,
      var(--indigo) 9px 10px,
      var(--flax) 10px 14px,
      var(--madder) 14px 16px,
      var(--flax) 16px 21px,
      var(--indigo) 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%);
}
body{padding-left:var(--selvage-w)}
@media (max-width:900px){
  .selvage{display:none}
  body{padding-left:0}
  /* the selvage weave survives as a thin band on top of the header */
  .site-header::before{
    content:"";display:block;height:7px;
    background:
      repeating-linear-gradient(90deg,
        var(--flax) 0 3px,var(--indigo) 3px 5px,var(--flax) 5px 9px,
        var(--indigo) 9px 10px,var(--flax) 10px 14px,var(--madder) 14px 16px,
        var(--flax) 16px 21px,var(--indigo) 21px 23px,var(--flax) 23px 34px);
    border-bottom:1px solid var(--line);
  }
}

/* ---------- 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--indigo{background:var(--indigo);color:var(--paper-on-indigo)}
.section--indigo ::selection{background:var(--brass);color:var(--umber)}

.eyebrow{
  font-family:var(--mono);font-size:var(--text-tag);font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;color:var(--brass);
  display:block;margin-bottom:18px;
}
.section--indigo .eyebrow{color:#C8A15E}

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--indigo .lede{color:var(--muted-on-indigo)}
.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);
}
.nav-row{
  max-width:var(--container);margin:0 auto;padding:0 var(--gut);
  display:flex;align-items:center;gap:28px;height:76px;
}
.wordmark{display:flex;flex-direction:column;line-height:1;gap:3px;flex-shrink:0}
.wordmark b{font-family:var(--serif);font-weight:500;font-size:1.35rem;letter-spacing:-.01em;font-variation-settings:'opsz' 40}
.wordmark small{font-family:var(--mono);font-size:.56rem;letter-spacing:.3em;text-transform:uppercase;color:var(--brass)}
.site-nav{display:flex;gap:4px;margin-left:auto}
.site-nav a{
  font-family:var(--sans);font-size:.86rem;font-weight:500;
  padding:9px 12px;border-radius:2px;color:var(--umber-70);
  transition:color var(--dur-ui) var(--ease-house),background var(--dur-ui) var(--ease-house);
}
.site-nav a:hover{color:var(--umber);background:var(--indigo-wash)}
.site-nav a[aria-current="page"]{color:var(--umber);box-shadow:inset 0 -2px 0 var(--brass)}
.header-actions{display:flex;align-items:center;gap:18px;flex-shrink:0}
.header-phone{font-family:var(--sans);font-size:.9rem;font-weight:600;white-space:nowrap;color:var(--umber)}
.header-phone:hover{color:var(--indigo)}

/* 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(--indigo);color:var(--paper-on-indigo)}
.btn-solid:hover{background:var(--indigo-deep);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--indigo .btn-solid{background:var(--paper-on-indigo);color:var(--indigo)}
.section--indigo .btn-solid:hover{background:#fff}
.section--indigo .btn-line{border-color:var(--muted-on-indigo);color:var(--paper-on-indigo)}
.section--indigo .btn-line:hover{border-color:var(--paper-on-indigo)}
.btn--sm{padding:10px 18px;font-size:.84rem}

/* mobile nav */
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:2px;padding:9px 12px;font-family:var(--sans);font-size:.84rem;font-weight:600;color:var(--umber);cursor:pointer}
@media (max-width:1020px){
  .site-nav{
    display:none;position:absolute;top:100%;left:0;right:0;
    background:var(--flax);border-bottom:1px solid var(--line);
    flex-direction:column;padding:10px var(--gut) 22px;gap:2px;
  }
  .site-nav.open{display:flex}
  .site-nav a{padding:13px 10px;font-size:1rem}
  .nav-toggle{display:block;margin-left:auto}
  .header-actions .btn{display:none}
  .header-phone{display:none}
  .site-nav .nav-phone-item{display:block;margin-top:12px;font-weight:700}
}
@media (min-width:1021px){.site-nav .nav-phone-item{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--indigo{
  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(--indigo);
}
.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-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-wrap:wrap;gap:8px 12px;align-items:center;
}
.trust-line .dot{color:var(--brass)}
@media (max-width:700px){.trust-line{display:block}.trust-line .dot{display:none}.trust-line span{display:block;margin:4px 0}}
@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(--indigo);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(--indigo)}
.service-item a:hover{color:var(--indigo-deep)}
@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(--mono);font-size:var(--text-tag);letter-spacing:.2em;text-transform:uppercase;color:var(--brass);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}
.brand-index .brand-note{font-family:var(--sans);font-size:.86rem;color:var(--umber-50);margin-left:auto;text-align:right}
@media (max-width:700px){
  .brand-index li{flex-direction:column;gap:6px}
  .brand-index .brand-note{margin-left:0;text-align:left}
}

.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(--mono);color:var(--brass);font-size:1.1rem}
.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-indigo);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(--indigo);box-shadow:0 0 0 3px var(--indigo-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}
.form-success{
  display:none;border:1px solid var(--indigo);border-radius:2px;background:var(--indigo-wash);
  padding:26px 28px;
}
.form-success h3{margin-bottom:8px}
.form-success p{color:var(--umber-70)}
.form-success.show{display:block}
form.submitted{display:none}

/* ---------- 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(--indigo);color:var(--paper-on-indigo);margin-top:var(--sect)}
.site-footer .foot-weave{
  height:7px;
  background:
    repeating-linear-gradient(90deg,
      var(--indigo) 0 3px,var(--paper-on-indigo) 3px 4px,var(--indigo) 4px 9px,
      var(--brass) 9px 10px,var(--indigo) 10px 14px,var(--madder) 14px 15px,
      var(--indigo) 15px 22px);
  opacity:.85;
}
.foot-grid{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(28px,4vw,60px);
  padding:64px 0 52px;
}
.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(--mono);font-size:.56rem;letter-spacing:.3em;text-transform:uppercase;color:#C8A15E;display:block;margin-bottom:18px}
.foot-brand p{color:var(--muted-on-indigo);font-size:var(--text-small);max-width:30em;line-height:1.65}
.foot-col h4{font-family:var(--sans);font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#C8A15E;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-indigo)}
.foot-col a:hover{color:var(--paper-on-indigo)}
.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,.55);
}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.foot-grid{grid-template-columns:1fr}}
