/* ============================================================
   Miguel Valdez · Architect · Portfolio
   Warm concrete monochrome · editorial · Apple-style parallax
   ============================================================ */

:root{
  --paper:#e9e4d8;        /* warm concrete off-white */
  --paper-2:#f2eee4;
  --ink:#17150f;          /* warm near-black */
  --ink-2:#211e16;
  --stone:#6f685b;        /* mid warm gray */
  --stone-2:#9a9285;
  --rust:#b0522e;         /* corten / terracotta accent */
  --rust-soft:#c26a44;
  --line:rgba(23,21,15,.16);
  --line-light:rgba(233,228,216,.18);

  --ff-display:"Fraunces", Georgia, serif;
  --ff-sans:"Archivo", system-ui, sans-serif;
  --ff-exp:"Archivo Expanded", "Archivo", sans-serif;

  --pad:clamp(20px, 6vw, 120px);
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

body{
  font-family:var(--ff-sans);
  background:var(--ink);
  color:var(--ink);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;width:100%;height:100%;object-fit:cover}
a{color:inherit;text-decoration:none}

.mono{
  font-family:var(--ff-exp);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:.24em;
  font-size:.66rem;
}

/* ---------- grain overlay ---------- */
.grain{
  position:fixed;inset:0;z-index:9000;pointer-events:none;
  opacity:.045;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ---------- scroll progress ---------- */
.scroll-progress{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:8000;
  background:transparent;pointer-events:none;
}
.scroll-progress span{
  display:block;height:100%;width:0;
  background:var(--rust);transform-origin:left;
}

/* ---------- NAV ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:7000;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px var(--pad);
  color:var(--paper);
  transition:background .5s var(--ease), color .5s var(--ease), padding .5s var(--ease);
  mix-blend-mode:difference; /* rides over light & dark */
}
.nav__mark .mono{
  font-family:var(--ff-display);
  font-size:1.5rem;font-weight:600;letter-spacing:0;text-transform:none;
  font-style:italic;
}
.nav__links{display:flex;gap:clamp(18px,3vw,44px)}
.nav__links a{
  font-family:var(--ff-exp);text-transform:uppercase;
  letter-spacing:.2em;font-size:.7rem;font-weight:500;
  position:relative;padding:4px 0;
}
.nav__links a::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:0;
  background:currentColor;transition:width .4s var(--ease);
}
.nav__links a:hover::after{width:100%}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative;height:100svh;min-height:640px;
  overflow:hidden;color:var(--paper);
  display:flex;flex-direction:column;justify-content:flex-end;
}
.hero__media{position:absolute;inset:-8% 0 0 0;height:116%;z-index:0;will-change:transform}
.hero__media img{filter:saturate(.82) contrast(1.02) brightness(.92)}
.hero__scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(180deg, rgba(15,13,9,.55) 0%, rgba(15,13,9,.05) 34%, rgba(15,13,9,.72) 100%),
    radial-gradient(120% 80% at 50% 120%, rgba(176,82,46,.28), transparent 60%);
}
.hero__inner{
  position:relative;z-index:2;
  padding:0 var(--pad) clamp(28px,7vh,72px);
}
.hero__eyebrow{display:flex;align-items:center;gap:16px;margin-bottom:clamp(16px,3vh,30px)}
.hero__eyebrow .rule{height:1px;width:clamp(40px,10vw,120px);background:var(--paper);opacity:.5}
.hero__title{
  font-family:var(--ff-display);
  font-weight:340;
  line-height:.86;
  letter-spacing:-.02em;
  font-size:clamp(4rem, 17vw, 15rem);
}
.hero__title .l1,.hero__title .l2{display:block}
.hero__title .l2{font-style:italic;font-weight:420;text-indent:.06em;color:var(--paper)}
.hero__sub{
  margin-top:clamp(18px,3vh,30px);max-width:42ch;
  font-size:clamp(1rem,1.4vw,1.28rem);line-height:1.5;color:rgba(233,228,216,.9);
  font-weight:400;
}
.hero__foot{
  position:relative;z-index:2;
  display:flex;align-items:flex-end;justify-content:space-between;
  padding:0 var(--pad) clamp(20px,4vh,40px);
}
.hero__foot-r{opacity:.7}
.scroll-cue{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.scroll-cue__line{position:relative;width:1px;height:56px;background:rgba(233,228,216,.4);overflow:hidden}
.scroll-cue__line i{
  position:absolute;top:-40%;left:0;width:100%;height:40%;background:var(--paper);
  animation:cue 2.2s var(--ease) infinite;
}
@keyframes cue{0%{transform:translateY(0)}100%{transform:translateY(340%)}}

.d-br{display:inline}
@media(max-width:620px){.d-br{display:none}}

/* ============================================================
   MANIFESTO
   ============================================================ */
.manifesto{
  background:var(--paper);color:var(--ink);
  padding:clamp(90px,18vh,220px) var(--pad);
  position:relative;
}
.manifesto__kicker{color:var(--rust);margin-bottom:clamp(24px,5vh,48px)}
.manifesto__quote{
  font-family:var(--ff-display);
  font-weight:330;font-style:italic;
  font-size:clamp(2.6rem,9vw,8rem);
  line-height:.98;letter-spacing:-.02em;max-width:16ch;
}
.reveal-word{display:inline-block;opacity:0;transform:translateY(.5em) rotate(2deg);
  transition:opacity .9s var(--ease), transform .9s var(--ease)}
.reveal-word.em{color:var(--rust);font-style:italic}
.is-in .reveal-word{opacity:1;transform:none}
.is-in .reveal-word:nth-child(2){transition-delay:.12s}
.is-in .reveal-word:nth-child(3){transition-delay:.24s}
.manifesto__by{margin-top:clamp(26px,5vh,44px);font-family:var(--ff-exp);
  text-transform:uppercase;letter-spacing:.2em;font-size:.72rem;color:var(--stone)}
.manifesto__body{
  margin-top:clamp(40px,8vh,80px);margin-left:auto;max-width:46ch;
  font-size:clamp(1.05rem,1.5vw,1.42rem);line-height:1.55;color:var(--ink-2);
  border-top:1px solid var(--line);padding-top:28px;
}

/* ============================================================
   WORK INDEX
   ============================================================ */
.index{
  background:var(--paper);color:var(--ink);
  padding:clamp(30px,6vh,70px) var(--pad) clamp(30px,6vh,60px);
}
.index__head{
  display:flex;justify-content:space-between;
  padding-bottom:22px;border-bottom:1px solid var(--line);color:var(--stone);
}
.index__list{list-style:none}
.index__row{
  display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;
  gap:clamp(14px,3vw,44px);
  padding:clamp(20px,3.4vw,40px) 0;
  border-bottom:1px solid var(--line);
  cursor:pointer;position:relative;
  transition:padding-left .5s var(--ease), color .5s var(--ease);
}
.index__row::before{
  content:"";position:absolute;left:calc(var(--pad) * -1);right:calc(var(--pad) * -1);top:0;bottom:0;
  background:var(--ink);transform:scaleY(0);transform-origin:bottom;z-index:0;
  transition:transform .55s var(--ease);
}
.index__row:hover{padding-left:clamp(12px,2vw,34px)}
.index__row:hover::before{transform:scaleY(1);transform-origin:top}
.index__row:hover .index__name,
.index__row:hover .index__num,
.index__row:hover .index__meta{color:var(--paper);position:relative;z-index:1}
.index__row > *{position:relative;z-index:1;transition:color .45s var(--ease)}
.index__num{color:var(--rust)}
.index__name{
  font-family:var(--ff-display);font-weight:360;
  font-size:clamp(1.5rem,4.6vw,3.6rem);line-height:1;letter-spacing:-.01em;
}
.index__meta{color:var(--stone);text-align:right}
@media(max-width:640px){
  .index__row{grid-template-columns:auto 1fr;grid-template-areas:"num name" ". meta";row-gap:6px}
  .index__num{grid-area:num}.index__name{grid-area:name}.index__meta{grid-area:meta;text-align:left}
}

/* ============================================================
   PROJECT CHAPTERS · sticky parallax stage
   ============================================================ */
.chapter{position:relative;background:var(--paper)}
.stage{
  position:sticky;top:0;height:100svh;min-height:560px;
  overflow:hidden;background:var(--ink);
  display:flex;align-items:flex-end;
}
.stage__media{position:absolute;inset:0;z-index:0;will-change:transform;overflow:hidden}
.stage__media img{transform:scale(1.06);will-change:transform;filter:saturate(.9) contrast(1.02)}
.stage__scrim{
  position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(15,13,9,.42) 0%,rgba(15,13,9,0) 32%,rgba(15,13,9,.06) 55%,rgba(15,13,9,.82) 100%);
}
.stage__caption{
  position:relative;z-index:2;color:var(--paper);
  padding:0 var(--pad) clamp(40px,8vh,90px);width:100%;will-change:transform,opacity;
}
.stage__idx{display:block;color:var(--rust-soft);margin-bottom:18px}
.stage__title{
  font-family:var(--ff-display);font-weight:340;font-style:italic;
  font-size:clamp(2.6rem,8vw,7rem);line-height:.92;letter-spacing:-.02em;
}
.stage__loc{display:block;margin-top:20px;opacity:.8}

