/* ============================================================
   PINNACLE HARDSCAPE — cinematic espresso / cream / copper
   Display: Fraunces  ·  UI: Inter
   ============================================================ */

/* Self-hosted fonts (latin subset, variable) — no third-party requests,
   so visitor IPs are never disclosed to Google Fonts. */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:300 600;font-display:swap;src:url('assets/fonts/fraunces-roman.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:400 500;font-display:swap;src:url('assets/fonts/fraunces-italic.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Inter';font-style:normal;font-weight:400 600;font-display:swap;src:url('assets/fonts/inter.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}

:root {
  --espresso:  #1a1a18;
  --espresso-2:#211f1b;
  --panel:     #26241f;
  --cream:     #efebe2;
  --cream-2:   #e7e1d5;
  --ink:       #221f1a;      /* text on cream */
  --copper:    #ab6736;      /* brand copper (matches logo) — decorative fills/borders */
  --copper-btn:#a4602f;      /* AA-safe copper for solid buttons: white text = 4.89:1 */
  --copper-lt: #c07b4a;
  --copper-ink:#8a4f26;      /* AA-safe copper for small text on cream = 5.47:1 */
  --sand:      #d5c1a8;
  --muted-lt:  rgba(239,235,226,0.62);   /* on dark = 6.34:1 */
  --muted-dk:  rgba(34,31,26,0.74);      /* on cream = 6.1:1 (WCAG AA for body text) */
  --line-lt:   rgba(239,235,226,0.14);
  --line-dk:   rgba(34,31,26,0.14);

  --serif: 'Fraunces', Georgia, 'Times New Roman', serif;
  --sans:  'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --pad: clamp(1.4rem, 5vw, 6rem);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

body {
  font-family: var(--sans);
  background: var(--espresso);
  color: var(--cream);
  overflow-x: hidden;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
em { font-style: italic; }

::selection { background: var(--copper); color: var(--cream); }

/* Custom cursor is hidden until JS activates it. Keyboard / no-JS / touch
   users always keep the native cursor (a11y: never leave users cursorless). */
.cursor { display: none; }
body.js-cursor { cursor: none; }
body.js-cursor .cursor { display: block; }
body.js-cursor input, body.js-cursor textarea { cursor: text; }

/* Visible keyboard focus — WCAG 2.4.7 / 2.4.11. Brand copper clears 3:1 on
   both cream and dark backgrounds. Only shown for keyboard (:focus-visible). */
:focus-visible { outline: 2px solid var(--copper); outline-offset: 2px; border-radius: 2px; }
.btn:focus-visible, .nav-cta:focus-visible, .btn-solid:focus-visible { outline-offset: 3px; }
a:focus:not(:focus-visible), button:focus:not(:focus-visible) { outline: none; }

/* ---------- CUSTOM CURSOR ---------- */
.cursor {
  position: fixed; top: 0; left: 0; width: 10px; height: 10px;
  border-radius: 50%; background: var(--copper);
  pointer-events: none; z-index: 9999;
  transform: translate(-50%, -50%);
  transition: width .3s var(--ease), height .3s var(--ease), background .3s var(--ease), opacity .3s;
  mix-blend-mode: normal;
}
.cursor.is-hover { width: 46px; height: 46px; background: rgba(192,123,74,0.18); border: 1px solid var(--copper-lt); }
.cursor.is-view  { width: 84px; height: 84px; background: rgba(192,123,74,0.9); }
.cursor.is-view::after { content: 'VIEW'; position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--sans); font-size: .58rem; letter-spacing: .18em; color: var(--espresso); font-weight: 600; }
@media (hover: none) { .cursor { display: none; } }

/* ---------- PRELOADER ---------- */
.preloader {
  position: fixed; inset: 0; z-index: 9000; background: var(--espresso);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.4rem;
  transition: opacity .8s var(--ease), visibility .8s;
}
.preloader.done { opacity: 0; visibility: hidden; }
.preloader-mark { width: 84px; height: auto; }
.pl-tri { stroke-dasharray: 260; stroke-dashoffset: 260; animation: draw 1s var(--ease) forwards; }
.pl-fill { opacity: 0; transform-origin: center bottom; animation: fillIn .7s var(--ease) .5s forwards; }
.pl-line { opacity: 0; animation: fadeIn .5s .9s forwards; }
.preloader-word { font-family: var(--sans); font-weight: 600; letter-spacing: .42em; font-size: .8rem; color: var(--cream); padding-left: .42em; opacity: 0; animation: fadeIn .6s 1s forwards; }
@keyframes draw { to { stroke-dashoffset: 0; } }
@keyframes fillIn { from { opacity: 0; transform: scaleY(0); } to { opacity: 1; transform: scaleY(1); } }
@keyframes fadeIn { to { opacity: 1; } }

/* ---------- NAV ---------- */
#nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 800;
  display: flex; align-items: center; justify-content: space-between;
  padding: 1.5rem var(--pad); transition: padding .4s var(--ease), background .4s var(--ease), backdrop-filter .4s;
}
#nav.solid { padding: 0.9rem var(--pad); background: rgba(26,26,24,0.82); backdrop-filter: blur(14px); box-shadow: 0 1px 0 var(--line-lt); }
.nav-logo-img { height: 34px; width: auto; transition: height .4s var(--ease); }
#nav.solid .nav-logo-img { height: 28px; }
.nav-links { list-style: none; display: flex; align-items: center; gap: 2.4rem; }
.nav-links a { font-size: .8rem; letter-spacing: .04em; color: var(--muted-lt); transition: color .25s; }
.nav-links a:hover { color: var(--cream); }
.nav-cta { padding: .6rem 1.3rem; border: 1px solid var(--copper); border-radius: 100px; color: var(--cream) !important; transition: background .3s var(--ease), color .3s !important; }
.nav-cta:hover { background: var(--copper-btn); color: #fff !important; }
.nav-burger { display: none; background: none; border: none; flex-direction: column; gap: 6px; cursor: pointer; }
.nav-burger span { display: block; width: 26px; height: 1.5px; background: var(--cream); transition: transform .3s var(--ease), opacity .3s; }

.mobile-menu { position: fixed; inset: 0; z-index: 700; background: var(--espresso); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1.6rem; opacity: 0; visibility: hidden; transition: opacity .5s var(--ease), visibility .5s; }
.mobile-menu.open { opacity: 1; visibility: visible; }
.mobile-menu a { font-family: var(--serif); font-size: 2rem; color: var(--cream); }
.mobile-menu a:hover { color: var(--copper-lt); }

/* ---------- BUTTONS ---------- */
.btn { position: relative; display: inline-flex; align-items: center; justify-content: center; padding: 1rem 2rem; font-size: .82rem; font-weight: 500; letter-spacing: .04em; border-radius: 100px; transition: transform .3s var(--ease), background .3s var(--ease), color .3s, border-color .3s; will-change: transform; }
.btn-solid { background: var(--copper-btn); color: #fff; }
.btn-solid:hover { background: var(--copper-ink); }
.btn-ghost { border: 1px solid var(--line-lt); color: var(--cream); }
.btn-ghost:hover { border-color: var(--cream); }

/* ---------- SHARED TYPE ---------- */
.eyebrow { display: inline-flex; align-items: center; gap: .7rem; font-size: .72rem; letter-spacing: .22em; text-transform: uppercase; color: var(--copper-ink); font-weight: 600; margin-bottom: 1.6rem; }
.eyebrow.light { color: var(--copper-lt); }
.eyebrow-dot { width: 20px; height: 1px; background: currentColor; display: inline-block; }
.section-title { font-family: var(--serif); font-weight: 300; font-size: clamp(2.6rem, 6vw, 5rem); line-height: 0.98; letter-spacing: -0.01em; color: var(--ink); }
.section-title.light { color: var(--cream); }
.section-title em, .cta-title em, .manifesto-line em, .hero-title em { color: var(--copper-lt); font-style: italic; }

/* ---------- HERO ---------- */
.hero { position: relative; height: 100svh; min-height: 620px; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; }
.hero-media { position: absolute; inset: 0; z-index: 0; }
.hero-img { position: absolute; inset: -6% -6% -6% -6%; background-image: url('photos/hero-video-poster.jpg?v=4'); background-size: cover; background-position: center 62%; will-change: transform; }
.hero-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 55%; opacity: 0; transition: opacity 1.2s ease; z-index: 1; }
.hero-video.is-ready { opacity: 1; }
.hero-scrim { position: absolute; inset: 0; z-index: 2; background:
  linear-gradient(180deg, rgba(20,18,15,0.6) 0%, rgba(20,18,15,0.32) 20%, rgba(20,18,15,0.55) 46%, rgba(20,18,15,0.82) 72%, rgba(20,18,15,0.98) 100%),
  linear-gradient(92deg, rgba(20,18,15,0.82) 0%, rgba(20,18,15,0.5) 38%, rgba(20,18,15,0.12) 62%, rgba(20,18,15,0) 78%); }
.hero-inner { position: relative; z-index: 2; padding: 0 var(--pad); max-width: 1100px; text-shadow: 0 2px 40px rgba(16,13,10,0.55), 0 1px 8px rgba(16,13,10,0.4); }
.hero-eyebrow { font-size: .74rem; letter-spacing: .24em; text-transform: uppercase; color: var(--sand); margin-bottom: 1.5rem; }
.hero-title { font-family: var(--serif); font-weight: 300; font-size: clamp(3.4rem, 10vw, 9rem); line-height: 0.92; letter-spacing: -0.02em; }
.hero-title .line { display: block; overflow: hidden; }
.hero-title .line > span { display: block; }
.hero-sub { margin-top: 1.8rem; max-width: 34rem; font-size: 1.05rem; line-height: 1.65; color: rgba(239,235,226,0.82); }
.hero-actions { display: flex; gap: 1rem; margin-top: 2.4rem; flex-wrap: wrap; }
.hero-foot { position: relative; z-index: 2; display: flex; align-items: flex-end; justify-content: space-between; padding: 2.6rem var(--pad) 2.2rem; }
.scroll-cue { display: flex; align-items: center; gap: .8rem; font-size: .68rem; letter-spacing: .22em; text-transform: uppercase; color: var(--muted-lt); }
.scroll-cue i { width: 42px; height: 1px; background: var(--muted-lt); position: relative; overflow: hidden; }
.scroll-cue i::after { content: ''; position: absolute; inset: 0; background: var(--copper-lt); transform: translateX(-100%); animation: cue 2.2s var(--ease) infinite; }
@keyframes cue { 0% { transform: translateX(-100%);} 50%{ transform: translateX(0);} 100%{ transform: translateX(100%);} }
.hero-tag { font-size: .68rem; letter-spacing: .18em; text-transform: uppercase; color: var(--muted-lt); }
.topo { position: absolute; left: 0; right: 0; width: 100%; pointer-events: none; }
.topo path { fill: none; stroke: var(--copper-lt); stroke-width: 1; opacity: .16; }
.topo-hero { bottom: 0; height: 300px; z-index: 1; }

/* ---------- MANIFESTO (cream) ---------- */
.manifesto { background: var(--cream); color: var(--ink); padding: clamp(5rem, 12vw, 11rem) var(--pad); }
.manifesto-inner { max-width: 1200px; margin: 0 auto; }
.manifesto-line { font-family: var(--serif); font-weight: 300; font-size: clamp(1.9rem, 4.6vw, 3.9rem); line-height: 1.12; letter-spacing: -0.01em; max-width: 20ch; }
.manifesto-meta { display: flex; flex-wrap: wrap; gap: 2rem 4rem; justify-content: space-between; align-items: end; margin-top: 3.2rem; }
.manifesto-meta p { max-width: 40ch; color: var(--muted-dk); line-height: 1.7; font-size: 1rem; }
.link-arrow { font-size: .82rem; letter-spacing: .06em; color: var(--ink); border-bottom: 1px solid var(--copper); padding-bottom: .3rem; white-space: nowrap; transition: color .3s; }
.link-arrow i { display: inline-block; transition: transform .3s var(--ease); font-style: normal; }
.link-arrow:hover { color: var(--copper); }
.link-arrow:hover i { transform: translateX(6px); }

/* ---------- WORK (dark) ---------- */
.work { background: var(--espresso); padding: clamp(4.5rem, 10vw, 9rem) var(--pad); }
.work-head { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.5rem; margin-bottom: 3.2rem; }
.work-grid { display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: clamp(220px, 24vw, 320px); gap: clamp(.6rem, 1.4vw, 1.2rem); }
.work-item { position: relative; grid-column: span 2; overflow: hidden; border-radius: 3px; }
.work-item.tall { grid-column: span 2; grid-row: span 2; }
.work-item.wide { grid-column: span 4; }
.work-media { position: relative; width: 100%; height: 100%; overflow: hidden; }
.work-media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s var(--ease), filter .6s; filter: saturate(.96); }
.work-item:hover .work-media img { transform: scale(1.06); filter: saturate(1.05); }
.work-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 40%, rgba(26,26,24,0.82)); opacity: .85; transition: opacity .4s; }
.work-cap { position: absolute; left: 1.3rem; bottom: 1.2rem; right: 1.3rem; z-index: 2; display: flex; flex-direction: column; gap: .15rem; transform: translateY(8px); opacity: .85; transition: transform .5s var(--ease), opacity .5s; }
.work-item:hover .work-cap { transform: translateY(0); opacity: 1; }
.work-num { font-size: .66rem; letter-spacing: .2em; color: var(--copper-lt); }
.work-name { font-family: var(--serif); font-size: clamp(1.1rem, 2vw, 1.6rem); font-weight: 400; }
.work-loc { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-lt); }

