@font-face {
  font-family: "DM Sans";
  src: url("assets/fonts/dm-sans-400.ttf") format("truetype");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face { font-family: "DM Sans"; src: url("assets/fonts/dm-sans-500.ttf") format("truetype"); font-weight: 500; font-display: swap; }
@font-face { font-family: "DM Sans"; src: url("assets/fonts/dm-sans-600.ttf") format("truetype"); font-weight: 600; font-display: swap; }

@font-face {
  font-family: "Roboto Slab";
  src: url("assets/brand/fonts/RobotoSlab-Variable.ttf") format("truetype");
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
}

:root {
  --ink: #171714;
  --ink-soft: #272722;
  --paper: #f1ecdf;
  --paper-bright: #fbf8f0;
  --white: #fffdf8;
  --bronze: #9b6135;
  --bronze-dark: #754424;
  --bronze-pale: #d7b58a;
  --muted: #6e6a61;
  --line: rgba(23, 23, 20, 0.16);
  --line-inverse: rgba(255, 253, 248, 0.18);
  --sans: "DM Sans", Arial, sans-serif;
  --slab: "Roboto Slab", Georgia, serif;
  --gutter: clamp(1.1rem, 4vw, 4.75rem);
  --section-space: clamp(7rem, 12vw, 12rem);
  --max: 96rem;
  --radius: 1.3rem;
  --shadow: 0 1.5rem 4rem rgba(76, 59, 42, 0.11);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 7rem; background: var(--paper); }
body { margin: 0; overflow-x: clip; background: var(--paper); color: var(--ink); font-family: var(--sans); line-height: 1.5; }
body.menu-open { overflow: hidden; }
main { position: relative; overflow: clip; }
img { display: block; width: 100%; max-width: 100%; }
a { color: inherit; }
button { color: inherit; font: inherit; }
figure, dl, ol { margin: 0; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { margin-bottom: 0; font-weight: 670; letter-spacing: -0.055em; line-height: 0.96; text-wrap: balance; }
h1 em, h2 em { color: var(--bronze); font-family: var(--slab); font-style: normal; font-weight: 530; letter-spacing: -0.04em; }
::selection { background: var(--bronze); color: var(--white); }
:focus-visible { outline: 3px solid #b75025; outline-offset: 5px; }

.skip-link { position: fixed; z-index: 100; top: 1rem; left: 1rem; padding: .8rem 1rem; transform: translateY(-170%); border-radius: .5rem; background: var(--ink); color: var(--white); }
.skip-link:focus { transform: none; }
.site-lines { position: fixed; z-index: 0; inset: 0; overflow: hidden; pointer-events: none; opacity: .42; }
.site-lines span { position: absolute; width: 70vw; height: 18vw; right: -18vw; border: 1px solid rgba(155, 97, 53, .2); border-radius: 50%; transform: rotate(-17deg); }
.site-lines span:nth-child(1) { top: 4rem; }
.site-lines span:nth-child(2) { top: 8rem; right: -14vw; }
.site-lines span:nth-child(3) { top: 12rem; right: -10vw; }

.site-header {
  position: fixed;
  z-index: 20;
  top: 1.25rem;
  left: 50%;
  width: min(calc(100% - 2rem), 92rem);
  min-height: 4.4rem;
  padding: .55rem .6rem .55rem 1.5rem;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 1rem;
  transform: translateX(-50%);
  border: 1px solid rgba(255,255,255,.9);
  border-radius: 1.05rem;
  background: rgba(255, 253, 248, .84);
  box-shadow: 0 .8rem 2.6rem rgba(69, 51, 34, .1);
  backdrop-filter: blur(18px) saturate(130%);
  transition: background-color .25s ease, box-shadow .25s ease, top .25s ease;
}
.site-header.is-scrolled { top: .75rem; background: rgba(255,253,248,.96); box-shadow: 0 .9rem 3rem rgba(69,51,34,.16); }
.wordmark { width: fit-content; font-family: var(--slab); font-size: 1.23rem; font-weight: 550; letter-spacing: -.045em; text-decoration: none; }
.desktop-nav { display: flex; gap: clamp(1.5rem, 3vw, 3rem); }
.desktop-nav a { position: relative; padding: .6rem 0; color: #494740; font-size: .76rem; font-weight: 650; letter-spacing: .08em; text-decoration: none; text-transform: uppercase; }
.desktop-nav a::after { content: ""; position: absolute; right: 100%; bottom: .25rem; left: 0; height: 1px; background: var(--bronze); transition: right .25s ease; }
.desktop-nav a:hover::after, .desktop-nav a:focus-visible::after { right: 0; }
.nav-cta { justify-self: end; min-height: 3.1rem; padding: .75rem 1.15rem; display: inline-flex; align-items: center; gap: .6rem; border-radius: .65rem; background: var(--ink); color: var(--white); font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; transition: transform .2s ease, background-color .2s ease; }
.nav-cta:hover { transform: translateY(-2px); background: var(--bronze-dark); }
.menu-toggle, .mobile-nav { display: none; }

.hero {
  position: relative;
  z-index: 1;
  min-height: min(59rem, 100svh);
  padding: clamp(8.2rem, 13vh, 10rem) var(--gutter) 4.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1.05fr) minmax(23rem, .95fr);
  align-items: center;
  gap: clamp(2rem, 6vw, 7rem);
  overflow: hidden;
  background:
    linear-gradient(rgba(155,97,53,.07) 1px, transparent 1px),
    linear-gradient(90deg, rgba(155,97,53,.07) 1px, transparent 1px),
    radial-gradient(circle at 72% 40%, rgba(215,181,138,.25), transparent 30%),
    var(--paper-bright);
  background-size: 6rem 6rem, 6rem 6rem, auto, auto;
}
.hero::after { content: ""; position: absolute; z-index: -1; right: -18vw; bottom: -16vw; width: 78vw; aspect-ratio: 1.8; border: 1px solid rgba(155,97,53,.36); border-radius: 50%; transform: rotate(-12deg); box-shadow: 0 0 0 2.4rem rgba(155,97,53,.025), 0 0 0 5.3rem rgba(155,97,53,.025), 0 0 0 8.2rem rgba(155,97,53,.02); }
.hero-copy { position: relative; z-index: 3; max-width: 49rem; }
.eyebrow, .section-index { color: var(--bronze-dark); font-size: .69rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.eyebrow { margin-bottom: 2.2rem; display: flex; align-items: center; gap: .85rem; }
.eyebrow span { width: 2.7rem; height: 1px; background: var(--bronze); }
h1 { max-width: 9.7ch; font-size: clamp(4rem, 6.7vw, 7.4rem); }
.hero-intro { max-width: 34rem; margin: 2rem 0 0; color: #59564f; font-size: clamp(1.08rem, 1.5vw, 1.35rem); line-height: 1.5; }
.hero-actions { margin-top: 2.3rem; display: flex; align-items: center; flex-wrap: wrap; gap: 1.4rem; }
.button { min-height: 3.6rem; padding: .9rem 1.15rem; display: inline-flex; justify-content: center; align-items: center; gap: 1.25rem; border-radius: .65rem; font-weight: 680; text-decoration: none; transition: transform .2s ease, background-color .2s ease; }
.button-dark { background: var(--ink); color: var(--white); }
.button:hover { transform: translateY(-2px); background: var(--bronze-dark); }
.text-link { min-height: 3rem; padding: .65rem .2rem; display: inline-flex; align-items: center; gap: .6rem; border-bottom: 1px solid var(--line); font-weight: 650; text-decoration: none; }
.text-link i, .project-meta > i, .contact-main a i { transition: transform .25s ease; }
.text-link:hover i, .project-card a:hover .project-meta > i, .contact-main a:hover i { transform: translate(.25rem, -.25rem); }

.hero-portrait { position: relative; z-index: 2; width: min(36vw, 34rem); justify-self: center; aspect-ratio: 1; }
.portrait-frame { position: absolute; inset: 7%; overflow: hidden; border-radius: 50%; border: .45rem solid var(--paper-bright); box-shadow: var(--shadow); background: #d5c7b6; }
.portrait-frame img { height: 100%; object-fit: cover; object-position: center 34%; filter: brightness(.71) saturate(.86); transition: filter 1.9s cubic-bezier(.2,.65,.2,1), transform 1.9s cubic-bezier(.2,.65,.2,1); transform: scale(1.025); }
.portrait-frame img.is-exposed { filter: brightness(.96) saturate(.93); transform: scale(1); }
.portrait-orbit { position: absolute; inset: 1%; border: 1px solid var(--bronze); border-radius: 50%; }
.portrait-orbit::after { content: ""; position: absolute; inset: 4%; border: 1px solid rgba(155,97,53,.38); border-radius: inherit; }
.portrait-note { position: absolute; right: -1rem; bottom: 12%; margin: 0; padding: .7rem .85rem; border-left: 2px solid var(--bronze); background: rgba(251,248,240,.87); color: var(--muted); font-size: .59rem; letter-spacing: .11em; text-transform: uppercase; }
.hero-place { position: absolute; top: 10%; left: -12%; margin: 0; padding: .75rem .9rem; border-radius: .55rem; background: var(--white); box-shadow: 0 .8rem 2rem rgba(61,45,30,.1); font-size: .72rem; font-weight: 650; }
.hero-drawing { position: absolute; right: -3rem; bottom: -1rem; width: 46%; height: 45%; opacity: .23; pointer-events: none; }
.building-line { position: absolute; right: 0; bottom: 0; border: 1px solid var(--bronze); transform: skewY(-14deg); }
.line-a { width: 90%; height: 80%; }
.line-b { width: 70%; height: 60%; right: 10%; }
.line-c { width: 48%; height: 42%; right: 22%; }

.tool-rail { position: relative; z-index: 2; min-height: 7.5rem; padding: 1.5rem var(--gutter); display: grid; grid-template-columns: .34fr 1.66fr; align-items: center; gap: 2rem; background: var(--ink); color: var(--white); }
.tool-rail p { margin: 0; color: rgba(255,255,255,.5); font-size: .65rem; letter-spacing: .16em; text-transform: uppercase; }
.tool-rail > div { display: flex; justify-content: space-between; align-items: center; gap: 1.25rem; }
.tool-rail span { font-size: clamp(.8rem, 1.2vw, 1rem); font-weight: 600; letter-spacing: .03em; }
.tool-rail i { width: 1px; height: 2rem; background: var(--line-inverse); }

.intro, .work, .case-path, .expertise, .profile { position: relative; z-index: 1; }
.intro { max-width: var(--max); margin: auto; padding: var(--section-space) var(--gutter); display: grid; grid-template-columns: .22fr 1.15fr .63fr; gap: clamp(2rem, 5vw, 6rem); background: var(--paper); }
.intro h2 { max-width: 14ch; font-size: clamp(3rem, 5vw, 5.8rem); }
.intro > div > p { max-width: 40rem; margin: 2.2rem 0 0; color: var(--muted); font-size: 1.08rem; }
.proof-list { align-self: end; }
.proof-list > div { padding: 1.2rem 0; border-top: 1px solid var(--line); }
.proof-list dt, .profile dt { color: var(--muted); font-size: .64rem; letter-spacing: .12em; text-transform: uppercase; }
.proof-list dd, .profile dd { margin: .35rem 0 0; font-size: 1.05rem; font-weight: 600; }

.work { padding: var(--section-space) var(--gutter); background: #e9e2d5; }
.section-heading { max-width: var(--max); margin: 0 auto clamp(4rem, 7vw, 7rem); display: grid; grid-template-columns: 1.25fr .55fr; gap: 4rem; align-items: end; }
.section-heading h2 { font-size: clamp(3.5rem, 6vw, 6.7rem); }
.section-heading > p { max-width: 31rem; margin: 0 0 .4rem; color: var(--muted); }
.project-layout { max-width: var(--max); margin: auto; display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(21rem, .85fr); gap: 1rem; align-items: stretch; }
.project-side { display: grid; grid-template-rows: 1fr 1fr; gap: 1rem; }
.project-card { overflow: hidden; border: 1px solid rgba(255,255,255,.75); border-radius: var(--radius); background: var(--white); box-shadow: var(--shadow); }
.project-card a { display: block; text-decoration: none; }
.project-card figure { position: relative; overflow: hidden; }
.ottawa-cover-label { position: absolute; z-index: 2; top: clamp(.7rem,2vw,1.3rem); left: clamp(.7rem,2vw,1.3rem); display: grid; gap: .15rem; max-width: calc(100% - 1.4rem); padding: .6rem .75rem .65rem; border-left: 2px solid #8a4d30; background: #fffffff0; color: #252927; box-shadow: 0 3px 14px #1112; pointer-events: none; }
.ottawa-cover-label strong { font-size: clamp(1rem,2vw,1.55rem); font-weight: 600; line-height: 1; letter-spacing: .055em; text-transform: uppercase; }
.ottawa-cover-label small { font-size: clamp(.53rem,.85vw,.7rem); line-height: 1.35; letter-spacing: .06em; text-transform: uppercase; }
.project-feature figure { aspect-ratio: 1.5; }
.project-side figure { aspect-ratio: 2.06; }
.project-card img { height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2,.7,.2,1), filter .4s ease; }
.project-card:hover img { transform: scale(1.025); }
.project-card figcaption { position: absolute; right: .65rem; bottom: .65rem; left: .65rem; padding: .45rem .55rem; background: rgba(20,20,17,.76); color: rgba(255,255,255,.82); font-size: .56rem; letter-spacing: .07em; text-transform: uppercase; backdrop-filter: blur(6px); }
.project-meta { min-height: 8.7rem; padding: 1.3rem 1.5rem 1.5rem; display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; }
.project-side .project-meta { min-height: 7rem; }
.project-meta p { margin: 0 0 .55rem; color: var(--bronze-dark); font-size: .62rem; font-weight: 650; letter-spacing: .11em; text-transform: uppercase; }
.project-meta h3 { font-size: clamp(1.45rem, 2.5vw, 2.75rem); }
.project-meta span { color: var(--muted); font-size: .78rem; }
.project-meta > i { width: 3rem; height: 3rem; flex: 0 0 auto; display: grid; place-items: center; border: 1px solid var(--line); border-radius: 50%; font-size: 1.25rem; }

.case-path { padding: var(--section-space) var(--gutter); display: grid; grid-template-columns: .78fr 1.22fr; gap: clamp(4rem, 10vw, 10rem); background: var(--ink); color: var(--white); }
.case-copy { position: sticky; top: 8.5rem; align-self: start; }
.case-copy h2 { max-width: 10ch; font-size: clamp(3.4rem, 6vw, 7rem); }
.case-copy > p:last-child { max-width: 31rem; margin: 2rem 0 0; color: rgba(255,255,255,.55); }
.case-path .section-index { color: var(--bronze-pale); }
.case-steps { padding: 0; list-style: none; }
.case-steps li { min-height: 10rem; padding: 2rem 0; display: grid; grid-template-columns: 4rem 1fr; gap: 1rem; border-top: 1px solid var(--line-inverse); }
.case-steps > li > span { color: var(--bronze-pale); font-family: var(--slab); font-size: 1.1rem; }
.case-steps h3 { font-size: clamp(2rem, 4vw, 4rem); }
.case-steps p { max-width: 33rem; margin: .8rem 0 0; color: rgba(255,255,255,.5); }

.expertise { min-height: 70rem; padding: var(--section-space) var(--gutter) var(--section-space) clamp(5.5rem, 10vw, 10rem); display: grid; grid-template-columns: .85fr .72fr 1fr; gap: clamp(2rem, 4vw, 5rem); align-items: center; background: var(--paper-bright); }
.expertise::before { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(115deg, transparent 43%, rgba(155,97,53,.07) 43.1%, transparent 43.2%); }
.expertise-rail { position: absolute; top: 50%; left: -2.3rem; margin: 0; transform: translateY(-50%) rotate(-90deg); color: rgba(155,97,53,.68); font-family: var(--slab); font-size: clamp(3rem, 6vw, 6rem); letter-spacing: .04em; }
.expertise-copy h2 { font-size: clamp(3rem, 5vw, 5.6rem); }
.expertise-copy > p:not(.section-index) { max-width: 31rem; margin: 2rem 0; color: var(--muted); }
.tool-list { display: flex; flex-wrap: wrap; gap: .45rem 1.1rem; padding-top: 1.2rem; border-top: 1px solid var(--line); color: var(--bronze-dark); font-size: .7rem; font-weight: 650; letter-spacing: .08em; text-transform: uppercase; }
.process-line { position: relative; padding: 0; list-style: none; }
.process-line::before { content: ""; position: absolute; top: 1.3rem; bottom: 1.3rem; left: 1rem; width: 1px; background: var(--bronze-pale); transform: rotate(-8deg); transform-origin: top; }
.process-line li { position: relative; padding: 1.15rem 0 1.15rem 3.5rem; display: grid; grid-template-columns: 2.2rem 1fr; gap: 1rem; }
.process-line > li > span { position: relative; z-index: 1; color: var(--bronze-dark); font-family: var(--slab); }
.process-line h3 { font-family: var(--slab); font-size: 1.55rem; font-weight: 520; letter-spacing: -.03em; }
.process-line p { margin: .35rem 0 0; color: var(--muted); font-size: .88rem; }

.about { position: relative; z-index: 1; min-height: 62rem; padding: var(--section-space) var(--gutter); display: grid; grid-template-columns: 1fr 1fr; gap: clamp(3rem, 7vw, 8rem); align-items: center; background: var(--paper); }
.about-media { position: relative; max-width: 45rem; height: clamp(35rem, 58vw, 56rem); overflow: hidden; border-radius: 22rem 22rem 1.2rem 1.2rem; box-shadow: var(--shadow); }
.about-media img { height: 100%; object-fit: cover; }
.about-media > p { position: absolute; right: 1rem; bottom: 1rem; left: 1rem; margin: 0; padding: .75rem; background: rgba(255,253,248,.89); color: var(--muted); font-size: .59rem; letter-spacing: .1em; text-transform: uppercase; }
.about-copy { max-width: 42rem; }
.about-copy h2 { max-width: 10ch; font-size: clamp(4rem, 7vw, 7.5rem); }
.about-copy > p:not(.section-index, .equipment) { max-width: 38rem; margin: 2.2rem 0; color: var(--muted); font-size: 1.08rem; }
.about-copy dl > div { padding: 1rem 0; display: grid; grid-template-columns: 8rem 1fr; gap: 1rem; border-top: 1px solid var(--line); }
.about-copy dt { font-family: var(--slab); font-size: 1.15rem; font-weight: 600; }
.about-copy dd { margin: 0; color: var(--muted); }
.equipment { margin: 1.7rem 0 0; color: var(--bronze-dark); font-size: .7rem; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; }

.profile { max-width: var(--max); margin: auto; padding: var(--section-space) var(--gutter); display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(4rem, 9vw, 9rem); align-items: start; background: var(--paper); }
.profile h2 { font-size: clamp(3.4rem, 5.5vw, 6.2rem); }
.profile dl > div { padding: 1.4rem 0; border-top: 1px solid var(--line); }

.contact { position: relative; z-index: 1; padding: var(--section-space) var(--gutter) 5rem; display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(18rem, .52fr); gap: 1rem; overflow: hidden; background: var(--paper-bright); }
.contact::before { content: ""; position: absolute; z-index: -1; width: 75vw; height: 11rem; right: -15vw; top: 2rem; border: 1px solid rgba(155,97,53,.45); border-radius: 50%; transform: rotate(-16deg); box-shadow: 0 0 0 2.2rem rgba(155,97,53,.04), 0 0 0 4.4rem rgba(155,97,53,.03); }
.contact-main { min-height: 40rem; padding: clamp(2rem, 5vw, 5rem); display: flex; flex-direction: column; background: var(--ink); color: var(--white); box-shadow: var(--shadow); }
.contact-main .section-index { color: var(--bronze-pale); }
.contact-main h2 { max-width: 13ch; font-size: clamp(3.4rem, 6.2vw, 7.3rem); }
.contact-main > p:not(.section-index) { max-width: 39rem; margin: 2rem 0; color: rgba(255,255,255,.58); font-size: 1.1rem; }
.contact-main > a { margin-top: auto; padding: 1.3rem 0; display: flex; align-items: center; gap: 1.1rem; border-top: 1px solid var(--line-inverse); border-bottom: 1px solid var(--line-inverse); color: var(--bronze-pale); font-size: clamp(1.05rem, 3.1vw, 3.4rem); font-weight: 600; letter-spacing: -.03em; text-decoration: none; overflow-wrap: anywhere; }
.contact-aside { padding: clamp(2rem, 3vw, 3.5rem); display: flex; flex-direction: column; background: var(--white); box-shadow: var(--shadow); }
.contact-aside > p { color: var(--bronze-dark); font-size: .66rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.contact-aside h3 { margin-bottom: auto; font-size: clamp(2rem, 3vw, 3.4rem); line-height: 1.08; }
.contact-aside > div { padding: 1.3rem 0; display: flex; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--line); }
.contact-aside span { display: flex; align-items: center; gap: .55rem; font-weight: 650; }
.contact-aside small { color: var(--muted); }

.site-footer { position: relative; z-index: 1; padding: 2.5rem var(--gutter); display: grid; grid-template-columns: auto 1fr 1fr; align-items: center; gap: 1.5rem; background: #0f0f0d; color: var(--white); }
.site-footer img { filter: invert(1); }
.site-footer p { margin: 0; font-size: .78rem; }
.site-footer p:last-child { text-align: right; }
.site-footer strong, .site-footer span { display: block; }
.site-footer span { color: rgba(255,255,255,.45); }


/* Current direction: pure white, professional title first, restrained surfaces. */
:root {
  --paper: #fff;
  --paper-bright: #fff;
  --white: #fff;
  --ink: #202020;
  --muted: #616161;
  --line: rgba(0,0,0,.13);
  --line-inverse: rgba(0,0,0,.13);
  --bronze: #555;
  --bronze-dark: #555;
  --bronze-pale: #555;
  --shadow: none;
  --section-space: clamp(5rem, 8vw, 8rem);
}
h1, h2, h3 { font-weight: 500; letter-spacing: -.035em; line-height: 1.1; }
h1 em, h2 em { font-family: var(--sans); font-weight: 500; color: inherit; }
.portrait-orbit, .hero-place, .expertise-rail { display: none; }
.site-lines { opacity: .5; }
.site-lines span { border-color: rgba(0,0,0,.08); }
.hero-drawing { opacity: .13; }
.hero::after { border-color: rgba(0,0,0,.09); box-shadow: 0 0 0 2.4rem rgba(0,0,0,.012), 0 0 0 5.3rem rgba(0,0,0,.009), 0 0 0 8.2rem rgba(0,0,0,.006); }
.expertise::before { background: linear-gradient(115deg, transparent 43%, rgba(0,0,0,.05) 43.1%, transparent 43.2%); }
.contact::before { border-color: rgba(0,0,0,.1); box-shadow: 0 0 0 2.2rem rgba(0,0,0,.012), 0 0 0 4.4rem rgba(0,0,0,.008); }
.hero { background: #fff; min-height: 48rem; grid-template-columns: minmax(0,1.25fr) minmax(0,.75fr); gap: 3rem; padding-top: 10rem; padding-bottom: 5rem; }
.hero-copy { max-width: 52rem; }
.hero { background-image: linear-gradient(rgba(0,0,0,.025) 1px, transparent 1px), linear-gradient(90deg,rgba(0,0,0,.025) 1px, transparent 1px); background-size: 6rem 6rem; }
.hero h1 { max-width: none; font-size: clamp(2.6rem, 5.6vw, 6rem); letter-spacing: -.04em; line-height: 1.06; text-wrap: initial; }
.hero .eyebrow { font-size: 1rem; font-weight: 400; letter-spacing: .02em; text-transform: none; margin-bottom: 1.6rem; }
.hero-specialty { margin: 1.4rem 0 0; font-size: clamp(1.2rem,2.2vw,2rem); color: #4d4d4d; font-weight: 400; }
.hero-specialty span { margin: 0 .5rem; color: #aaa; }
.hero-intro { max-width: 36rem; font-size: 1.05rem; line-height: 1.7; margin-top: 1.8rem; }
.hero-availability { margin: 1.6rem 0 0; color: var(--muted); font-size: .78rem; line-height: 1.8; }
.hero-portrait { width: 100%; max-width: 27rem; aspect-ratio: .85; }
.portrait-frame { inset: 0; border: 0; border-radius: .25rem; }
.portrait-note { right: .75rem; left: .75rem; bottom: .75rem; border: 0; font-size: .55rem; background: rgba(255,255,255,.84); }
.portrait-frame img { filter: brightness(.78); transform: none; transition: filter 1.8s ease-out; }
.portrait-frame img.is-exposed { filter: brightness(1); transform: none; }
.site-header { background: rgba(255,255,255,.82); border: 1px solid rgba(0,0,0,.07); border-radius: .6rem; box-shadow: 0 5px 25px rgba(0,0,0,.025); }
.site-header.is-scrolled { background: rgba(255,255,255,.9); box-shadow: 0 5px 25px rgba(0,0,0,.04); }
.desktop-nav a { font-weight: 500; letter-spacing: .01em; text-transform: none; font-size: .85rem; }
.nav-cta, .button-dark, .menu-toggle { background: rgba(0,0,0,.055); color: #202020; border: 1px solid rgba(0,0,0,.09); border-radius: .35rem; font-weight: 500; text-transform: none; letter-spacing: 0; }
.nav-cta:hover, .button:hover, .menu-toggle:hover { background: rgba(0,0,0,.11); }
.button:active, .nav-cta:active { transform: translateY(1px); }
.text-link { font-weight: 400; border: 1px solid rgba(0,0,0,.09); border-radius: .35rem; padding: .9rem 1.15rem; background: rgba(255,255,255,.6); }
.tool-rail, .work, .case-path, .contact-main, .site-footer { background: #fff; color: var(--ink); }
.tool-rail { border-block: 1px solid var(--line); min-height: 6rem; }
.tool-rail p, .case-copy > p:last-child, .case-steps p, .contact-main > p:not(.section-index), .site-footer span { color: var(--muted); }
.tool-rail span { font-weight: 400; }
.section-index { font-size: .72rem; font-weight: 400; letter-spacing: .07em; }
.intro { grid-template-columns: .2fr 1.1fr .7fr; }
.intro h2, .section-heading h2, .case-copy h2, .expertise-copy h2, .about-copy h2, .profile h2, .contact-main h2 { font-size: clamp(2.3rem,4vw,4rem); max-width: none; }
.case-path, .expertise, .about, .profile, .contact { border-top: 1px solid var(--line); }
.project-card { border: 0; border-radius: .3rem; box-shadow: none; }
.project-meta { padding-left: 0; padding-right: 0; }
.project-meta h3 { font-size: clamp(1.3rem,2vw,2rem); }
.project-meta p { font-weight: 400; letter-spacing: .03em; }
.case-copy { position: static; }
.case-steps h3 { font-size: 1.6rem; }
.case-steps li { min-height: 0; padding: 1.5rem 0; }
.expertise { min-height: 0; padding-left: var(--gutter); }
.process-line h3, .case-steps > li > span, .about-copy dt { font-family: var(--sans); font-weight: 500; }
.about-media { border-radius: .25rem; height: clamp(25rem,42vw,40rem); }
.contact-main { min-height: 25rem; padding-left: 0; box-shadow: none; }
.contact-main > a { font-size: clamp(1.05rem,2.4vw,2.5rem); font-weight: 400; color: var(--ink); }
.contact-aside { border-left: 1px solid var(--line); }
.contact-aside h3 { font-size: 2rem; font-weight: 400; }
.site-footer { border-top: 1px solid var(--line); }
.site-footer img { filter: none; }

@media (max-width: 1080px) {
  .hero { grid-template-columns: 1.05fr .75fr; gap: 2rem; }
  .hero-portrait { width: min(39vw, 29rem); }
  .intro { grid-template-columns: .2fr 1fr; }
  .proof-list { grid-column: 2; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }
  .expertise { grid-template-columns: 1fr 1fr; padding-left: var(--gutter); }
  .expertise-rail { display: none; }
  .expertise-copy { grid-column: 1; }
  .process-line { grid-column: 2; }
  .resume-viewer { grid-column: 1 / -1; }
}

@media (max-width: 880px) {
  .site-header { grid-template-columns: 1fr auto; }
  .desktop-nav, .nav-cta { display: none; }
  .menu-toggle { justify-self: end; min-height: 44px; padding: .6rem .8rem; display: flex; align-items: center; gap: .5rem; border: 0; border-radius: .55rem; background: var(--ink); color: var(--white); cursor: pointer; }
  .mobile-nav { position: absolute; top: calc(100% + .65rem); right: 0; left: 0; padding: .75rem; display: grid; border: 1px solid rgba(255,255,255,.8); border-radius: 1rem; background: rgba(255,253,248,.98); box-shadow: var(--shadow); opacity: 0; visibility: hidden; transform: translateY(-.5rem); transition: opacity .2s ease, visibility .2s ease, transform .2s ease; }
  .mobile-nav.is-open { opacity: 1; visibility: visible; transform: none; }
  .mobile-nav a { min-height: 48px; padding: .8rem; display: flex; align-items: center; border-bottom: 1px solid var(--line); text-decoration: none; }
  .mobile-nav a:last-child { border-bottom: 0; }
  .hero { min-height: auto; padding-top: 9rem; grid-template-columns: 1fr; }
  .hero-copy { max-width: 44rem; }
  .hero-portrait { width: min(66vw, 32rem); justify-self: end; margin-top: -1rem; }
  .hero-drawing { width: 85%; }
  .tool-rail { grid-template-columns: 1fr; gap: 1rem; }
  .section-heading, .project-layout, .case-path, .about, .profile, .contact { grid-template-columns: 1fr; }
  .project-side { grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .case-copy { position: static; }
  .about-media { width: min(100%, 42rem); justify-self: center; }
  .contact-aside { min-height: 25rem; }
}

@media (max-width: 620px) {
  :root { --section-space: 6.2rem; }
  .site-header { top: .6rem; width: calc(100% - 1rem); min-height: 4rem; padding-left: 1rem; }
  .site-header.is-scrolled { top: .35rem; }
  .wordmark { font-size: 1.05rem; }
  .menu-toggle span { display: none; }
  .hero { padding: 7.7rem 1.1rem 3rem; gap: 2rem; }
  .eyebrow { max-width: 22rem; margin-bottom: 1.5rem; font-size: .59rem; line-height: 1.5; }
  h1 { max-width: 9.4ch; font-size: clamp(3.15rem, 14.5vw, 4.5rem); }
  .hero-intro { margin-top: 1.4rem; font-size: 1rem; }
  .hero-actions { margin-top: 1.6rem; align-items: stretch; flex-direction: column; gap: .4rem; }
  .button, .text-link { width: 100%; justify-content: space-between; }
  .hero-portrait { width: 72vw; margin-top: 0; }
  .hero-place { top: 4%; left: -20%; }
  .portrait-note { right: -.3rem; bottom: 5%; max-width: 9.5rem; }
  .tool-rail { padding: 1.3rem 1.1rem; }
  .tool-rail > div { overflow: auto; justify-content: flex-start; padding-bottom: .25rem; scrollbar-width: none; }
  .tool-rail span { flex: 0 0 auto; }
  .intro { padding-right: 1.1rem; padding-left: 1.1rem; grid-template-columns: 1fr; gap: 2rem; }
  .intro h2, .section-heading h2, .expertise-copy h2 { font-size: clamp(2.75rem, 12.5vw, 4.4rem); }
  .proof-list { grid-column: 1; display: block; }
  .work, .case-path, .expertise, .about, .profile, .contact { padding-right: 1.1rem; padding-left: 1.1rem; }
  .section-heading { gap: 2rem; margin-bottom: 3rem; }
  .project-side { grid-template-columns: 1fr; }
  .project-feature figure { aspect-ratio: 1.1; }
  .project-side figure { aspect-ratio: 1.55; }
  .project-meta { min-height: 7.3rem; padding: 1rem; }
  .project-meta h3 { font-size: 1.65rem; }
  .case-copy h2, .about-copy h2, .profile h2, .contact-main h2 { font-size: clamp(3rem, 13vw, 4.8rem); }
  .case-steps li { grid-template-columns: 2.7rem 1fr; }
  .expertise { grid-template-columns: 1fr; min-height: auto; }
  .expertise-copy, .process-line, .resume-viewer { grid-column: 1; }
  .process-line::before { left: .65rem; }
  .process-line li { padding-left: 2.5rem; grid-template-columns: 1.7rem 1fr; }
  .about-media { height: 34rem; border-radius: 11rem 11rem 1rem 1rem; }
  .about-copy dl > div { grid-template-columns: 6.2rem 1fr; }
  .contact-main { min-height: 36rem; padding: 1.5rem; }
  .contact-main > a { font-size: 1.05rem; }
  .site-footer { grid-template-columns: auto 1fr; }
  .site-footer p:last-child { grid-column: 1 / -1; text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .portrait-frame img, .portrait-frame img.is-exposed { filter: brightness(1); transform: none; }
  .reveal-mask { opacity: 1; clip-path: none; transform: none; }
}

@media (max-width: 880px) {
  .hero { grid-template-columns: minmax(0,1fr) minmax(0,.65fr); gap: 1.5rem; min-height: 42rem; }
  .hero h1 { font-size: clamp(2.3rem,5.3vw,3.2rem); }
  .hero-portrait { width: 100%; margin: 0; }
  .intro { grid-template-columns: 1fr; }
  .proof-list { grid-column: 1; }
}
@media (max-width: 620px) {
  .hero { grid-template-columns: 1fr; min-height: auto; padding-top: 8rem; }
  .hero h1 { font-size: clamp(2rem,8.5vw,3.2rem); }
  .hero-portrait { width: 100%; max-width: 24rem; justify-self: start; margin-top: 1rem; }
  .contact-aside { border-left: 0; border-top: 1px solid var(--line); }
}

/* One shared page frame leaves quiet margins on laptop and larger screens. */
/* Architecture-first homepage, adapted from the public Zenith reference. */
.architecture-home .hero { display: block; padding: 8rem var(--gutter) 0; background-size: 8rem 8rem; }
.architecture-home .hero::after { content: none; }
.architecture-home .hero-copy { display: grid; grid-template-columns: 1fr 1fr; column-gap: 3rem; max-width: none; }
.architecture-home .hero .eyebrow { margin-bottom: .9rem; }
.architecture-home .hero h1 { margin-bottom: 1.5rem; }
.architecture-home .hero-specialty { grid-column: 1; grid-row: 3; align-self: start; margin: 0; font-size: 1.5rem; }
.architecture-home .hero-intro { grid-column: 2; grid-row: 3 / span 2; font-size: .92rem; line-height: 1.7; }
.architecture-home .hero-actions { grid-column: 1; grid-row: 4; margin-top: 1.4rem; }
.architecture-home .hero-availability { grid-column: 1 / -1; margin: 1.3rem 0 1.8rem; font-size: .7rem; }
.architecture-home .hero-availability br { display: none; }
.architecture-home .hero-availability br::after { content: " · "; }
.architecture-hero-image { margin-inline: calc(-1 * var(--gutter)); }
.hero-image-window { overflow: hidden; aspect-ratio: 2.35; }
.hero-image-window img { width: 100%; height: 100%; object-fit: cover; }
.image-wheel { position: relative; isolation: isolate; height: clamp(320px,46vw,510px); overflow: hidden; background: #fafafa; border-block: 1px solid #e9e9e9; }
.image-wheel::after { content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 8; opacity: .17; background-image: url("assets/images/paper-grain.svg"); mix-blend-mode: multiply; }
.wheel-guide { position: absolute; width: 85%; height: 56%; left: 7.5%; top: 18%; border: 1px solid #dededc; border-radius: 50%; transform: rotate(-12deg); }
.wheel-guide::before, .wheel-guide::after { content: ''; position: absolute; inset: -26px; border: 1px solid #e5e5e3; border-radius: 50%; }
.wheel-guide::after { inset: 28px; border-style: dashed; }
.wheel-panels { position: absolute; inset: 0; }
.wheel-panel { position: absolute; left: 50%; top: 44%; width: 34%; height: 76%; clip-path: polygon(28% 0,100% 0,72% 100%,0 100%); background: #ddd; transform: translate(-50%,-50%); }
.wheel-panel img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.75); }
.wheel-panel { text-decoration: none; color: #fff; }
.wheel-panel::after { content: ''; position: absolute; inset: 40% 0 0; background: linear-gradient(transparent,rgba(0,0,0,.88)); pointer-events: none; }
.wheel-title { position: absolute; bottom: 8%; left: 9%; width: 57%; z-index: 1; font-size: clamp(.78rem,1.5vw,1.1rem); line-height: 1.25; font-weight: 500; text-wrap: balance; }
.wheel-title small { display: block; margin-top: .4rem; font-size: .6rem; font-weight: 400; }
.wheel-title i { font-size: .85em; }
.wheel-portrait img { object-position: 50% 30%; }
.wheel-cover img { object-position: 52% center; }
.wheel-drawing img { object-position: 78% center; transform: scale(1.22); transform-origin: 76% 28%; }
.wheel-panel:focus-visible { outline: none; }
.wheel-panel:focus-visible::before { content: ''; position: absolute; inset: 0; z-index: 2; background: #a5653f; clip-path: polygon(28% 0,100% 0,72% 100%,0 100%,1.5% 98%,71% 98%,98% 2%,29% 2%,1.5% 98%,0 100%); pointer-events: none; }
.wheel-panel:nth-child(2) { transform: translate(-140%,-50%) scale(.85); }
.wheel-panel:nth-child(3) { transform: translate(40%,-50%) scale(.85); }
.wheel-panel:nth-child(n+4) { opacity: 0; }
.wheel-interface { position: absolute; inset: auto 1.5rem 1rem; z-index: 10; display: flex; align-items: end; justify-content: space-between; gap: 1rem; }
.wheel-interface > span { font-size: .62rem; letter-spacing: .14em; color: #333; background: #fafafae8; padding: .5rem; }
.wheel-interface small { display: block; margin-top: .4rem; font-size: .62rem; letter-spacing: 0; color: #666; }
.wheel-interface button { min-height: 44px; padding: .6rem .9rem; border: 1px solid #ccc; background: #ffffffed; color: #222; font: inherit; font-size: .7rem; cursor: pointer; }
.wheel-interface button:disabled { cursor: default; }
.image-wheel { touch-action: pan-y pinch-zoom; }
.wheel-panel img { user-select: none; -webkit-user-drag: none; }
.wheel-controls { display: flex; gap: .3rem; align-items: center; }
.wheel-controls [data-wheel-prev], .wheel-controls [data-wheel-next] { min-width: 44px; padding-inline: .5rem; }
@media (max-width: 620px) {
  .wheel-interface { flex-wrap: wrap; align-items: center; }
  .wheel-interface > span { width: 100%; }
  .wheel-controls { margin-left: auto; }
}
@media(max-width:620px) { .wheel-panel { width: 53%; height: 70%; } .wheel-interface { inset-inline: .6rem; } .wheel-interface small { max-width: 12rem; } }
.architecture-hero-image figcaption { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .9rem var(--gutter); border-bottom: 1px solid var(--line); font-size: .67rem; color: var(--muted); background: #fff; }
.architecture-hero-image figcaption a { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; font-size: .77rem; text-decoration: none; color: var(--ink); }
.architecture-home .tool-rail { border-top: 0; background: #fff; padding-block: 1.25rem; }
.architecture-home .project-layout { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.4rem; }
.architecture-home .project-side { display: contents; }
.architecture-home .project-card figure { aspect-ratio: .9; }
.architecture-home .project-card { border-radius: 0; }
.architecture-home .project-card figcaption { font-size: .52rem; padding: .35rem; }
.architecture-home .project-meta { min-height: 0; align-items: start; padding-block: 1.1rem; display: block; }
.architecture-home .project-meta h3 { font-size: 1.25rem; line-height: 1.25; }
.architecture-home .project-meta > i { display: none; }
.architecture-home .project-meta > span { display: block; margin-top: .6rem; }
.architecture-home .project-meta p { font-size: .6rem; }
.personal-intro { display: grid; grid-template-columns: minmax(0,.65fr) minmax(0,1fr); gap: 4rem; align-items: center; padding: 3.5rem var(--gutter) 4.5rem; border-top: 1px solid var(--line); }
.beginnings { display: grid; grid-template-columns: .9fr 1.1fr; gap: 3rem; align-items: center; padding: 4.5rem var(--gutter); border-top: 1px solid var(--line); background: #fff; }
.beginnings h2 { font-size: clamp(2.3rem,4vw,3.5rem); margin-bottom: 1.3rem; }
.beginnings-copy > p:not(.section-index) { color: var(--muted); line-height: 1.8; }
.beginnings .archive-projects { font-size: .8rem; margin: 1.5rem 0; }
.beginnings .archive-note { font-size: .65rem; margin-top: 1rem; }
.archive-spreads { display: grid; padding: .8rem; text-decoration: none; }
.archive-spreads figure { width: 91%; background: white; border: 1px solid #e5e5e5; box-shadow: 0 12px 35px #0000000c; transition: transform .5s cubic-bezier(.22,1,.36,1); }
.archive-spreads figure:first-child { transform: rotate(-3deg); }
.archive-spreads figure:last-child { justify-self: end; margin-top: -1.5rem; transform: rotate(3deg); }
.archive-spreads:is(:hover,:focus-visible) figure:first-child { transform: translateY(-6px) rotate(-1deg); }
.archive-spreads:is(:hover,:focus-visible) figure:last-child { transform: translateY(6px) rotate(1deg); }
.archive-spreads img { width: 100%; height: auto; }
.archive-spreads figcaption { padding: .6rem .85rem; font-size: .65rem; color: var(--muted); }
.motion-off .archive-spreads figure { transform: none !important; }
@media (max-width: 720px) { .beginnings { grid-template-columns: 1fr; gap: 1.75rem; padding-block: 3rem; } }
@media (prefers-reduced-motion: reduce) { .archive-spreads figure { transform: none !important; } }
.beginnings { display: block; }
.beginnings-copy { max-width: 46rem; margin-bottom: 2.5rem; }
.portfolio-viewer { min-width: 0; background: #f7f7f7; border: 1px solid #e4e4e4; }
.portfolio-toolbar, .portfolio-controls { display: flex; gap: 1rem; align-items: center; padding: 1rem 1.25rem; }
.portfolio-toolbar { justify-content: space-between; }
.portfolio-toolbar p { margin: 0; font-size: .9rem; }
.portfolio-toolbar p span { display: block; font-size: .65rem; color: #666; margin-top: .3rem; }
.portfolio-viewer button { min-width: 44px; min-height: 44px; padding: .6rem .9rem; border: 1px solid #ccc; background: white; color: #222; font: inherit; font-size: .8rem; cursor: pointer; }
.portfolio-viewer button:hover { background: #ececec; }
.portfolio-viewer button:disabled { opacity: .35; cursor: default; }
.portfolio-track { display: flex; gap: 1.25rem; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: thin; padding: .5rem 1.25rem 1rem; scroll-padding-inline: 1.25rem; }
.portfolio-slide { flex: 0 0 92%; min-width: 0; scroll-snap-align: start; margin: 0; }
.portfolio-slide img { width: 100%; height: auto; aspect-ratio: 1800 / 1165; object-fit: contain; background: #fff; border: 1px solid #ddd; }
.portfolio-slide figcaption { display: flex; gap: .8rem; padding: .85rem 0; font-size: .7rem; color: #555; }
.portfolio-slide figcaption span { white-space: nowrap; color: #222; font-variant-numeric: tabular-nums; }
.portfolio-controls output { min-width: 6rem; text-align: center; font-size: .75rem; font-variant-numeric: tabular-nums; }
.portfolio-progress { flex: 1; height: 2px; background: #ddd; overflow: hidden; }
.portfolio-progress span { display: block; height: 100%; background: #9b603b; transform-origin: left; transform: scaleX(.0714); transition: transform .35s; }
.portfolio-dialog { width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; border: 0; background: #f7f7f7; }
.portfolio-dialog::backdrop { background: #fff; }
.portfolio-dialog .portfolio-viewer { height: 100%; display: flex; flex-direction: column; border: 0; }
.portfolio-dialog .portfolio-track { flex: 1; min-height: 0; }
.portfolio-dialog .portfolio-slide { flex-basis: 100%; height: 100%; display: flex; flex-direction: column; }
.portfolio-dialog .portfolio-slide img { flex: 1; min-height: 0; height: 0; border: 0; object-fit: contain; }
.resume-viewer { grid-column: 1 / -1; width: min(100%, 40rem); justify-self: center; scroll-margin-top: 6rem; }
.resume-page { margin: 0; padding: clamp(.75rem,2vw,1.5rem); display: grid; justify-items: center; gap: .75rem; background: #f7f7f7; }
.resume-page img { display: block; width: min(100%,30rem); height: auto; border: 1px solid #ddd; background: #fff; }
.resume-page figcaption { width: min(100%,30rem); color: var(--muted); font-size: .7rem; }
.resume-controls { display: flex; align-items: center; gap: 1rem; padding: .8rem 1.25rem; border-top: 1px solid #ccc; background: #fff; font-size: .76rem; }
.resume-controls span { margin-right: auto; font-variant-numeric: tabular-nums; color: var(--muted); white-space: nowrap; }
.resume-controls a { display: inline-flex; min-height: 44px; align-items: center; color: var(--ink); text-underline-offset: .25rem; white-space: nowrap; }
.resume-dialog .resume-page { flex: 1; min-height: 0; display: block; overflow: auto; text-align: center; }
.resume-dialog .resume-page img { width: min(100%,52rem); margin: 0 auto; }
.resume-dialog .resume-page figcaption { width: min(100%,52rem); margin: .75rem auto 0; text-align: left; }
.resume-dialog .resume-viewer { width: 100%; max-width: none; }
body.portfolio-expanded { overflow: hidden; }
@media (max-width: 620px) { .portfolio-toolbar, .portfolio-controls { padding: .75rem; gap: .5rem; } .portfolio-track { padding-inline: .75rem; scroll-padding-inline: .75rem; gap: .75rem; } .portfolio-slide { flex-basis: 94%; } .portfolio-slide figcaption { font-size: .65rem; } .resume-controls { flex-wrap: wrap; gap: .25rem 1rem; padding: .5rem .75rem; } }
.personal-portrait { max-width: 330px; }
.personal-portrait img { height: auto; aspect-ratio: .85; object-fit: cover; }
.portrait-crop.is-veiled::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: radial-gradient(ellipse at 50% 42%, rgb(255 255 255 / .16) 0%, rgb(255 255 255 / .43) 42%, rgb(255 255 255 / .96) 100%); opacity: 1; transition: opacity 2s ease-out; }
.portrait-crop.is-exposed::after { opacity: 0; }
.personal-portrait figcaption { margin-top: .6rem; font-size: .65rem; color: var(--muted); }
.personal-intro h2 { font-size: clamp(2rem,3.5vw,3rem); margin-bottom: 1.3rem; }
.personal-intro p:not(.section-index) { font-size: .97rem; line-height: 1.8; color: var(--muted); }
.personal-facts { margin: 1.5rem 0; }
.personal-facts > div { padding: .7rem 0; border-top: 1px solid var(--line); }
.personal-facts dt { color: var(--muted); font-size: .68rem; }
.personal-facts dd { margin: .3rem 0 0; font-size: .9rem; }
@media (max-width: 720px) {
  .architecture-home .hero-copy { grid-template-columns: 1fr; gap: 0; }
  .architecture-home .hero-specialty, .architecture-home .hero-intro, .architecture-home .hero-actions, .architecture-home .hero-availability { grid-column: 1; grid-row: auto; }
  .architecture-home .hero-intro { margin-top: 1.3rem; }
  .architecture-home .hero h1 { white-space: normal; }
  .hero-image-window { aspect-ratio: 1.35; }
  .architecture-hero-image figcaption { flex-direction: column; align-items: start; gap: .25rem; }
  .architecture-home .project-layout { grid-template-columns: 1fr; gap: 1.7rem; }
  .architecture-home .project-card figure { aspect-ratio: 1.4; }
  .personal-intro { grid-template-columns: 1fr; gap: 2rem; }
  .personal-portrait { max-width: 300px; }
}
@media (prefers-reduced-motion: reduce) {
  .portrait-crop.is-veiled::after { opacity: 0; transition: none; }
}
.project-opening { padding: 8.5rem var(--gutter) 2.5rem; }
.back-link { display: inline-flex; align-items: center; min-height: 44px; margin-bottom: 1.5rem; color: var(--muted); font-size: .85rem; text-decoration: none; }
.back-link:hover { color: var(--ink); text-decoration: underline; }

/* Architectural motion studies: framed imagery, drafting rules, quiet controls. */
.theme-toggle { position: fixed; right: 1rem; bottom: 1rem; z-index: 30; min-height: 44px; padding: .65rem 1rem; border: 1px solid #d6d6d6; border-radius: 3px; background: rgba(255,255,255,.95); color: #333; font: inherit; font-size: .7rem; cursor: pointer; box-shadow: 0 3px 15px #00000008; }
.theme-toggle::before { content: ''; display: inline-block; width: 6px; height: 6px; margin-right: .5rem; border-radius: 50%; background: #9b603b; }
.theme-toggle[aria-pressed=false]::before { background: #777; }
.theme-toggle:disabled { cursor: default; }
.project-card a { position: relative; }
.project-card figure::after { content: 'Explore project ↗'; position: absolute; top: 1rem; right: 1rem; padding: .9rem 1.1rem; background: #ffffffed; color: #222; font-size: .75rem; pointer-events: none; opacity: 0; transform: translateY(8px); transition: opacity .25s, transform .35s; }
.project-card a:is(:hover,:focus-visible) figure::after { opacity: 1; transform: none; }
.project-card a:focus-visible { outline-offset: 5px; }
.project-meta h3 { width: fit-content; background: linear-gradient(#9b603b,#9b603b) left bottom / 0 1px no-repeat; transition: background-size .4s; }
.project-card a:is(:hover,:focus-visible) h3 { background-size: 100% 1px; }
.project-card img { transition: transform .85s cubic-bezier(.22,1,.36,1); }
.project-card a:is(:hover,:focus-visible) img { transform: scale(1.065); }
.process-line li { transition: background .3s; }
.process-line li > div { transition: transform .3s; }
.process-line li:hover { background: #f7f7f7; }
.process-line li:hover > div { transform: translateX(4px); }
.button:active, .nav-cta:active { transform: translateY(1px); }
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: page-out .2s ease both; }
::view-transition-new(root) { animation: page-in .4s ease both; }
@keyframes page-out { to { opacity: 0; } }
@keyframes page-in { from { opacity: 0; transform: translateY(16px); } }
.motion-off *, .motion-off *::before, .motion-off *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
.motion-off .portrait-crop.is-veiled::after { opacity: 0; }
.motion-off { scroll-behavior: auto; }
.motion-off .project-card a img { transform: none; }
.motion-off::view-transition-old(root), .motion-off::view-transition-new(root) { animation: none; }
@media (hover: none) { .project-card figure::after { content: none; } }
@media (prefers-reduced-motion: reduce) {
  .project-card a img { transform: none !important; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none; }
}
.project-opening h1 { font-size: clamp(2.5rem,5.5vw,4.6rem); max-width: none; line-height: 1.06; }
.project-lead { max-width: 44rem; font-size: 1.1rem; line-height: 1.7; color: var(--muted); margin: 1.5rem 0 2rem; }
.project-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.5rem; padding: 1.5rem 0; border-top: 1px solid var(--line); }
.project-facts dt, .contribution-list dt { font-size: .7rem; color: var(--muted); margin-bottom: .5rem; }
.project-facts dd, .contribution-list dd { margin: 0; font-size: .9rem; }
.project-cover { margin-top: 1rem; }
.project-cover img { width: 100%; aspect-ratio: auto; object-fit: contain; height: auto; }
.project-cover figcaption { font-size: .73rem; line-height: 1.6; color: var(--muted); margin-top: .65rem; }
.project-media-showcase { display: grid; gap: clamp(2rem,5vw,4rem); margin-top: 1.5rem; }
.project-gallery { min-width: 0; }
.project-gallery-stage { position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: #171918; border: 1px solid var(--line); }
.project-gallery-slide { position: absolute; inset: 0; opacity: 0; pointer-events: none; transition: opacity .7s ease; }
.project-gallery-slide.is-active { z-index: 1; opacity: 1; pointer-events: auto; }
.project-gallery-slide img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.025); transition: transform 5s cubic-bezier(.2,.7,.2,1); }
.project-gallery-slide.is-active img { transform: scale(1); }
.project-gallery-slide figcaption { position: absolute; z-index: 2; right: 1rem; bottom: 1rem; left: 1rem; width: fit-content; max-width: calc(100% - 2rem); margin: 0; padding: .55rem .7rem; background: rgba(17,17,17,.78); color: #fff; font-size: .7rem; line-height: 1.45; backdrop-filter: blur(10px); }
.project-gallery-edge { position: absolute; z-index: 3; top: 0; bottom: 0; width: 28%; border: 0; background: transparent; color: #fff; cursor: pointer; }
.project-gallery-edge--previous { left: 0; text-align: left; }
.project-gallery-edge--next { right: 0; text-align: right; }
.project-gallery-edge span { display: inline-block; margin: 0 .8rem; padding: .55rem .7rem; background: rgba(17,17,17,.72); opacity: 0; transform: translateX(8px); transition: opacity .2s ease, transform .25s ease; }
.project-gallery-edge--previous span { transform: translateX(-8px); }
.project-gallery-edge:is(:hover,:focus-visible) span { opacity: 1; transform: none; }
.project-gallery-controls { min-height: 54px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1rem; padding: .65rem 0; border-bottom: 1px solid var(--line); }
.project-gallery-controls p { margin: 0; color: var(--muted); font-size: .7rem; }
.project-gallery-dots { display: flex; align-items: center; gap: .55rem; }
.project-gallery-dots button { width: 30px; height: 44px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.project-gallery-dots button::before { content: ""; display: block; width: 100%; height: 2px; background: var(--line); transition: background-color .2s ease, transform .2s ease; }
.project-gallery-dots button[aria-current="true"]::before { background: var(--material-rust); transform: scaleY(2); }
.project-gallery-pause { min-height: 44px; justify-self: end; padding: 0 .8rem; border: 1px solid var(--line); background: transparent; cursor: pointer; font-size: .7rem; }
.project-gallery-caption { max-width: 80ch; margin: .85rem 0 0; color: var(--muted); font-size: .75rem; line-height: 1.65; }
.official-video-snippet { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(15rem,.75fr); gap: clamp(1.5rem,4vw,3rem); align-items: center; padding-block: clamp(1.5rem,3vw,2.5rem); border-block: 1px solid var(--line); }
.official-video-frame { position: relative; overflow: hidden; background: #111; border: 1px solid var(--line); box-shadow: 0 18px 38px -30px rgba(0,0,0,.5); }
.official-video-frame video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: #111; }
.official-video-copy .section-index { margin-bottom: .9rem; font-size: .67rem; }
.official-video-copy h2 { font-size: clamp(1.65rem,3vw,2.4rem); line-height: 1.05; }
.official-video-copy > p:not(.section-index) { margin: 1rem 0; color: var(--muted); font-size: .85rem; line-height: 1.7; }
.official-video-copy a { min-height: 44px; display: inline-flex; align-items: center; font-size: .78rem; text-underline-offset: .3rem; }
.case-nav { display: flex; flex-wrap: wrap; gap: .4rem 1.5rem; padding: .7rem var(--gutter); border-block: 1px solid var(--line); }
.case-nav a { min-height: 44px; display: inline-flex; align-items: center; font-size: .82rem; text-decoration: none; }
.case-nav a:hover { text-decoration: underline; text-underline-offset: .35rem; }
.detail-section { display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.5fr); gap: 3rem; padding: 4rem var(--gutter); border-bottom: 1px solid var(--line); }
.detail-section h2 { font-size: clamp(1.8rem,3vw,2.5rem); line-height: 1.15; }
.detail-body > p { margin-bottom: 1.5rem; line-height: 1.8; }
.pending-note { color: var(--muted); font-size: .85rem; }
.contribution-list > div { padding: 1rem 0; border-top: 1px solid var(--line); }
.evidence-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; margin-block: 1.5rem; }
.evidence-slot { padding: 1.4rem; background: rgba(0,0,0,.018); border: 1px dashed #ccc; min-height: 13rem; }
.slot-label { display: block; color: var(--muted); font-size: .68rem; margin-bottom: 1.6rem; }
.evidence-slot h3 { font-size: 1.05rem; line-height: 1.4; letter-spacing: -.02em; }
.evidence-slot p { font-size: .85rem; color: var(--muted); line-height: 1.7; margin: .8rem 0 0; }
.decision-path { list-style: decimal-leading-zero; padding-left: 1.7rem; margin-block: 2rem; }
.decision-path li { padding-left: .65rem; padding-bottom: 1.4rem; }
.decision-path h3 { font-size: 1.1rem; }
.decision-path p { margin: .5rem 0 0; color: var(--muted); font-size: .9rem; line-height: 1.7; }
.project-credit { font-size: .78rem; color: var(--muted); margin-top: 1.5rem; }
.site-visit-section, .built-result-section { grid-template-columns: 1fr; gap: 1.5rem; }
.site-visit-section .detail-body > p, .built-result-section .detail-body > p { max-width: 65ch; }
.site-photo-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 1.75rem; margin-block: 2rem; align-items: start; }
.site-photo-pair figure, .built-photo-grid figure { min-width: 0; }
.site-photo-pair img, .built-photo-grid img { width: 100%; height: auto; object-fit: cover; }
.site-photo-pair img { aspect-ratio: auto; }
.site-photo-pair figure:first-child img { object-position: center 54%; filter: brightness(1.04) contrast(.97); }
.site-photo-pair figure:last-child img { object-position: center 52%; filter: brightness(1.02) contrast(.98); }
.site-photo-pair figcaption, .built-photo-grid figcaption { padding-top: .7rem; color: var(--muted); font-size: .72rem; line-height: 1.55; }
.site-photo-pair figcaption span { display: block; margin-bottom: .2rem; color: var(--ink); font-weight: 600; }
.built-photo-grid { display: grid; grid-template-columns: minmax(0,1.7fr) minmax(0,.65fr); gap: 2rem; margin-block: 2rem; align-items: start; }
.built-photo-wide img { aspect-ratio: auto; }
.built-photo-grid > figure:not(.built-photo-wide) img { aspect-ratio: auto; }
.built-result-note { grid-column: 1 / -1; padding: 1.3rem; border-top: 2px solid var(--ink); background: rgba(0,0,0,.025); }
.built-result-note .section-index { margin-bottom: 1rem; }
.built-result-note h3 { font-size: 1.4rem; line-height: 1.08; }
.built-result-note p:last-child { margin: .8rem 0 0; color: var(--muted); font-size: .82rem; line-height: 1.65; }
.case-contact { padding: 4rem var(--gutter); display: flex; justify-content: space-between; gap: 2rem; align-items: center; }
.case-contact h2 { font-size: 2rem; }
.case-contact p { color: var(--muted); font-size: .85rem; margin-top: 1rem; }
.next-project { padding-block: 1rem; font-size: 1.05rem; text-decoration: none; }
.next-project span { display: block; margin-bottom: .6rem; color: var(--muted); font-size: .7rem; }
.next-project:hover { text-decoration: underline; }
@media (max-width: 960px) {
  .project-opening { padding-top: 7rem; }
  .detail-section { grid-template-columns: 1fr; gap: 1.6rem; padding-block: 3rem; }
}
@media (max-width: 720px) {
  .project-facts { grid-template-columns: 1fr; gap: 1rem; }
  .project-cover img { aspect-ratio: auto; }
  .project-gallery-stage { aspect-ratio: 4 / 3; }
  .project-gallery-controls { grid-template-columns: 1fr auto; }
  .project-gallery-controls p { display: none; }
  .project-gallery-dots { gap: .3rem; }
  .project-gallery-dots button { width: 24px; }
  .official-video-snippet { grid-template-columns: 1fr; }
  .evidence-pair { grid-template-columns: 1fr; }
  .site-photo-pair, .built-photo-grid { grid-template-columns: 1fr; }
  .built-result-note { grid-column: auto; }
  .built-photo-grid > figure:not(.built-photo-wide) { max-width: 320px; }
  .case-contact { flex-direction: column; align-items: flex-start; }
}
@media (hover: none) {
  .project-gallery-edge span { opacity: .9; transform: none; font-size: 0; }
  .project-gallery-edge--previous span::after { content: "←"; font-size: .9rem; }
  .project-gallery-edge--next span::after { content: "→"; font-size: .9rem; }
}
@media (prefers-reduced-motion: reduce) {
  .project-gallery-slide, .project-gallery-slide img, .project-gallery-edge span { transition: none; }
  .project-gallery-slide img { transform: none; }
}

/* Case study: image-led opening and horizontal chapter system. */
.project-opening-grid { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(15rem,.68fr); gap: clamp(1.5rem,3vw,2.5rem); align-items: start; margin-top: 2rem; }
.project-facts-panel { position: relative; min-width: 0; padding: 1.25rem; border: 1px solid var(--line); background: color-mix(in srgb,var(--paper) 96%,transparent); }
.project-facts-panel > .section-index { margin-bottom: .8rem; font-size: .68rem; }
.project-facts-panel .project-facts { display: block; padding: 0; border: 0; }
.project-facts-panel .project-facts > div { position: relative; padding: .85rem 0 .85rem 1.05rem; border-top: 1px solid var(--line); }
.project-facts-panel .project-facts > div::before { content: ""; position: absolute; top: 1.2rem; left: 0; width: .35rem; height: .35rem; border-radius: 50%; background: var(--material-rust); }
.project-facts-panel .project-facts dt { margin-bottom: .25rem; font-size: .64rem; letter-spacing: .06em; text-transform: uppercase; }
.project-facts-panel .project-facts dd { font-size: .82rem; line-height: 1.45; text-wrap: pretty; }
.project-facts-panel .project-facts dd small { margin-top: .2rem; font-size: .67rem; }
.project-opening > .official-video-snippet { margin-top: clamp(2.5rem,5vw,4.5rem); }

.project-gallery-slide--collage { background: #191b1a; }
.people-collage { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(12,1fr); grid-template-rows: repeat(8,1fr); gap: 4px; padding: 4px; background: #191b1a; }
.people-collage img { width: 100%; height: 100%; min-width: 0; object-fit: cover; transform: none; transition: filter .35s ease, transform .55s cubic-bezier(.22,1,.36,1); }
.people-collage img:nth-child(1) { grid-column: 1 / 8; grid-row: 1 / 5; }
.people-collage img:nth-child(2) { grid-column: 8 / 13; grid-row: 1 / 4; }
.people-collage img:nth-child(3) { grid-column: 8 / 13; grid-row: 4 / 7; }
.people-collage img:nth-child(4) { grid-column: 1 / 4; grid-row: 5 / 9; }
.people-collage img:nth-child(5) { grid-column: 4 / 7; grid-row: 5 / 9; }
.people-collage img:nth-child(6) { grid-column: 7 / 10; grid-row: 7 / 9; }
.people-collage img:nth-child(7) { grid-column: 10 / 13; grid-row: 7 / 9; }
.people-collage:is(:hover,:focus-within) img { filter: saturate(.72) contrast(.94); }
.people-collage img:hover { z-index: 1; filter: none; transform: scale(1.025); }

.case-nav { position: sticky; z-index: 12; top: 5.85rem; overflow-x: auto; flex-wrap: nowrap; gap: 0; background: color-mix(in srgb,var(--paper) 90%,transparent); backdrop-filter: blur(16px) saturate(130%); scrollbar-width: none; }
.case-nav::-webkit-scrollbar { display: none; }
.case-nav a { position: relative; flex: 1 0 auto; justify-content: center; gap: .45rem; padding-inline: .85rem; color: var(--muted); transition: color .22s ease, background-color .22s ease; }
.case-nav a span { color: var(--material-rust); font-size: .65rem; font-variant-numeric: tabular-nums; }
.case-nav a::after { content: ""; position: absolute; right: 50%; bottom: 0; left: 50%; height: 2px; background: var(--material-rust); transition: right .35s cubic-bezier(.22,1,.36,1), left .35s cubic-bezier(.22,1,.36,1); }
.case-nav a:is(:hover,:focus-visible) { color: var(--ink); background: color-mix(in srgb,var(--ink) 5%,transparent); text-decoration: none; }
.case-nav a[aria-current="true"] { color: var(--ink); }
.case-nav a[aria-current="true"]::after { right: .8rem; left: .8rem; }
.case-chapters { position: relative; }
.case-chapter-viewport { position: relative; overflow: hidden; height: var(--case-chapter-height,auto); transition: height .45s cubic-bezier(.22,1,.36,1); }
.case-chapter-track { display: flex; align-items: flex-start; transform: translate3d(calc(var(--case-index,0) * -100%),0,0); transition: transform .7s cubic-bezier(.22,1,.36,1); touch-action: pan-y pinch-zoom; }
.case-chapter-track > .detail-section { flex: 0 0 100%; min-width: 0; align-self: flex-start; gap: clamp(1.75rem,3vw,2.75rem); padding-block: clamp(2.25rem,4vw,3.25rem); border-bottom: 0; }
.case-chapter-track > .detail-section:not(.is-active) { visibility: hidden; }
.selected-work-section { grid-template-columns: 1fr; gap: 1.25rem; }
.technical-carousel { overflow: hidden; border: 1px solid var(--line); }
.technical-carousel .carousel-stage { background: color-mix(in srgb,var(--paper) 96%,var(--ink) 4%); }
.technical-plate { grid-template-columns: minmax(0,1.08fr) minmax(22rem,.92fr); gap: 0; align-items: stretch; padding: 0; }
.technical-plate-visual { min-height: clamp(31rem,46vw,39rem); position: relative; overflow: hidden; background-color: color-mix(in srgb,var(--paper) 90%,var(--ink) 10%); }
.technical-plate .technical-plate-visual img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border: 0; }
.technical-plate .story-awaiting { isolation: isolate; background-color: color-mix(in srgb,var(--paper) 96%,var(--ink) 4%); background-image: repeating-linear-gradient(135deg,transparent 0 11px,color-mix(in srgb,var(--ink) 4%,transparent) 11px 12px); }
.technical-plate .story-awaiting::before { content: ""; position: absolute; z-index: -1; inset: 18% 12%; opacity: .72; background: radial-gradient(ellipse 38% 17% at 50% 30%,transparent 47%,var(--material-rust) 48% 49%,transparent 50%),radial-gradient(ellipse 31% 14% at 50% 70%,transparent 47%,var(--ink) 48% 49%,transparent 50%),linear-gradient(90deg,transparent 49.8%,color-mix(in srgb,var(--ink) 42%,transparent) 49.8% 50.2%,transparent 50.2%),linear-gradient(transparent 49.8%,color-mix(in srgb,var(--ink) 25%,transparent) 49.8% 50.2%,transparent 50.2%); }
.technical-plate .story-awaiting::after { content: "EVIDENCE PENDING"; position: absolute; right: 1rem; bottom: 1rem; padding: .45rem .55rem; border: 1px solid var(--line); background: color-mix(in srgb,var(--paper) 92%,transparent); color: var(--muted); font-size: .58rem; letter-spacing: .1em; }
.technical-plate-visual figcaption { position: absolute; right: 1rem; bottom: 1rem; left: 1rem; width: fit-content; max-width: calc(100% - 2rem); margin: 0; padding: .5rem .65rem; background: rgba(17,17,17,.78); color: #fff; backdrop-filter: blur(10px); }
.technical-plate-copy { position: relative; isolation: isolate; padding: clamp(1.5rem,3vw,2.6rem); border-left: 1px solid var(--line); background: color-mix(in srgb,var(--paper) 97%,transparent); }
.technical-plate-copy::before { content: ""; position: absolute; z-index: -1; inset: 0; opacity: .38; background-image: repeating-linear-gradient(135deg,transparent 0 11px,color-mix(in srgb,var(--ink) 4%,transparent) 11px 12px); pointer-events: none; }
.technical-plate-copy h3 { max-width: 14ch; margin-bottom: 1.2rem; font-size: clamp(1.9rem,3vw,3rem); line-height: 1.02; letter-spacing: -.045em; }
.story-data { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); margin: 0 0 1.5rem; padding: .9rem 0; border-block: 1px solid var(--line); list-style: none; }
.story-data li { min-width: 0; padding-inline: .7rem; border-left: 1px solid var(--line); }
.story-data li:first-child { padding-left: 0; border-left: 0; }
.story-data span, .story-data strong { display: block; }
.story-data span { margin-bottom: .25rem; color: var(--muted); font-size: .58rem; letter-spacing: .08em; text-transform: uppercase; }
.story-data strong { font-size: .72rem; line-height: 1.35; font-weight: 600; text-wrap: pretty; }
.technical-plate .story-reasoning { display: block; counter-reset: reasoning-step; border-bottom: 1px solid var(--line); }
.technical-plate .story-reasoning > div { counter-increment: reasoning-step; display: grid; grid-template-columns: 2rem 5.8rem 1fr; gap: .7rem; align-items: start; min-height: 0; margin: 0; padding: .9rem .7rem; border-top: 1px solid var(--line); }
.technical-plate .story-reasoning > div::before { content: counter(reasoning-step,decimal-leading-zero); color: var(--material-rust); font: 600 .6rem/1.4 var(--font-sans); letter-spacing: .08em; }
.technical-plate .story-reasoning dt { margin: 0; color: var(--ink); font-size: .62rem; line-height: 1.4; letter-spacing: .08em; text-transform: uppercase; }
.technical-plate .story-reasoning dd { color: var(--muted); font-size: .78rem; line-height: 1.55; text-wrap: pretty; }
.technical-plate .story-reasoning .story-result { background: color-mix(in srgb,var(--material-rust) 7%,transparent); }
.technical-plate .story-reasoning .story-lesson { padding-top: 1rem; background: color-mix(in srgb,var(--ink) 4%,transparent); }
.case-chapter-edge { position: absolute; z-index: 3; top: 0; bottom: 0; width: 12%; border: 0; background: transparent; color: var(--ink); cursor: pointer; opacity: .8; }
.case-chapter-edge--previous { left: 0; text-align: left; background: linear-gradient(90deg,color-mix(in srgb,var(--paper) 86%,transparent),transparent); }
.case-chapter-edge--next { right: 0; text-align: right; background: linear-gradient(270deg,color-mix(in srgb,var(--paper) 86%,transparent),transparent); }
.case-chapter-edge span { display: inline-block; max-width: 6.5rem; margin: .75rem; padding: .7rem; border: 1px solid var(--line); background: color-mix(in srgb,var(--paper) 90%,transparent); font-size: .7rem; line-height: 1.25; opacity: 0; transform: translateX(-.5rem); transition: opacity .22s ease, transform .3s ease; }
.case-chapter-edge--next span { transform: translateX(.5rem); }
.case-chapter-edge:is(:hover,:focus-visible) span { opacity: 1; transform: none; }
.case-chapter-edge:disabled { opacity: 0; pointer-events: none; }
.case-chapter-footer { min-height: 62px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .55rem var(--gutter); border-block: 1px solid var(--line); }
.case-chapter-footer p { margin: 0; color: var(--muted); font-size: .72rem; }
.case-chapter-footer [data-case-count] { color: var(--ink); font-variant-numeric: tabular-nums; }
.case-chapter-footer > div { display: flex; gap: .5rem; }
.case-chapter-footer button { min-height: 44px; padding: .6rem .9rem; border: 1px solid var(--line); background: transparent; cursor: pointer; font-size: .72rem; transition: background-color .2s ease, transform .2s ease; }
.case-chapter-footer button:is(:hover,:focus-visible) { background: color-mix(in srgb,var(--ink) 7%,transparent); }
.case-chapter-footer button:active { transform: translateY(1px); }
.case-chapter-footer button:disabled { opacity: .35; cursor: default; }

@media (prefers-reduced-motion: no-preference) {
  .wordmark-mark { animation: mark-reveal .8s cubic-bezier(.22,1,.36,1) both; }
  .wordmark { animation: wordmark-reveal .7s .12s cubic-bezier(.22,1,.36,1) both; }
  .project-page .project-opening > :is(.back-link,.section-index,h1,.project-lead) { animation: case-heading-in .7s cubic-bezier(.22,1,.36,1) both; }
  .project-page .project-opening > .section-index { animation-delay: .06s; }
  .project-page .project-opening > h1 { animation-delay: .12s; }
  .project-page .project-opening > .project-lead { animation-delay: .18s; }
  .project-page .project-opening-grid { animation: case-media-in .9s .22s cubic-bezier(.22,1,.36,1) both; }
  .project-facts-panel .project-facts > div { animation: fact-in .55s cubic-bezier(.22,1,.36,1) both; }
  .project-facts-panel .project-facts > div:nth-child(2) { animation-delay: .06s; }
  .project-facts-panel .project-facts > div:nth-child(3) { animation-delay: .12s; }
  .project-facts-panel .project-facts > div:nth-child(4) { animation-delay: .18s; }
  .project-facts-panel .project-facts > div:nth-child(5) { animation-delay: .24s; }
  .project-facts-panel .project-facts > div:nth-child(6) { animation-delay: .3s; }
  .case-chapter-track > .detail-section.is-active > * { animation: chapter-content-in .55s .12s cubic-bezier(.22,1,.36,1) both; }
  @keyframes mark-reveal { from { opacity: 0; clip-path: inset(0 100% 0 0); transform: rotate(-5deg) scale(.92); } to { opacity: 1; clip-path: inset(0); transform: none; } }
  @keyframes wordmark-reveal { from { opacity: 0; transform: translateX(-.45rem); } to { opacity: 1; transform: none; } }
  @keyframes case-heading-in { from { opacity: 0; transform: translateY(1rem); } to { opacity: 1; transform: none; } }
  @keyframes case-media-in { from { opacity: 0; transform: translateY(1.5rem); clip-path: inset(0 0 12% 0); } to { opacity: 1; transform: none; clip-path: inset(0); } }
  @keyframes fact-in { from { opacity: 0; transform: translateX(1rem); } to { opacity: 1; transform: none; } }
  @keyframes chapter-content-in { from { opacity: .25; transform: translateX(1.25rem); } to { opacity: 1; transform: none; } }
}

@media (max-width: 880px) {
  .project-opening-grid { grid-template-columns: 1fr; }
  .project-facts-panel { padding: 1rem; }
  .project-facts-panel .project-facts { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1.25rem; }
  .case-nav { top: 5.35rem; justify-content: flex-start; }
  .case-nav a { flex: 0 0 auto; }
  .case-chapter-edge { display: none; }
  .technical-plate { grid-template-columns: 1fr; }
  .technical-plate-visual { min-height: 24rem; }
  .technical-plate-copy { border-top: 1px solid var(--line); border-left: 0; }
}
@media (max-width: 620px) {
  .project-facts-panel .project-facts { grid-template-columns: 1fr; }
  .people-collage { gap: 2px; padding: 2px; }
  .case-nav { margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); }
  .case-chapter-footer { align-items: flex-start; }
  .case-chapter-footer p { max-width: 20ch; }
  .case-chapter-track > .detail-section { padding-inline: var(--gutter); }
  .technical-plate-visual { min-height: 18rem; }
  .story-data { grid-template-columns: 1fr; padding-block: .35rem; }
  .story-data li { padding: .6rem 0; border-top: 1px solid var(--line); border-left: 0; }
  .story-data li:first-child { border-top: 0; }
  .technical-plate .story-reasoning > div { grid-template-columns: 1.6rem 4.8rem 1fr; gap: .5rem; padding-inline: .25rem; }
}
@media (hover: none) {
  .case-chapter-edge { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .case-chapter-viewport, .case-chapter-track, .case-nav a::after { transition: none; }
  .people-collage img { transition: none; }
}
:root { --page-width: 1120px; --page-inset: 80px; --page-left: clamp(24px,5vw,72px); --page-right: 24px; --gutter: clamp(24px,3vw,40px); }
main, .site-footer { width: min(calc(100% - var(--page-left) - var(--page-right)),var(--page-width)); margin-left: var(--page-left); margin-right: auto; }
.site-header { left: var(--page-left); width: min(calc(100% - var(--page-left) - var(--page-right)),var(--page-width)); transform: none; }
.site-lines { left: var(--page-left); width: min(calc(100% - var(--page-left) - var(--page-right)),var(--page-width)); transform: none; }
.wordmark { display: inline-flex; align-items: center; gap: .65rem; white-space: nowrap; }
.wordmark-mark { width: 38px; height: 38px; flex: 0 0 auto; display: grid; place-items: center; }
.wordmark-mark img, .wordmark-pi { grid-area: 1 / 1; }
.wordmark-mark img { display: block; width: 100%; height: 100%; transition: opacity .28s ease, transform .28s ease; }
.wordmark-pi { color: #fff; font-family: var(--sans); font-size: .8rem; font-weight: 700; line-height: .86; letter-spacing: -.04em; text-align: center; opacity: 0; transform: translateY(.25rem); transition: opacity .28s ease, transform .28s ease; }
@media (prefers-reduced-motion: no-preference) {
  .wordmark:is(:hover,:focus-visible) .wordmark-mark img { opacity: 0; transform: translateY(-.25rem) scale(.9); }
  .wordmark:is(:hover,:focus-visible) .wordmark-pi { opacity: 1; transform: none; }
}
.motion-off .wordmark:is(:hover,:focus-visible) .wordmark-mark img { opacity: 1; transform: none; }
.motion-off .wordmark:is(:hover,:focus-visible) .wordmark-pi { opacity: 0; transform: none; }

/* High-contrast navigation; the portfolio canvas stays white. */
.site-header, .site-header.is-scrolled { background: #111; color: #fff; border-color: #292929; box-shadow: 0 8px 28px #00000014; }
.site-header .wordmark, .site-header .desktop-nav a { color: #fff; }
.site-header .wordmark img { filter: brightness(0) invert(1); }
.site-header .desktop-nav a::after { background: #fff; }
.site-header .nav-cta, .site-header .menu-toggle { background: #ffffff14; border: 1px solid #626262; color: #fff; }
.site-header .nav-cta:hover, .site-header .menu-toggle:hover { background: #fff; color: #111; }
.site-header .mobile-nav { background: #111; color: #fff; border-color: #393939; box-shadow: 0 12px 28px #00000026; }
.site-header .mobile-nav a { color: #fff; border-color: #393939; }
.site-header .mobile-nav a:hover { background: #292929; }
.site-header a:focus-visible, .site-header button:focus-visible { outline: 2px solid #fff; outline-offset: 4px; }
.hero { min-height: 0; padding: 8rem var(--gutter) 3.5rem; grid-template-columns: minmax(0,1.1fr) minmax(0,.9fr); gap: 0 3rem; align-items: start; }
.hero-copy { display: contents; }
.hero .eyebrow { grid-column: 1 / -1; margin: 0 0 1.2rem; }
.hero h1 { grid-column: 1 / -1; margin-bottom: 2rem; font-size: clamp(32px,4.7vw,58px); white-space: nowrap; line-height: 1.12; letter-spacing: -.045em; }
.hero-specialty { grid-column: 1; margin: .5rem 0 1.3rem; font-size: clamp(1.1rem,2vw,1.55rem); }
.hero-intro { grid-column: 1; margin: 0; font-size: 1rem; line-height: 1.75; }
.hero-actions { grid-column: 1; gap: .7rem; margin-top: 1.6rem; }
.hero-availability { grid-column: 1; margin-top: 1.4rem; }
.hero-portrait { grid-column: 2; grid-row: 3 / span 4; width: 100%; max-width: 350px; aspect-ratio: 1; margin: 0; justify-self: end; }
.intro, .work, .case-path, .expertise, .about, .profile { padding-top: 4.5rem; padding-bottom: 4.5rem; }
.about { min-height: 0; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(2rem,5vw,4rem); }
.about-copy h2 { max-width: none; line-height: 1.1; text-wrap: balance; }
.work > .section-heading { grid-template-columns: minmax(0,1fr); }
.work-summary { margin: 2rem 0 0; max-width: 62ch; color: var(--muted); text-align: left; }
.work-summary > span { display: block; }
@media (max-width: 720px) { .work-summary > span { display: inline; } }
.section-heading { margin-bottom: 3rem; gap: 2rem; }
.intro { grid-template-columns: 1fr 1fr; gap: 2rem; }
.intro > .section-index { grid-column: 1 / -1; margin-bottom: 0; }
.proof-list { grid-column: 2; display: block; }
.project-layout { grid-template-columns: minmax(0,1.4fr) minmax(0,1fr); }
.expertise { grid-template-columns: 1fr 1fr; gap: 2.5rem; }
.expertise-copy, .process-line { grid-column: auto; }
.resume-viewer { grid-column: 1 / -1; }
.contact { padding-top: 4rem; padding-bottom: 3rem; grid-template-columns: minmax(0,1.4fr) minmax(0,1fr); }
.contact-main { padding-top: 1rem; padding-right: 1.5rem; min-height: 20rem; }
.contact-aside { min-width: 0; padding: 1rem 2rem; }
.contact-aside > div { min-width: 0; flex-wrap: wrap; align-items: baseline; }
.contact-aside a { min-width: 0; overflow-wrap: anywhere; }
.contact-aside h3 { font-size: 1.65rem; }
.tool-rail { grid-template-columns: 1fr; gap: 1.25rem; padding-block: 1.7rem; background: rgba(0,0,0,.018); }
.tool-rail > div { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: .8rem; overflow: visible; }
.tool-item { display: flex; align-items: center; gap: .65rem; min-width: 0; }
.tool-item img { width: 30px; height: 30px; object-fit: contain; flex: 0 0 auto; }
.tool-item > span { font-size: .8rem; font-weight: 500; letter-spacing: 0; }
.tool-item small { display: block; margin-top: .15rem; font-size: .61rem; color: var(--muted); font-weight: 400; }
@media (max-width: 880px) {
  :root { --page-inset: 48px; }
  .hero { gap: 0 1.6rem; }
  .hero h1 { font-size: clamp(30px,4.8vw,43px); }
  .hero-actions { flex-wrap: wrap; }
  .hero-portrait { aspect-ratio: .82; }
  .tool-item { flex-direction: column; align-items: flex-start; gap: .5rem; }
  .project-layout { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  :root { --page-inset: 24px; --page-left: 16px; --page-right: 16px; --gutter: 16px; }
  .wordmark { font-size: .95rem; gap: .45rem; }
  .wordmark-mark { width: 30px; height: 30px; }
  .wordmark-pi { font-size: .64rem; }
  .hero { grid-template-columns: 1fr; padding-top: 7rem; }
  .hero h1 { white-space: normal; font-size: clamp(30px,8.1vw,43px); margin-bottom: 1.2rem; }
  .hero .eyebrow, .hero h1, .hero-specialty, .hero-intro, .hero-actions, .hero-availability { grid-column: 1; }
  .hero-portrait { grid-column: 1; grid-row: auto; max-width: none; aspect-ratio: 1; margin-top: 1.6rem; }
  .intro, .expertise, .contact, .about { grid-template-columns: 1fr; }
  .proof-list, .resume-viewer { grid-column: 1; }
  .tool-rail > div { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 1.3rem .7rem; }
  .tool-item img { width: 28px; height: 28px; }
  .tool-item > span { font-size: .7rem; }
  .contact-aside { padding: 1.5rem 0 0; }
}
