: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; }
body.dialog-open { overflow:hidden; }
a { color:inherit; text-decoration:none; }
button { color:inherit; font:inherit; }
::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 { position:relative; 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,.featured-project:focus-within { border-color:#85877e; }
.featured-project-open { display:block; width:100%; padding:0; border:0; background:none; color:inherit; text-align:left; cursor:pointer; }
.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 { display:block; margin-bottom:1rem; color:#a6a79f; }
.project-title { display:block; margin:0; font-size:clamp(4.5rem,9vw,9rem); font-weight:540; letter-spacing:-.075em; line-height:.8; }
.project-description { display:block; max-width:520px; margin:0; color:#c7c7c1; font-size:1.05rem; line-height:1.65; }
.project-footer { padding-right:8rem; color:#9fa099; font-size:.88rem; }
.project-arrow { display:flex; align-items:center; gap:.65rem; color:var(--paper); }
.featured-external { position:absolute; right:0; bottom:1.25rem; z-index:2; color:var(--paper); font-size:.88rem; font-weight:600; }
.featured-external:hover { color:#d8a28f; }
.project-list { margin-top:5rem; border-top:1px solid var(--dark-rule); }
.project-row { position:relative; display:grid; border-bottom:1px solid var(--dark-rule); grid-template-columns:1fr auto; align-items:stretch; transition:padding 180ms ease,border-color 180ms ease; }
.project-row:hover,.project-row:focus-within { padding-right:.75rem; padding-left:.75rem; border-color:#85877e; }
.project-row>button { display:grid; min-width:0; padding:2rem 7.5rem 2rem 0; border:0; background:none; color:inherit; text-align:left; cursor:pointer; grid-template-columns:4rem 1.4fr .7fr auto; gap:2rem; align-items:center; }
.project-row strong { display:block; margin-bottom:.45rem; font-size:1.45rem; font-weight:560; letter-spacing:-.035em; }
.project-row 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; }
.project-row-arrow { transition:transform 180ms ease; }
.project-row:hover .project-row-arrow { transform:translateX(.25rem); }
.project-external { position:absolute; right:0; top:50%; z-index:2; color:#b8bab3; font-size:.8rem; font-weight:600; transform:translateY(-50%); }
.project-external:hover { color:var(--paper); }

.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); }
main>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; }
main>footer p { margin:0; }
main>footer div { display:flex; gap:2rem; }
main>footer a { transition:color 160ms ease; }
main>footer a:hover { color:var(--paper); }

.walkthrough { width:min(1440px,calc(100vw - 2rem)); max-width:none; height:min(900px,calc(100dvh - 2rem)); max-height:none; margin:auto; padding:0; overflow:hidden; border:0; border-radius:1.25rem; background:#ede8df; color:var(--ink); box-shadow:0 30px 120px rgb(0 0 0/45%); }
.walkthrough::backdrop { background:rgb(10 11 10/78%); backdrop-filter:blur(10px); }
.walkthrough-shell { display:grid; height:100%; padding:1.5rem 1.5rem 1.25rem; grid-template-rows:auto minmax(0,1fr) auto; }
.walkthrough-header { display:flex; align-items:center; justify-content:space-between; }
.walkthrough-header { padding:.25rem .25rem 1.25rem; border-bottom:1px solid #cbc4b9; }
.walkthrough-project,.walkthrough-position,.walkthrough-step-label { margin:0; font-size:.72rem; font-weight:650; letter-spacing:.12em; text-transform:uppercase; }
.walkthrough-position { margin-top:.35rem; color:#77796f; }
.walkthrough-close { position:relative; width:2.75rem; height:2.75rem; padding:0; border:1px solid #c5beb2; border-radius:50%; background:transparent; cursor:pointer; transition:background 160ms ease,transform 160ms ease; }
.walkthrough-close:hover { background:#ded7cc; transform:rotate(4deg); }
.walkthrough-close span { position:absolute; top:50%; left:50%; width:1rem; height:1px; background:var(--ink); transform:translate(-50%,-50%) rotate(45deg); }
.walkthrough-close span+span { transform:translate(-50%,-50%) rotate(-45deg); }
.walkthrough-body { display:grid; min-height:0; padding:1.5rem 0; grid-template-columns:minmax(0,1.4fr) minmax(300px,.72fr); gap:clamp(2rem,5vw,6rem); align-items:center; }
.walkthrough-visual { position:relative; height:100%; min-height:0; margin:0; overflow:hidden; border-radius:.8rem; background:#d7d0c5; }
.walkthrough-visual img { display:block; width:100%; height:100%; object-fit:cover; }
.walkthrough-visual figcaption { position:absolute; right:1rem; bottom:1rem; padding:.45rem .65rem; border-radius:.25rem; background:rgb(23 24 22/78%); color:#e8e4dc; font-size:.65rem; letter-spacing:.08em; text-transform:uppercase; backdrop-filter:blur(8px); }
.walkthrough-copy { max-width:520px; padding-right:clamp(1rem,3vw,3rem); }
.walkthrough-step-label { color:var(--rust); }
.walkthrough-copy h2 { margin:1.1rem 0 1.25rem; font-size:clamp(2.7rem,4.8vw,5.2rem); font-weight:560; letter-spacing:-.065em; line-height:.92; }
.walkthrough-copy>p:last-of-type { max-width:470px; margin:0; color:var(--body); font-size:1.03rem; line-height:1.65; }
.walkthrough-dots { display:flex; margin-top:2.5rem; gap:.55rem; }
.walkthrough-dot { width:2.6rem; height:.22rem; padding:0; overflow:hidden; border:0; border-radius:1rem; background:#c5beb3; cursor:pointer; }
.walkthrough-dot[aria-current="step"] { background:var(--rust); }
.walkthrough-footer { display:grid; padding:1.1rem .25rem 0; border-top:1px solid #cbc4b9; background:#ede8df; color:var(--ink); grid-template-columns:1fr auto 1fr; gap:1rem; align-items:center; }
.walkthrough-footer-position { margin:0; color:#6d6e67; font-size:.82rem; font-weight:600; text-align:center; }
.walkthrough-footer button { min-width:7.5rem; min-height:3.2rem; padding:0 1.35rem; border:1px solid #bbb3a7; border-radius:.45rem; background:transparent; font-weight:600; cursor:pointer; }
.walkthrough-footer button:disabled { border-color:transparent; opacity:.35; cursor:default; }
.walkthrough-footer .walkthrough-back { justify-self:start; }
.walkthrough-footer .walkthrough-next { border-color:var(--ink); background:var(--ink); color:var(--paper); justify-self:end; }
.walkthrough-footer .walkthrough-next span { margin-left:.7rem; }
.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/42%); 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; }
  .walkthrough-body { grid-template-columns:1fr 1fr; gap:2rem; }
  .walkthrough-copy { padding-right:.5rem; }
}

@media (max-width:700px) {
  .walkthrough { width:100vw; height:100dvh; border-radius:0; }
  .walkthrough-shell { padding:1rem; }
  .walkthrough-body { display:flex; padding:1rem 0; overflow:auto; align-items:stretch; flex-direction:column; gap:1.5rem; }
  .walkthrough-visual { min-height:42dvh; flex:0 0 auto; }
  .walkthrough-copy { padding:0 .25rem 1rem; }
  .walkthrough-copy h2 { font-size:clamp(2.65rem,12vw,4.25rem); }
  .walkthrough-footer { grid-template-columns:1fr auto 1fr; gap:.5rem; align-items:center; }
  .walkthrough-footer button { min-width:0; padding:0 .8rem; }
}

@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 { padding-right:0; align-items:flex-start; flex-direction:column; gap:1rem; }
  .featured-external { position:static; display:block; margin-top:1rem; }
  .project-row { grid-template-columns:1fr; }
  .project-row>button { padding:2rem 0 3.3rem; grid-template-columns:2rem 1fr auto; gap:1rem; }
  .project-meta { display:none; }
  .project-external { top:auto; right:auto; bottom:1.35rem; left:3rem; transform: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; }
  main>footer { padding:2rem 1.5rem; align-items:flex-start; flex-direction:column; gap:1.5rem; }
  main>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; }
  .walkthrough[open] .walkthrough-visual { animation:dialogVisual 420ms both; }
  .walkthrough[open] .walkthrough-copy { animation:dialogCopy 460ms 60ms both; }
}

@keyframes enter { from { opacity:0; transform:translateY(12px); } }
@keyframes reveal { from { clip-path:inset(0 0 100% 0); } to { clip-path:inset(0); } }
@keyframes dialogVisual { from { opacity:0; transform:scale(.985); } }
@keyframes dialogCopy { from { opacity:0; transform:translateY(12px); } }
