:root {
  color-scheme: light;
  --paper: #f4f0e6;
  --ink: #211f1c;
  --muted: #6d695f;
  --line: rgba(33, 31, 28, .22);
  --accent: #00674f;
  --sans: "DM Sans", Arial, sans-serif;
  --body-serif: "Cormorant Garamond", Georgia, serif;
  --serif: "Instrument Serif", Georgia, serif;
  --mono: "DM Mono", monospace;
  --gutter: clamp(1.25rem, 5vw, 4.5rem);
  --section-space: clamp(4rem, 8vw, 7rem);
  --ease-out: cubic-bezier(.2, .8, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 1.25rem; scrollbar-color: rgba(33, 31, 28, .35) transparent; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body { position: relative; min-width: 320px; margin: 0; overflow-x: clip; background: var(--paper); color: var(--ink); font-family: var(--body-serif); font-size: clamp(1.05rem, 1.1vw, 1.2rem); line-height: 1.55; -webkit-font-smoothing: antialiased; }
button, input, textarea { font: inherit; }
button { color: inherit; }
::selection { background: var(--accent); color: #fff; }
.hero-intro, .about-content p { font-size: clamp(1.15rem, 1.45vw, 1.4rem); line-height: 1.4; }
h1, h2, h3, h4, h5, h6 { font-family: var(--sans); }
body::after {
  position: absolute; z-index: 10; inset: 0; pointer-events: none; content: ""; opacity: .15; mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.65'/%3E%3C/svg%3E");
  background-size: 180px 180px;
  animation: grain-drift 31s ease-in-out infinite alternate;
}
a { color: inherit; }
section[id] { scroll-margin-top: 1rem; }
.skip-link { position: fixed; z-index: 20; top: .8rem; left: var(--gutter); padding: .75rem 1rem; transform: translateY(-160%); background: var(--ink); color: var(--paper); text-decoration: none; }
.skip-link:focus { transform: translateY(0); }

.site-header { position: relative; z-index: 5; display: flex; min-height: 4.5rem; align-items: center; justify-content: space-between; gap: 1rem; padding: .6rem var(--gutter); border-bottom: 1px solid var(--line); }
.wordmark { font-family: var(--sans); font-size: .9rem; font-weight: 800; letter-spacing: -.065em; text-decoration: none; text-transform: uppercase; }
nav { display: flex; align-items: center; gap: clamp(1rem, 3vw, 2.5rem); }
nav a { min-height: 2.75rem; display: inline-flex; align-items: center; gap: .35rem; font-family: var(--mono); font-size: .68rem; text-decoration: none; text-transform: uppercase; transition: color .2s ease; }
nav a:hover, .site-footer a:hover { color: var(--accent); }

.hero { position: relative; isolation: isolate; display: flex; container-type: inline-size; min-height: min(760px, 86vh); min-height: min(760px, 86svh); flex-direction: column; justify-content: center; overflow: hidden; padding: 3rem var(--gutter) 5rem; padding-left: clamp(2rem, 10vw, 9rem); border-bottom: 1px solid var(--line); }
h1 { position: relative; z-index: 1; width: 100%; margin: clamp(1.4rem, 4vh, 3rem) 0 .85rem; font-size: clamp(4.2rem, 17vw, 14rem); font-weight: 700; letter-spacing: -.105em; line-height: .78; text-transform: uppercase; }
.hero h1 { max-width: 70%; }
.hero-line { display: block; width: max-content; max-width: 100%; animation: type-rise .9s cubic-bezier(.18,.72,.24,1) both; }
.hero-line:nth-child(2) { margin-left: .32em; color: var(--accent); font-family: var(--serif); font-size: .88em; font-weight: 400; font-style: italic; letter-spacing: -.065em; animation-delay: .16s; }
.hero-line.hero-last { text-transform: uppercase; }
.hero-index-label { position: relative; z-index: 1; margin: 0; color: var(--muted); font-family: var(--mono); font-size: .66rem; letter-spacing: .09em; text-transform: uppercase; animation: fade-in .6s .15s both; }
.hero-intro { max-width: 28rem; margin: .75rem 0 0; color: var(--muted); animation: fade-in .8s .5s both; }
.hero-cta { display: inline-flex; min-height: 2.75rem; align-items: center; gap: .8rem; margin-top: 1.25rem; color: var(--accent); font: .68rem var(--mono); letter-spacing: .04em; text-decoration: none; text-transform: uppercase; }
.hero-cta span { display: grid; width: 1.8rem; height: 1.8rem; place-items: center; border: 1px solid currentColor; border-radius: 50%; transition: color .2s ease, background .2s ease, transform .2s ease; }
.hero-cta:hover span { transform: translate(2px, -2px); background: var(--accent); color: white; }
.hero-visual { position: absolute; z-index: 2; top: 17%; right: clamp(2rem, 9vw, 9rem); width: clamp(13rem, 27vw, 25rem); aspect-ratio: .83 / 1; perspective: 1100px; pointer-events: none; transform: translate3d(0, var(--scroll-parallax, 0px), 0); will-change: transform; }
.hero-window { position: absolute; inset: 0; overflow: hidden; border: 1px solid rgba(33,31,28,.19); background: #faf9f5; box-shadow: 0 28px 70px rgba(33,31,28,.14); transform: rotate(5deg) rotateX(var(--hero-tilt-x, 0deg)) rotateY(var(--hero-tilt-y, 0deg)); transform-style: preserve-3d; animation: window-float 8s 1.6s ease-in-out infinite; transition: transform .45s cubic-bezier(.2,.8,.2,1); }
.hero-windowpage { animation: window-arrive 1.1s .32s cubic-bezier(.18,.72,.2,1) both; }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .hero-visual:hover .hero-window { transform: translateY(-4px) scale(1.045) rotate(4.25deg) rotateX(var(--hero-tilt-x, 0deg)) rotateY(var(--hero-tilt-y, 0deg)); }
}

.hero-windowbar { display: flex; height: 1.3rem; align-items: center; gap: .22rem; padding: 0 .5rem; border-bottom: 1px solid #e4e2db; background: #efeee8; }
.hero-windowbar i { width: .28rem; height: .28rem; border-radius: 50%; background: #bcbab2; }
.hero-windowbar span { margin: 0 auto; color: #77766f; font: .39rem var(--mono); }
.hero-windowpage { padding: 7%; }
.hero-windownav { display: flex; justify-content: space-between; color: #393a35; font: .42rem var(--mono); letter-spacing: .04em; }
.hero-windownav b { font-size: .62rem; }
.hero-windowcontent { position: relative; display: flex; min-height: 17rem; flex-direction: column; align-items: flex-start; justify-content: center; padding-top: 1rem; }
@media (min-width: 701px) {
  .hero-windowcontent { min-height: clamp(12rem, 25vw, 19rem); }
}
.hero-windowcontent > span { color: #77766f; font: .4rem/1.6 var(--mono); letter-spacing: .06em; }
.hero-windowcontent strong { position: relative; z-index: 1; margin: 9% 0; color: #252721; font: 500 clamp(1.9rem, 4vw, 4rem)/.81 var(--sans); letter-spacing: -.095em; }
.hero-windowcontent strong em { color: var(--accent); font-family: var(--serif); font-weight: 400; letter-spacing: -.04em; }
.hero-windowimage { position: absolute; right: -14%; bottom: 8%; width: 73%; height: 44%; background: linear-gradient(130deg, transparent 44%, rgba(0,103,79,.76) 45% 61%, transparent 62%), linear-gradient(152deg, #e3e1d7 0 32%, #c7c6bd 33% 50%, #eeede7 51%); }
.hero-windowcontent > small { position: relative; z-index: 1; color: #77766f; font: .38rem var(--mono); letter-spacing: .05em; }

@keyframes window-arrive { from { opacity: 0; transform: translateY(2rem) scale(.94); } to { opacity: 1; transform: translateY(0) scale(1); } }
@keyframes window-float { 0%, 100% { translate: 0 0; } 50% { translate: 0 -8px; } }

.section { container-type: inline-size; padding: var(--section-space) var(--gutter); }
.about { position: relative; overflow: hidden; padding-top: var(--section-space); padding-bottom: var(--section-space); border-bottom: 1px solid var(--line); }
.about::before { position: absolute; top: 0; right: var(--gutter); width: 1px; height: 100%; background: var(--line); content: ""; }
.about-topline { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding-right: clamp(1rem, 5vw, 5rem); }
.about-label { color: var(--muted); font: .6rem var(--mono); letter-spacing: .1em; }
.about-content { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(15rem, .65fr); align-items: end; gap: clamp(2rem, 8vw, 8rem); margin-top: clamp(2rem, 5vw, 4.5rem); padding-right: clamp(1rem, 5vw, 5rem); }
.about h2 { margin: 0; font-size: clamp(3rem, 10cqw, 8rem); font-weight: 700; letter-spacing: -.105em; line-height: .82; text-transform: uppercase; }
.about h2 em { color: var(--accent); font-family: var(--serif); font-weight: 400; text-transform: lowercase; }
.about-content p { max-width: 29rem; margin: 0 0 .4rem; color: var(--muted); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1.5rem; margin-bottom: clamp(1.75rem, 3vw, 2.75rem); }
.section-number { color: var(--muted); font-family: var(--mono); font-size: .66rem; font-weight: 400; letter-spacing: .07em; line-height: 1.4; text-transform: uppercase; }
.section-heading h2 { margin: 0; color: #171613; font-size: clamp(2.2rem, 7.5cqw, 5.5rem); font-weight: 700; letter-spacing: -.1em; line-height: .88; text-transform: uppercase; }
.section-heading h2::after { display: inline-block; width: .28em; height: .28em; margin-left: .15em; border-radius: 50%; background: var(--accent); content: ""; vertical-align: .12em; }
.carousel-controls { display: none; }
.project-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(1rem, 2vw, 1.75rem); }
.project { position: relative; min-width: 0; perspective: 900px; }
.project-art { position: relative; isolation: isolate; display: flex; width: 100%; aspect-ratio: .9 / 1; flex-direction: column; justify-content: space-between; overflow: hidden; padding: clamp(.8rem, 1.6vw, 1.4rem); color: var(--ink); background: #e8e6df; perspective: 1100px; }
.project-art:focus-visible { outline-offset: -5px; }
.art-index { position: absolute; z-index: 3; top: .75rem; left: .85rem; color: var(--muted); font-family: var(--mono); font-size: .54rem; letter-spacing: .07em; }
.site-preview { position: absolute; z-index: 1; inset: 9% 7% -8%; overflow: hidden; border: 1px solid rgba(32,33,30,.17); background: #f4f3ee; box-shadow: 0 16px 44px rgba(26,27,23,.16); transform: translateY(8%) rotate(var(--rest-angle, -2deg)); transform-origin: 50% 0; transition: transform .45s cubic-bezier(.2,.8,.2,1); }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .project:hover { z-index: 10; }
  .project-art:hover .site-preview { z-index: 1; transform: translateY(-4px) rotate(calc(var(--rest-angle, -2deg) - .75deg)) scale(1.045) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)); }
}
.preview-bar { display: flex; height: 1.3rem; align-items: center; gap: .22rem; padding: 0 .45rem; border-bottom: 1px solid rgba(32,33,30,.11); background: #eeede8; }
.preview-bar i { width: .26rem; height: .26rem; border-radius: 50%; background: #bbb9b1; }
.preview-bar span { margin-left: auto; color: #828079; font: .37rem var(--mono); }
.preview-page { min-height: 100%; padding: 5% 7%; }
.preview-nav { display: flex; justify-content: space-between; gap: .4rem; color: #373832; font: 600 clamp(.35rem, .55vw, .55rem) var(--mono); letter-spacing: .03em; }
.preview-nav b { font-weight: 500; }
.preview-nav span { font-weight: 400; }
.preview-hero { display: flex; min-height: 65%; flex-direction: column; align-items: flex-start; justify-content: center; padding: 12% 0 8%; }
.preview-hero small, .editorial-layout small, .dashboard-layout small { color: #74736d; font: .38rem var(--mono); letter-spacing: .08em; }
.preview-hero strong { margin: 8% 0; color: #272923; font: 500 clamp(1rem, 2.15vw, 2rem)/.9 var(--serif); letter-spacing: -.045em; }
.preview-hero span { padding: .35rem .55rem; background: var(--accent); color: white; font: .37rem var(--mono); }
.preview-blocks { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 3%; }
.preview-blocks i { height: clamp(1.3rem, 3.2vw, 3rem); background: #deddd6; }
.preview-blocks i:first-child { background: #c3d1c7; }
.art-two { background: #deddd6; }
.preview-two { --rest-angle: 1.8deg; background: #f1eee7; }
.preview-two .preview-page { background: linear-gradient(180deg, transparent 55%, rgba(235,231,220,.95)); }
.editorial-layout { padding-top: 15%; }
.editorial-layout strong { display: block; margin: 7% 0 9%; color: #252720; font: 500 clamp(.95rem, 2vw, 1.85rem)/.9 var(--serif); letter-spacing: -.05em; }
.editorial-layout strong em { color: var(--accent); font-weight: 400; }
.editorial-photo { width: 82%; height: clamp(2rem, 6vw, 5.5rem); margin: 0 0 6% auto; background: linear-gradient(125deg, rgba(19,34,29,.08), rgba(0,0,0,.12)), linear-gradient(145deg, #b6b4aa 0 35%, #667168 35% 59%, #d2cfc4 59%); }
.editorial-layout > span { color: #77766f; font: .34rem var(--mono); }
.art-three { background: #e4e5e0; }
.preview-three { --rest-angle: -1.1deg; background: #f5f6f2; }
.dashboard-layout { padding-top: 13%; }
.dashboard-layout > strong { display: block; margin: 6% 0; color: #262923; font: 600 clamp(.9rem, 1.8vw, 1.65rem)/.95 var(--sans); letter-spacing: -.07em; }
.dashboard-metrics { display: flex; gap: 5%; }
.dashboard-metrics i { display: flex; min-width: 38%; flex-direction: column; gap: .2rem; padding: .42rem; border: 1px solid #dedfd7; font-style: normal; }
.dashboard-metrics b { color: var(--accent); font: 600 clamp(.48rem, 1vw, .9rem) var(--sans); }
.dashboard-metrics span { color: #85867f; font: .32rem var(--mono); }
.dashboard-chart { display: flex; height: clamp(2.1rem, 5.8vw, 5.2rem); align-items: end; gap: 3%; margin-top: 7%; border-bottom: 1px solid #d4d5cd; background: repeating-linear-gradient(to bottom, transparent 0 24%, #e8e9e2 25% 26%); }
.dashboard-chart i { flex: 1; height: var(--bar, 30%); background: #b9cec0; }
.dashboard-chart i:nth-child(3n) { --bar: 55%; background: var(--accent); }
.dashboard-chart i:nth-child(4n) { --bar: 77%; }
.dashboard-chart i:nth-child(5n) { --bar: 88%; background: var(--accent); }
.dashboard-chart i:nth-child(7n) { --bar: 100%; }
.work-note { max-width: 38rem; margin: -1.25rem 0 1.5rem auto; color: var(--muted); font-size: .95rem; }
.project-caption { display: block; padding-top: .75rem; border-bottom: 1px solid var(--line); }
.project-caption h3 { margin: 0 0 .35rem; font-size: clamp(1rem, 1.5vw, 1.2rem); font-weight: 600; letter-spacing: -.045em; }
.project-caption span { display: block; margin-bottom: .8rem; color: var(--muted); font-family: var(--mono); font-size: .62rem; letter-spacing: .04em; text-transform: uppercase; }

.contact { padding-bottom: var(--section-space); }
.contact-layout { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(18rem, .95fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; margin-top: clamp(1.5rem, 4vw, 3rem); }
.contact h2 { margin: 0; font-size: clamp(3rem, 9cqw, 8rem); font-weight: 700; letter-spacing: -.105em; line-height: .82; text-transform: uppercase; }
.contact h2 em { color: var(--accent); font-family: var(--serif); font-weight: 400; text-transform: lowercase; }
.contact-form { display: grid; grid-template-columns: 1fr 1fr; column-gap: 1rem; align-items: start; }
.contact-help { grid-column: 1 / -1; grid-row: 1; margin: 0 0 .75rem; color: var(--muted); font-size: .9rem; }
.contact-form label { margin: 0 0 .35rem; color: var(--muted); font-family: var(--mono); font-size: .59rem; letter-spacing: .05em; text-transform: uppercase; }
.contact-form input, .contact-form textarea { width: 100%; min-height: 2.9rem; margin: 0 0 1.1rem; padding: .5rem 0; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; background: transparent; color: var(--ink); font: inherit; }
.contact-form textarea { resize: vertical; }
.contact-form input:focus, .contact-form textarea:focus { border-color: var(--accent); box-shadow: 0 1px var(--accent); }
.contact-form label[for="contact-name"], .contact-form label[for="contact-email"] { grid-row: 2; }
.contact-form #contact-name, .contact-form #contact-email { grid-row: 3; }
.contact-form label[for="contact-message"] { grid-row: 4; grid-column: 1 / -1; }
.contact-form textarea { grid-row: 5; grid-column: 1 / -1; min-height: 4rem; }
.contact-form button { display: inline-flex; min-height: 3rem; grid-column: 1; grid-row: 6; align-items: center; justify-content: space-between; gap: 1rem; padding: .7rem 1rem; border: 1px solid var(--accent); background: var(--accent); color: white; cursor: pointer; font: 500 .72rem var(--mono); text-transform: uppercase; transition: transform .2s, background .2s, color .2s; }
.contact-form button:hover { transform: translateY(-2px); background: transparent; color: var(--accent); }
.contact-form button:focus-visible { outline-offset: 4px; }
.contact-form button:active { transform: translateY(0); }
.site-footer { display: flex; min-height: 5rem; flex-direction: column; align-items: center; justify-content: center; gap: .5rem; padding: 1rem var(--gutter); border-top: 1px solid var(--line); color: var(--muted); font-family: var(--mono); font-size: .62rem; text-align: center; }
.site-footer nav { gap: 1rem; }
.site-footer nav a { min-height: 1.5rem; font-size: .56rem; }
.site-footer a { text-decoration: none; transition: color .2s; }
.policy { max-width: 58rem; margin-inline: auto; padding-block: var(--section-space); }
.policy h1 { position: static; width: auto; max-width: none; margin: 1.25rem 0 1rem; font-size: clamp(3.5rem, 10vw, 7rem); letter-spacing: -.08em; line-height: .95; text-transform: none; }
.policy h2 { margin: clamp(2rem, 5vw, 3.5rem) 0 .65rem; font-size: clamp(1.35rem, 2.5vw, 1.8rem); letter-spacing: -.045em; }
.policy p, .policy li { max-width: 48rem; }
.policy li { padding-inline-start: .25rem; }
.policy li + li { margin-top: .45rem; }
.policy-lede, .policy-note { color: var(--muted); font-size: .9rem; }
.policy a { text-decoration-color: var(--accent); text-underline-offset: .18em; }
.policy-note { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.policy :target { scroll-margin-top: 1rem; }
.js .reveal { opacity: 0; transform: translateY(40px) scale(.98); transition: opacity .65s ease, transform .78s cubic-bezier(.18,.72,.24,1); }
.js .reveal.is-visible { opacity: 1; transform: translateY(0) scale(1); }
.js .scroll-heading { clip-path: inset(0 var(--heading-wipe, 100%) 0 0); translate: 0 var(--heading-lift, 24px); rotate: var(--heading-rotate, 2deg); transition: none; will-change: clip-path, translate, rotate; }
.js .about-content p, .js .contact-form { transition-delay: .16s; }
.js .project:nth-child(2) { transition-delay: .12s; }
.js .project:nth-child(3) { transition-delay: .24s; }
.js .project-art { opacity: var(--scroll-opacity, 0); translate: 0 var(--scroll-lift, 96px); rotate: x var(--scroll-rotate, 20deg); scale: var(--scroll-scale, .84); transform-origin: center 60%; transition: translate .35s var(--ease-out), rotate .35s ease, scale .35s ease, background-color .35s ease, box-shadow .35s ease; will-change: opacity, translate, rotate, scale; }
@keyframes grain-drift { from { background-position: 0 0; } to { background-position: 13px -9px; } }
@keyframes type-rise { from { opacity: 0; transform: translateY(1.1em) skewY(4deg); filter: blur(7px); } to { opacity: 1; transform: translateY(0) skewY(0); filter: blur(0); } }
@keyframes fade-in { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }

@media (hover: hover) and (pointer: fine) {
  a, button { -webkit-tap-highlight-color: transparent; }
  .hero-line { transition: rotate .3s ease, scale .3s ease, translate .3s ease; }
  .hero-line:hover { rotate: -1.5deg; scale: 1.035; translate: 12px 0; }
  .project-art { cursor: crosshair; }
}

.carousel-hint { display: none; }

@media (max-width: 700px) {
  .hero { min-height: min(620px, 78vh); min-height: min(620px, 78svh); padding-left: clamp(1.5rem, 7vw, 4rem); }
  h1 { font-size: clamp(3.5rem, 14.5vw, 7rem); }
  .hero h1 { max-width: 72%; }
  .hero-visual { top: 21%; right: 4%; width: clamp(10rem, 30vw, 16rem); opacity: .7; pointer-events: none; }
  .hero-windowcontent { min-height: clamp(9rem, 24vw, 14rem); }
  .about-content { grid-template-columns: 1fr; gap: 1.5rem; margin-top: 2.5rem; }
  .about h2 { font-size: clamp(3rem, 10cqw, 5rem); }
  .carousel-hint { display: block; margin-top: .35rem; color: var(--muted); font: .58rem/1.5 var(--mono); letter-spacing: .02em; }
  .section-heading { align-items: flex-start; flex-direction: column; gap: .75rem; margin-bottom: 1.5rem; }
  .section-heading h2 { max-width: none; text-align: left; font-size: clamp(2rem, 9vw, 3rem); }
  .about-topline { align-items: flex-start; padding-right: 1.25rem; }
  .about-label { max-width: 45%; font-size: .56rem; line-height: 1.5; text-align: right; }
  .work-note { margin: 0 0 1.25rem; }
  .carousel-controls { display: flex; align-items: center; justify-content: flex-end; gap: .65rem; margin: .5rem 0 .8rem; }
  .carousel-status { min-width: 6.5rem; color: var(--muted); font: .58rem var(--mono); text-align: center; }
  .carousel-button { min-height: 2.75rem; padding: .55rem .8rem; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--ink); cursor: pointer; font: .58rem var(--mono); text-transform: uppercase; transition: background .2s ease, color .2s ease, border-color .2s ease; }
  .carousel-button:hover:not(:disabled) { border-color: var(--accent); background: var(--accent); color: white; }
  .carousel-button:disabled { opacity: .4; cursor: default; }
  .project-list {
    display: flex;
    gap: .9rem;
    overflow-x: auto;
    overflow-y: hidden;
    margin-inline: calc(-1 * var(--gutter));
    padding: 0 var(--gutter) 1rem;
    overscroll-behavior-x: contain;
    scroll-padding-inline: var(--gutter);
    scroll-snap-type: x mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    cursor: grab;
  }
  .project-list::-webkit-scrollbar { display: none; }
  .project-list:focus-visible { outline: 2px solid var(--accent); outline-offset: -4px; }
  .project-list.is-dragging { cursor: grabbing; scroll-snap-type: none; }
  .project-list.is-dragging, .project-list.is-dragging * { user-select: none; }
  .project-list.is-dragging .project-art { pointer-events: none; }
  .project { flex: 0 0 clamp(15rem, 84vw, 29rem); min-width: 0; scroll-snap-align: start; }
  .project-art { aspect-ratio: .94 / 1; padding: 1rem; }
  .project-caption { padding-top: .85rem; }
  .site-preview { inset: 10% 7% -8%; }
  .about::before { right: 1rem; opacity: .45; }
  .about-topline, .about-content { padding-right: 1rem; }
  .about h2, .contact h2 { font-size: clamp(2.8rem, 12cqw, 5rem); }
  .contact-layout { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
  .contact-form { width: 100%; max-width: 40rem; }
  .contact-help { margin-bottom: .5rem; }
  .contact-form button { min-height: 3.25rem; }
  .site-footer { font-size: .55rem; }
}

@media (max-width: 500px) {
  :root { --gutter: 1rem; --section-space: clamp(3.5rem, 12vw, 5rem); }
  .site-header { min-height: 4rem; }
  .wordmark { font-size: .78rem; }
  nav { gap: .8rem; }
  nav a { font-size: .62rem; }
  .hero { min-height: min(620px, 88vh); min-height: min(620px, 88svh); justify-content: center; padding: 1.5rem var(--gutter) 5.5rem; padding-left: clamp(1.4rem, 7vw, 2.25rem); }
  .hero h1 { max-width: 100%; }
  h1 { margin-top: clamp(1.3rem, 4vh, 2rem); font-size: clamp(2.7rem, 13.5vw, 4.8rem); line-height: .82; }
  .hero-index-label { max-width: 15rem; font-size: .56rem; }
  .hero-visual { top: auto; right: .75rem; bottom: 1rem; width: min(30vw, 8rem); opacity: .22; pointer-events: none; }
  .hero-windowcontent { min-height: 7rem; }
  .hero-windowcontent strong { font-size: 1.35rem; }
  .hero-line:nth-child(2) { margin-left: .18em; }
  .hero-intro { position: relative; z-index: 1; max-width: 17rem; margin-top: .7rem; }
  .hero-cta { position: relative; z-index: 1; margin-top: 1rem; }
}

@media (max-width: 380px) {
  .wordmark { font-size: .72rem; }
  nav { gap: .55rem; }
  nav a { font-size: .58rem; }
  .hero { padding-right: .8rem; padding-left: 1.2rem; }
  h1 { font-size: clamp(2.5rem, 13vw, 3.35rem); }
  .hero-visual { right: 0; width: 27vw; opacity: .16; }
  .hero-windowcontent { min-height: 6rem; }
  .contact-form { grid-template-columns: 1fr; }
  .contact-help, .contact-form label[for="contact-name"], .contact-form label[for="contact-email"], .contact-form #contact-name, .contact-form #contact-email, .contact-form label[for="contact-message"], .contact-form textarea, .contact-form button { grid-column: 1; grid-row: auto; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  body::after { animation: none; }
  .js .reveal { opacity: 1; transform: none; clip-path: none; }
  .js .scroll-heading, .js .project-art { clip-path: none; opacity: 1; translate: none; rotate: none; scale: 1; will-change: auto; }
  .hero-visual { transform: none; will-change: auto; }
  .hero-window { animation: none; transform: rotate(5deg); }
}