/* ---------- SERVICES (cream, interactive list) ---------- */
.services { position: relative; background: var(--cream); color: var(--ink); padding: clamp(4.5rem, 10vw, 9rem) var(--pad); }
.services-head { margin-bottom: 2rem; }
.svc-list { list-style: none; position: relative; z-index: 2; }
.svc-row { position: relative; display: grid; grid-template-columns: 3rem 1fr 1.1fr 2rem; gap: 1.5rem; align-items: baseline; padding: 2rem 1.2rem; border-top: 1px solid var(--line-dk); transition: padding-left .55s var(--ease), color .4s; overflow: hidden; }
.svc-row:last-child { border-bottom: 1px solid var(--line-dk); }
/* copper wash that sweeps in from the left on hover */
.svc-row::before { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(171,103,55,.13), rgba(171,103,55,0) 70%); transform: scaleX(0); transform-origin: left; transition: transform .55s var(--ease); z-index: -1; }
/* copper line that draws across the top border on hover */
.svc-row::after { content: ""; position: absolute; top: -1px; left: 0; right: 0; height: 1px; background: var(--copper); transform: scaleX(0); transform-origin: left; transition: transform .55s var(--ease); }
.svc-idx { font-size: .74rem; letter-spacing: .1em; color: var(--copper-lt); padding-top: .5rem; transition: color .4s, transform .55s var(--ease); }
.svc-name { font-family: var(--serif); font-weight: 400; font-size: clamp(1.5rem, 3.4vw, 2.6rem); line-height: 1.05; transition: color .4s; }
.svc-desc { color: var(--muted-dk); font-size: .95rem; line-height: 1.6; max-width: 42ch; align-self: center; transition: color .4s; }
.svc-arrow { align-self: center; justify-self: end; color: var(--copper); font-size: 1.3rem; opacity: 0; transform: translateX(-12px); transition: opacity .45s var(--ease), transform .45s var(--ease); }
.svc-row:hover { padding-left: 2.2rem; }
.svc-row:hover::before { transform: scaleX(1); }
.svc-row:hover::after { transform: scaleX(1); }
.svc-row:hover .svc-name { color: var(--copper); }
.svc-row:hover .svc-desc { color: var(--cream); }
.svc-row:hover .svc-idx { transform: translateY(-2px); }
.svc-row:hover .svc-arrow { opacity: 1; transform: translateX(0); }

