/* ============================================================
   Bahwar Rug — bahwarrug@gmail.com
   Palette: Ivory · Sand · Olive · Terracotta · Espresso
   ============================================================ */

:root{
  --ivory:#F4F0E8;
  --sand:#D8CBB8;
  --olive:#777A63;
  --terracotta:#A9664D;
  --espresso:#292722;

  --ivory-warm:#FAF7F1;
  --sand-soft:#E7DFD1;
  --rule:rgba(41,39,34,.14);
  --rule-soft:rgba(41,39,34,.08);
  --ink:var(--espresso);
  --ink-mid:rgba(41,39,34,.72);
  --ink-soft:rgba(41,39,34,.58);

  --display:"Fraunces","Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
  --sans:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;

  --shell:1240px;
  --gutter:clamp(20px,5vw,64px);
  --section-y:clamp(72px,11vw,150px);

  --ease:cubic-bezier(.22,.61,.36,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body,h1,h2,h3,p,figure,figcaption,ul,ol,dl,dd{margin:0}
ul,ol{padding:0;list-style:none}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
button,input{font:inherit}

body{
  background:var(--ivory);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  font-size:clamp(15.5px,1.02vw,17px);
  line-height:1.68;
  letter-spacing:.004em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* subtle paper grain */
body::before{
  content:"";
  position:fixed; inset:0;
  pointer-events:none; z-index:1;
  opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

.shell{
  width:100%;
  max-width:var(--shell);
  margin-inline:auto;
  padding-inline:var(--gutter);
}
.section{padding-block:var(--section-y)}
.nowrap{white-space:nowrap}

.skip{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--espresso); color:var(--ivory);
  padding:12px 18px; border-radius:2px;
}
.skip:focus{left:12px; top:12px}

:focus-visible{outline:2px solid var(--terracotta); outline-offset:3px; border-radius:2px}

/* ---------- type ---------- */
h1,h2,h3{
  font-family:var(--display);
  font-weight:400;
  font-variation-settings:"SOFT" 22,"WONK" 1,"opsz" 96;
  letter-spacing:-.018em;
  line-height:1.06;
  text-wrap:balance;
}
h1 em,h2 em{
  font-style:italic;
  font-variation-settings:"SOFT" 30,"WONK" 1,"opsz" 96;
  color:var(--terracotta);
}
h1{font-size:clamp(2.45rem,6.4vw,4.6rem)}
h2{font-size:clamp(2rem,4.6vw,3.35rem)}
h3{
  font-size:clamp(1.18rem,1.85vw,1.45rem);
  line-height:1.2;
  letter-spacing:-.01em;
}

.eyebrow{
  font-family:var(--sans);
  font-size:.7rem;
  font-weight:600;
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--olive);
  margin-bottom:1.25rem;
}
.lede{
  font-size:clamp(1.05rem,1.55vw,1.24rem);
  line-height:1.55;
  color:var(--ink-mid);
  max-width:56ch;
  text-wrap:pretty;
}
.body,.story-copy p,.every-copy p{max-width:58ch; text-wrap:pretty}

.pull{
  font-family:var(--display);
  font-style:italic;
  font-size:clamp(1.25rem,2.35vw,1.72rem);
  line-height:1.34;
  color:var(--espresso);
  letter-spacing:-.012em;
  padding-left:1.15rem;
  border-left:2px solid var(--terracotta);
}
.lead-line{
  font-family:var(--display);
  font-size:clamp(1.2rem,2vw,1.5rem);
  line-height:1.34;
  letter-spacing:-.012em;
  color:var(--espresso);
}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--espresso);
  --fg:var(--ivory);
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.6em;
  min-height:52px;
  padding:.95em 1.75em;
  background:var(--bg);
  color:var(--fg);
  font-family:var(--sans);
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.12em;
  text-transform:uppercase;
  text-decoration:none;
  border-radius:999px;
  position:relative;
  overflow:hidden;
  isolation:isolate;
  transition:color .4s var(--ease), transform .3s var(--ease);
  max-width:100%;
  text-align:center;
}
.btn::after{
  content:"";
  position:absolute; inset:0; z-index:-1;
  background:var(--terracotta);
  transform:translateY(101%);
  transition:transform .45s var(--ease);
}
.btn:hover::after,.btn:focus-visible::after{transform:translateY(0)}
.btn:hover{transform:translateY(-2px)}
.btn:active{transform:translateY(0)}
.btn-sm{min-height:42px; padding:.7em 1.3em; font-size:.7rem; letter-spacing:.14em}
.btn-light{--bg:var(--ivory); --fg:var(--espresso)}
.btn-light::after{background:var(--sand)}

