:root { --ink:#202722; --ink-2:#111512; --paper:#f3f1e9; --lime:#c9ed4b; --line:rgba(32,39,34,.18); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:Arial,"Helvetica Neue",sans-serif; }
a { color:inherit; text-decoration:none; }
img { display:block; }
button,a { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid var(--lime); outline-offset:4px; }
.icon { display:block; width:20px; height:20px; flex:0 0 auto; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.icon-pin circle { fill:currentColor; stroke:none; }
.address-icon .icon-pin { width:24px; height:24px; }
.skip-link { position:fixed; z-index:100; left:16px; top:16px; padding:12px 16px; color:var(--ink); background:var(--lime); font-weight:700; transform:translateY(-150%); }
.skip-link:focus { transform:none; }
.menu-toggle,.mobile-contact { display:none; }

.site-header { position:absolute; z-index:10; top:0; left:0; right:0; height:94px; padding:0 clamp(24px,4vw,72px); display:grid; grid-template-columns:1fr auto 1fr; align-items:center; color:white; border-bottom:1px solid rgba(255,255,255,.25); }
.brand { display:inline-flex; width:max-content; align-items:center; gap:11px; font-size:20px; letter-spacing:-.04em; }
.brand b { font-weight:500; opacity:.7; }
.brand-mark { display:grid; place-items:center; width:34px; height:34px; color:var(--ink); background:var(--lime); font-weight:900; font-size:18px; letter-spacing:-.08em; }
.site-header nav { display:flex; gap:38px; font-size:13px; font-weight:650; }
.site-header nav a { transition:color .2s; }
.site-header nav a:hover { color:var(--lime); }
.header-contact { justify-self:end; padding-bottom:5px; border-bottom:1px solid var(--lime); color:var(--lime); font-size:13px; font-weight:750; }

.hero { position:relative; min-height:780px; height:100svh; color:white; overflow:hidden; background:var(--ink); }
.hero-image { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 52%; }
.hero-shade { position:absolute; inset:0; background:linear-gradient(90deg,rgba(13,18,15,.9) 0%,rgba(16,20,18,.57) 43%,rgba(16,20,18,.08) 74%),linear-gradient(0deg,rgba(10,13,11,.56) 0%,transparent 42%); }
.hero-content { position:absolute; z-index:2; left:clamp(24px,7vw,128px); top:49%; transform:translateY(-42%); max-width:780px; }
.eyebrow { display:flex; align-items:center; gap:12px; margin:0 0 25px; text-transform:uppercase; letter-spacing:.18em; font-size:11px; font-weight:800; }
.eyebrow>span { width:34px; height:3px; background:var(--lime); }
.eyebrow.dark { color:#667067; }
.hero h1,section h2 { margin:0; font-weight:450; letter-spacing:-.075em; line-height:.93; }
.hero h1 { font-size:clamp(62px,8.8vw,146px); }
.hero h1 em,.contact h2 em { color:var(--lime); font-style:normal; }
.hero-lead { max-width:520px; margin:30px 0 36px; font-size:clamp(17px,1.4vw,22px); line-height:1.55; color:rgba(255,255,255,.78); }
.hero-actions { display:flex; align-items:center; gap:15px; }
.button { min-height:56px; padding:0 24px; display:inline-flex; align-items:center; justify-content:center; gap:20px; font-size:13px; font-weight:800; transition:transform .2s,background .2s,color .2s; }
.button:hover { transform:translateY(-2px); }
.button-primary { color:var(--ink); background:var(--lime); }
.button-primary:hover { background:#d7f46d; }
.button-ghost { color:white; border:1px solid rgba(255,255,255,.5); }
.button-ghost:hover { background:white; color:var(--ink); }
.address-card { position:absolute; z-index:3; right:0; bottom:0; width:min(430px,38vw); min-height:142px; padding:28px 36px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:18px; color:var(--ink); background:rgba(247,246,240,.96); backdrop-filter:blur(12px); }
.address-card .address-icon { display:grid; place-items:center; width:50px; height:50px; border:1px solid var(--line); }
.address-card small,.address-card strong,.address-card span span { display:block; }
.address-card small { margin-bottom:7px; text-transform:uppercase; letter-spacing:.14em; font-size:9px; color:#737b74; }
.address-card strong { margin-bottom:2px; font-size:17px; }
.address-card span span { font-size:13px; color:#616a62; }
.scroll-cue { position:absolute; z-index:2; bottom:38px; left:clamp(24px,4vw,72px); display:flex; align-items:center; gap:15px; font-size:10px; font-weight:750; text-transform:uppercase; letter-spacing:.16em; }
.scroll-cue i { display:grid; place-items:center; width:37px; height:37px; border:1px solid rgba(255,255,255,.45); border-radius:50%; font-style:normal; }

.section { padding:130px clamp(24px,7vw,128px); }
.section-label { display:flex; align-items:center; gap:16px; font-size:10px; font-weight:800; text-transform:uppercase; letter-spacing:.18em; color:#727a73; }
.section-label span { display:grid; place-items:center; width:32px; height:32px; border:1px solid var(--line); border-radius:50%; font-size:9px; }
.section-label.light { color:rgba(255,255,255,.55); }
.section-label.light span { border-color:rgba(255,255,255,.2); }
.intro { position:relative; display:grid; grid-template-columns:1fr 2.15fr .75fr; gap:7vw; min-height:690px; align-items:start; overflow:hidden; }
.intro-copy h2,.gallery h2 { font-size:clamp(46px,5.8vw,92px); }
.intro-copy>p:not(.eyebrow) { max-width:640px; margin:38px 0 30px; color:#616961; font-size:17px; line-height:1.8; }
.text-link { display:inline-flex; align-items:center; gap:22px; padding-bottom:8px; border-bottom:1px solid var(--ink); font-size:13px; font-weight:800; }
.intro-number { align-self:end; justify-self:end; color:rgba(32,39,34,.05); font-weight:850; font-size:min(23vw,340px); line-height:.7; letter-spacing:-.12em; }

.location { padding:0; display:grid; grid-template-columns:1.18fr .82fr; min-height:740px; background:var(--ink); color:white; }
.location-photo { position:relative; min-height:700px; overflow:hidden; }
.location-photo img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.location-photo>span { position:absolute; bottom:28px; left:30px; padding:8px 11px; background:rgba(15,18,16,.75); font-size:9px; text-transform:uppercase; letter-spacing:.13em; }
.location-content { padding:80px clamp(30px,6vw,100px); display:flex; flex-direction:column; justify-content:center; }
.location-content .section-label { position:absolute; align-self:flex-end; transform:translateY(-250px); }
.location h2 { font-size:clamp(46px,5vw,80px); }
.location-address { display:flex; gap:18px; margin:45px 0 34px; padding-top:28px; border-top:1px solid rgba(255,255,255,.17); }
.location-address>.pin { width:24px; height:24px; margin-top:1px; }
.location-address strong,.location-address span { display:block; }
.location-address strong { margin-bottom:4px; font-size:18px; }
.location-address span { color:rgba(255,255,255,.58); font-size:14px; }
.location-content .button { align-self:flex-start; }

.gallery { background:#f7f6f0; }
.gallery-heading { display:grid; grid-template-columns:.7fr 1.4fr .7fr; align-items:end; gap:5vw; margin-bottom:65px; }
.gallery-heading>p { margin:0; color:#656d66; font-size:14px; line-height:1.75; }
.gallery-grid { display:grid; grid-template-columns:1.15fr .85fr; gap:18px; }
.gallery-item { position:relative; min-height:380px; overflow:hidden; background:#d7d9d4; }
.gallery-item.gallery-main { grid-row:span 2; min-height:778px; }
.gallery-item.gallery-wide { grid-column:1/-1; min-height:min(49vw,600px); }
.gallery-item img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .6s cubic-bezier(.2,.8,.2,1); }
.gallery-item:hover img { transform:scale(1.025); }
.gallery-item>span { position:absolute; z-index:2; left:20px; bottom:18px; padding:7px 9px; color:white; background:rgba(18,22,19,.72); font-size:10px; }
.gallery-item>i { position:absolute; z-index:2; right:20px; top:20px; width:44px; height:44px; display:grid; place-items:center; color:var(--ink); background:var(--lime); font-style:normal; opacity:0; transform:translateY(6px); transition:opacity .25s,transform .25s; }
.gallery-item:hover>i { opacity:1; transform:none; }

.lightbox[hidden] { display:none; }
.lightbox { position:fixed; z-index:1000; inset:0; display:grid; grid-template-columns:90px minmax(0,1fr) 90px; align-items:center; padding:70px 24px 24px; color:white; background:rgba(7,9,8,.97); opacity:0; visibility:hidden; transition:opacity .22s ease,visibility .22s ease; }
.lightbox.is-open { opacity:1; visibility:visible; }
.lightbox-open { overflow:hidden; }
.lightbox-figure { min-width:0; margin:0; }
.lightbox-stage { height:calc(100svh - 150px); display:flex; align-items:center; justify-content:center; overflow:hidden; }
.lightbox-image { display:block; width:auto; height:auto; max-width:100%; max-height:100%; object-fit:contain; box-shadow:0 22px 70px rgba(0,0,0,.35); opacity:1; transform:scale(1); transition:opacity .18s ease,transform .18s ease; user-select:none; -webkit-user-drag:none; }
.lightbox-image.is-changing { opacity:.15; transform:scale(.985); }
.lightbox-figure figcaption { min-height:54px; padding-top:16px; display:flex; justify-content:space-between; gap:24px; color:rgba(255,255,255,.58); font-size:11px; line-height:1.5; }
.lightbox-caption { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.lightbox-counter { flex:0 0 auto; color:var(--lime); font-weight:800; letter-spacing:.13em; }
.lightbox button { border:0; color:white; background:transparent; cursor:pointer; }
.lightbox-close { position:absolute; z-index:2; top:22px; right:24px; width:48px; height:48px; display:grid; place-items:center; border:1px solid rgba(255,255,255,.28)!important; border-radius:50%; transition:color .2s,border-color .2s,transform .2s; }
.lightbox-close:hover { color:var(--lime); border-color:var(--lime)!important; transform:rotate(4deg); }
.lightbox-close .icon { width:22px; height:22px; }
.lightbox-nav { width:58px; height:58px; display:grid; place-items:center; justify-self:center; border:1px solid rgba(255,255,255,.22)!important; border-radius:50%; transition:color .2s,background .2s,border-color .2s; }
.lightbox-nav:hover { color:var(--ink); background:var(--lime); border-color:var(--lime)!important; }
.lightbox-nav .icon { width:25px; height:25px; }

.contact { color:white; background:var(--ink-2); }
.contact-top { display:grid; grid-template-columns:.7fr 2.1fr; margin-bottom:38px; }
.contact-main { display:grid; grid-template-columns:1.55fr .45fr; align-items:end; padding-bottom:70px; border-bottom:1px solid rgba(255,255,255,.15); }
.contact h2 { font-size:clamp(64px,9vw,140px); }
.contact-person span { color:rgba(255,255,255,.43); font-size:10px; text-transform:uppercase; letter-spacing:.15em; }
.contact-person strong,.contact-person p { display:block; }
.contact-person strong { margin-top:14px; font-size:18px; }
.contact-person p { margin:6px 0 0; color:rgba(255,255,255,.55); font-size:13px; }
.contact-links { display:grid; grid-template-columns:1fr 1fr; }
.contact-links a { position:relative; padding:35px 28px 0 0; display:grid; grid-template-columns:1fr auto; border-bottom:1px solid rgba(255,255,255,.2); transition:border-color .2s; }
.contact-links a+a { margin-left:45px; }
.contact-links a:hover { border-color:var(--lime); }
.contact-links small { grid-column:1/-1; margin-bottom:12px; color:rgba(255,255,255,.42); text-transform:uppercase; letter-spacing:.14em; font-size:9px; }
.contact-links strong { padding-bottom:25px; font-size:clamp(17px,2vw,27px); }

footer { padding:42px clamp(24px,7vw,128px); display:grid; grid-template-columns:1fr 1fr auto; align-items:center; gap:30px; background:#0b0e0c; color:white; }
footer p { margin:0; color:rgba(255,255,255,.42); font-size:11px; line-height:1.7; }
footer .back-top { display:inline-flex; align-items:center; gap:9px; font-size:10px; text-transform:uppercase; letter-spacing:.15em; }
footer .back-top .icon { width:15px; height:15px; }
footer>small { grid-column:1/-1; padding-top:20px; border-top:1px solid rgba(255,255,255,.1); color:rgba(255,255,255,.28); font-size:9px; }

@media (max-width:900px) {
  .site-header { grid-template-columns:1fr auto; height:78px; }
  .site-header nav { display:none; }
  .menu-toggle { position:relative; z-index:12; display:grid; gap:6px; width:42px; height:42px; padding:12px 9px; border:1px solid rgba(255,255,255,.35); background:transparent; cursor:pointer; }
  .menu-toggle span { display:block; height:2px; background:white; transition:transform .2s; }
  .menu-open .menu-toggle span:first-child { transform:translateY(4px) rotate(45deg); }
  .menu-open .menu-toggle span:last-child { transform:translateY(-4px) rotate(-45deg); }
  .menu-open .site-header nav { position:fixed; inset:0; z-index:11; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:28px; color:white; background:rgba(17,21,18,.98); font-size:24px; }
  .menu-open { overflow:hidden; }
  .menu-open .mobile-contact { display:block; color:var(--lime); }
  .header-contact { display:none; }
  .hero { min-height:720px; }
  .hero-content { top:43%; transform:translateY(-40%); }
  .hero h1 { font-size:clamp(58px,13vw,96px); }
  .address-card { width:55vw; }
  .intro { grid-template-columns:.5fr 2fr; }
  .intro-number { display:none; }
  .location { grid-template-columns:1fr; }
  .location-photo { min-height:58vw; }
  .location-content .section-label { position:static; align-self:flex-start; transform:none; margin-bottom:60px; }
  .gallery-heading { grid-template-columns:.5fr 2fr; }
  .gallery-heading>p { grid-column:2; }
  .contact-main { grid-template-columns:1fr; gap:55px; }
}

@media (max-width:640px) {
  .site-header { padding:0 20px; }
  .brand { font-size:17px; }
  .brand-mark { width:30px; height:30px; }
  .hero { height:auto; min-height:780px; }
  .hero-image { object-position:59% center; }
  .hero-content { top:250px; left:20px; right:20px; transform:none; }
  .hero h1 { font-size:clamp(54px,17vw,76px); }
  .hero-lead { margin:24px 0 28px; font-size:16px; }
  .hero-actions { align-items:stretch; flex-direction:column; max-width:280px; }
  .address-card { left:20px; right:20px; bottom:24px; width:auto; min-height:112px; padding:19px; }
  .address-card .address-icon { width:42px; height:42px; }
  .scroll-cue { display:none; }
  .section { padding:84px 20px; }
  .intro { display:block; min-height:0; }
  .intro .section-label { margin-bottom:58px; }
  .intro-copy>p:not(.eyebrow) { font-size:15px; }
  .location { padding:0; }
  .location-photo { min-height:66vw; }
  .location-content { padding:72px 20px 82px; }
  .location-content .section-label { margin-bottom:55px; }
  .gallery-heading { display:block; margin-bottom:42px; }
  .gallery-heading .section-label { margin-bottom:55px; }
  .gallery-heading>p { margin-top:25px; }
  .gallery-grid { grid-template-columns:1fr; gap:10px; }
  .gallery-item,.gallery-item.gallery-main,.gallery-item.gallery-wide { grid-column:auto; grid-row:auto; min-height:62vw; }
  .gallery-item>i { display:none; }
  .lightbox { grid-template-columns:1fr 1fr; grid-template-rows:minmax(0,1fr) 72px; gap:0; padding:68px 16px 10px; }
  .lightbox-figure { grid-column:1/-1; align-self:stretch; display:flex; min-height:0; flex-direction:column; }
  .lightbox-stage { flex:1; height:auto; min-height:0; }
  .lightbox-image { max-height:calc(100svh - 190px); }
  .lightbox-figure figcaption { min-height:60px; padding:14px 2px 0; }
  .lightbox-caption { max-width:75%; white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
  .lightbox-nav { grid-row:2; width:52px; height:52px; }
  .lightbox-prev { grid-column:1; justify-self:end; margin-right:8px; }
  .lightbox-next { grid-column:2; justify-self:start; margin-left:8px; }
  .lightbox-close { top:14px; right:16px; width:44px; height:44px; }
  .contact-top { display:block; }
  .contact-top .section-label { margin-bottom:55px; }
  .contact-main { padding-bottom:55px; }
  .contact h2 { font-size:clamp(56px,18vw,80px); }
  .contact-links { grid-template-columns:1fr; }
  .contact-links a+a { margin-left:0; }
  .contact-links strong { font-size:18px; }
  footer { grid-template-columns:1fr auto; }
  footer p { grid-column:1/-1; grid-row:2; }
  footer .back-top { grid-column:2; grid-row:1; }
}

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