/* ---------- STATS (espresso) ---------- */
.stats { background: var(--espresso-2); display: grid; grid-template-columns: repeat(4, 1fr); border-top: 1px solid var(--line-lt); }
.stat { padding: clamp(2.4rem, 5vw, 4rem) var(--pad); border-right: 1px solid var(--line-lt); }
.stat:last-child { border-right: none; }
.stat-num { font-family: var(--serif); font-weight: 300; font-size: clamp(2.4rem, 5vw, 3.6rem); color: var(--copper-lt); display: block; letter-spacing: -0.01em; }
.stat-label { font-size: .74rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-lt); margin-top: .5rem; display: block; }
.stats-3 { grid-template-columns: repeat(3, 1fr); }
.stat-note { display: block; margin-top: .55rem; font-size: .6rem; letter-spacing: .1em; color: var(--copper-lt); text-decoration: none; border-bottom: 1px solid rgba(198,135,90,.35); padding-bottom: 1px; width: fit-content; transition: color .2s, border-color .2s; }
.stat-note:hover { color: var(--cream); border-color: var(--cream); }

/* ---------- PROCESS (dark) ---------- */
.process { background: var(--espresso); padding: clamp(4.5rem, 10vw, 9rem) var(--pad); }
.process-head { margin-bottom: 3.4rem; }
.proc-steps { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1.4rem, 3vw, 3rem); counter-reset: p; }
.proc-step { position: relative; padding-top: 2rem; border-top: 1px solid var(--line-lt); }
.proc-num { font-family: var(--serif); font-size: 1rem; color: var(--copper-lt); display: block; margin-bottom: 2.5rem; }
.proc-step h3 { font-family: var(--serif); font-weight: 400; font-size: clamp(1.4rem, 2.4vw, 1.9rem); margin-bottom: .7rem; }
.proc-step p { color: var(--muted-lt); font-size: .92rem; line-height: 1.6; }