.link-arrow{
  display:inline-flex; align-items:center; gap:.5em;
  font-size:.78rem; font-weight:600;
  letter-spacing:.13em; text-transform:uppercase;
  color:var(--terracotta);
  text-decoration:none;
  padding-bottom:4px;
  border-bottom:1px solid currentColor;
  transition:gap .3s var(--ease)
}
.link-arrow:hover{gap:.9em}

/* ---------- header ---------- */
.site-header{
  position:sticky; top:0; z-index:50;
  transition:background .4s var(--ease), box-shadow .4s var(--ease), border-color .4s var(--ease);
  border-bottom:1px solid transparent;
}
.site-header.is-stuck{
  background:rgba(244,240,232,.92);
  -webkit-backdrop-filter:saturate(140%) blur(12px);
  backdrop-filter:saturate(140%) blur(12px);
  border-bottom-color:var(--rule-soft);
}
.header-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:clamp(12px,3vw,40px);
  min-height:96px;
  padding-block:12px;
}
.brand{
  display:inline-flex;
  align-items:center;
  text-decoration:none;
  color:var(--espresso);
  flex-shrink:0;
  min-width:0;
}
.brand-logo{
  display:block;
  height:clamp(52px,6.2vw,74px);
  width:auto;
}
.site-nav{display:flex; gap:clamp(16px,2.4vw,34px)}
.site-nav a{
  font-size:.74rem; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase;
  text-decoration:none; color:var(--ink-mid);
  padding-bottom:3px;
  background-image:linear-gradient(var(--terracotta),var(--terracotta));
  background-size:0% 1px; background-repeat:no-repeat; background-position:0 100%;
  transition:background-size .35s var(--ease), color .35s var(--ease);
  white-space:nowrap;
}
.site-nav a:hover{color:var(--espresso); background-size:100% 1px}

/* ---------- hero ---------- */
.hero{position:relative; padding-top:clamp(28px,5vw,58px)}
.hero-grid{
  display:grid;
  grid-template-columns:minmax(0,1.02fr) minmax(0,.86fr);
  gap:clamp(30px,5vw,72px);
  align-items:center;
  padding-bottom:clamp(48px,7vw,86px);
}
.hero-copy{min-width:0}
.hero-copy h1{margin-bottom:1.5rem}
.hero-copy .lede{margin-bottom:1.15rem}
.hero-copy .body{color:var(--ink-mid); margin-bottom:2.1rem}
.hero-actions{display:flex; flex-wrap:wrap; align-items:center; gap:1rem 1.5rem}
.hero-note{
  font-size:.75rem; letter-spacing:.1em; text-transform:uppercase;
  color:var(--ink-soft);
}

.hero-media{position:relative; min-width:0}
.hero-media picture{display:block}
.hero-media img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:2px;
  box-shadow:0 30px 70px -34px rgba(41,39,34,.5);
}
.hero-media::before{
  content:"";
  position:absolute;
  inset:14px -14px -14px 14px;
  border:1px solid var(--sand);
  border-radius:2px;
  z-index:-1;
}
.hero-media figcaption{
  margin-top:.95rem;
  font-size:.73rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-soft);
}

