/* GABINO VÁZQUEZ ABOGADOS — Visual identity based on the supplied GVA logo */
:root {
  --ink: #1d2033;
  --ink-soft: #45465a;
  --navy: #1c2140;
  --indigo: #434a81;
  --violet: #6c70ab;
  --lavender: #8997e2;
  --lilac: #e5e8fa;
  --paper: #fff;
  --cloud: #f8f8fc;
  --mist: #f0f2fa;
  --border: #dfe2ef;
  --muted: #71758a;
  --font-text: 'DM Sans', 'Manrope', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-display: 'Playfair Display', Georgia, 'Times New Roman', serif;
  --shadow: 0 28px 80px rgba(36, 42, 93, .12);
  --radius: 22px;
  --container: 1220px;
}
*,*::before,*::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 100px; }
body { margin:0; min-width: 320px; overflow-x:clip; background:var(--paper); color:var(--ink); font-family:var(--font-text); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
body.menu-open { overflow:hidden; }
a { color:inherit; text-decoration:none; }
button { font:inherit; }
button, a { -webkit-tap-highlight-color:transparent; }
button:focus-visible,a:focus-visible,video:focus-visible { outline:3px solid var(--lavender); outline-offset:4px; }
img,svg,video { display:block; }
img { max-width:100%; }
::selection { background:var(--lilac); color:var(--ink); }
.container { width:min(var(--container),calc(100% - 88px)); margin-inline:auto; }
.icon-defs { position:absolute; width:0; height:0; overflow:hidden; pointer-events:none; }
.icon { display:inline-block; flex-shrink:0; width:20px; height:20px; stroke:currentColor; stroke-width:1.75; stroke-linecap:round; stroke-linejoin:round; fill:none; }
.icon-small { width:15px; height:15px; }
.skip-link { position:fixed; z-index:10000; top:-90px; left:20px; padding:12px 20px; background:#fff; box-shadow:var(--shadow); border-radius:10px; }
.skip-link:focus { top:14px; }
.reading-progress { position:fixed; z-index:110; top:0; left:0; right:0; height:3px; transform:scaleX(0); transform-origin:0 50%; background:linear-gradient(90deg,var(--indigo),var(--lavender)); pointer-events:none; }

/* HEADER */
.site-header { position:sticky; z-index:100; top:0; width:100%; background:rgba(255,255,255,.94); border-bottom:1px solid rgba(95,103,150,.10); transition:box-shadow .3s ease,background .3s ease; backdrop-filter:blur(22px); -webkit-backdrop-filter:blur(22px); }
.site-header.is-scrolled { box-shadow:0 8px 32px rgba(36,42,93,.075); background:rgba(255,255,255,.97); }
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:26px; min-height:90px; }
.brand { flex-shrink:0; width:286px; display:flex; align-items:center; }
.brand img { width:100%; height:auto; mix-blend-mode:multiply; }
.desktop-nav { display:flex; justify-content:center; gap:clamp(15px,1.5vw,25px); align-items:center; white-space:nowrap; }
.nav-link { position:relative; font-size:12.5px; font-weight:650; color:#626779; letter-spacing:-.01em; transition:color .25s ease; padding:12px 0; }
.nav-link::after { position:absolute; content:""; bottom:2px; left:0; width:100%; height:2px; background:var(--violet); transform:scaleX(0); transition:transform .3s ease; transform-origin:left; }
.nav-link:hover,.nav-link.is-current { color:var(--navy); }
.nav-link.is-current::after,.nav-link:hover::after { transform:scaleX(1); }
.header-cta { display:inline-flex; flex-shrink:0; align-items:center; justify-content:center; gap:9px; padding:13px 15px; background:var(--navy); color:#fff; border-radius:999px; font-size:12px; font-weight:700; transition:background .25s ease,transform .25s ease; }
.header-cta .icon:first-child { width:19px; height:19px; }
.header-cta:hover { background:var(--indigo); transform:translateY(-2px); }
.menu-toggle,.mobile-nav { display:none; }

/* SHARED */
.section-pad { padding:112px 0; }
.section-index { display:flex; align-items:center; gap:13px; color:var(--violet); font-size:11px; letter-spacing:.19em; font-weight:800; }
.index-line { display:block; width:33px; height:1px; background:currentColor; }
.section-index-light { color:#d9ddff; }
.kicker { margin-bottom:20px; font-size:11px; font-weight:800; letter-spacing:.18em; color:var(--violet); }
.section-title { margin:22px 0 0; max-width:750px; font-family:var(--font-display); font-size:clamp(2.65rem,4.35vw,4.65rem); font-weight:500; letter-spacing:-.045em; line-height:1.18; }
.section-title span { color:var(--violet); font-style:italic; font-weight:400; }
.btn { display:inline-flex; align-items:center; justify-content:center; text-align:center; min-height:56px; padding:16px 25px; border:1px solid transparent; border-radius:999px; gap:18px; font-size:13px; line-height:1.35; font-weight:700; white-space:nowrap; transition:transform .3s ease, background .3s ease, box-shadow .3s ease,color .3s ease,border-color .3s ease; }
.btn .icon { width:17px; height:17px; transition:transform .25s ease; }
.btn:hover { transform:translateY(-3px); }
.btn:hover .icon:last-child { transform:translate(2px,-2px); }
.btn-primary { color:#fff; background:var(--indigo); box-shadow:0 10px 28px rgba(56,67,133,.17); }
.btn-primary:hover { background:var(--navy); box-shadow:0 15px 35px rgba(39,47,97,.25); }
.btn-outline { color:var(--navy); background:rgba(255,255,255,.8); border-color:#c9cce1; }
.btn-outline:hover { background:#fff; border-color:var(--violet); }
.text-link { display:inline-flex; align-items:center; gap:13px; width:max-content; max-width:100%; color:var(--indigo); font-size:13px; font-weight:800; border-bottom:1px solid rgba(67,74,129,.4); padding:0 0 7px; transition:gap .25s ease,color .25s ease; }
.text-link .icon { width:16px; height:16px; }
.text-link:hover { gap:18px; color:var(--navy); }
/* Safe enhancements: essential content must remain visible even if JS or observers fail. */
.reveal { opacity:1; transform:none; }
@keyframes content-enter { from { opacity:.86; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
.js .reveal.is-visible { animation: content-enter .65s cubic-bezier(.2,.7,.2,1) both; }
.js .reveal-delay-1 { animation-delay:.08s; }
.js .reveal-delay-2 { animation-delay:.14s; }
.js .reveal-delay-3 { animation-delay:.2s; }

/* HERO */
.hero { position:relative; overflow:hidden; isolation:isolate; background:linear-gradient(118deg,#fcfcff 0%,#f5f6fc 48%,#eaedfa 100%); }
.hero-wash { position:absolute; pointer-events:none; z-index:-1; border-radius:50%; filter:blur(6px); }
.hero-wash-a { width:550px; height:550px; top:-320px; left:-160px; background:radial-gradient(circle,rgba(151,160,223,.18),transparent 75%); }
.hero-wash-b { width:680px; height:680px; bottom:-430px; right:-260px; background:radial-gradient(circle,rgba(137,151,226,.25),transparent 72%); }
.hero-grid { position:relative; display:grid; grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr); align-items:center; gap:clamp(42px,6vw,95px); min-height:720px; padding-top:62px; padding-bottom:70px; }
.hero-content { position:relative; z-index:2; padding-bottom:13px; }
.eyebrow { display:flex; gap:13px; align-items:center; color:var(--indigo); font-size:10px; font-weight:800; letter-spacing:.215em; }
.eyebrow-line { width:34px; height:1px; background:var(--violet); }
.hero h1 { margin:23px 0 28px; max-width:690px; font-family:var(--font-display); font-size:clamp(3.3rem,4.75vw,5.5rem); line-height:1.115; font-weight:500; letter-spacing:-.055em; text-wrap:balance; }
.hero h1 em { font-weight:400; color:var(--violet); }
.heading-dot { color:var(--lavender); }
.hero-text-block { display:flex; flex-direction:column; gap:12px; max-width:540px; padding-left:23px; border-left:2px solid var(--lavender); }
.hero-service-label { margin:0; color:var(--indigo); font-size:11px; font-weight:800; letter-spacing:.14em; line-height:1.6; }
.hero-text-block p:last-child { margin:0; color:var(--ink-soft); font-size:15px; line-height:1.95; }
.hero-text-block strong { color:var(--navy); font-weight:750; }
.hero-actions { display:flex; flex-wrap:wrap; gap:12px; margin-top:32px; }
.hero-micro { display:flex; align-items:center; gap:9px; margin-top:41px; color:var(--muted); font-size:12px; letter-spacing:.025em; }
.micro-mark { width:7px; height:7px; background:var(--lavender); transform:rotate(45deg); }
.hero-visual { position:relative; isolation:isolate; max-width:500px; width:100%; margin-left:auto; padding:19px 19px 20px 0; }
.hero-image-frame { position:relative; overflow:hidden; aspect-ratio: .87; width:100%; border-radius:clamp(90px,14vw,180px) 18px 18px 18px; box-shadow:0 30px 65px rgba(38,45,89,.21); border:1px solid rgba(112,119,162,.2); }
.hero-image-frame img { display:block; width:100%; height:100%; object-fit:cover; object-position:center center; }
.hero-image-fade { position:absolute; inset:0; background:linear-gradient(180deg,transparent 70%,rgba(18,20,38,.12) 100%); pointer-events:none; }
.image-decor { position:absolute; z-index:-1; border:1px solid rgba(91,101,179,.35); }
.decor-back { width:69%; height:55%; top:0; right:0; background:linear-gradient(140deg,rgba(136,150,225,.34),rgba(118,116,141,.16)); border-radius:7px; transform:translate(11px,-5px); }
.decor-front { width:33%; height:25%; right:-1px; bottom:0; background:rgba(121,134,211,.24); border-radius:4px; }
.hero-floating-note { position:absolute; z-index:3; right:-22px; bottom:75px; display:flex; align-items:center; gap:11px; padding:20px 25px; background:rgba(255,255,255,.96); border:1px solid #e7e7f2; color:var(--navy); box-shadow:0 12px 42px rgba(25,30,69,.11); border-radius:2px 18px 2px 18px; font-size:10px; font-weight:800; line-height:1.55; letter-spacing:.14em; }
.note-rule { width:3px; height:29px; background:var(--lavender); }
.hero-bottom-line { display:flex; align-items:center; gap:21px; color:#9195ae; font-size:10px; font-weight:800; letter-spacing:.18em; padding:0 0 26px; }
.hero-bottom-line .line-long { height:1px; background:#d8dbea; flex:1; }

/* INTRO */
.intro-section { overflow:hidden; background:#fff; }
.intro-grid { display:grid; grid-template-columns: .78fr 1.22fr; gap:clamp(40px,8vw,140px); align-items:center; }
.intro-side { align-self:stretch; display:flex; flex-direction:column; justify-content:space-between; gap:55px; }
.intro-art { position:relative; isolation:isolate; width:min(360px,100%); aspect-ratio:1.15; margin-left:25px; }
.art-square { position:absolute; width:69%; height:59%; display:block; background:#818fdb; opacity:.75; }
.art-a { top:5%; left:4%; background:#8597e3; }
.art-b { top:18%; left:18%; background:linear-gradient(135deg,rgba(74,83,159,.7),rgba(104,93,117,.65)); }
.art-c { top:38%; left:36%; background:rgba(127,143,229,.66); }
.art-gva { position:absolute; z-index:2; top:20%; left:12%; color:var(--navy); font-family:var(--font-display); font-size:clamp(6rem,13vw,11rem); line-height:1; letter-spacing:-.18em; pointer-events:none; }
.intro-main { max-width:740px; }
.intro-main .section-title { max-width:685px; margin:0; }
.intro-lead { margin:30px 0 27px; color:var(--ink-soft); max-width:620px; font-size:clamp(16px,1.7vw,19px); line-height:1.9; }

/* SERVICES */
.services-section { background:var(--cloud); }
.services-head { display:flex; align-items:end; justify-content:space-between; gap:48px; margin-bottom:43px; }
.services-head p { margin:0 0 8px; max-width:300px; font-size:14px; line-height:1.9; color:var(--muted); }
.services-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.service-card { position:relative; display:flex; flex-direction:column; justify-content:space-between; min-height:252px; padding:25px 24px 23px; background:#fff; border:1px solid #e5e5f0; border-radius:15px; overflow:hidden; isolation:isolate; box-shadow:0 5px 18px rgba(44,50,89,.025); transition:box-shadow .35s ease,border-color .35s ease,transform .35s ease; }
.service-card::before { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(155deg,rgba(235,237,255,.85),rgba(255,255,255,0) 65%); opacity:0; transition:opacity .3s ease; }
.service-card:hover { transform:translateY(-6px); border-color:#b7bde4; box-shadow:0 22px 50px rgba(43,48,94,.10); }
.service-card:hover::before { opacity:1; }
.service-top { display:flex; justify-content:space-between; align-items:center; }
.service-number { font-family:var(--font-display); font-size:18px; color:#8794df; }
.service-plus { width:18px; height:18px; color:#b6bed6; stroke-width:1.4; }
.service-card h3 { margin:auto 0 27px; padding-top:32px; color:var(--navy); font-size:clamp(16px,1.35vw,19px); line-height:1.55; font-weight:650; letter-spacing:-.025em; overflow-wrap:break-word; }
.service-bottom-line { display:block; width:30px; height:2px; background:var(--lavender); transition:width .35s ease; }
.service-card:hover .service-bottom-line { width:70px; }
.services-footer { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-top:31px; }
.services-footer > span { font-size:10px; font-weight:800; color:#8990a8; letter-spacing:.15em; }

/* STATEMENT */
.statement-section { position:relative; isolation:isolate; overflow:hidden; padding:110px 0 122px; color:#fff; background:linear-gradient(115deg,#1e2447 0%,#303869 52%,#535b93 100%); }
.statement-shape { position:absolute; border:1px solid rgba(183,190,250,.14); pointer-events:none; z-index:-1; transform:rotate(18deg); }
.statement-shape-a { width:550px; height:550px; right:-90px; top:-380px; background:linear-gradient(135deg,rgba(165,176,246,.14),transparent); }
.statement-shape-b { width:390px; height:390px; left:-250px; bottom:-230px; background:rgba(150,165,230,.08); }
.statement-content { max-width:1040px; }
.statement-content h2 { margin:26px 0 25px; font-family:var(--font-display); font-size:clamp(2.65rem,5.2vw,5.65rem); line-height:1.19; font-weight:400; letter-spacing:-.04em; }
.statement-content h2 em { color:#b5bff8; font-weight:400; }
.statement-content p { color:#e6e9fd; font-size:16px; line-height:1.85; max-width:640px; margin:0 0 34px; }
.statement-link { color:#fff; display:inline-flex; gap:16px; align-items:center; font-size:13px; font-weight:750; border-bottom:1px solid rgba(255,255,255,.6); padding-bottom:9px; transition:gap .25s ease; }
.statement-link:hover { gap:22px; }
.statement-link .icon { width:17px; height:17px; }

/* GALLERY */
.media-section { background:#fff; }
.media-head { display:flex; align-items:flex-end; justify-content:space-between; gap:35px; margin-bottom:41px; }
.media-head p { margin:0 0 9px; color:var(--muted); font-size:14px; }
.gallery-grid { display:grid; grid-template-columns:1.05fr 1fr 1fr; align-items:end; gap:21px; }
.gallery-card { display:block; min-width:0; overflow:hidden; border:1px solid #dcdff0; border-radius:17px; background:#fff; box-shadow:0 16px 39px rgba(49,54,94,.075); transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease; }
.gallery-card:hover { transform:translateY(-7px); box-shadow:0 27px 49px rgba(40,47,85,.14); border-color:#b2b9e5; }
.gallery-image-wrap { display:block; overflow:hidden; position:relative; aspect-ratio:1/1; background:var(--mist); }
.gallery-card-portrait .gallery-image-wrap { aspect-ratio:4/5; }
.gallery-image-wrap::after { position:absolute; content:""; inset:0; pointer-events:none; box-shadow:inset 0 0 32px rgba(95,103,157,.15); }
.gallery-image-wrap img { width:100%; height:100%; object-fit:contain; transition:transform .6s cubic-bezier(.16,.84,.24,1); }
.gallery-card-portrait .gallery-image-wrap img { object-fit:cover; }
.gallery-card:hover .gallery-image-wrap img { transform:scale(1.035); }
.gallery-info { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:19px 18px 21px; }
.gallery-info > span:first-child { display:flex; flex-direction:column; gap:7px; min-width:0; }
.gallery-info small { color:var(--violet); font-size:10px; font-weight:800; letter-spacing:.14em; }
.gallery-info strong { font-size:14px; line-height:1.4; font-weight:700; color:var(--navy); }
.gallery-open { display:grid; flex-shrink:0; width:38px; height:38px; border:1px solid var(--border); border-radius:50%; place-items:center; color:var(--indigo); transition:background .25s ease,color .25s ease; }
.gallery-card:hover .gallery-open { background:var(--indigo); color:#fff; }
.gallery-open .icon { width:16px; height:16px; }

/* VIDEO */
.video-section { background:linear-gradient(125deg,#f0f2fb,#f8f8fc); overflow:hidden; }
.video-grid { display:grid; grid-template-columns:1fr .9fr; align-items:center; gap:clamp(40px,9vw,155px); }
.video-copy { display:flex; flex-direction:column; align-items:flex-start; align-self:stretch; justify-content:center; }
.video-copy .section-title { max-width:600px; }
.video-copy p { color:var(--ink-soft); font-size:17px; margin:28px 0 0; line-height:1.8; }
.video-copy-bottom { display:flex; align-items:center; gap:19px; color:var(--violet); width:100%; max-width:400px; margin-top:95px; font:400 40px/1 var(--font-display); letter-spacing:-.07em; }
.video-copy-rule { height:1px; flex:1; background:#ccd2ee; }
.video-panel { position:relative; max-width:375px; width:100%; margin-inline:auto; padding:16px; background:linear-gradient(150deg,#fff,#e8eafa); border:1px solid rgba(156,168,214,.3); border-radius:23px; box-shadow:0 32px 70px rgba(34,41,95,.17); }
.video-frame { position:relative; overflow:hidden; aspect-ratio:9/16; border-radius:12px; background:#1c2033; }
.video-frame video { width:100%; height:100%; object-fit:contain; background:#1c2033; }
.video-play { position:absolute; z-index:3; inset:0; margin:auto; display:grid; place-items:center; width:81px; height:81px; color:var(--navy); background:rgba(255,255,255,.94); border:1px solid rgba(255,255,255,.65); border-radius:50%; box-shadow:0 9px 31px rgba(0,0,0,.2); cursor:pointer; transition:transform .25s ease, opacity .25s ease; }
.video-play .icon { width:32px; height:32px; fill:currentColor; stroke-width:1.4; transform:translateX(2px); }
.video-play:hover { transform:scale(1.075); }
.video-frame.is-playing .video-play { opacity:0; pointer-events:none; }
.video-caption { display:flex; justify-content:space-between; gap:10px; padding:15px 2px 1px; color:var(--indigo); font-size:10px; font-weight:800; letter-spacing:.12em; }
.caption-slash { padding-inline:5px; color:#a1a6c7; }

/* CONTACT */
.contact-section { background:#fff; padding:110px 0 100px; }
.contact-feature { position:relative; isolation:isolate; display:grid; grid-template-columns:1fr .3fr; overflow:hidden; min-height:450px; border-radius:21px; background:linear-gradient(120deg,#292f57,#525d99); box-shadow:0 25px 60px rgba(44,52,110,.13); color:#fff; }
.contact-feature-content { z-index:2; padding:72px 77px; }
.contact-feature h2 { margin:22px 0; max-width:800px; font:400 clamp(2.85rem,5.2vw,5.4rem)/1.18 var(--font-display); letter-spacing:-.05em; }
.contact-feature h2 em { color:#c6cdfb; }
.contact-feature p { margin:0 0 31px; max-width:660px; color:#e2e7ff; line-height:1.8; font-size:15px; }
.contact-feature-mark { align-self:center; justify-self:center; padding-right:28px; font:400 clamp(8rem,15vw,14rem)/1 var(--font-display); letter-spacing:-.14em; color:rgba(197,206,255,.085); user-select:none; }
.contact-bg-square { position:absolute; z-index:-1; border:1px solid rgba(224,224,255,.13); width:380px; height:380px; transform:rotate(20deg); }
.contact-bg-a { right:-100px; top:-205px; background:rgba(156,166,230,.10); }
.contact-bg-b { right:90px; bottom:-310px; background:rgba(156,166,230,.09); }
.btn-light { background:#fff; color:var(--navy); }
.btn-light:hover { background:#e9ebff; }
.btn-light .icon { width:18px; height:18px; }
.contact-details-grid { display:grid; grid-template-columns:1fr 1fr; gap:30px; padding-top:30px; }
.contact-detail { display:flex; flex-direction:column; align-items:flex-start; min-height:226px; padding:35px 40px; background:#f8f9fd; border:1px solid #e6e8f2; border-radius:15px; }
.contact-detail-heading { display:flex; align-items:center; gap:11px; margin-bottom:21px; color:var(--indigo); font-size:11px; font-weight:800; letter-spacing:.17em; }
.contact-detail-heading .icon { width:20px; height:20px; }
.contact-big-link { display:inline-flex; align-items:center; gap:15px; font-family:var(--font-display); color:var(--navy); font-size:clamp(1.7rem,3.1vw,2.8rem); letter-spacing:-.04em; }
.contact-big-link .icon { width:20px; height:20px; color:var(--violet); }
.contact-big-link:hover { color:var(--indigo); }
.contact-detail p { color:var(--muted); font-size:13px; margin:12px 0 0; }
.contact-detail address { margin:0 0 20px; color:var(--ink-soft); font-size:15px; line-height:1.8; font-style:normal; }

/* FOOTER */
.site-footer { background:#1c2140; color:#fff; }
.footer-main { display:grid; grid-template-columns:1.4fr .7fr 1fr; gap:clamp(35px,7vw,120px); padding:75px 0 67px; }
.footer-brand-block { max-width:335px; }
.footer-logo { display:block; width:280px; max-width:100%; padding:5px 7px; background:#fff; border-radius:5px; }
.footer-logo img { width:100%; height:auto; }
.footer-brand-block p { font-size:14px; line-height:1.75; color:#bfc5e7; margin:24px 0 0; }
.footer-heading { color:#c6cdf1; font-size:10px; font-weight:800; letter-spacing:.19em; margin-bottom:23px; }
.footer-links,.footer-contact { display:flex; flex-direction:column; align-items:flex-start; }
.footer-links a,.footer-contact a,.footer-contact p { font-size:13px; line-height:1.7; margin:0 0 11px; color:#dce0f4; }
.footer-links a:hover,.footer-contact a:hover { color:#fff; text-decoration:underline; text-underline-offset:4px; }
.footer-contact p { max-width:300px; color:#b9c0e3; }
.footer-bottom { display:flex; justify-content:space-between; align-items:center; gap:15px; padding:22px 0 31px; border-top:1px solid rgba(209,216,255,.13); color:#a9b1d4; font-size:11px; letter-spacing:.04em; }
.footer-bottom a { display:inline-flex; align-items:center; gap:9px; color:#dce0ff; }
.footer-bottom a .icon { width:14px; height:14px; }

/* FLOATING CONTACT */
.floating-whatsapp { position:fixed; z-index:90; right:26px; bottom:25px; display:flex; align-items:center; gap:10px; color:#fff; background:var(--indigo); border:1px solid rgba(255,255,255,.16); padding:14px 20px; box-shadow:0 12px 35px rgba(27,33,83,.28); border-radius:999px; font-size:13px; font-weight:800; transition:transform .25s ease,background .25s ease; }
.floating-whatsapp:hover { transform:translateY(-4px); background:var(--navy); }
.floating-whatsapp .icon { width:21px; height:21px; }

/* LIGHTBOX */
.image-lightbox { inset:0; overflow:visible; border:0; padding:0; margin:auto; width:min(92vw,790px); max-height:92vh; background:transparent; color:#fff; }
.image-lightbox::backdrop { background:rgba(14,18,39,.89); backdrop-filter:blur(6px); }
.lightbox-inner { position:relative; max-height:92vh; display:flex; align-items:center; flex-direction:column; justify-content:center; }
.lightbox-inner img { max-width:100%; max-height:calc(92vh - 62px); width:auto; height:auto; object-fit:contain; background:#fff; border:1px solid rgba(226,231,255,.45); border-radius:7px; box-shadow:0 24px 65px rgba(0,0,0,.35); }
.lightbox-close { position:absolute; z-index:2; top:11px; right:11px; display:grid; width:39px; height:39px; place-items:center; border:1px solid #dfe1f0; border-radius:50%; background:#fff; color:var(--navy); cursor:pointer; }
.lightbox-bottom { width:100%; display:flex; justify-content:space-between; gap:20px; align-items:center; margin-top:15px; font-size:12px; }
.lightbox-bottom span:last-child { font-size:10px; letter-spacing:.13em; color:#ccd3ed; }

/* INTERMEDIATE DESKTOP / TABLET */
@media (max-width:1230px) {
  .brand { width:247px; }
  .header-inner { gap:19px; }
  .desktop-nav { gap:14px; }
  .nav-link { font-size:11.6px; }
  .header-cta { padding:13px 15px; }
  .hero-grid { gap:45px; }
  .hero h1 { font-size:clamp(3.2rem,5vw,4.5rem); }
}
@media (max-width:1120px) {
  .header-inner { min-height:82px; }
  .brand { width:275px; margin-right:auto; }
  .desktop-nav { display:none; }
  .header-cta { margin-left:auto; }
  .menu-toggle { display:grid; width:45px; height:45px; flex-shrink:0; place-items:center; border:1px solid #e0e3ef; border-radius:50%; background:#fff; color:var(--navy); cursor:pointer; }
  .menu-toggle .icon { width:23px; height:23px; }
  .menu-toggle .icon-closed { display:none; }
  .menu-toggle[aria-expanded="true"] .icon-open { display:none; }
  .menu-toggle[aria-expanded="true"] .icon-closed { display:block; }
  .mobile-nav { display:block; position:absolute; top:100%; left:0; right:0; background:rgba(255,255,255,.99); border-top:1px solid #e4e6f2; border-bottom:1px solid #dce0eb; box-shadow:0 24px 39px rgba(30,34,68,.13); max-height:0; overflow:hidden; visibility:hidden; transition:max-height .32s ease,visibility .32s ease; }
  .mobile-nav.is-open { max-height:520px; visibility:visible; overflow-y:auto; }
  .mobile-nav-inner { display:flex; flex-direction:column; width:min(100% - 70px,var(--container)); margin:auto; padding:12px 0 23px; }
  .mobile-nav-inner > a { display:flex; align-items:center; justify-content:space-between; padding:16px 0; color:var(--navy); border-bottom:1px solid #eff0f6; font-size:15px; font-weight:700; }
  .mobile-nav-inner > a .icon { width:17px; height:17px; color:var(--violet); }
  .mobile-nav-inner > a.mobile-nav-cta { border:0; color:var(--indigo); }
  .services-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .service-card { min-height:204px; }
}
@media (max-width:880px) {
  .container { width:min(var(--container),calc(100% - 50px)); }
  .section-pad { padding:88px 0; }
  .hero-grid { grid-template-columns:1fr; min-height:unset; padding-top:65px; padding-bottom:35px; gap:48px; }
  .hero-content { max-width:690px; }
  .hero h1 { max-width:760px; font-size:clamp(3.5rem,8vw,5.45rem); }
  .hero-visual { max-width:515px; margin-inline:auto; }
  .hero-floating-note { right:-20px; }
  .hero-bottom-line { margin-top:10px; }
  .intro-grid { grid-template-columns:1fr; gap:30px; }
  .intro-side { gap:25px; }
  .intro-art { width:220px; aspect-ratio:1.2; margin-left:3px; }
  .art-gva { font-size:6.8rem; }
  .intro-main { max-width:none; }
  .gallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; align-items:stretch; }
  .gallery-card-portrait { grid-row:span 2; }
  .gallery-card-portrait .gallery-image-wrap { aspect-ratio:4/6.2; }
  .video-grid { gap:40px; }
  .contact-feature { grid-template-columns:1fr .1fr; }
  .contact-feature-content { padding:55px 42px; }
  .contact-feature-mark { font-size:7.5rem; }
  .footer-main { grid-template-columns:1fr 1fr; gap:45px; }
  .footer-brand-block { grid-column:1/-1; }
}
@media (max-width:620px) {
  :root { --radius:18px; }
  html { scroll-padding-top:78px; }
  .container { width:calc(100% - 38px); }
  .header-inner { min-height:69px; gap:10px; }
  .brand { width:clamp(170px,49vw,245px); }
  .header-cta { width:40px; height:40px; padding:0; border-radius:50%; gap:0; }
  .header-cta span,.header-cta .icon-small { display:none; }
  .header-cta .icon:first-child { width:21px; height:21px; }
  .menu-toggle { width:40px; height:40px; }
  .mobile-nav-inner { width:calc(100% - 42px); }
  .section-pad { padding:74px 0; }
  .hero-grid { padding-top:49px; padding-bottom:34px; gap:39px; }
  .eyebrow { font-size:9px; letter-spacing:.15em; gap:9px; }
  .eyebrow-line { width:23px; }
  .hero h1 { margin:23px 0 26px; font-size:clamp(2.9rem,11.2vw,4.3rem); line-height:1.14; letter-spacing:-.05em; }
  .hero-text-block { padding-left:15px; }
  .hero-text-block p:last-child { font-size:14px; line-height:1.8; }
  .hero-service-label { font-size:10px; letter-spacing:.1em; }
  .hero-actions { gap:11px; margin-top:29px; }
  .hero-actions .btn { flex:1 1 100%; justify-content:space-between; width:100%; }
  .hero-micro { margin-top:25px; font-size:11px; }
  .hero-visual { width:calc(100% - 20px); padding:12px 10px 15px 0; }
  .hero-image-frame { border-radius:100px 14px 14px 14px; }
  .hero-floating-note { right:-11px; bottom:42px; padding:13px 17px; font-size:9px; }
  .hero-bottom-line { font-size:8px; letter-spacing:.1em; gap:10px; }
  .hero-bottom-line .line-long { min-width:25px; }
  .section-index { font-size:9.5px; gap:9px; letter-spacing:.15em; }
  .index-line { width:23px; }
  .kicker { font-size:10px; }
  .section-title { font-size:clamp(2.5rem,10vw,3.6rem); line-height:1.18; }
  .intro-art { width:170px; margin-left:0; }
  .art-gva { font-size:5rem; }
  .intro-main .section-title { margin-top:0; }
  .intro-lead { margin:20px 0 21px; font-size:15px; line-height:1.85; }
  .services-head { display:block; margin-bottom:30px; }
  .services-head p { max-width:530px; margin:15px 0 0; font-size:13px; }
  .services-grid { grid-template-columns:1fr; gap:11px; }
  .service-card { min-height:152px; padding:19px 21px 18px; }
  .service-card h3 { font-size:17px; margin:0 0 21px; padding-top:14px; }
  .service-number { font-size:15px; }
  .services-footer { margin-top:27px; flex-direction:column; align-items:stretch; }
  .services-footer > span { font-size:9px; }
  .statement-section { padding:83px 0 89px; }
  .statement-content h2 { font-size:clamp(2.55rem,10vw,4rem); margin:23px 0; }
  .statement-content p { font-size:14px; line-height:1.8; }
  .statement-link { font-size:12px; gap:11px; }
  .media-head { display:block; margin-bottom:25px; }
  .media-head p { margin-top:12px; }
  .gallery-grid { grid-template-columns:1fr; }
  .gallery-card-portrait { grid-row:auto; }
  .gallery-card-portrait .gallery-image-wrap { aspect-ratio:4/4.7; }
  .gallery-card .gallery-image-wrap { max-height:475px; }
  .gallery-info { padding:16px 17px 18px; }
  .video-grid { grid-template-columns:1fr; gap:25px; }
  .video-copy p { margin-top:16px; font-size:14px; }
  .video-copy-bottom { display:none; }
  .video-panel { width:min(100%,363px); }
  .contact-section { padding:70px 0 75px; }
  .contact-feature { display:block; min-height:unset; }
  .contact-feature-content { padding:49px 24px 53px; }
  .contact-feature h2 { font-size:clamp(2.55rem,10vw,4.1rem); }
  .contact-feature p { font-size:14px; }
  .contact-feature-mark { position:absolute; right:-22px; bottom:-10px; z-index:-1; font-size:7rem; }
  .contact-feature .btn { white-space:normal; width:100%; min-height:58px; padding:12px 17px; gap:11px; justify-content:center; }
  .contact-details-grid { grid-template-columns:1fr; gap:12px; padding-top:15px; }
  .contact-detail { min-height:auto; padding:27px 25px; }
  .contact-detail address { font-size:14px; }
  .contact-big-link { font-size:clamp(1.75rem,8vw,2.7rem); }
  .footer-main { grid-template-columns:1fr; gap:28px; padding:55px 0 42px; }
  .footer-brand-block { grid-column:auto; }
  .footer-logo { width:250px; }
  .footer-links,.footer-contact { gap:0; }
  .footer-bottom { padding-bottom:100px; font-size:10px; }
  .floating-whatsapp { right:17px; bottom:16px; padding:12px 17px; font-size:12px; }
  .lightbox-bottom span:last-child { display:none; }
}
@media (max-width:360px) {
  .container { width:calc(100% - 30px); }
  .brand { width:160px; }
  .header-inner { gap:7px; }
  .hero h1 { font-size:2.7rem; }
  .hero-floating-note { right:0; }
  .contact-feature-content { padding-inline:18px; }
  .contact-feature .btn { font-size:12px; }
}
@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; transition-duration:.01ms!important; }
  .js .reveal.is-visible { animation:none!important; opacity:1!important; transform:none!important; }
}
