:root{
  --bg:#FAF9F6; --paper:#FFFFFF; --ink:#1B2521; --muted:#6A706C; --line:#E5E1D8;
  --green:#173D35; --green-deep:#0F2B25; --green-soft:#2C6152; --tint:#EDF2EE; --gold:#B08A43; --gold-soft:#C9A867;
  --wa:#25D366; --wa-ink:#0E5F33; --wa-soft:rgba(222,247,230,.94);
  --display:"Tinos", "Times New Roman", Times, serif;
  --serif:"Tinos", "Times New Roman", Times, serif;
  --sans:"Nunito", "Segoe UI", system-ui, -apple-system, sans-serif;
  --mark:"Tinos", "Times New Roman", Times, serif;
  --wrap:1280px; --gutter:clamp(20px, 5vw, 64px); --header:86px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth; scroll-padding-top:calc(var(--header) + 16px); -webkit-text-size-adjust:100%}
body{margin:0; background:var(--bg); color:var(--ink); font:400 17px/1.75 var(--sans); -webkit-font-smoothing:antialiased; overflow-x:hidden}
img{display:block; max-width:100%}
a{color:inherit}
button{font:inherit; color:inherit}
h1,h2,h3,h4,p,ul,ol,figure{margin:0}
ul,ol{padding:0; list-style:none}
.wrap{width:100%; max-width:var(--wrap); margin:0 auto; padding:0 var(--gutter)}
.skip{position:absolute; left:16px; top:-60px; z-index:100; background:var(--green); color:#fff; padding:10px 16px; text-decoration:none}
.skip:focus{top:12px}
:focus-visible{outline:2px solid var(--gold); outline-offset:3px}

/* type */
.kicker{display:block; font:700 13.5px/1.6 var(--sans); letter-spacing:.24em; text-transform:uppercase; color:var(--gold)}
.h-xl{font:400 clamp(44px, 5.6vw, 86px)/1.05 var(--display); letter-spacing:-.022em}
.h-lg{font:400 clamp(32px, 3.6vw, 50px)/1.12 var(--serif); letter-spacing:-.015em}
.h-md{font:400 clamp(27px, 2.5vw, 36px)/1.25 var(--serif)}
.h-sm{font:400 26px/1.25 var(--serif)}
.lead{font-size:clamp(17px, 1.35vw, 19px); line-height:1.75; color:var(--muted)}
.muted{color:var(--muted)}
.plus{font-family:var(--sans); font-weight:300}
.prose p+p{margin-top:1.1em}
.prose{color:var(--muted)}

/* links & buttons */
.link{display:inline-flex; align-items:center; gap:10px; font:700 13px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; text-decoration:none; color:var(--green); padding-bottom:7px; border-bottom:1px solid var(--green); transition:gap .25s, color .25s, border-color .25s}
.link:hover{gap:16px; color:var(--gold); border-color:var(--gold)}
.link svg{width:14px; height:14px}
.btn{display:inline-flex; align-items:center; justify-content:center; gap:10px; padding:17px 30px; font:700 13px/1.3 var(--sans); text-align:center; letter-spacing:.2em; text-transform:uppercase; text-decoration:none; border:1px solid var(--green); background:var(--green); color:#fff; cursor:pointer; transition:background .25s, color .25s, border-color .25s}
.btn:hover{background:var(--green-deep); border-color:var(--green-deep)}
.btn-line{background:transparent; color:var(--ink); border-color:var(--ink)}
.btn-line:hover{background:var(--ink); color:#fff}
.btn-wa{background:var(--wa); border-color:var(--wa); color:#063B1E}
.btn-wa:hover{background:#1FBF5B; border-color:#1FBF5B}
.btn svg{width:17px; height:17px}
.btn i{font-size:19px; line-height:1}

/* header */
.site-header{position:sticky; top:0; z-index:50; height:var(--header); background:var(--green); color:#fff; transition:box-shadow .3s}
.site-header.scrolled{box-shadow:0 1px 0 rgba(201,168,103,.35)}
.site-header .wrap{max-width:none; height:100%; display:flex; align-items:center; justify-content:space-between; gap:24px}
.brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:#fff}
.brand svg{width:44px; height:34px; flex:none}
.wordmark{display:flex; flex-direction:column; line-height:1}
.wordmark b{font:400 20px/1 var(--mark); letter-spacing:.32em; margin-right:-.32em}
.wordmark small{font:700 8px/1 var(--sans); letter-spacing:.62em; margin-top:6px; color:rgba(255,255,255,.72)}
.nav{display:flex; align-items:center; gap:clamp(20px, 2.8vw, 44px)}
.nav a{position:relative; font:700 12.5px/1 var(--sans); letter-spacing:.22em; text-transform:uppercase; text-decoration:none; color:#fff; opacity:.72; padding:10px 0; transition:opacity .25s}
.nav a:hover, .nav a[aria-current="page"]{opacity:1}
.nav a[aria-current="page"]::after{content:""; position:absolute; left:0; right:0; bottom:2px; height:1px; background:var(--gold-soft)}
.menu-btn{display:none; width:44px; height:44px; padding:10px; border:0; background:none; cursor:pointer; color:#fff}
.menu-btn svg{width:24px; height:24px}
.mnav{position:fixed; inset:0; z-index:49; background:var(--green); padding:calc(var(--header) + 32px) var(--gutter) 40px; display:flex; flex-direction:column; gap:4px; opacity:0; visibility:hidden; transition:opacity .3s, visibility .3s}
.mnav.open{opacity:1; visibility:visible}
.menu-open .wa, .menu-open .wa-pop{display:none}
.mnav a{font:400 36px/1.35 var(--serif); text-decoration:none; color:#fff}
.mnav a[aria-current="page"]{color:var(--gold-soft)}
.mnav .mnav-foot{margin-top:auto; display:grid; gap:6px; font-size:15px; color:rgba(255,255,255,.7)}
.mnav .mnav-foot a{font:inherit; color:#fff}

/* home hero */
.hero{display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.12fr); min-height:calc(100vh - var(--header)); min-height:calc(100svh - var(--header)); max-height:940px}
.hero-text{display:flex; flex-direction:column; justify-content:center; align-items:flex-start; padding:clamp(48px, 6vw, 110px) clamp(28px, 5vw, 96px) clamp(48px, 6vw, 110px) clamp(24px, 7vw, 150px)}
.hero-text > *{max-width:640px}
.hero-text .h-xl{margin-top:26px; font-size:clamp(48px, 6vw, 104px); max-width:11ch}
.hero-text .lead{margin-top:28px; max-width:500px}
.hero-actions{display:flex; flex-wrap:wrap; align-items:center; gap:22px 32px; margin-top:40px}
.hero-img{position:relative; overflow:hidden; min-height:420px}
.hero-img img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 70%}
.hero-badge{position:absolute; left:0; bottom:0; z-index:1; display:flex; align-items:center; gap:18px; padding:26px 34px 26px clamp(24px, 3vw, 40px); background:var(--green); color:#fff}
.hero-badge b{font:400 58px/.9 var(--serif)}
.hero-badge span{font:700 12.5px/1.7 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-soft)}

/* sections */
.section{padding:clamp(80px, 10vw, 150px) 0}
.section.tight{padding-top:0}
.section.paper{background:var(--tint)}
.sec-head{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:20px 40px; margin-bottom:clamp(40px, 5vw, 64px)}
.sec-head .h-lg{margin-top:16px}
.rule{height:1px; background:var(--line); border:0; margin:0}

.intro{display:grid; grid-template-columns:minmax(0, 1.65fr) minmax(0, 1fr); gap:28px clamp(40px, 7vw, 120px); align-items:end}
.intro .kicker{grid-column:1 / -1}
.intro p.statement{font:400 clamp(28px, 3vw, 44px)/1.3 var(--serif); letter-spacing:-.01em; color:var(--ink)}
.intro aside{display:grid; gap:28px; padding-bottom:6px}
.fact{padding-top:18px; border-top:2px solid var(--green)}
.fact b{display:block; font:400 52px/1 var(--serif); color:var(--green)}
.fact span{display:block; margin-top:10px; font:700 12.5px/1.6 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}
.intro .link{justify-self:start}

/* service cards */
.cards{display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(40px, 5vw, 64px) clamp(20px, 2.5vw, 36px)}
.card{text-decoration:none; color:var(--ink); display:block}
.card .ph{display:block; overflow:hidden; aspect-ratio:4/5; background:var(--line)}
.card .ph img{width:100%; height:100%; object-fit:cover; transition:transform 1.1s cubic-bezier(.2,.6,.2,1)}
.card:hover .ph img{transform:scale(1.04)}
.card .meta{display:flex; align-items:baseline; gap:14px; margin-top:20px}
.card .num{font:700 14px/1 var(--sans); letter-spacing:.08em; color:var(--green)}
.card h3{font:400 26px/1.2 var(--serif)}
.card .meta{border-top:2px solid var(--green); padding-top:16px; margin-top:18px}
.card .ph{margin-bottom:0}

/* projects */
.filters{display:flex; flex-wrap:wrap; gap:8px 28px}
.filters button{border:0; background:none; padding:6px 0; font:700 13px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--muted); cursor:pointer; border-bottom:1px solid transparent; transition:color .25s, border-color .25s}
.filters button:hover{color:var(--ink)}
.filters button[aria-pressed="true"]{color:var(--green); border-bottom-color:var(--green)}
.pgrid{display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(44px, 5vw, 64px) clamp(20px, 2.5vw, 36px)}
.pcard[hidden]{display:none}
.pcard button{display:block; width:100%; padding:0; border:0; background:none; text-align:left; cursor:pointer}
.pcard .ph{display:block; position:relative; overflow:hidden; aspect-ratio:4/3; background:var(--line)}
.pcard .ph img{width:100%; height:100%; object-fit:cover; transition:transform 1.1s cubic-bezier(.2,.6,.2,1), opacity .4s}
.pcard button:hover .ph img{transform:scale(1.04)}
.pcard .more{position:absolute; right:12px; bottom:12px; padding:8px 11px; background:rgba(255,255,255,.92); font:700 12px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--ink); opacity:0; transform:translateY(6px); transition:opacity .3s, transform .3s}
.pcard button:hover .more, .pcard button:focus-visible .more{opacity:1; transform:none}
.pcard .cap{display:block; margin-top:16px; padding-left:16px; border-left:2px solid var(--green)}
.pcard .cap b{display:block; font:400 22px/1.25 var(--serif); color:var(--ink)}
.pcard .cap span{display:block; margin-top:6px; font-size:15px; color:var(--muted)}
.partner-note{margin-top:clamp(48px, 6vw, 72px); font-size:15px; color:var(--muted)}

/* wide image with caption */
.wide{margin:0}
.wide img{width:100%; aspect-ratio:21/9; object-fit:cover}
.wide figcaption{display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-end; gap:20px 40px; padding-top:28px}
.wide figcaption p{max-width:600px}

/* cta */
.cta{text-align:center; padding:clamp(90px, 11vw, 150px) 0; background:var(--green); color:#fff}
.cta .kicker{color:var(--gold-soft)}
.cta .lead{color:rgba(255,255,255,.75)}
.cta .btn-line{color:#fff; border-color:rgba(255,255,255,.6)}
.cta .btn-line:hover{background:#fff; color:var(--green); border-color:#fff}
.cta .h-lg{max-width:16ch; margin:18px auto 0}
.cta .lead{max-width:520px; margin:22px auto 0}
.cta .actions{display:flex; flex-wrap:wrap; justify-content:center; gap:14px; margin-top:40px}

/* inner page header */
.page-head{padding:clamp(64px, 8vw, 120px) 0 clamp(48px, 6vw, 84px)}
.page-head .h-xl{margin-top:24px; max-width:14ch}
.page-head .lead{margin-top:26px; max-width:620px}
.page-img{margin:0}
.page-head .actions{display:flex; flex-wrap:wrap; gap:14px; margin-top:38px}
.hold-img{padding-bottom:clamp(80px, 10vw, 140px)}
.page-img img{width:100%; aspect-ratio:21/8; object-fit:cover}

/* about */
.split{display:grid; grid-template-columns:1fr 1.7fr; gap:clamp(28px, 6vw, 96px); align-items:start}
.split .sticky{position:sticky; top:calc(var(--header) + 40px)}
.split .h-lg{margin-top:16px}
.steps{display:grid; grid-template-columns:repeat(4, 1fr); gap:clamp(24px, 3vw, 44px)}
.steps li{padding-top:26px; border-top:2px solid var(--green)}
.steps .num{font:700 14px/1 var(--sans); letter-spacing:.08em; color:var(--green)}
.steps h3{margin-top:18px; font:400 28px/1.2 var(--serif)}
.steps p{margin-top:10px; font-size:16.5px; line-height:1.6; color:var(--muted)}
.duo{display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px, 7vw, 110px); align-items:center}
.duo img{width:100%; aspect-ratio:4/5; object-fit:cover}
.duo .h-lg{margin-top:16px}
.duo .prose{margin-top:24px}
.stat{display:inline-flex; align-items:center; gap:22px; margin-top:40px; padding:24px 30px; background:var(--green); color:#fff}
.stat b{font:400 64px/.9 var(--serif); color:#fff}
.stat span{font:700 13px/1.7 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-soft)}
.exp{display:grid; grid-template-columns:repeat(4, 1fr); border-top:1px solid var(--line); border-left:1px solid var(--line)}
.exp li{display:flex; flex-direction:column; gap:18px; padding:30px 26px 28px; border-right:1px solid var(--line); border-bottom:1px solid var(--line)}
.exp .ico{display:grid; place-items:center; width:56px; height:56px; border-radius:50%; background:var(--green); color:#fff}
.exp svg{width:26px; height:26px}
.exp b{font:700 13.5px/1.4 var(--sans); letter-spacing:.14em; text-transform:uppercase}
.trio{display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(12px, 1.6vw, 24px)}
.trio img{width:100%; aspect-ratio:3/4; object-fit:cover}
.rows > div{display:grid; grid-template-columns:1fr 1.7fr; gap:clamp(24px, 6vw, 96px); padding:clamp(36px, 4.5vw, 56px) 0; border-top:1px solid var(--line)}
.rows > div:last-child{border-bottom:1px solid var(--line)}
.rows .h-md{margin-top:14px; color:var(--green)}
.pillars{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:12px 28px; margin-top:22px}
.pillars li{display:flex; align-items:center; gap:12px; font:700 13px/1.5 var(--sans); letter-spacing:.12em; text-transform:uppercase; color:var(--ink)}
.pillars li::before{content:""; width:14px; height:2px; background:var(--green); flex:none}
.quote{font:italic 400 clamp(22px, 2vw, 28px)/1.4 var(--serif); color:var(--green)}

/* services page */
.svc-index{display:flex; flex-wrap:wrap; gap:10px 34px; padding:26px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line)}
.svc-index a{font:700 13px/1.5 var(--sans); letter-spacing:.16em; text-transform:uppercase; text-decoration:none; color:var(--muted)}
.svc-index a span{color:var(--green); margin-right:8px}
.svc-index a:hover{color:var(--ink)}
.svc-row{display:grid; grid-template-columns:1fr 1fr; gap:clamp(36px, 7vw, 120px); align-items:center; padding:clamp(64px, 8vw, 120px) 0}
.svc-row + .svc-row{border-top:1px solid var(--line)}
.svc-row:nth-child(even) .svc-media{order:2}
.svc-media img{width:100%; aspect-ratio:4/5; object-fit:cover}
.svc-body .num{display:inline-grid; place-items:center; width:50px; height:50px; border-radius:50%; background:var(--green); color:#fff; font:700 14px/1 var(--sans); letter-spacing:.06em}
.svc-body .h-lg{margin-top:18px}
.svc-body .lead{margin-top:22px; max-width:480px}
.svc-body ul{display:grid; grid-template-columns:1fr 1fr; column-gap:32px; margin-top:34px}
.svc-body li{display:flex; align-items:center; gap:12px; padding:13px 0; border-bottom:1px solid var(--line); font-size:16.5px}
.svc-body li::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--green); flex:none}

/* craftsmanship page */
.details{display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(44px, 5vw, 64px) clamp(20px, 2.5vw, 36px)}
.details img{width:100%; aspect-ratio:4/3; object-fit:cover}
.details figcaption{margin-top:18px; padding-left:16px; border-left:2px solid var(--green)}
.details figcaption b{display:block; font:400 24px/1.25 var(--serif)}
.details figcaption span{display:block; margin-top:8px; font-size:16.5px; line-height:1.6; color:var(--muted)}
.details .text-cell{display:flex; flex-direction:column; justify-content:flex-end; padding:32px; background:var(--green); color:#fff}
.details .text-cell .kicker{color:var(--gold-soft)}
.details .text-cell ul{margin-top:20px}
.details .text-cell li{padding:9px 0; border-bottom:1px solid rgba(255,255,255,.18); font-size:16px; color:rgba(255,255,255,.88)}

/* contact page */
.contact-grid{display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(40px, 7vw, 110px); align-items:start}
.clist > div{padding:26px 0; border-top:1px solid var(--line)}
.clist > div:last-of-type{border-bottom:1px solid var(--line)}
.clist a, .clist p{display:block; margin-top:12px; font:400 clamp(22px, 2vw, 28px)/1.3 var(--serif); text-decoration:none; color:var(--ink)}
.clist a:hover{color:var(--gold)}
.clist small{display:block; margin-top:6px; font-size:15px; color:var(--muted)}
.clist .pending{color:#A8ADA9}
.clist a.map-link{display:inline-flex; margin-top:16px; font:700 13px/1 var(--sans)}
.clist a{color:var(--green)}
.contact-grid .btn{margin-top:36px}
.form{display:grid; gap:24px; padding:clamp(28px, 4vw, 52px); background:var(--paper); border:1px solid var(--line)}
.form .h-md{margin-bottom:4px}
.field{display:grid; gap:8px}
.field label{font:700 12.5px/1 var(--sans); letter-spacing:.18em; text-transform:uppercase; color:var(--muted)}
.field input, .field select, .field textarea{width:100%; border:0; border-bottom:1px solid #CFCAC0; background:transparent; padding:10px 0; font:400 16px/1.5 var(--sans); color:var(--ink); border-radius:0}
.field textarea{resize:vertical; min-height:110px}
.field input:focus, .field select:focus, .field textarea:focus{outline:none; border-bottom-color:var(--green)}
.field [aria-invalid="true"]{border-bottom-color:#B3261E}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:24px}
.form .btn{justify-self:start}
.form-hint{font-size:14.5px; color:var(--muted)}

/* footer */
.footer{background:var(--green-deep); border-top:1px solid rgba(201,168,103,.3); color:rgba(255,255,255,.7); padding:clamp(64px, 7vw, 96px) 0 30px; font-size:16px}
.footer .brand{color:#fff}
.footer .brand .wordmark small{color:rgba(255,255,255,.65)}
.footer-grid{display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:36px}
.footer .tag{margin-top:22px; font:400 24px/1.3 var(--serif); color:#fff}
.footer h4{font:700 12.5px/1 var(--sans); letter-spacing:.2em; text-transform:uppercase; color:var(--gold-soft); margin-bottom:18px}
.footer ul{display:grid; gap:8px}
.footer a{text-decoration:none}
.footer a:hover{color:#fff}
.footer-bottom{display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; margin-top:64px; padding-top:24px; border-top:1px solid rgba(255,255,255,.12); font-size:14px}
.footer-bottom nav{display:flex; flex-wrap:wrap; gap:8px 24px}

/* social icons */
.social{display:flex; flex-wrap:wrap; gap:10px; margin-top:26px}
.social a{display:grid; place-items:center; width:42px; height:42px; border-radius:50%; border:1px solid rgba(255,255,255,.25); color:#fff; transition:background .25s, border-color .25s, color .25s}
.social a:hover{background:var(--gold-soft); border-color:var(--gold-soft); color:var(--green-deep)}
.social i{font-size:17px; line-height:1}

/* terms page */
.legal{display:grid; grid-template-columns:minmax(0, 260px) minmax(0, 1fr); gap:clamp(32px, 6vw, 96px); align-items:start}
.legal-toc{position:sticky; top:calc(var(--header) + 32px); display:grid; gap:2px; padding-top:6px; border-top:2px solid var(--green)}
.legal-toc a{display:block; padding:7px 0; font-size:15px; text-decoration:none; color:var(--muted)}
.legal-toc a:hover{color:var(--green)}
.legal-body{max-width:760px}
.legal-body section{padding:34px 0; border-top:1px solid var(--line)}
.legal-body section:first-child{border-top:0; padding-top:0}
.legal-body h2{font:400 clamp(24px, 2.2vw, 30px)/1.25 var(--serif); color:var(--green)}
.legal-body h2 span{color:var(--gold); margin-right:12px}
.legal-body p, .legal-body li{margin-top:14px; color:var(--muted)}
.legal-body ul{margin-top:6px}
.legal-body li{position:relative; padding-left:22px; margin-top:8px}
.legal-body li::before{content:""; position:absolute; left:0; top:.8em; width:10px; height:2px; background:var(--green)}
.legal-body a{color:var(--green)}
.updated{margin-top:18px; font:700 13px/1 var(--sans); letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}

/* WhatsApp consultation button */
.wa{position:fixed; right:clamp(12px, 2.2vw, 28px); bottom:clamp(12px, 2.2vw, 28px); z-index:70; width:116px; height:116px; display:grid; place-items:center; text-decoration:none; border-radius:50%}
.wa::before{content:""; position:absolute; inset:0; border-radius:50%; background:var(--wa-soft); box-shadow:0 10px 30px rgba(15,43,37,.16)}
.wa-ring{position:absolute; inset:0; width:100%; height:100%; animation:wa-spin 18s linear infinite}
.wa-ring text{font:800 9.4px var(--sans); letter-spacing:.24em; fill:var(--wa-ink)}
.wa-btn{position:relative; display:grid; place-items:center; width:58px; height:58px; border-radius:50%; background:var(--wa); box-shadow:0 6px 18px rgba(37,211,102,.45); transition:transform .3s}
.wa:hover .wa-btn{transform:scale(1.07)}
.wa-btn i{font-size:31px; line-height:1; color:#fff}
@keyframes wa-spin{to{transform:rotate(360deg)}}
.wa-pop{position:fixed; right:clamp(12px, 2.2vw, 28px); bottom:calc(clamp(12px, 2.2vw, 28px) + 128px); z-index:70; width:min(290px, calc(100vw - 24px)); padding:20px 22px 18px; background:#fff; border:1px solid var(--line); box-shadow:0 18px 40px rgba(15,43,37,.16); opacity:0; visibility:hidden; transform:translateY(10px); transition:opacity .35s, transform .35s, visibility .35s}
.wa-pop.show{opacity:1; visibility:visible; transform:none}
.wa-pop b{display:block; font:400 21px/1.25 var(--serif); padding-right:24px}
.wa-pop p{margin-top:8px; font-size:15px; line-height:1.55; color:var(--muted)}
.wa-pop a{display:inline-flex; align-items:center; gap:8px; margin-top:14px; font:800 12.5px/1 var(--sans); letter-spacing:.16em; text-transform:uppercase; color:var(--wa-ink); text-decoration:none}
.wa-pop a svg{width:14px; height:14px}
.wa-pop .x{position:absolute; top:10px; right:10px; width:32px; height:32px; display:grid; place-items:center; border:0; background:none; cursor:pointer; color:var(--muted)}
.wa-pop .x svg{width:16px; height:16px}

/* lightbox */
.lightbox{position:fixed; inset:0; z-index:90; display:none; background:rgba(250,249,246,.98); color:var(--ink)}
.lightbox.open{display:grid; grid-template-rows:auto 1fr auto}
.lb-top{display:flex; justify-content:space-between; align-items:center; gap:16px; padding:18px var(--gutter)}
.lb-title b{display:block; font:400 22px/1.25 var(--serif)}
.lb-title span{font-size:15px; color:var(--muted)}
.lb-btn{display:grid; place-items:center; width:48px; height:48px; border:1px solid var(--line); background:#fff; color:var(--ink); cursor:pointer; flex:none}
.lb-btn:hover{border-color:var(--ink)}
.lb-btn svg{width:20px; height:20px}
.lb-stage{position:relative; display:grid; place-items:center; padding:0 clamp(72px, 8vw, 120px); min-height:0}
.lb-stage img{width:min(100%, 980px); height:100%; max-height:76vh; object-fit:contain}
.lb-prev, .lb-next{position:absolute; top:50%; transform:translateY(-50%)}
.lb-prev{left:var(--gutter)} .lb-next{right:var(--gutter)}
.lb-count{text-align:center; padding:18px; font:700 12px/1 var(--sans); letter-spacing:.22em; color:var(--muted)}

/* reveal */
.js .reveal{opacity:0; transform:translateY(20px); transition:opacity 1s ease, transform 1s cubic-bezier(.2,.6,.2,1)}
.js .reveal.in{opacity:1; transform:none}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .js .reveal{opacity:1; transform:none; transition:none}
  .wa-ring{animation:none}
  *{transition-duration:0s !important}
}

/* responsive */
@media (max-width:1080px){
  .footer-grid{grid-template-columns:1fr 1fr}
  .exp{grid-template-columns:repeat(2, 1fr)}
  .steps{grid-template-columns:1fr 1fr; row-gap:44px}
}
@media (max-width:900px){
  :root{--header:70px}
  .nav{display:none}
  .menu-btn{display:block}
  .brand svg{width:38px; height:29px}
  .wordmark b{font-size:18px}
  .hero{grid-template-columns:1fr; max-height:none; min-height:0}
  .hero-text{padding:48px var(--gutter) 56px}
  .hero-img{min-height:0; aspect-ratio:4/4.4}
  .hero-text .h-xl{max-width:none}
  .hero-badge{padding:18px 22px}
  .hero-badge b{font-size:44px}
  .intro, .split, .duo, .rows > div, .contact-grid{grid-template-columns:1fr}
  .intro aside{grid-template-columns:1fr 1fr; gap:24px}
  .intro .link{grid-column:1 / -1}
  .split .sticky{position:static}
  .cards, .pgrid, .details{grid-template-columns:1fr 1fr}
  .svc-row{grid-template-columns:1fr; gap:32px}
  .svc-row:nth-child(even) .svc-media{order:0}
  .svc-media img{aspect-ratio:4/3}
  .duo img{aspect-ratio:4/3}
  .page-img img{aspect-ratio:16/10}
  .wide img{aspect-ratio:16/10}
  .legal{grid-template-columns:1fr}
  .legal-toc{display:none}
  .lb-stage{padding:0 8px}
  .lb-prev, .lb-next{top:auto; bottom:-62px; transform:none}
}
@media (max-width:600px){
  body{font-size:16px}
  .cards, .pgrid, .details{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .exp li{padding:24px 18px}
  .svc-body ul{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr}
  .trio{grid-template-columns:1fr 1fr}
  .trio img:last-child{display:none}
  .hero-actions .btn{flex:1 1 100%}
  .wa{width:96px; height:96px}
  .wa-ring text{font-size:10.6px}
  .wa-btn{width:50px; height:50px}
  .wa-btn i{font-size:27px}
  .wa-pop{bottom:calc(clamp(12px, 2.2vw, 28px) + 106px)}
}