/* ---------- story ---------- */
.story{background:var(--ivory-warm)}
.story-grid{
  display:grid;
  grid-template-columns:minmax(0,.82fr) minmax(0,1fr);
  gap:clamp(32px,6vw,86px);
  align-items:center;
}
.story-media figcaption{
  margin-top:.9rem;
  font-size:.73rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-soft);
}
.story-media img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:2px;
  box-shadow:0 26px 60px -34px rgba(41,39,34,.45);
}
.story-copy{min-width:0; display:flex; flex-direction:column; gap:1.15rem}
.story-copy h2{margin-bottom:.5rem}
.story-copy p:not(.pull):not(.lead-line){color:var(--ink-mid)}
.story-copy .pull{margin-top:.6rem}

/* ---------- experience ---------- */
.experience{border-top:1px solid var(--rule-soft)}
.section-head{max-width:64ch; margin-bottom:clamp(46px,6vw,78px)}
.section-head.narrow{max-width:56ch}
.section-head h2{margin-bottom:1.3rem}

.steps{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:0;
  border-top:1px solid var(--rule);
}
.steps .step:nth-child(4n){border-right:none}
.step{
  position:relative;
  padding:clamp(28px,3.4vw,44px) clamp(20px,2.6vw,38px) clamp(32px,4vw,52px);
  border-bottom:1px solid var(--rule);
  border-right:1px solid var(--rule);
  min-width:0;
  transition:background .4s var(--ease);
}
.step:hover{background:var(--sand-soft)}
.step-num{
  display:block;
  font-family:var(--display);
  font-size:clamp(2.2rem,3.6vw,3rem);
  line-height:1;
  color:var(--sand);
  margin-bottom:1.1rem;
  font-variation-settings:"SOFT" 22,"WONK" 1;
  transition:color .4s var(--ease);
}
.step:hover .step-num{color:var(--terracotta)}
.step h3{margin-bottom:.7rem}
.step p{color:var(--ink-mid); font-size:.95rem; text-wrap:pretty}

.experience-foot{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:clamp(24px,4vw,56px);
  margin-top:clamp(44px,5.5vw,72px);
}
.statement{
  font-family:var(--display);
  font-size:clamp(1.32rem,2.7vw,2.05rem);
  line-height:1.28;
  letter-spacing:-.015em;
  max-width:22ch;
  text-wrap:balance;
}
.statement em{font-style:italic; color:var(--terracotta)}

/* ---------- every rug ---------- */
.every{background:var(--sand-soft)}
.every-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.8fr);
  gap:clamp(32px,6vw,86px);
  align-items:center;
}
.every-copy{min-width:0; display:flex; flex-direction:column; gap:1.15rem}
.every-copy h2{margin-bottom:.5rem}
.every-copy p:not(.pull):not(.closing){color:var(--ink-mid)}
.every-copy .pull{border-left-color:var(--espresso)}
.closing{
  font-family:var(--display);
  font-size:clamp(1.1rem,1.75vw,1.32rem);
  line-height:1.42;
  letter-spacing:-.01em;
  padding-top:1.1rem;
  border-top:1px solid rgba(41,39,34,.16);
  text-wrap:pretty;
}
.every-media img{
  width:100%;
  aspect-ratio:4/5;
  object-fit:cover;
  border-radius:2px;
  box-shadow:0 26px 60px -34px rgba(41,39,34,.45);
}
.every-media figcaption{
  margin-top:.9rem;
  font-size:.73rem; letter-spacing:.13em; text-transform:uppercase;
  color:var(--ink-soft);
}