/* ---------- CTA ---------- */
.cta { position: relative; min-height: 88svh; display: flex; align-items: center; overflow: hidden; }
.cta-media { position: absolute; inset: 0; z-index: 0; }
.cta-img { position: absolute; inset: -8% 0; background-image: url('photos/pool-curve-travertine.jpg'); background-size: cover; background-position: center 55%; will-change: transform; }
.cta-scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(26,26,24,0.92) 0%, rgba(26,26,24,0.55) 55%, rgba(26,26,24,0.3) 100%); }
.cta-inner { position: relative; z-index: 2; padding: 0 var(--pad); max-width: 900px; }
.cta-title { font-family: var(--serif); font-weight: 300; font-size: clamp(2.8rem, 7vw, 6rem); line-height: 0.98; letter-spacing: -0.02em; margin-bottom: 1.5rem; }
.cta-sub { max-width: 32rem; color: rgba(239,235,226,0.82); line-height: 1.65; margin-bottom: 2.2rem; }
.cta-actions { display: flex; gap: 1rem; flex-wrap: wrap; }

/* ---------- FOOTER ---------- */
.footer { background: var(--espresso-2); padding: clamp(3.5rem, 7vw, 6rem) var(--pad) 2rem; border-top: 1px solid var(--line-lt); }
.footer-top { display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 2.5rem; padding-bottom: 3rem; border-bottom: 1px solid var(--line-lt); }
.footer-logo { height: 46px; width: auto; margin-bottom: 1.2rem; }
.footer-tag { font-family: var(--serif); font-style: italic; color: var(--sand); font-size: 1.1rem; }
.footer-head { font-size: .7rem; letter-spacing: .2em; text-transform: uppercase; color: var(--copper-lt); margin-bottom: 1.2rem; }
.footer-col a { display: block; color: var(--muted-lt); font-size: .92rem; margin-bottom: .7rem; transition: color .25s; }
.footer-col a:hover { color: var(--cream); }
.footer-muted { color: var(--muted-lt); font-size: .85rem; line-height: 1.6; margin-top: 1rem; }
.footer-bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .6rem; padding-top: 1.8rem; font-size: .74rem; color: var(--muted-lt); letter-spacing: .04em; }