.chapter__body{
  position:relative;z-index:3;background:var(--paper);color:var(--ink);
  padding:clamp(70px,12vh,150px) var(--pad) clamp(70px,12vh,150px);
  border-radius:26px 26px 0 0;margin-top:-26px;
  box-shadow:0 -40px 80px rgba(15,13,9,.28);
}

/* specs */
.specs{
  display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(30px,5vw,90px);
  align-items:start;padding-bottom:clamp(48px,8vh,90px);
  border-bottom:1px solid var(--line);
}
.specs__lead{
  font-family:var(--ff-display);font-weight:360;
  font-size:clamp(1.4rem,2.6vw,2.4rem);line-height:1.28;letter-spacing:-.01em;
}
.specs__grid{
  display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(20px,3vw,48px);
  align-self:center;
}
.specs__grid > div{
  padding:16px 0;border-top:1px solid var(--line);
}
.specs__grid dt{color:var(--rust);margin-bottom:7px}
.specs__grid dd{font-size:clamp(1rem,1.3vw,1.16rem);font-weight:500;color:var(--ink)}
@media(max-width:820px){
  .specs{grid-template-columns:1fr;gap:34px}
}

/* gallery */
.gallery{
  margin-top:clamp(44px,7vh,80px);
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:clamp(14px,1.6vw,26px);
}
.g-item{
  position:relative;overflow:hidden;background:var(--ink-2);
  aspect-ratio:4/3;border-radius:3px;
}
.g-item img{transition:transform 1.1s var(--ease),filter .6s var(--ease);transform:scale(1.01)}
.g-item:hover img{transform:scale(1.05)}
.g-wide{grid-column:1 / -1;aspect-ratio:16/8}
.g-plan{background:var(--paper-2);border:1px solid var(--line)}
.g-plan img{object-fit:contain;padding:clamp(18px,3vw,40px);filter:none;transform:none;mix-blend-mode:multiply}
.g-plan:hover img{transform:none}
.g-item figcaption{
  position:absolute;left:14px;bottom:12px;color:var(--stone);
  background:var(--paper);padding:6px 10px;border-radius:2px;
}
@media(max-width:640px){
  .gallery{grid-template-columns:1fr}
  .g-item{aspect-ratio:4/3}.g-wide{aspect-ratio:16/10}
}