/* ---------- gallery ---------- */
.gallery{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,272px),1fr));
  gap:clamp(16px,2.2vw,30px);
}
.tile{position:relative; min-width:0}
.tile picture{display:block; overflow:hidden; border-radius:2px; background:var(--sand)}
.tile img{
  width:100%;
  aspect-ratio:3/4;
  object-fit:cover;
  transition:transform .8s var(--ease), filter .8s var(--ease);
}
.tile:hover img{transform:scale(1.045)}
.tile figcaption{
  margin-top:.85rem;
  font-size:.78rem;
  color:var(--ink-soft);
  letter-spacing:.03em;
  text-wrap:pretty;
}
.tile figcaption span{
  display:block;
  font-weight:600;
  font-size:.7rem;
  letter-spacing:.2em;
  text-transform:uppercase;
  color:var(--espresso);
  margin-bottom:.3rem;
}
.tile-note{
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:1.1rem;
  padding:clamp(26px,3vw,40px);
  background:var(--espresso);
  color:var(--ivory);
  border-radius:2px;
  aspect-ratio:3/4;
}
.note-eyebrow{
  font-size:.7rem; font-weight:600;
  letter-spacing:.24em; text-transform:uppercase;
  color:var(--sand);
}
.note-body{
  font-family:var(--display);
  font-size:clamp(1.12rem,1.8vw,1.42rem);
  line-height:1.34;
  letter-spacing:-.012em;
  text-wrap:pretty;
}
.tile-note .link-arrow{color:var(--sand); align-self:flex-start}
.tile-note .link-arrow:hover{color:var(--ivory)}

/* ---------- carry ---------- */
.carry{
  background:var(--ivory-warm);
  border-top:1px solid var(--rule-soft);
  padding-block:clamp(56px,8vw,104px);
}
.carry-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));
  gap:clamp(36px,5vw,80px);
}
.carry-col{min-width:0}
.tag-list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:.55rem;
}
.tag-list li{
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  min-height:44px;
  padding:.55em .7em;
  border:1px solid var(--rule);
  border-radius:999px;
  font-size:clamp(.7rem,1.55vw,.82rem);
  letter-spacing:.04em;
  white-space:nowrap;
  color:var(--ink-mid);
  background:var(--ivory);
  transition:border-color .3s var(--ease), color .3s var(--ease), background .3s var(--ease);
}
.tag-list li:hover{border-color:var(--terracotta); color:var(--terracotta); background:transparent}
.service-list{display:flex; flex-direction:column; gap:1.5rem}
.service-list dt{
  font-family:var(--display);
  font-size:clamp(1.1rem,1.7vw,1.3rem);
  letter-spacing:-.01em;
  margin-bottom:.35rem;
  font-variation-settings:"SOFT" 22,"WONK" 1;
}
.service-list dd{color:var(--ink-mid); font-size:.95rem; max-width:46ch; text-wrap:pretty}

/* ---------- cta ---------- */
.cta{
  background:var(--espresso);
  color:var(--ivory);
  padding-block:clamp(72px,10vw,132px);
  position:relative;
  overflow:hidden;
}
.cta::before{
  content:"";
  position:absolute;
  top:-30%; right:-12%;
  width:min(56vw,620px); aspect-ratio:1;
  border-radius:50%;
  background:radial-gradient(circle,rgba(169,102,77,.34),transparent 68%);
  pointer-events:none;
}
.cta-inner{position:relative; max-width:64ch}
.cta .eyebrow{color:var(--sand)}
.cta h2{margin-bottom:1.4rem}
.cta h2 em{color:var(--sand)}
.cta .lede{color:rgba(244,240,232,.76); margin-bottom:2.4rem}
.cta-fine{
  margin-top:1.4rem;
  font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
  color:rgba(244,240,232,.5);
}

