:root {
  --ink: #111711;
  --forest: #101711;
  --forest-2: #172018;
  --ivory: #f0ede4;
  --paper: #e8e3d8;
  --gold: #c7a86d;
  --muted: #a4a69f;
  --line: rgba(16, 23, 17, .16);
  --line-dark: rgba(240, 237, 228, .14);
  --serif: "Playfair Display", Georgia, serif;
  --sans: "Manrope", Arial, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--forest); }
body { margin: 0; font-family: var(--sans); color: var(--ink); background: var(--ivory); font-weight: 400; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
img, video { display: block; max-width: 100%; }
::selection { background: var(--gold); color: var(--forest); }

.grain { position: fixed; inset: 0; pointer-events: none; z-index: 100; opacity: .05; 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='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E"); }

.site-header { position: absolute; z-index: 20; top: 0; left: 0; width: 100%; padding: 28px 4.5vw; display: flex; align-items: center; justify-content: space-between; color: var(--ivory); border-bottom: 1px solid rgba(255,255,255,.13); }
.brand { display: inline-flex; align-items: center; gap: 12px; }
.brand-mark { width: 36px; height: 36px; border: 1px solid currentColor; display: grid; place-items: center; font-family: var(--serif); font-size: 20px; }
.brand-name { letter-spacing: .22em; font-weight: 500; font-size: 12px; }
.brand-name small { display: block; margin-top: 4px; font-size: 7px; letter-spacing: .27em; opacity: .72; }
.nav { display: flex; align-items: center; gap: 36px; font-size: 12px; letter-spacing: .08em; }
.nav a { opacity: .82; transition: opacity .2s; }
.nav a:hover { opacity: 1; }
.nav-cta { border: 1px solid rgba(255,255,255,.55); padding: 12px 17px; }
.menu-toggle { display: none; background: none; border: 0; padding: 10px; }
.menu-toggle span { width: 24px; height: 1px; background: var(--ivory); display: block; margin: 6px 0; }

.hero { height: min(940px, 100svh); min-height: 720px; position: relative; color: var(--ivory); overflow: hidden; background: #0d130e; }
.hero-media, .hero-media video, .hero-overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-media video { object-fit: cover; }
.hero-overlay { background: linear-gradient(90deg, rgba(10,15,11,.72) 0%, rgba(10,15,11,.34) 50%, rgba(10,15,11,.2) 100%), linear-gradient(0deg, rgba(7,10,8,.48), transparent 48%); }
.hero-content { position: absolute; left: 7.5vw; bottom: 18%; width: min(760px, 80vw); }
.eyebrow { margin: 0 0 24px; letter-spacing: .22em; font-size: 10px; font-weight: 500; }
.hero h1, .display, .contact h2 { margin: 0; font-family: var(--serif); font-weight: 500; line-height: .98; letter-spacing: -.035em; }
.hero h1 { font-size: clamp(56px, 7vw, 108px); }
em { font-style: italic; font-weight: 500; color: var(--gold); }
.hero-copy { max-width: 590px; margin: 30px 0 0; color: rgba(240,237,228,.82); font-size: clamp(14px, 1.3vw, 18px); line-height: 1.7; }
.hero-actions { margin-top: 36px; display: flex; align-items: center; gap: 28px; flex-wrap: wrap; }
.btn { display: inline-flex; justify-content: center; align-items: center; padding: 15px 22px; min-height: 50px; text-transform: uppercase; letter-spacing: .14em; font-size: 10px; font-weight: 600; transition: transform .25s, background .25s; }
.btn:hover { transform: translateY(-2px); }
.btn-light { background: var(--ivory); color: var(--forest); }
.text-link { font-size: 12px; border-bottom: 1px solid rgba(255,255,255,.32); padding: 10px 0; }
.text-link span { color: var(--gold); margin-left: 7px; }
.hero-meta { position: absolute; left: 4.5vw; right: 4.5vw; bottom: 28px; display: flex; justify-content: space-between; align-items: center; font-size: 9px; text-transform: uppercase; letter-spacing: .16em; color: rgba(255,255,255,.62); }
.hero-meta button { color: inherit; background: none; border: 0; cursor: pointer; text-transform: uppercase; letter-spacing: .16em; font-size: inherit; }
.scroll-cue { position: absolute; right: 4.5vw; bottom: 74px; width: 32px; height: 52px; border: 1px solid rgba(255,255,255,.32); border-radius: 20px; }
.scroll-cue span { width: 2px; height: 8px; border-radius: 2px; background: var(--ivory); position: absolute; left: 50%; top: 9px; transform: translateX(-50%); animation: scroll 1.7s infinite; }
@keyframes scroll { 0% { opacity:0; transform:translate(-50%,0) } 30%{opacity:1} 100% { opacity:0; transform:translate(-50%,18px) } }

.section { padding: 120px 7.5vw; }
.section-kicker { color: #697069; font-size: 9px; letter-spacing: .2em; font-weight: 600; margin-bottom: 44px; }
.display { font-size: clamp(46px, 5.2vw, 82px); }
.intro-grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: 8vw; align-items: end; }
.intro-copy { max-width: 520px; font-size: 16px; line-height: 1.8; color: #4c514c; }
.intro-copy p + p { margin-top: 22px; }
.stats { margin-top: 96px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); display: grid; grid-template-columns: repeat(4, 1fr); }
.stats div { padding: 32px 28px 32px 0; border-right: 1px solid var(--line); }
.stats div:last-child { border-right: 0; padding-left: 28px; }
.stats div:not(:first-child) { padding-left: 28px; }
.stats strong { font-family: var(--sans); font-size: 30px; font-weight: 500; letter-spacing: -.03em; display: block; }
.stats span { display: block; margin-top: 8px; font-size: 10px; text-transform: uppercase; letter-spacing: .12em; color: #767b76; }
.microcopy { margin: 12px 0 0; font-size: 9px; color: #858a85; }

.section-dark { background: var(--forest); color: var(--ivory); }
.section-dark .section-kicker { color: #848b84; }
.section-head { display: flex; justify-content: space-between; align-items: end; gap: 40px; margin-bottom: 68px; }
.section-head > p { max-width: 440px; color: #a9afa9; line-height: 1.7; font-size: 14px; }
.featured-project { border-top: 1px solid var(--line-dark); padding-top: 26px; }
.project-media { overflow: hidden; background: #080c09; aspect-ratio: 16/8.3; }
.project-media video { width: 100%; height: 100%; object-fit: cover; }
.project-info { display: grid; grid-template-columns: .65fr 1fr 1fr; gap: 40px; padding: 24px 0 66px; }
.project-info > div { display: flex; gap: 24px; color: #7e857f; font-size: 9px; letter-spacing: .16em; }
.project-info h3 { font-family: var(--serif); font-weight: 500; font-size: 30px; margin: 0; }
.project-info p { color: #999f99; font-size: 13px; line-height: 1.7; margin: 0; max-width: 390px; }
.project-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.yt-card { border-top: 1px solid var(--line-dark); padding-top: 18px; }
.yt-thumb { aspect-ratio: 16/9; position: relative; cursor: pointer; overflow: hidden; background: #0a0e0b; }
.yt-thumb img { width:100%; height:100%; object-fit:cover; filter: saturate(.78) contrast(1.03); transition: transform .7s; }
.yt-thumb:hover img { transform: scale(1.025); }
.local-project-grid { margin-bottom: 4px; }
.local-portfolio-video { cursor: default; }
.local-portfolio-video video { width:100%; height:100%; object-fit:cover; display:block; }

.play { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:72px; height:72px; border-radius:50%; border:1px solid rgba(255,255,255,.7); display:grid; place-items:center; backdrop-filter: blur(7px); background:rgba(10,15,11,.22); }
.play:before { content:""; border-left: 12px solid white; border-top: 8px solid transparent; border-bottom: 8px solid transparent; margin-left: 4px; }
.yt-frame { width:100%; height:100%; border:0; }
.yt-meta { padding: 18px 0 36px; display:flex; justify-content:space-between; gap:18px; }
.yt-meta h3 { font-family:var(--serif); margin:0; font-size:25px; font-weight:500; }
.yt-meta span { font-size:9px; color:#858c86; letter-spacing:.14em; text-transform:uppercase; }
.portfolio-note { margin-top: 40px; border: 1px solid var(--line-dark); padding: 24px 28px; display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.portfolio-note p { margin:0; font-family:var(--serif); font-size:22px; }
.portfolio-note span { font-size:11px; color:#909791; }
code { font-family: ui-monospace, monospace; font-size: .95em; }

.services-layout { display: grid; grid-template-columns: .85fr 1.15fr; gap: 10vw; }
.services-title { position: sticky; top: 70px; align-self: start; }
.services-title > p { max-width: 420px; color:#5f655f; line-height:1.7; margin-top:28px; }
.service { border-top:1px solid var(--line); padding: 30px 0 34px; display:grid; grid-template-columns:70px 1fr; }
.service > span { font-size:9px; color:#838883; letter-spacing:.14em; }
.service h3 { margin:0 0 12px; font-family:var(--serif); font-weight:500; font-size:30px; }
.service p { margin:0; color:#5e635e; line-height:1.7; max-width:580px; }

.manifesto { min-height: 720px; position:relative; display:grid; place-items:center; color:var(--ivory); overflow:hidden; background:var(--forest-2); }
.manifesto-bg { position:absolute; inset:0; background: linear-gradient(rgba(12,18,13,.78),rgba(12,18,13,.88)), url('assets/img/hero-poster.jpg') center/cover; transform:scale(1.04); }
.manifesto-inner { position:relative; z-index:1; text-align:center; padding:80px 7vw; }
.manifesto blockquote { margin:0; font-family:var(--serif); font-size:clamp(44px,5.6vw,86px); line-height:1.08; }
.manifesto-inner > p:last-child { max-width:600px; margin:34px auto 0; line-height:1.8; color:#bec3be; font-size:14px; }

.process-grid { display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--line); }
.process-grid article { padding:28px 28px 10px 0; min-height:220px; border-right:1px solid var(--line); }
.process-grid article + article { padding-left:28px; }
.process-grid article:last-child { border-right:0; }
.process-grid span { font-size:9px; letter-spacing:.15em; color:#7b817b; }
.process-grid h3 { font-family:var(--serif); font-weight:400; font-size:28px; margin:56px 0 12px; }
.process-grid p { color:#656a65; line-height:1.65; font-size:13px; max-width:250px; }

.contact { min-height:720px; display:grid; place-items:center; text-align:center; }
.contact-inner { max-width:980px; }
.contact h2 { font-size:clamp(50px,6.5vw,100px); }
.contact-copy { margin:32px auto 34px; max-width:600px; color:#a6aca6; line-height:1.8; }
.btn-gold { background:var(--gold); color:#121813; }
.contact-note { font-size:9px; color:#6f766f; margin-top:18px; }
footer { padding:38px 4.5vw; background:#0a0f0b; color:#9ca29c; display:flex; justify-content:space-between; align-items:center; gap:30px; font-size:9px; text-transform:uppercase; letter-spacing:.13em; }
.footer-brand { color:var(--ivory); }

.reveal { opacity:0; transform:translateY(18px); transition:opacity .8s ease, transform .8s ease; }
.reveal.in { opacity:1; transform:none; }

@media (max-width: 920px) {
  .site-header { padding:22px 24px; }
  .menu-toggle { display:block; }
  .nav { position:absolute; top:81px; left:0; right:0; display:none; flex-direction:column; align-items:stretch; padding:24px; background:rgba(12,18,13,.96); backdrop-filter:blur(14px); gap:0; }
  .nav.open { display:flex; }
  .nav a { padding:15px 0; border-bottom:1px solid rgba(255,255,255,.1); }
  .nav-cta { border:0; }
  .hero { min-height:700px; }
  .hero-content { left:24px; bottom:18%; width:calc(100% - 48px); }
  .hero-meta { left:24px; right:24px; }
  .scroll-cue { display:none; }
  .section { padding:90px 24px; }
  .intro-grid, .services-layout { grid-template-columns:1fr; gap:52px; }
  .services-title { position:static; }
  .stats { grid-template-columns:1fr 1fr; }
  .stats div:nth-child(2) { border-right:0; }
  .stats div:nth-child(3), .stats div:nth-child(4) { border-top:1px solid var(--line); }
  .stats div:nth-child(3) { padding-left:0; }
  .section-head { align-items:start; flex-direction:column; }
  .project-info { grid-template-columns:1fr; gap:15px; }
  .project-grid { grid-template-columns:1fr; }
  .process-grid { grid-template-columns:1fr 1fr; }
  .process-grid article:nth-child(2){border-right:0}
  .process-grid article:nth-child(3),.process-grid article:nth-child(4){border-top:1px solid var(--line)}
  .process-grid article:nth-child(3){padding-left:0}
}

@media (max-width: 560px) {
  .brand-mark { width:31px;height:31px;font-size:17px; }
  .brand-name { font-size:10px; }
  .hero { min-height:680px; }
  .hero h1 { font-size:54px; }
  .hero-copy { line-height:1.55; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:10px; }
  .hero-meta span { max-width:180px; line-height:1.5; }
  .section { padding:76px 20px; }
  .display { font-size:44px; }
  .stats { grid-template-columns:1fr 1fr; margin-top:58px; }
  .stats div { padding:24px 12px 24px 0; }
  .stats div:not(:first-child) { padding-left:16px; }
  .project-media { aspect-ratio:16/10; }
  .portfolio-note { align-items:flex-start; flex-direction:column; }
  .process-grid { grid-template-columns:1fr; }
  .process-grid article, .process-grid article + article { padding:25px 0; border-right:0; border-top:1px solid var(--line); min-height:0; }
  .process-grid h3 { margin:28px 0 9px; }
  .manifesto { min-height:600px; }
  .manifesto blockquote { font-size:43px; }
  footer { flex-direction:column; align-items:flex-start; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  *, *::before, *::after { animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
  .reveal { opacity:1; transform:none; }
}

/* YouTube portfolio cards: lightweight external playback, avoids embed/referrer errors. */
a.yt-thumb { display: block; color: inherit; text-decoration: none; }
