:root { --paper:#f5f2ec; --ink:#171816; --body:#565852; --muted:#676a5b; --rule:#d8d2c8; --rust:#a34e36; --dark:#171816; --dark-rule:#363733; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:"Geist",-apple-system,BlinkMacSystemFont,"Helvetica Neue",Arial,sans-serif; text-rendering:optimizeLegibility; }
a { color:inherit; text-decoration:none; }
::selection { background:var(--rust); color:var(--paper); }

.site-header { position:absolute; z-index:10; top:0; left:50%; display:flex; width:calc(100% - 9rem); height:5.5rem; max-width:1440px; align-items:center; justify-content:space-between; border-bottom:1px solid var(--rule); transform:translateX(-50%); }
.brand { font-size:1.55rem; font-weight:650; letter-spacing:-.045em; }
nav { display:flex; gap:2.75rem; font-size:.95rem; font-weight:520; }
nav a,.text-link { position:relative; }
nav a::after,.text-link::after { position:absolute; right:0; bottom:-.35rem; left:0; height:2px; background:var(--rust); content:""; transform:scaleX(0); transform-origin:right; transition:transform 180ms ease; }
nav a:hover::after,nav a:focus-visible::after,.text-link:hover::after,.text-link:focus-visible::after { transform:scaleX(1); transform-origin:left; }

.hero { display:grid; min-height:100svh; max-width:1584px; margin:0 auto; padding:12rem 4.5rem 3rem; grid-template-columns:minmax(0,1.75fr) minmax(300px,.85fr); gap:clamp(3rem,6vw,7rem); align-items:center; }
.hero-copy { max-width:880px; }
.eyebrow,.section-index,.project-kicker,.project-type { margin:0; color:var(--muted); font-size:.78rem; font-weight:650; letter-spacing:.135em; text-transform:uppercase; }
h1 { max-width:900px; margin:1.7rem 0 1.5rem; font-size:clamp(3.7rem,6.3vw,6.75rem); font-weight:590; letter-spacing:-.065em; line-height:.94; }
.hero-intro { max-width:650px; margin:0; color:var(--body); font-size:clamp(1.15rem,1.65vw,1.45rem); letter-spacing:-.02em; line-height:1.42; }
.hero-actions { display:flex; margin-top:2rem; align-items:center; gap:2.5rem; }
.button { display:inline-flex; min-height:3.6rem; padding:0 2rem; align-items:center; justify-content:center; border-radius:.55rem; font-size:.98rem; font-weight:600; transition:background 180ms ease,color 180ms ease,transform 180ms ease; }
.button-primary { background:var(--ink); color:var(--paper); }
.button-primary:hover { background:#292a27; transform:translateY(-2px); }
.text-link { font-weight:580; }
.text-link::after { transform:scaleX(1); }
.proof { display:flex; margin:clamp(3rem,8vh,5.5rem) 0 0; align-items:center; gap:.9rem; color:var(--body); font-size:.86rem; letter-spacing:.02em; }
.proof span { width:.55rem; height:.55rem; flex:0 0 auto; border-radius:50%; background:var(--rust); }
.portrait-wrap { position:relative; width:100%; max-width:460px; margin:0; justify-self:end; }
.portrait-wrap::after { position:absolute; right:-2%; bottom:-1px; left:-2%; height:24%; background:linear-gradient(to bottom,transparent,var(--paper) 94%); content:""; pointer-events:none; }
.portrait { display:block; width:100%; min-height:520px; border-radius:1.2rem 1.2rem 0 0; object-fit:cover; object-position:50% 24%; }

.work-preview { padding:clamp(6rem,10vw,10rem) max(4.5rem,calc((100vw - 1440px)/2)); background:var(--dark); color:var(--paper); }
.section-heading { display:grid; margin-bottom:4.5rem; grid-template-columns:.7fr 1.7fr 1fr; gap:2rem; align-items:end; }
.section-heading .section-index { color:#9b9c95; align-self:start; }
.section-heading h2 { max-width:660px; margin:0; font-size:clamp(3rem,5vw,5.4rem); font-weight:550; letter-spacing:-.06em; line-height:.97; }
.section-heading>p:last-child { max-width:380px; margin:0; color:#b9bab3; line-height:1.55; }
.featured-project { display:block; padding:1.5rem 0 1.25rem; border-top:1px solid var(--dark-rule); border-bottom:1px solid var(--dark-rule); transition:border-color 180ms ease; }
.featured-project:hover { border-color:#85877e; }
.project-kicker,.project-footer { display:flex; justify-content:space-between; }
.project-kicker { color:#8f9189; }
.project-main { display:grid; padding:clamp(3rem,6vw,6rem) 0; grid-template-columns:1.55fr 1fr; gap:4rem; align-items:end; }
.project-type { margin-bottom:1rem; color:#a6a79f; }
.project-main h3 { margin:0; font-size:clamp(4.5rem,9vw,9rem); font-weight:540; letter-spacing:-.075em; line-height:.8; }
.project-main>p { max-width:520px; margin:0; color:#c7c7c1; font-size:1.05rem; line-height:1.65; }
.project-footer { color:#9fa099; font-size:.88rem; }
.project-arrow { display:flex; align-items:center; gap:.65rem; color:var(--paper); }
.project-list { margin-top:5rem; border-top:1px solid var(--dark-rule); }
.project-list>a { display:grid; padding:2rem 0; border-bottom:1px solid var(--dark-rule); grid-template-columns:4rem 1.4fr .7fr auto; gap:2rem; align-items:center; transition:padding 180ms ease,border-color 180ms ease; }
.project-list>a:hover { padding-right:.75rem; padding-left:.75rem; border-color:#85877e; }
.project-list strong { display:block; margin-bottom:.45rem; font-size:1.45rem; font-weight:560; letter-spacing:-.035em; }
.project-list small { display:block; max-width:620px; color:#aeb0a9; font-size:.92rem; line-height:1.45; }
.project-number,.project-meta { color:#8f9189; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; }

.about { max-width:1440px; margin:0 auto; padding:clamp(7rem,11vw,11rem) 4.5rem; }
.about-grid { display:grid; margin-top:2.5rem; grid-template-columns:1.6fr .85fr; gap:clamp(4rem,9vw,10rem); align-items:start; }
.about h2 { max-width:900px; margin:0; font-size:clamp(3.8rem,6.8vw,7.2rem); font-weight:560; letter-spacing:-.07em; line-height:.93; }
.about-copy { padding-top:.6rem; }
.about-copy p { margin:0 0 1.5rem; color:var(--body); font-size:1.08rem; line-height:1.7; }
.principles { display:grid; margin-top:clamp(6rem,9vw,9rem); border-top:1px solid var(--rule); grid-template-columns:repeat(3,1fr); }
.principles article { padding:1.5rem 2.25rem 0 0; }
.principles article+article { padding-left:2.25rem; border-left:1px solid var(--rule); }
.principles span { color:var(--rust); font-size:.75rem; font-weight:650; }
.principles h3 { margin:2.25rem 0 .75rem; font-size:1.35rem; font-weight:600; letter-spacing:-.035em; }
.principles p { max-width:320px; margin:0; color:var(--body); line-height:1.55; }

.background { padding:clamp(7rem,10vw,10rem) max(4.5rem,calc((100vw - 1440px)/2)); background:#e9e4db; }
.light-heading { grid-template-columns:.7fr 2.7fr; }
.light-heading h2 { max-width:1000px; }
.timeline { border-top:1px solid #c2bbb0; }
.timeline article { display:grid; padding:2.1rem 0; border-bottom:1px solid #c2bbb0; grid-template-columns:.7fr 1.35fr 1fr; gap:2rem; align-items:start; }
.timeline article>p:first-child { margin:0; color:var(--rust); font-size:.78rem; font-weight:650; letter-spacing:.09em; text-transform:uppercase; }
.timeline h3 { margin:0 0 .35rem; font-size:1.65rem; font-weight:570; letter-spacing:-.04em; }
.timeline span { color:var(--body); }
.timeline article>p:last-child { max-width:440px; margin:0; color:var(--body); line-height:1.55; }

.contact { padding:clamp(7rem,11vw,11rem) max(4.5rem,calc((100vw - 1440px)/2)); background:var(--rust); color:var(--paper); }
.contact .section-index { color:#ead5cc; }
.contact h2 { max-width:1100px; margin:2.5rem 0 4rem; font-size:clamp(4rem,8vw,8.6rem); font-weight:560; letter-spacing:-.075em; line-height:.9; }
.contact-link { display:flex; padding:1.35rem 0; justify-content:space-between; border-top:1px solid rgb(245 242 236/45%); border-bottom:1px solid rgb(245 242 236/45%); font-size:clamp(1.05rem,2vw,1.55rem); }
footer { display:flex; padding:2rem max(4.5rem,calc((100vw - 1440px)/2)); align-items:center; justify-content:space-between; background:var(--ink); color:#aaa; font-size:.82rem; }
footer p { margin:0; }
footer div { display:flex; gap:2rem; }
footer a { transition:color 160ms ease; }
footer a:hover { color:var(--paper); }
.legal-shell { width:100%; height:100svh; margin:0; background:#f8fafc; }
.legal-frame { display:block; width:100%; height:100%; border:0; }
:focus-visible { border-radius:2px; outline:3px solid rgb(163 78 54/35%); outline-offset:4px; }

@media (max-width:900px) {
  .site-header { width:calc(100% - 3rem); }
  .hero { min-height:auto; padding:9.5rem 1.5rem 5rem; grid-template-columns:1fr; gap:3.5rem; }
  .portrait-wrap { width:min(78vw,430px); justify-self:center; }
  .section-heading,.project-main,.about-grid { grid-template-columns:1fr; }
  .work-preview { padding-right:1.5rem; padding-left:1.5rem; }
  .about { padding-right:1.5rem; padding-left:1.5rem; }
  .principles { grid-template-columns:1fr; }
  .principles article,.principles article+article { padding:2rem 0; border-right:0; border-bottom:1px solid var(--rule); border-left:0; }
  .principles h3 { margin-top:1.2rem; }
  .timeline article { grid-template-columns:.45fr 1fr; }
  .timeline article>p:last-child { grid-column:2; }
}
@media (max-width:560px) {
  .site-header { height:4.5rem; }
  .brand { font-size:1.15rem; }
  nav { gap:1.1rem; font-size:.82rem; }
  .hero { padding-top:7.5rem; }
  h1 { margin-top:1.25rem; font-size:clamp(3.2rem,14vw,4.7rem); }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:1.5rem; }
  .button { width:100%; }
  .proof { line-height:1.5; }
  .portrait { min-height:410px; }
  .section-heading { margin-bottom:3rem; }
  .project-main { padding:3rem 0; gap:2rem; }
  .project-footer { align-items:flex-start; flex-direction:column; gap:1rem; }
  .project-list>a { grid-template-columns:2rem 1fr auto; gap:1rem; }
  .project-meta { display:none; }
  .about h2 { font-size:clamp(3.25rem,14vw,5rem); }
  .background,.contact { padding-right:1.5rem; padding-left:1.5rem; }
  .timeline article { grid-template-columns:1fr; }
  .timeline article>p:last-child { grid-column:auto; }
  footer { padding:2rem 1.5rem; align-items:flex-start; flex-direction:column; gap:1.5rem; }
  footer div { flex-wrap:wrap; gap:1rem 1.5rem; }
}
@media (prefers-reduced-motion:no-preference) {
  .hero-copy>* { animation:enter 650ms both; }
  .hero-copy>:nth-child(2) { animation-delay:70ms; }
  .hero-copy>:nth-child(3) { animation-delay:140ms; }
  .hero-copy>:nth-child(4) { animation-delay:210ms; }
  .hero-copy>:nth-child(5) { animation-delay:280ms; }
  .portrait-wrap { animation:reveal 800ms 120ms both; }
}
@keyframes enter { from { opacity:0; transform:translateY(12px); } }
@keyframes reveal { from { clip-path:inset(0 0 100% 0); } to { clip-path:inset(0); } }