/* ---------- REVEAL ANIMATIONS ---------- */
/* Hidden states apply only when JS is active (.js on <html>). No-JS users see
   all content immediately instead of a permanently-hidden (opacity:0) page. */
.js [data-reveal] { opacity: 0; transform: translateY(28px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
.js [data-reveal].in { opacity: 1; transform: none; }
.js .hero-title .line > span { transform: translateY(110%); transition: transform 1.1s var(--ease); }
.hero-title .line.in > span { transform: translateY(0); }
[data-reveal-lines] .word { display: inline-block; overflow: hidden; }

/* ---------- RESPONSIVE ---------- */
@media (max-width: 1000px) {
  .work-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: clamp(200px, 42vw, 300px); }
  .work-item, .work-item.tall, .work-item.wide { grid-column: span 1; grid-row: auto; }
  .proc-steps { grid-template-columns: repeat(2, 1fr); }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .stat:nth-child(2) { border-right: none; }
  .stat:nth-child(1), .stat:nth-child(2) { border-bottom: 1px solid var(--line-lt); }
}
@media (max-width: 640px) {
  .nav-links { display: none; }
  .nav-burger { display: flex; }
  .svc-row { grid-template-columns: 2rem 1fr auto; }
  .svc-desc { display: none; }
  .footer-top { grid-template-columns: 1fr; gap: 2rem; }
  .hero-foot { padding-bottom: 1.4rem; }
  .manifesto-meta { flex-direction: column; align-items: flex-start; }
  .book-panel { grid-template-columns: 1fr; max-height: 92vh; overflow-y: auto; }
  .book-media { min-height: 200px; }
}

/* ---------- Legal pages ---------- */
.legal { background: var(--cream); color: var(--ink); padding: clamp(7rem, 12vw, 10rem) var(--pad) clamp(4rem, 8vw, 6rem); min-height: 70vh; }
.legal-inner { max-width: 760px; margin: 0 auto; }
.legal-eyebrow { font-size: .72rem; letter-spacing: .24em; text-transform: uppercase; color: var(--copper-ink); margin-bottom: 1rem; }
.legal h1 { font-family: var(--serif); font-weight: 300; font-size: clamp(2.6rem, 6vw, 4.2rem); line-height: 1; letter-spacing: -0.02em; margin-bottom: .8rem; }
.legal .legal-updated { color: var(--muted-dk); font-size: .85rem; margin-bottom: 2.6rem; }
.legal h2 { font-family: var(--serif); font-weight: 400; font-size: 1.5rem; margin: 2.4rem 0 .8rem; }
.legal p, .legal li { color: rgba(34,31,26,.82); font-size: .98rem; line-height: 1.75; }
.legal p { margin-bottom: 1rem; }
.legal ul { margin: 0 0 1rem 1.2rem; }
.legal li { margin-bottom: .5rem; }
.legal a { color: var(--copper-ink); }
.legal .legal-callout { background: rgba(171,103,54,.08); border-left: 3px solid var(--copper); padding: 1.2rem 1.4rem; margin: 1.6rem 0; border-radius: 0 3px 3px 0; }
.legal .legal-disclaimer { margin-top: 3rem; padding-top: 1.6rem; border-top: 1px solid var(--line-dk); font-size: .82rem; color: var(--muted-dk); }
.legal-back { display: inline-block; margin-top: 2.4rem; font-size: .8rem; letter-spacing: .1em; text-transform: uppercase; color: var(--copper-ink); text-decoration: none; }
.legal-back:hover { text-decoration: underline; }

/* ---------- Footer legal ---------- */
.footer-legal { display: inline-flex; gap: 1.4rem; }
.footer-legal a { color: inherit; text-decoration: none; opacity: .85; transition: opacity .2s, color .2s; }
.footer-legal a:hover { color: var(--copper-lt); opacity: 1; }

/* ---------- Booking modal ---------- */
.book-modal { position: fixed; inset: 0; z-index: 1000; display: grid; place-items: center; padding: clamp(1rem, 4vw, 3rem); opacity: 0; visibility: hidden; transition: opacity .5s var(--ease), visibility .5s; }
.book-modal.open { opacity: 1; visibility: visible; }
.book-overlay { position: absolute; inset: 0; background: rgba(12,11,9,.72); backdrop-filter: blur(6px); }
.book-panel { position: relative; z-index: 2; width: min(940px, 100%); background: var(--espresso-2); border: 1px solid var(--line-lt); border-radius: 6px; overflow: hidden; display: grid; grid-template-columns: 0.85fr 1fr; box-shadow: 0 40px 120px rgba(0,0,0,.55); transform: translateY(26px) scale(.98); transition: transform .6s var(--ease); }
.book-modal.open .book-panel { transform: translateY(0) scale(1); }
.book-x { position: absolute; top: .6rem; right: .9rem; z-index: 5; background: none; border: none; color: var(--cream); font-size: 2rem; line-height: 1; cursor: pointer; opacity: .8; transition: opacity .2s, transform .2s; }
.book-x:hover { opacity: 1; transform: rotate(90deg); }
.book-media { position: relative; min-height: 100%; overflow: hidden; background: var(--espresso); }
.book-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.book-media-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(26,26,24,.15), rgba(26,26,24,.8)); }
.book-media-cap { position: absolute; left: 1.5rem; bottom: 1.4rem; z-index: 2; }
.book-media-eyebrow { display: block; font-size: .64rem; letter-spacing: .22em; text-transform: uppercase; color: var(--copper-lt); margin-bottom: .4rem; }
.book-media-title { font-family: var(--serif); font-weight: 300; font-size: 1.7rem; color: var(--cream); line-height: 1; }
.book-form-wrap { padding: clamp(1.6rem, 3vw, 2.6rem); }
.book-h { font-family: var(--serif); font-weight: 400; font-size: 1.7rem; color: var(--cream); }
.book-sub { color: var(--muted-lt); font-size: .9rem; margin: .5rem 0 1.4rem; }
.book-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.bf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.bf-field { display: flex; flex-direction: column; gap: .35rem; }
.bf-field.bf-full { grid-column: 1 / -1; }
.bf-field span { font-size: .64rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted-lt); }
.bf-field input, .bf-field select, .bf-field textarea { background: var(--espresso); border: 1px solid var(--line-lt); border-radius: 3px; padding: .7rem .8rem; color: var(--cream); font-family: var(--sans); font-size: .9rem; transition: border-color .2s; }
.bf-field input::placeholder, .bf-field textarea::placeholder { color: rgba(239,235,226,.35); }
.bf-field input:focus, .bf-field select:focus, .bf-field textarea:focus { border-color: var(--copper-lt); }
.bf-field input:focus-visible, .bf-field select:focus-visible, .bf-field textarea:focus-visible { outline: 2px solid var(--copper); outline-offset: 1px; }
.bf-field select { appearance: none; cursor: pointer; }
.bf-submit { width: 100%; margin-top: 1.2rem; border: none; cursor: pointer; }
.bf-note { text-align: center; font-size: .72rem; color: var(--muted-lt); margin-top: .8rem; }
.bf-success, .bf-error { display: none; margin-top: 1rem; padding: .85rem 1rem; border-radius: 3px; font-size: .84rem; }
.bf-success { background: rgba(171,103,54,.14); border: 1px solid var(--copper); color: var(--copper-lt); }
.bf-error { background: rgba(171,103,54,.1); border: 1px solid var(--copper); color: var(--cream); }
.bf-error a { color: var(--copper-lt); }
body.book-lock { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  [data-reveal] { opacity: 1; transform: none; }
  .hero-title .line > span { transform: none; }
  body { cursor: auto; }
  .cursor { display: none; }
}