/* ============================================================
   PROFILE
   ============================================================ */
.profile{
  position:relative;z-index:5;
  background:var(--ink);color:var(--paper);
  padding:clamp(90px,16vh,200px) var(--pad);
}
.profile__grid{
  display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(40px,7vw,120px);
  align-items:start;
}
.profile__tag{color:var(--rust-soft);display:block;margin-bottom:26px}
.profile__name{
  font-family:var(--ff-display);font-weight:330;
  font-size:clamp(2.8rem,7vw,6rem);line-height:.9;letter-spacing:-.02em;
}
.profile__name{font-style:italic}
.profile__bio{
  margin-top:clamp(30px,5vh,52px);max-width:52ch;
  font-size:clamp(1.02rem,1.4vw,1.3rem);line-height:1.62;color:rgba(233,228,216,.82);
}
.profile__side{display:flex;flex-direction:column;gap:clamp(30px,4vw,48px)}
.profile__portrait{
  position:relative;overflow:hidden;border-radius:clamp(30px,3.6vw,46px);
  aspect-ratio:1/1;width:100%;max-width:340px;
  border:1px solid var(--line-light);background:var(--ink-2);
}
.profile__portrait::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  box-shadow:inset 0 0 90px rgba(15,13,9,.55);
  background:linear-gradient(180deg,rgba(15,13,9,0) 55%,rgba(15,13,9,.35) 100%);
}
.profile__portrait img{
  filter:grayscale(1) contrast(1.06) brightness(.98);
  transition:transform 1.2s var(--ease),filter .6s var(--ease);
}
.profile__portrait:hover img{transform:scale(1.045)}
.profile__facts{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(20px,3vw,44px)}
.profile__facts > div{padding:20px 0;border-top:1px solid var(--line-light)}
.profile__facts dt{color:var(--stone-2);margin-bottom:9px}
.profile__facts dd{font-family:var(--ff-display);font-size:clamp(1.2rem,1.8vw,1.7rem);font-weight:400}
.profile__software{
  margin-top:clamp(56px,9vh,110px);padding-top:34px;border-top:1px solid var(--line-light);
  display:flex;gap:clamp(20px,4vw,60px);align-items:baseline;flex-wrap:wrap;
}
.profile__software > .mono{color:var(--stone-2);flex:0 0 auto}
.profile__software ul{
  list-style:none;display:flex;flex-wrap:wrap;gap:clamp(10px,1.4vw,18px);
}
.profile__software li{
  font-family:var(--ff-display);font-size:clamp(1.3rem,3vw,2.6rem);font-weight:360;
  padding:4px 4px;color:var(--paper);position:relative;
}
.profile__software li:not(:last-child)::after{content:"·";margin-left:clamp(10px,1.4vw,18px);color:var(--rust)}
@media(max-width:820px){
  .profile__grid{grid-template-columns:1fr;gap:44px}
}