/* ---------- footer ---------- */
.site-footer{
  background:var(--ivory);
  border-top:1px solid var(--rule-soft);
  padding-block:clamp(34px,4vw,52px);
}
.footer-inner{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:1.25rem 2rem;
}
.footer-brand{display:flex; flex-direction:column; gap:.25rem; min-width:0}
.footer-logo{display:block; height:clamp(62px,8vw,84px); width:auto}
.footer-tag{
  font-family:var(--display);
  font-style:italic;
  font-size:.95rem;
  color:var(--olive);
}
.footer-mail{
  font-size:.85rem;
  letter-spacing:.05em;
  color:var(--ink-mid);
  text-decoration:none;
  border-bottom:1px solid var(--rule);
  padding-bottom:2px;
  word-break:break-word;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.footer-mail:hover{color:var(--terracotta); border-color:var(--terracotta)}
.footer-legal{
  font-size:.74rem;
  letter-spacing:.08em;
  color:var(--ink-soft);
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5em;
}
.footer-sep{color:var(--sand)}
.footer-credit a{
  color:var(--ink-mid);
  text-decoration:none;
  border-bottom:1px solid var(--rule);
  padding-bottom:1px;
  transition:color .3s var(--ease), border-color .3s var(--ease);
}
.footer-credit a:hover{color:var(--terracotta); border-color:var(--terracotta)}

/* ---------- reveal ---------- */
.reveal{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .85s var(--ease), transform .85s var(--ease);
}
.reveal.d1{transition-delay:.09s}
.reveal.d2{transition-delay:.18s}
.reveal.d3{transition-delay:.27s}
.reveal.d4{transition-delay:.36s}
.reveal.is-in{opacity:1; transform:none}
.no-js .reveal{opacity:1; transform:none}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1080px){
  .site-nav{gap:20px}
}

@media (max-width:1040px){
  .carry-grid{grid-template-columns:minmax(0,1fr)}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps .step:nth-child(4n){border-right:1px solid var(--rule)}
  .steps .step:nth-child(2n){border-right:none}
}

@media (max-width:900px){
  .hero-grid{
    grid-template-columns:minmax(0,1fr);
    gap:clamp(34px,6vw,48px);
  }
  .hero-media{max-width:min(560px,100%); margin-inline:auto}
  .hero-media::before{inset:12px -12px -12px 12px}
  .story-grid,.every-grid{grid-template-columns:minmax(0,1fr)}
  .story-media,.every-media{max-width:min(560px,100%); margin-inline:auto; order:-1}
  .every-media{order:2}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .steps .step:nth-child(4n){border-right:1px solid var(--rule)}
  .steps .step:nth-child(2n){border-right:none}
  .experience-foot{flex-direction:column; align-items:flex-start}
  .statement{max-width:28ch}
}

@media (max-width:760px){
  .site-nav{display:none}
  .header-inner{min-height:78px}
  .hero{padding-top:18px}
  .steps{
    grid-template-columns:minmax(0,1fr);
    border-top:1px solid var(--rule);
  }
  .steps .step,
  .steps .step:nth-child(2n),
  .steps .step:nth-child(4n){border-right:none}
  .step{padding-inline:0}
  .step-num{margin-bottom:.75rem}
  .gallery{grid-template-columns:minmax(0,1fr); gap:26px}
  .tile-note{aspect-ratio:auto; padding:32px 26px}
  .footer-inner{flex-direction:column; align-items:flex-start}
  .footer-legal{flex-direction:column; align-items:flex-start; gap:.45em}
  .footer-sep{display:none}
}

@media (min-width:761px) and (max-width:1100px){
  .gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:430px){
  .btn{width:100%; padding-inline:1.1em; font-size:.75rem; letter-spacing:.1em}
  .btn-sm{width:auto}
  .hero-actions{gap:.9rem}
  .hero-note{font-size:.7rem}
  .eyebrow{font-size:.66rem; letter-spacing:.19em}
  .pull{padding-left:.95rem}
}

@media (max-width:360px){
  :root{--gutter:16px}
}

/* ---------- motion / print ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .reveal{opacity:1 !important; transform:none !important}
}

@media print{
  .site-header,.tile-note{display:none}
  body{background:#fff; color:#000}
  .reveal{opacity:1; transform:none}
}