/* ============================================================
   AUDIT ADDITIONS — a11y, focus, controls, legal helpers
   ============================================================ */

/* Skip link (WCAG 2.4.1) */
.skip-link { position: fixed; top: .6rem; left: .6rem; z-index: 10000; background: var(--copper-btn); color: #fff; padding: .7rem 1.1rem; border-radius: 5px; font-size: .85rem; font-weight: 500; transform: translateY(-160%); transition: transform .2s var(--ease); }
.skip-link:focus { transform: translateY(0); }

/* Hero video pause/play control (WCAG 2.2.2 — pause auto-playing media) */
.hero-vidtoggle { position: absolute; top: clamp(74px, 11vh, 108px); right: var(--pad); z-index: 4;
  width: 42px; height: 42px; display: grid; place-items: center; border-radius: 50%;
  border: 1px solid rgba(239,235,226,0.35); background: rgba(20,18,15,0.42); backdrop-filter: blur(6px);
  color: var(--cream); cursor: pointer; transition: background .3s var(--ease), border-color .3s; }
body.js-cursor .hero-vidtoggle { cursor: none; }
.hero-vidtoggle:hover { background: rgba(20,18,15,0.72); border-color: var(--cream); }
.hero-vidtoggle svg { width: 18px; height: 18px; fill: currentColor; }
.hero-vidtoggle .ic-play { display: none; }
.hero-vidtoggle.paused .ic-pause { display: none; }
.hero-vidtoggle.paused .ic-play { display: block; }
@media (hover: none) { .hero-vidtoggle { top: 78px; } }

/* Form consent line (TCPA/CAN-SPAM disclosure) */
.bf-consent { font-size: .72rem; line-height: 1.55; color: var(--muted-lt); margin-top: .9rem; }
.bf-consent a { color: var(--copper-lt); text-decoration: underline; }

/* Legal-page helpers (moved off inline styles) */
.m0 { margin: 0; }
.legal-foot { border-top: 1px solid var(--line-lt); margin-top: 0; }

/* ---------- 404 ---------- */
.notfound { min-height: 100vh; display: grid; place-items: center; padding: 8rem var(--pad) 4rem; background: var(--espresso); }
.notfound-inner { max-width: 640px; }
.nf-code { font-family: var(--serif); font-size: clamp(3rem, 9vw, 6rem); color: var(--copper-lt); line-height: 1; margin-bottom: .5rem; }
.nf-title { font-family: var(--serif); font-weight: 300; font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1.08; color: var(--cream); margin-bottom: 1.2rem; }
.nf-title em { color: var(--copper-lt); }
.nf-sub { color: var(--muted-lt); font-size: 1rem; line-height: 1.7; margin-bottom: 2rem; max-width: 46ch; }
.nf-actions { display: flex; gap: 1rem; flex-wrap: wrap; }

/* ---------- WORK LIGHTBOX ---------- */
.work-item { cursor: pointer; }
body.js-cursor .work-item { cursor: none; }

.lightbox {
  position: fixed; inset: 0; z-index: 950; display: grid; place-items: center;
  padding: clamp(1rem, 4vw, 3rem);
  background: rgba(14, 12, 10, 0.92); backdrop-filter: blur(10px);
  opacity: 0; visibility: hidden; transition: opacity .4s var(--ease), visibility .4s;
}
.lightbox.open { opacity: 1; visibility: visible; }
.lightbox-overlay { position: absolute; inset: 0; cursor: pointer; }
body.js-cursor .lightbox-overlay { cursor: none; }
.lightbox-figure {
  position: relative; z-index: 2; margin: 0; max-width: min(1100px, 92vw);
  display: flex; flex-direction: column; align-items: center; gap: 1rem;
  transform: scale(.96); opacity: 0; transition: transform .45s var(--ease), opacity .45s var(--ease);
}
.lightbox.open .lightbox-figure { transform: scale(1); opacity: 1; }
.lightbox-img {
  max-width: 100%; max-height: 82vh; width: auto; height: auto;
  border-radius: 6px; box-shadow: 0 40px 120px rgba(0,0,0,.6); background: var(--espresso-2);
}
.lightbox-cap { font-family: var(--serif); font-style: italic; font-size: 1.05rem; color: var(--cream); letter-spacing: .01em; text-align: center; }
.lightbox-x {
  position: absolute; top: -14px; right: -14px; z-index: 3;
  width: 46px; height: 46px; display: grid; place-items: center; border-radius: 50%;
  border: 1px solid rgba(239,235,226,0.4); background: rgba(20,18,15,0.9);
  color: var(--cream); font-size: 1.7rem; line-height: 1; cursor: pointer;
  transition: background .3s var(--ease), border-color .3s, transform .3s var(--ease);
}
body.js-cursor .lightbox-x { cursor: none; }
.lightbox-x:hover { background: var(--copper-btn); border-color: var(--copper-btn); transform: rotate(90deg); }
@media (max-width: 640px) {
  .lightbox-x { top: -8px; right: -8px; width: 44px; height: 44px; }
  .lightbox-img { max-height: 74vh; }
}