/* ============================================================
   CONTACT
   ============================================================ */
.contact{
  background:var(--ink);color:var(--paper);
  padding:clamp(40px,8vh,90px) var(--pad) clamp(28px,5vh,54px);
  border-top:1px solid var(--line-light);
  display:flex;flex-direction:column;
}
.contact__kicker{color:var(--stone-2);margin-bottom:clamp(24px,5vh,44px)}
.contact__mail{
  font-family:var(--ff-display);font-weight:320;font-style:italic;
  font-size:clamp(2.4rem,10vw,9rem);line-height:.94;letter-spacing:-.03em;
  align-self:flex-start;transition:color .4s var(--ease);word-break:break-word;
}
.contact__mail span{color:var(--rust);font-style:normal}
.contact__mail:hover{color:var(--rust-soft)}
.contact__row{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;
  margin-top:clamp(40px,7vh,80px);padding-top:26px;border-top:1px solid var(--line-light);
  color:var(--stone-2);
}
.contact__row a{transition:color .3s}
.contact__row a:hover{color:var(--paper)}
.contact__base{
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;
  margin-top:clamp(60px,12vh,140px);color:var(--stone);
}

/* ============================================================
   REVEAL util
   ============================================================ */
.reveal{opacity:0;transform:translateY(26px);
  transition:opacity .9s var(--ease),transform .9s var(--ease)}
.is-in.reveal,.is-in .reveal{opacity:1;transform:none}
.reveal.is-in{opacity:1;transform:none}
/* stagger within grids */
.specs__grid .reveal:nth-child(2){transition-delay:.06s}
.specs__grid .reveal:nth-child(3){transition-delay:.12s}
.specs__grid .reveal:nth-child(4){transition-delay:.18s}
.specs__grid .reveal:nth-child(5){transition-delay:.24s}
.specs__grid .reveal:nth-child(6){transition-delay:.30s}
.g-item.reveal:nth-child(2){transition-delay:.08s}
.g-item.reveal:nth-child(3){transition-delay:.16s}
.g-item.reveal:nth-child(4){transition-delay:.10s}
.g-item.reveal:nth-child(5){transition-delay:.18s}

@media (prefers-reduced-motion:reduce){
  .reveal,.reveal-word{opacity:1!important;transform:none!important}
  .scroll-cue__line i{animation:none}
}
