/* ===== CDEF Buildcon - shared design system ===== */
:root{
  --ink:#FFFFFF; --ink-raised:#F6F4EE; --ink-card:#FCFBF8;
  --paper:#F3EFE5; --paper-dim:#C9C2B0;
  --line:rgba(28,32,36,0.10); --line-strong:rgba(28,32,36,0.18);
  --gold:#B8862B; --gold-deep:#96691F; --gold-soft:#FBF0D8;
  --on-gold:#1A1204;
  --text:#1C2024; --text-soft:#474B51; --text-faint:#63676E;
  --shadow: 0 1px 2px rgba(28,32,36,0.05), 0 20px 40px -20px rgba(28,32,36,0.18);
  --serif:"Fraunces","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Work Sans","Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono","SFMono-Regular",Menlo,Consolas,monospace;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;font-size:18px;}
body{margin:0;background:var(--ink);color:var(--text);font-family:var(--sans);font-size:1rem;font-weight:500;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden;}
img,svg{max-width:100%;display:block;}
a{color:inherit;text-decoration:none;}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.12;margin:0;color:var(--text);}
p{margin:0;} ul{margin:0;padding:0;list-style:none;}
button{font-family:inherit;cursor:pointer;} input,select,textarea{font-family:inherit;font-size:0.95rem;}
.mono{font-family:var(--mono);}
.eyebrow{font-family:var(--mono);font-size:0.7rem;letter-spacing:0.14em;text-transform:uppercase;color:var(--gold);display:flex;align-items:center;gap:0.6em;}
.eyebrow::before{content:"";width:20px;height:1px;background:var(--gold);display:inline-block;}
.eyebrow.center{justify-content:center;} .eyebrow.center::before{display:none;}
.wrap{max-width:1160px;margin:0 auto;padding-inline:24px;}
.sect{padding-block:64px;}
@media (max-width:720px){ .sect{padding-block:44px;} }
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 24px;border-radius:2px;font-size:0.88rem;font-weight:600;border:1px solid transparent;white-space:nowrap;transition:transform .15s ease,background .15s ease,border-color .15s ease;}
.btn-primary{background:var(--gold);color:var(--on-gold);}
.btn-primary:hover{background:var(--gold-deep);}
.btn-ghost{border-color:var(--line-strong);color:var(--text);}
.btn-ghost:hover{border-color:var(--gold);color:var(--gold);}
.hero .btn-ghost,.page-header .btn-ghost,.final-cta .btn-ghost{border-color:rgba(255,255,255,0.45);color:#fff;}
.hero .btn-ghost:hover,.page-header .btn-ghost:hover,.final-cta .btn-ghost:hover{border-color:var(--gold);color:var(--gold);}
.btn-sm{padding:9px 16px;font-size:0.8rem;}
/* .btn is white-space:nowrap by default, which is fine for short, fixed
   button labels, but a few buttons wrap a dynamically-built label (e.g.
   "View All <category> Projects" on service pages) whose length varies
   by category - on narrow screens a long category name can push a
   nowrap button past the edge of the viewport. .btn-wrap opts a button
   out of nowrap so long labels wrap onto a second line and stay inside
   the viewport, instead of overflowing it. */
.btn-wrap{white-space:normal;max-width:100%;text-align:center;}
.btn:active{transform:translateY(1px);}
.btn-block{width:100%;}
.btn svg{width:14px;height:14px;flex:none;}
.link svg{width:13px;height:13px;flex:none;}

header.site{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(255,255,255,0.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);box-shadow:0 10px 28px -18px rgba(28,32,36,0);transition:box-shadow .2s ease;}
header.site.solid{box-shadow:0 10px 28px -18px rgba(28,32,36,0.22);}
/* The header's own content row spans much closer to the true edges of the
   browser window than the 1160px reading-width ".wrap" used for body
   copy - otherwise the logo and menu sit in a narrow centered column with
   large empty margins on both sides, which reads as the whole header
   (including the nav) floating in the middle of the screen rather than
   the nav being pinned to the right edge. */
header.site .wrap{max-width:1760px;padding-inline:40px;}
@media (max-width:760px){ header.site .wrap{padding-inline:20px;} }
.utility-bar{background:var(--ink-raised);border-bottom:1px solid var(--line);overflow:hidden;transition:max-height .2s ease,padding .2s ease,opacity .2s ease;max-height:44px;}
header.site.solid .utility-bar{max-height:0;opacity:0;border-bottom-color:transparent;}
/* Grid (not flex+space-between) so the ticker can sit truly centred in a
   third column, independent of how wide the hours/phone/button content on
   either side happens to be. */
.utility-bar-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding-block:8px;}
.utility-left{display:flex;align-items:center;gap:22px;justify-self:start;}
.utility-phone{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-weight:600;font-size:0.82rem;color:var(--text);white-space:nowrap;}
.utility-phone:hover{color:var(--gold);}
.utility-phone svg{width:14px;height:14px;stroke:var(--gold);flex:none;}
.utility-hours{display:flex;align-items:center;gap:7px;font-size:0.78rem;color:var(--text-soft);white-space:nowrap;}
.utility-hours svg{width:14px;height:14px;stroke:var(--gold);flex:none;}
.utility-right{display:flex;align-items:center;gap:16px;justify-self:end;}
.utility-estimate-btn{white-space:nowrap;}
/* "Concept -> Design -> Execution -> Finish": a small marketing-style
   sequence in the middle of the utility bar. Pure CSS (no JS dependency,
   so it still shows if a script fails to load) - each word pulses gold
   and slightly larger in turn, on a loop, like a chain of stage lights. */
.utility-ticker{display:flex;align-items:center;gap:8px;justify-self:center;font-family:var(--mono);font-size:0.72rem;letter-spacing:0.06em;text-transform:uppercase;white-space:nowrap;}
.utility-ticker-sep{color:var(--line-strong);font-size:0.7rem;}
.utility-ticker span:not(.utility-ticker-sep){display:inline-block;color:var(--text-faint);font-weight:500;animation:utilityTickerPulse 4.8s ease-in-out infinite;}
.utility-ticker span:nth-child(1){animation-delay:0s;}
.utility-ticker span:nth-child(3){animation-delay:1.2s;}
.utility-ticker span:nth-child(5){animation-delay:2.4s;}
.utility-ticker span:nth-child(7){animation-delay:3.6s;}
@keyframes utilityTickerPulse{
  0%, 4%{ color:var(--gold); font-weight:700; transform:scale(1.1); }
  20%, 100%{ color:var(--text-faint); font-weight:500; transform:scale(1); }
}
@media (prefers-reduced-motion:reduce){ .utility-ticker span{animation:none !important;} }
@media (max-width:1180px){ .utility-ticker{display:none;} }
@media (max-width:760px){ .utility-bar{display:none;} }
.header-row{display:flex;align-items:center;justify-content:flex-start;gap:20px;padding-block:14px;transition:padding .2s ease;}
header.site.solid .header-row{padding-block:10px;}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.brand-mark{flex:none;height:58px;padding:6px 12px;border-radius:6px;display:flex;align-items:center;justify-content:center;background:var(--paper);box-shadow:0 2px 10px -4px rgba(0,0,0,0.5);}
footer .brand-mark{height:52px;}
.brand-mark img{display:block;height:100%;width:auto;}
.brand-text{font-family:var(--serif);font-weight:600;font-size:1.2rem;color:var(--text);}
.brand-text small{display:block;font-family:var(--mono);font-size:0.56rem;letter-spacing:0.15em;color:var(--gold);font-weight:500;text-transform:uppercase;margin-top:2px;}
footer .brand-mark{background:var(--paper);}
nav.primary{display:flex;align-items:center;gap:19px;margin-left:auto;}
nav.primary a{font-size:0.87rem;font-weight:600;color:var(--text);opacity:0.92;white-space:nowrap;}
nav.primary a:hover,nav.primary a.active{color:var(--gold);opacity:1;}
.header-actions{display:flex;align-items:center;gap:20px;margin-left:auto;}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line-strong);border-radius:2px;background:none;align-items:center;justify-content:center;color:var(--text);}
/* nav.primary's own content (white-space:nowrap links, no shrink) needs ~822px+
   at minimum - below that it doesn't wrap or compress, it silently overflows the
   header row and gets clipped by the sitewide overflow-x:hidden, cutting off the
   right-most links (Contact/Resources) with no visible scrollbar as a clue. That
   overflow starts well above the old 960px cutoff (still happens up to ~1075px
   viewport width, covering common tablet-landscape/small-laptop widths like
   1024px), so the switch to the burger menu needs to happen earlier. */
@media (max-width:1140px){ nav.primary{display:none;} .burger{display:flex;} }
.mobile-nav{position:fixed;inset:0;z-index:200;background:var(--ink);transform:translateX(100%);transition:transform .3s ease;padding:26px 24px;display:flex;flex-direction:column;overflow-y:auto;}
.mobile-nav.open{transform:translateX(0);}
.mobile-nav .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px;}
.mobile-nav ul{display:flex;flex-direction:column;gap:2px;}
.mobile-nav a{font-family:var(--serif);font-size:1.35rem;padding-block:10px;border-bottom:1px solid var(--line);display:block;}
.mobile-nav .foot{margin-top:24px;display:flex;flex-direction:column;gap:14px;}
.mobile-sub{padding-left:14px;border-bottom:1px solid var(--line);}
.mobile-sub .sub-heading{font-family:var(--mono);font-size:0.66rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--gold);padding-top:12px;}
.mobile-sub li.sub a{font-family:var(--sans);font-size:0.92rem;padding-block:8px;border-bottom:none;color:var(--text-soft);}

/* Desktop nav dropdowns */
.nav-item{position:relative;display:flex;}
.nav-item > a{display:flex;align-items:center;gap:4px;}
.nav-caret{width:12px;height:12px;stroke:currentColor;opacity:0.7;transition:transform .15s ease;}
.nav-item:hover .nav-caret{transform:rotate(180deg);}
.nav-dropdown{position:absolute;top:100%;left:50%;margin-top:10px;transform:translateX(-50%) translateY(-6px);background:var(--ink-card);border:1px solid var(--line-strong);border-radius:6px;box-shadow:var(--shadow);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s ease,transform .15s ease,visibility .15s;z-index:150;}
.nav-item:hover .nav-dropdown,.nav-item.dropdown-open .nav-dropdown{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);}
.nav-dropdown-simple{left:0;transform:translateY(-6px);min-width:200px;padding:10px;display:flex;flex-direction:column;}
.nav-item:hover .nav-dropdown-simple,.nav-item.dropdown-open .nav-dropdown-simple{transform:translateY(0);}
.nav-dropdown-simple a{padding:9px 12px;border-radius:4px;font-size:0.85rem;color:var(--text-soft);white-space:nowrap;}
.nav-dropdown-simple a:hover{background:var(--ink-raised);color:var(--gold);}
.nav-dropdown-mega{left:50%;padding:22px;}
.nav-mega-grid{display:grid;grid-template-columns:repeat(3,232px);gap:0;}
/* Columns stretch to equal height by grid default, so a full-height
   border-right (rather than gap-only spacing) reads as a clean divider
   running the full depth of the submenu, not just between the titles. */
.nav-mega-col{display:flex;flex-direction:column;gap:2px;padding:0 20px;border-right:1px solid var(--line);}
.nav-mega-col:first-child{padding-left:0;}
.nav-mega-col:last-child{padding-right:0;border-right:none;}
.nav-mega-title{font-family:var(--serif);font-weight:600;font-size:0.88rem;color:var(--gold);padding-bottom:8px;margin-bottom:6px;border-bottom:1px solid var(--line);white-space:normal;line-height:1.25;}
.nav-mega-col a:not(.nav-mega-title){padding:6px 4px;border-radius:4px;font-size:0.78rem;line-height:1.35;color:var(--text-soft);white-space:normal;}
.nav-mega-col a:not(.nav-mega-title):hover{color:var(--gold);background:var(--ink-raised);}

/* Hero v2: two-column, form sits beside copy, no overlap */
.hero{position:relative;min-height:760px;display:flex;align-items:center;color:#fff;overflow:hidden;padding-block:118px 56px;}
.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;}
.hero-scrim{position:absolute;inset:0;z-index:1;background:linear-gradient(100deg, rgba(8,9,10,0.96) 0%, rgba(8,9,10,0.9) 30%, rgba(8,9,10,0.68) 58%, rgba(8,9,10,0.5) 75%, rgba(8,9,10,0.75) 100%),linear-gradient(0deg, rgba(8,9,10,0.45) 0%, rgba(8,9,10,0) 30%);}
.hero-inner{position:relative;z-index:2;width:100%;display:grid;grid-template-columns:1.15fr 0.85fr;gap:44px;align-items:center;}
@media (max-width:980px){ .hero-inner{grid-template-columns:1fr;} }
.hero h1,.hero .hero-slide-title{color:#fff;font-size:clamp(2.2rem,4.6vw,3.7rem);margin-top:14px;max-width:16ch;font-family:var(--serif);font-weight:600;line-height:1.12;}
.hero h1 em,.hero .hero-slide-title em{font-style:italic;color:var(--gold);}
.hero .lede{max-width:44ch;margin-top:14px;font-size:1.02rem;color:#DCD5C4;}
.hero-cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px;}
.hero-trust{display:flex;flex-wrap:wrap;gap:16px 24px;margin-top:34px;}
.hero-trust li{display:flex;align-items:center;gap:7px;font-size:0.78rem;font-weight:500;color:#E7E2D4;}
.hero-trust li svg{width:14px;height:14px;stroke:var(--gold);flex:none;}

/* Rotating hero banner */
.hero-slides{position:absolute;inset:0;}
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.1s ease-in-out;}
.hero-slide.active{opacity:1;z-index:1;}
.hero-slide .hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;}
.hero-text{display:none;}
.hero-text.active{display:block;animation:heroTextIn .6s ease both;}
@keyframes heroTextIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}
.hero-dots{display:flex;align-items:center;gap:10px;margin-top:30px;}
.hero-dot{width:30px;height:4px;border-radius:2px;background:rgba(255,255,255,0.3);border:none;padding:0;cursor:pointer;transition:background .2s ease;}
.hero-dot:hover{background:rgba(255,255,255,0.55);}
.hero-dot.active{background:var(--gold);}
.hero-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:46px;height:46px;border-radius:50%;background:rgba(10,12,14,0.35);border:1px solid rgba(255,255,255,0.3);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s ease;}
.hero-arrow:hover{background:rgba(10,12,14,0.6);}
.hero-arrow svg{width:19px;height:19px;}
.hero-arrow-prev{left:18px;} .hero-arrow-next{right:18px;}
@media (max-width:980px){ .hero-arrow{display:none;} }
@media (max-width:640px){ .hero-dots{margin-top:22px;} }

.lead-card{position:relative;background:var(--ink-card);border:1px solid var(--line-strong);color:var(--text);border-radius:6px;box-shadow:var(--shadow);padding:26px 24px 22px;z-index:2;width:100%;max-width:440px;justify-self:end;}
@media (max-width:980px){ .lead-card{justify-self:stretch;max-width:none;} }
.lead-card h3{font-size:1.1rem;}
.lead-card .sub{color:var(--text-faint);font-size:0.8rem;margin:4px 0 16px;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}
@media (max-width:420px){ .field-row{grid-template-columns:1fr;} }
.field{display:flex;flex-direction:column;gap:5px;}
.field.full{grid-column:1/-1;}
.field label{font-size:0.68rem;font-weight:600;color:var(--text-soft);}
.field input,.field select,.field textarea{border:1px solid var(--line-strong);background:var(--ink-raised);color:var(--text);border-radius:2px;padding:9px 10px;font-size:0.85rem;outline:none;width:100%;}
.field textarea{resize:vertical;min-height:80px;font-family:var(--sans);}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--gold);}
.lead-note{font-size:0.68rem;color:var(--text-faint);margin-top:10px;text-align:center;}
.form-success{display:none;text-align:center;padding:22px 4px;}
.form-success.show{display:block;}
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;opacity:0;}
.form-error{display:none;background:#FDEAEA;border:1px solid #E2A2A2;color:#8A2222;font-size:0.8rem;padding:10px 12px;border-radius:4px;margin-top:10px;}
.form-error.show{display:block;}
.field .optional{font-weight:400;color:var(--text-faint);font-size:0.78em;}
.btn[disabled]{opacity:0.6;cursor:not-allowed;}
.form-success svg{width:32px;height:32px;stroke:var(--gold);margin:0 auto 10px;}
.form-success h4{font-size:1rem;} .form-success p{color:var(--text-faint);font-size:0.82rem;margin-top:6px;}

/* Inner page banner (non-home pages) */
.page-header{position:relative;color:#fff;overflow:hidden;padding-block:150px 70px;min-height:400px;display:flex;align-items:flex-end;}
@media (max-width:640px){ .page-header{padding-block:130px 46px;min-height:320px;} }
.page-header-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.page-header-scrim{position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,12,14,0.55) 0%, rgba(10,12,14,0.88) 100%);}
.page-header-inner{position:relative;}
.breadcrumb{display:flex;gap:8px;align-items:center;font-family:var(--mono);font-size:0.7rem;color:#E7E2D4;flex-wrap:wrap;}
.breadcrumb a{color:#E7E2D4;}
.breadcrumb a:hover{color:var(--gold);}
.breadcrumb .sep{color:rgba(231,226,212,0.55);}
.page-header h1{color:#fff;font-size:clamp(1.9rem,4vw,3rem);margin-top:12px;max-width:22ch;}
.page-header p.lede{margin-top:10px;color:#DCD5C4;max-width:56ch;font-size:0.98rem;}

.trust{background:var(--ink-raised);border-bottom:1px solid var(--line);}
/* The four items' natural width (~1180px with its gap) is wider than the
   standard 1160px/24px-padding .wrap leaves room for (1112px of content
   width) - just enough to force an unwanted wrap on exactly one of the
   four items at normal desktop widths. A dedicated, slightly wider .wrap
   here (same pattern as the header's own override) gives it room to
   actually fit on one line instead of fighting the layout with smaller
   type or tighter gaps. */
.trust .wrap{max-width:1300px;padding-block:22px;}
/* justify-content:space-between stretched whichever items fit on the
   first line across the full row width, using up all the slack and
   leaving no room for the last item to join them - it dropped to its
   own near-empty second line even though there was visible space left.
   center (with a fixed gap, not "whatever's left over") keeps every
   item snug against its neighbours so all four sit on one line at
   normal desktop widths, and wrap as a group - not one at a time - only
   once there's genuinely no room. */
.trust ul{display:flex;flex-wrap:wrap;gap:16px 26px;justify-content:center;width:100%;}
.trust li{display:flex;align-items:center;gap:8px;font-size:0.8rem;font-weight:500;color:var(--text-soft);white-space:nowrap;}
.trust li svg{width:15px;height:15px;stroke:var(--gold);flex:none;}

.head{max-width:560px;margin-bottom:34px;}
.head h2{font-size:clamp(1.7rem,3vw,2.3rem);margin-top:10px;}
.head p{margin-top:10px;color:var(--text-soft);font-size:0.94rem;max-width:52ch;}
.head.center{margin-inline:auto;text-align:center;}
.head.center .eyebrow{justify-content:center;}

.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center;}
@media (max-width:880px){ .about-grid{grid-template-columns:1fr;gap:28px;} }
.about-grid.reverse .about-photo{order:2;}
.about-grid.reverse .about-copy{order:1;}
@media (max-width:880px){ .about-grid.reverse .about-photo,.about-grid.reverse .about-copy{order:initial;} }
.about-photo{border-radius:5px;overflow:hidden;box-shadow:var(--shadow);aspect-ratio:4/3;}
.about-photo img{width:100%;height:100%;object-fit:cover;}
.about-copy p{color:var(--text-soft);margin-top:12px;font-size:0.95rem;}
.chip-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.chip-list span{font-family:var(--mono);font-size:0.7rem;border:1px solid var(--line-strong);padding:6px 12px;border-radius:20px;color:var(--text-soft);}
.about-copy .btn{margin-top:20px;}

.method{background:var(--ink-raised);}
.method-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:6px;}
@media (max-width:880px){ .method-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:520px){ .method-grid{grid-template-columns:1fr;} }
.method-step{padding:24px 22px 26px;background:var(--ink-card);}
.method-num{font-family:var(--mono);font-size:0.72rem;color:var(--gold);letter-spacing:0.08em;}
.method-step svg{width:24px;height:24px;stroke:var(--text);margin:12px 0 12px;}
.method-step h4{font-size:1.06rem;}
.method-step p{color:var(--text-soft);font-size:0.82rem;margin-top:6px;}

.expertise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media (max-width:840px){ .expertise-grid{grid-template-columns:1fr;} }
.expertise-card{background:var(--ink-card);border:1px solid var(--line);border-radius:5px;overflow:hidden;box-shadow:var(--shadow);}
.expertise-photo{aspect-ratio:16/10;overflow:hidden;}
.expertise-photo img{width:100%;height:100%;object-fit:cover;}
.expertise-body{padding:20px 20px 22px;}
.expertise-card h3{font-size:1.1rem;}
.expertise-card p{color:var(--text-soft);margin-top:8px;font-size:0.86rem;}
.expertise-card .link{margin-top:14px;display:inline-flex;align-items:center;gap:6px;font-size:0.82rem;font-weight:600;color:var(--gold);}
.expertise-card .link svg{width:13px;height:13px;stroke:var(--gold);}

.project-filters{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap;}
.pf-btn{background:none;border:1px solid var(--line-strong);color:var(--text-soft);padding:7px 15px;font-size:0.78rem;border-radius:20px;font-weight:500;}
.pf-btn:hover{border-color:var(--gold);}
.pf-btn.active{background:var(--gold);border-color:var(--gold);color:var(--on-gold);}
.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media (max-width:880px){ .project-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .project-grid{grid-template-columns:1fr;} }
.project-card{border:1px solid var(--line);background:var(--ink-card);overflow:hidden;border-radius:5px;transition:transform .2s ease;}
.project-card:hover{transform:translateY(-3px);}
.project-media{aspect-ratio:4/3;overflow:hidden;position:relative;}
.project-media img{width:100%;height:100%;object-fit:cover;}
.project-tag{position:absolute;top:10px;left:10px;background:rgba(10,12,14,0.75);color:var(--gold);font-family:var(--mono);font-size:0.64rem;padding:4px 9px;text-transform:uppercase;}
.project-body{padding:14px 16px 16px;}
.project-body h4{font-size:0.98rem;}
.project-body p{color:var(--text-faint);font-size:0.76rem;margin-top:4px;}

.why-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
@media (max-width:760px){ .why-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:520px){ .why-grid{grid-template-columns:1fr;} }
.why-card{background:var(--ink-card);padding:20px 18px;}
.why-card h4{font-size:0.96rem;color:var(--text);}
.why-card p{color:var(--text-faint);font-size:0.78rem;margin-top:6px;}

.mv-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:6px;}
@media (max-width:760px){ .mv-grid{grid-template-columns:1fr;} }
.mv-card{background:var(--ink-card);padding:32px 28px;}
.mv-card .eyebrow{display:block;margin-bottom:12px;}
.mv-card p{color:var(--text-soft);font-size:0.92rem;line-height:1.65;}

.process-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;}
@media (max-width:900px){ .process-grid{grid-template-columns:repeat(2,1fr);} }
.process-card{background:var(--ink-card);border:1px solid var(--line);border-radius:5px;padding:18px;text-align:center;}
.process-dot{width:30px;height:30px;border-radius:50%;background:var(--gold);color:var(--on-gold);font-family:var(--mono);font-weight:600;font-size:0.8rem;display:flex;align-items:center;justify-content:center;margin:0 auto 10px;}
.process-card h4{font-size:0.86rem;} .process-card p{color:var(--text-faint);font-size:0.72rem;margin-top:6px;}
.process-foot{display:flex;justify-content:center;margin-top:28px;}

.ba-wrap{display:grid;grid-template-columns:0.9fr 1.1fr;gap:44px;align-items:center;}
@media (max-width:880px){ .ba-wrap{grid-template-columns:1fr;gap:26px;} }
.ba-slider{position:relative;aspect-ratio:4/3;border-radius:5px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow);}
.ba-after,.ba-before{position:absolute;inset:0;}
.ba-after img,.ba-before img{width:100%;height:100%;object-fit:cover;}
.ba-after{clip-path:inset(0 0 0 50%);}
.ba-label{position:absolute;top:12px;font-family:var(--mono);font-size:0.64rem;text-transform:uppercase;background:rgba(10,12,14,0.75);color:var(--gold);padding:4px 9px;}
.ba-label.b{left:12px;} .ba-label.a{right:12px;}
.ba-handle{position:absolute;top:0;bottom:0;left:50%;width:2px;background:var(--gold);pointer-events:none;}
.ba-knob{position:absolute;top:50%;left:50%;width:40px;height:40px;border-radius:50%;background:var(--ink-card);border:1px solid var(--gold);transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;pointer-events:none;}
.ba-knob svg{width:16px;height:16px;stroke:var(--gold);}
.ba-range{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0;}
.ba-copy p{color:var(--text-soft);margin-top:12px;font-size:0.94rem;}

.testi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
@media (max-width:840px){ .testi-grid{grid-template-columns:1fr;} }
.testi-card{background:var(--ink-card);padding:22px 20px;}
.testi-card svg{width:22px;height:17px;stroke:var(--gold);fill:none;margin-bottom:12px;}
.testi-card p.quote{font-family:var(--serif);font-size:0.98rem;color:var(--text);}
.testi-who{margin-top:16px;padding-top:12px;border-top:1px solid var(--line);}
.testi-who .name{font-weight:600;font-size:0.86rem;}
.testi-who .meta{font-family:var(--mono);font-size:0.68rem;color:var(--text-faint);margin-top:3px;}

.faq-wrap{max-width:760px;margin:0 auto;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-item summary{list-style:none;padding:18px 4px;display:flex;justify-content:space-between;align-items:center;gap:16px;font-family:var(--serif);font-size:1.02rem;cursor:pointer;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item .plus{width:20px;height:20px;flex:none;position:relative;}
.faq-item .plus::before,.faq-item .plus::after{content:"";position:absolute;background:var(--gold);}
.faq-item .plus::before{left:0;top:50%;width:100%;height:1px;transform:translateY(-50%);}
.faq-item .plus::after{top:0;left:50%;width:1px;height:100%;transform:translateX(-50%);}
.faq-item[open] .plus::after{opacity:0;}
.faq-item .a{padding:0 4px 20px;color:var(--text-soft);font-size:0.88rem;max-width:64ch;}
.faq-cat{margin-bottom:12px;}
.faq-cat-title{font-family:var(--mono);font-size:0.72rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--gold);padding:28px 4px 6px;}
.faq-jump{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:36px;}
.faq-jump a{border:1px solid var(--line-strong);padding:7px 14px;border-radius:20px;font-size:0.78rem;color:var(--text-soft);}
.faq-jump a:hover{border-color:var(--gold);color:var(--gold);}

.final-cta{position:relative;color:#fff;text-align:center;overflow:hidden;min-height:460px;padding-block:60px;display:flex;align-items:center;}
@media (max-width:640px){ .final-cta{min-height:380px;padding-block:50px;} }
.final-cta-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.final-cta-scrim{position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,12,14,0.6), rgba(10,12,14,0.85));}
.final-cta .inner{position:relative;max-width:620px;margin:0 auto;min-width:0;}
.final-cta h2{color:#fff;font-size:clamp(1.9rem,3.6vw,2.7rem);margin-top:12px;}
.final-cta p{color:#D9D2C0;margin-top:12px;font-size:0.98rem;}
.final-cta .row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:24px;}
/* .final-cta is a flex row, so without min-width:0 above, its ".inner" child
   (a flex item) refuses to shrink below its own content's natural width - and
   on pages whose CTA has a long, non-wrapping button label (e.g. a mailto
   address), that natural width is wider than a phone screen, pushing the whole
   block past the right edge where the sitewide overflow-x:hidden silently clips
   it. Letting long CTA button labels wrap on narrow screens removes the other
   half of the same problem at its source. */
@media (max-width:480px){ .final-cta .row .btn{white-space:normal;text-align:center;flex:1 1 100%;} }

/* Locations section (home) */
.locations-section{background:linear-gradient(175deg, var(--ink-raised) 0%, var(--ink) 100%);}
.loc-panel{display:grid;grid-template-columns:0.78fr 1.7fr;gap:40px;align-items:start;}
@media (max-width:880px){ .loc-panel{grid-template-columns:1fr;gap:28px;} }
.loc-stats-col{display:flex;flex-direction:column;gap:14px;position:sticky;top:110px;}
@media (max-width:880px){ .loc-stats-col{position:static;flex-direction:row;flex-wrap:wrap;align-items:center;} }
.loc-stat-big{background:var(--ink-card);border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:4px;padding:16px 18px;display:flex;align-items:baseline;gap:10px;}
.loc-stat-big .v{font-family:var(--serif);font-size:2rem;color:var(--gold);line-height:1;}
.loc-stat-big .l{font-family:var(--mono);font-size:0.68rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--text-faint);}
.loc-stats-col p{color:var(--text-soft);font-size:0.86rem;margin-top:4px;}
.loc-stats-col .btn{align-self:flex-start;}
.loc-tabs{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap;}
.loc-tab{background:none;border:1px solid var(--line-strong);color:var(--text-soft);padding:8px 16px;border-radius:20px;font-size:0.8rem;font-weight:600;}
.loc-tab .count{color:var(--text-faint);font-weight:500;}
.loc-tab:hover{border-color:var(--gold);}
.loc-tab.active{background:var(--gold);border-color:var(--gold);color:var(--on-gold);}
.loc-tab.active .count{color:rgba(26,18,4,0.65);}
.locations-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
@media (max-width:900px){ .locations-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .locations-grid{grid-template-columns:1fr;} }
.loc-pin{background:var(--ink-card);border:1px solid var(--line);border-radius:5px;padding:16px 16px;display:flex;align-items:center;gap:12px;transition:border-color .15s ease,transform .15s ease,background .15s ease;}
.loc-pin:hover{border-color:var(--gold);transform:translateY(-2px);background:var(--gold-soft);}
.loc-pin svg{width:20px;height:20px;stroke:var(--gold);flex:none;}
.loc-pin .name{font-family:var(--serif);font-size:1rem;font-weight:600;display:block;}
.loc-pin .areas-count{font-family:var(--mono);font-size:0.66rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.04em;display:block;margin-top:2px;}
.locations-foot{display:flex;justify-content:center;margin-top:28px;}

/* Locations index page */
.loc-region-group{margin-bottom:40px;}
.loc-region-title{font-family:var(--mono);font-size:0.74rem;letter-spacing:0.1em;text-transform:uppercase;color:var(--gold);margin-bottom:14px;}
/* minmax(0,1fr), not plain 1fr: a bare 1fr column has an implicit
   min-width of auto (its content's min-content size), so an unbreakable
   run of text in a card (e.g. "Greater Noida's") can force the whole
   grid wider than its container on narrow screens. minmax(0,1fr) lets
   the track shrink below that and the text wrap instead, which is what
   actually keeps this grid inside the viewport at small widths. */
.loc-index-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
@media (max-width:880px){ .loc-index-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
.loc-index-card{background:var(--ink-card);border:1px solid var(--line);border-radius:5px;padding:18px;}
.loc-index-card h3{font-size:1.02rem;}
.loc-index-card p{color:var(--text-faint);font-size:0.78rem;margin-top:6px;}
.loc-index-card .link{margin-top:12px;display:inline-flex;gap:6px;align-items:center;font-size:0.78rem;font-weight:600;color:var(--gold);}

/* Location detail page */
.loc-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:8px;}
@media (max-width:760px){ .loc-stats{grid-template-columns:1fr 1fr;} }
.loc-stat{background:var(--ink-card);padding:20px 16px;text-align:center;}
.loc-stat .v{font-family:var(--serif);font-size:1.5rem;color:var(--gold);display:block;}
.loc-stat .l{font-family:var(--mono);font-size:0.66rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.06em;margin-top:4px;display:block;}
.loc-areas{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;}
.loc-areas span{font-family:var(--mono);font-size:0.7rem;border:1px solid var(--line-strong);padding:6px 12px;border-radius:20px;color:var(--text-soft);}
.related-locs{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;}
.related-locs a{border:1px solid var(--line-strong);padding:8px 16px;border-radius:20px;font-size:0.82rem;color:var(--text-soft);}
.related-locs a:hover{border-color:var(--gold);color:var(--gold);}

/* Cost estimator */
.estimator-wrap{display:grid;grid-template-columns:1fr 0.85fr;gap:40px;align-items:start;}
@media (max-width:960px){ .estimator-wrap{grid-template-columns:1fr;} }
.estimator-form{background:var(--ink-card);border:1px solid var(--line);border-radius:6px;padding:28px;}
.estimator-form .field{margin-bottom:16px;}
.estimator-form .field-row{margin-bottom:0;}
.estimator-result{position:sticky;top:100px;background:var(--ink-card);border:1px solid var(--gold);border-radius:6px;padding:28px;}
.estimator-result .label{font-family:var(--mono);font-size:0.7rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.08em;}
.estimator-result .range{font-family:var(--serif);font-size:2.1rem;color:var(--gold);margin-top:8px;}
.estimator-result .sub{font-size:0.8rem;color:var(--text-soft);margin-top:6px;}
.estimator-result .breakdown{margin-top:18px;padding-top:18px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:8px;}
.estimator-result .breakdown div{display:flex;justify-content:space-between;font-size:0.82rem;color:var(--text-soft);}
.estimator-result .disclaimer{margin-top:18px;font-size:0.7rem;color:var(--text-faint);line-height:1.5;}
.range-slider{width:100%;accent-color:var(--gold);}
.range-value{font-family:var(--mono);color:var(--gold);font-size:0.82rem;}

/* Contact page */
.contact-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:44px;align-items:start;}
@media (max-width:960px){ .contact-grid{grid-template-columns:1fr;} }
.contact-form-card{background:var(--ink-card);border:1px solid var(--line);border-radius:6px;padding:28px;}
.work-type-group{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap;}
.work-type-opt{flex:1;min-width:110px;}
.work-type-opt input{position:absolute;opacity:0;width:0;height:0;}
.work-type-opt label{display:flex;flex-direction:column;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:5px;padding:14px 8px;cursor:pointer;text-align:center;font-size:0.78rem;font-weight:600;color:var(--text-soft);transition:border-color .15s ease,color .15s ease;}
.work-type-opt label svg{width:20px;height:20px;stroke:var(--text-soft);}
.work-type-opt input:checked + label{border-color:var(--gold);color:var(--gold);background:var(--gold-soft);}
.work-type-opt input:checked + label svg{stroke:var(--gold);}
.contact-info-card{background:var(--ink-card);border:1px solid var(--line);border-radius:6px;padding:26px;margin-bottom:20px;}
.contact-info-row{display:flex;gap:14px;padding-block:14px;border-bottom:1px solid var(--line);}
.contact-info-row:last-child{border-bottom:none;}
.contact-info-row svg{width:20px;height:20px;stroke:var(--gold);flex:none;margin-top:2px;}
.contact-info-row .t{font-size:0.68rem;font-family:var(--mono);text-transform:uppercase;color:var(--text-faint);letter-spacing:0.06em;}
.contact-info-row .v{font-size:0.92rem;color:var(--text);margin-top:3px;}
.map-embed{border:1px solid var(--line);border-radius:6px;overflow:hidden;aspect-ratio:16/10;}
.map-embed iframe{width:100%;height:100%;border:0;}

footer{background:var(--ink-raised);border-top:1px solid var(--line);}
.footer-top{padding-block:48px;display:grid;grid-template-columns:1.3fr repeat(4,1fr);gap:28px;}
@media (max-width:960px){ .footer-top{grid-template-columns:1fr 1fr;} }
@media (max-width:560px){ .footer-top{grid-template-columns:1fr;} }
.footer-brand p{color:var(--text-soft);font-size:0.85rem;margin-top:10px;max-width:28ch;}
.fcol h5{font-family:var(--mono);font-size:0.68rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-faint);margin-bottom:12px;}
.fcol ul{display:flex;flex-direction:column;gap:9px;}
.fcol a,.fcol li{font-size:0.83rem;color:var(--text-soft);}
.fcol a:hover{color:var(--gold);}
.fcol-social{text-align:center;}
.social-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;}
.social-row a{width:36px;height:36px;border-radius:50%;border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;transition:border-color .15s ease,background .15s ease;}
.social-row a:hover{border-color:var(--gold);background:var(--gold-soft);}
.social-row a svg{width:16px;height:16px;fill:var(--text-soft);stroke:none;}
.social-row a:hover svg{fill:var(--gold);}
.footer-bottom{border-top:1px solid var(--line);padding-block:18px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:0.74rem;color:var(--text-faint);}
.footer-bottom .legal{display:flex;gap:16px;flex-wrap:wrap;}

.floating-rail{position:fixed;right:20px;bottom:26px;z-index:80;display:flex;flex-direction:column;gap:10px;}
@media (max-width:760px){ .floating-rail{display:none;} }
.floating-rail a{width:48px;height:48px;border-radius:50%;background:var(--ink-card);border:1px solid var(--line-strong);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow);}
.floating-rail a svg{width:19px;height:19px;stroke:var(--gold);}
.floating-rail a.quote{background:var(--gold);}
.floating-rail a.quote svg{stroke:var(--on-gold);}
.mobile-bar{display:none;position:fixed;left:0;right:0;bottom:0;z-index:80;padding:10px 14px;background:var(--ink-card);border-top:1px solid var(--line);grid-template-columns:1fr 1fr 1fr;gap:8px;}
@media (max-width:760px){ .mobile-bar{display:grid;} body{padding-bottom:62px;} }
.mobile-bar a{display:flex;flex-direction:column;align-items:center;gap:4px;font-size:0.64rem;font-weight:600;color:var(--text-soft);padding:6px 0;}
.mobile-bar a svg{width:17px;height:17px;stroke:var(--gold);}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.inline-check{width:16px;height:16px;flex:none;stroke:var(--gold);margin-top:2px;}

.leader-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px;max-width:820px;margin:0 auto;}
@media (max-width:640px){ .leader-grid{grid-template-columns:1fr;} }
.leader-card{background:var(--ink-card);border:1px solid var(--line);border-radius:8px;padding:32px 26px;text-align:center;transition:border-color .15s ease;}
.leader-card:hover{border-color:var(--line-strong);}
.leader-avatar{width:76px;height:76px;border-radius:50%;background:var(--gold-soft);border:1px solid var(--gold);color:var(--gold);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-family:var(--serif);font-weight:600;font-size:1.4rem;letter-spacing:0.02em;}
.leader-card h4{font-family:var(--serif);font-size:1.15rem;font-weight:600;color:var(--text);margin-bottom:4px;}
.leader-card .role{font-family:var(--mono);font-size:0.7rem;text-transform:uppercase;letter-spacing:0.06em;color:var(--gold);margin-bottom:14px;}
.leader-card .bio{font-size:0.87rem;line-height:1.6;color:var(--text-soft);}

/* ===== Photo Gallery ===== */
.gal-cat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
@media (max-width:880px){ .gal-cat-grid{grid-template-columns:1fr;} }
.gal-cat-card{position:relative;border-radius:8px;overflow:hidden;aspect-ratio:4/5;display:flex;align-items:flex-end;box-shadow:var(--shadow);}
.gal-cat-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s ease;}
.gal-cat-card:hover img{transform:scale(1.05);}
.gal-cat-scrim{position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,12,14,0.05) 0%, rgba(10,12,14,0.86) 100%);}
.gal-cat-body{position:relative;padding:26px 22px;color:#fff;width:100%;}
.gal-cat-body .eyebrow{color:var(--gold);}
.gal-cat-body h3{color:#fff;font-size:1.4rem;margin-top:8px;}
.gal-cat-body p{color:#DCD5C4;font-size:0.84rem;margin-top:6px;}
.gal-cat-body .gal-count{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-family:var(--mono);font-size:0.72rem;color:var(--gold);text-transform:uppercase;letter-spacing:0.06em;}
.gal-cat-body .gal-count svg{width:13px;height:13px;}

.gal-sub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
@media (max-width:880px){ .gal-sub-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .gal-sub-grid{grid-template-columns:1fr;} }
.gal-sub-card{position:relative;border-radius:7px;overflow:hidden;aspect-ratio:1/1;box-shadow:var(--shadow);}
.gal-sub-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .4s ease;}
.gal-sub-card:hover img{transform:scale(1.06);}
.gal-sub-scrim{position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,12,14,0.02) 0%, rgba(10,12,14,0.82) 100%);}
.gal-sub-body{position:absolute;left:0;right:0;bottom:0;padding:18px 18px 16px;color:#fff;}
.gal-sub-body h4{color:#fff;font-size:1.08rem;}
.gal-sub-body span{display:block;margin-top:4px;font-family:var(--mono);font-size:0.68rem;color:var(--gold);text-transform:uppercase;letter-spacing:0.06em;}

.gal-note{display:flex;gap:12px;align-items:flex-start;background:var(--gold-soft);border:1px solid var(--gold);border-radius:6px;padding:16px 18px;margin-top:28px;}
.gal-note svg{width:18px;height:18px;stroke:var(--gold-deep);flex:none;margin-top:2px;}
.gal-note p{font-size:0.84rem;color:var(--gold-deep);line-height:1.6;}

.gal-breadcrumbs-sub{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px;}
.gal-breadcrumbs-sub a{font-size:0.8rem;font-weight:600;color:var(--text-soft);border:1px solid var(--line-strong);padding:7px 14px;border-radius:20px;}
.gal-breadcrumbs-sub a:hover,.gal-breadcrumbs-sub a.active{border-color:var(--gold);color:var(--gold);}
.gal-breadcrumbs-sub a.active{background:var(--gold-soft);}

.gallery-masonry{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
@media (max-width:880px){ .gallery-masonry{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .gallery-masonry{grid-template-columns:1fr;} }
.gallery-masonry figure{margin:0;aspect-ratio:4/3;border-radius:6px;overflow:hidden;cursor:zoom-in;position:relative;background:var(--ink-raised);}
.gallery-masonry img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease,filter .3s ease;}
.gallery-masonry figure:hover img{transform:scale(1.035);}
.gallery-masonry figure::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(10,12,14,0) 60%, rgba(10,12,14,0.45) 100%);opacity:0;transition:opacity .2s ease;}
.gallery-masonry figure:hover::after{opacity:1;}
.gallery-masonry figure .zoom-ic{position:absolute;right:10px;bottom:10px;width:30px;height:30px;border-radius:50%;background:rgba(10,12,14,0.55);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;z-index:1;}
.gallery-masonry figure:hover .zoom-ic{opacity:1;}
.gallery-masonry figure .zoom-ic svg{width:14px;height:14px;stroke:#fff;}

.lb-overlay{position:fixed;inset:0;z-index:400;background:rgba(8,9,10,0.94);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease;}
.lb-overlay.open{opacity:1;visibility:visible;}
.lb-stage{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:70px 90px;}
.lb-stage img{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;box-shadow:0 30px 80px -20px rgba(0,0,0,0.6);}
.lb-close,.lb-prev,.lb-next{position:absolute;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.18);color:#fff;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;transition:background .15s ease;}
.lb-close:hover,.lb-prev:hover,.lb-next:hover{background:rgba(255,255,255,0.18);}
.lb-close{top:18px;right:18px;width:40px;height:40px;}
.lb-close svg{width:18px;height:18px;}
.lb-prev,.lb-next{top:50%;transform:translateY(-50%);width:48px;height:48px;}
.lb-prev{left:14px;} .lb-next{right:14px;}
.lb-prev svg,.lb-next svg{width:20px;height:20px;}
.lb-counter{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);font-family:var(--mono);font-size:0.76rem;color:rgba(255,255,255,0.75);letter-spacing:0.04em;}
@media (max-width:640px){
  .lb-stage{padding:60px 20px;}
  .lb-prev,.lb-next{width:38px;height:38px;}
  .lb-prev{left:4px;} .lb-next{right:4px;}
}
/* ===== Projects browser back-link / section head (projects.php) ===== */
.proj-back{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:0.78rem;font-weight:600;color:var(--text-soft);text-transform:uppercase;letter-spacing:0.05em;margin-bottom:22px;}
.proj-back svg{width:15px;height:15px;stroke:var(--gold);}
.proj-back:hover{color:var(--gold);}
.proj-section-head{margin-bottom:22px;max-width:640px;}
.proj-section-head h2{font-size:1.9rem;}
.proj-section-head p{color:var(--text-soft);margin-top:10px;}
@media (max-width:640px){ .proj-section-head h2{font-size:1.5rem;} }

/* ===== Downloads page (downloads.php) ===== */
.download-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media (max-width:880px){ .download-grid{grid-template-columns:1fr;} }
.download-card{background:var(--ink-card);border:1px solid var(--line);border-radius:6px;padding:24px 22px 22px;display:flex;flex-direction:column;box-shadow:var(--shadow);}
.download-card .dl-icon{width:44px;height:44px;border-radius:5px;background:var(--gold-soft);display:flex;align-items:center;justify-content:center;margin-bottom:16px;}
.download-card .dl-icon svg{width:22px;height:22px;stroke:var(--gold-deep);}
.download-card h3{font-size:1.06rem;}
.download-card p{color:var(--text-soft);font-size:0.85rem;margin-top:8px;flex:1;}
.download-card .dl-meta{font-family:var(--mono);font-size:0.68rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:0.05em;margin:14px 0 14px;}
.download-card .dl-actions{margin-top:auto;display:flex;gap:8px;}
.download-card .dl-actions .btn{flex:1;}

/* PDF "Read" viewer overlay - opens a Downloads PDF inline on the same
   screen instead of a new tab, in the same visual language as the photo
   lightbox (.lb-overlay) above. Injected into the page by main.js on
   first use (see CDEF_pdfViewer), not present in any page's own HTML. */
.pdf-overlay{position:fixed;inset:0;z-index:450;background:rgba(8,9,10,0.94);display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .2s ease;padding:30px;}
.pdf-overlay.open{opacity:1;visibility:visible;}
.pdf-modal{background:#fff;border-radius:6px;width:100%;max-width:900px;height:100%;max-height:860px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 30px 80px -20px rgba(0,0,0,0.6);}
.pdf-modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 10px 12px 18px;border-bottom:1px solid var(--line);background:var(--ink-card);}
.pdf-modal-head h4{font-size:0.9rem;color:var(--text);}
.pdf-modal-actions{display:flex;align-items:center;gap:8px;flex:none;}
.pdf-modal-close{width:34px;height:34px;border-radius:50%;border:1px solid var(--line-strong);background:none;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-soft);flex:none;}
.pdf-modal-close:hover{border-color:var(--gold);color:var(--gold);}
.pdf-modal-close svg{width:16px;height:16px;}
.pdf-modal iframe{flex:1;width:100%;border:0;background:#525659;}
@media (max-width:640px){
  .pdf-overlay{padding:0;}
  .pdf-modal{max-width:100%;max-height:100%;border-radius:0;}
  .pdf-modal-head h4{font-size:0.82rem;}
}

/* ===== Legal / policy pages (privacy-policy, terms-and-conditions, cancellation-policy, referral-policy) ===== */
.policy-notice{display:flex;gap:12px;align-items:flex-start;background:var(--gold-soft);border:1px solid var(--gold);border-radius:6px;padding:16px 18px;margin-bottom:36px;}
.policy-notice svg{width:18px;height:18px;stroke:var(--gold-deep);flex:none;margin-top:2px;}
.policy-notice p{font-size:0.84rem;color:var(--gold-deep);line-height:1.6;margin:0;}
.policy-notice strong{color:var(--gold-deep);}
.legal-content{max-width:760px;}
.legal-content .updated,.article-body .updated{font-family:var(--mono);font-size:0.76rem;color:var(--text-faint);margin-bottom:30px;display:block;}
.legal-content h2,.article-body h2{font-size:1.4rem;margin-top:34px;margin-bottom:10px;}
.legal-content h2:first-of-type,.article-body h2:first-of-type{margin-top:0;}
.legal-content h3,.article-body h3{font-size:1.05rem;margin-top:20px;margin-bottom:8px;}
.legal-content p,.article-body p{color:var(--text-soft);font-size:0.94rem;margin-bottom:14px;}
.legal-content ul,.legal-content ol,.article-body ul,.article-body ol{margin:0 0 16px 0;padding-left:22px;}
.legal-content ul li,.article-body ul li{list-style:disc;color:var(--text-soft);font-size:0.94rem;margin-bottom:7px;}
.legal-content ol li,.article-body ol li{list-style:decimal;color:var(--text-soft);font-size:0.94rem;margin-bottom:7px;}
.legal-content strong,.article-body strong{color:var(--text);}
.legal-content a,.article-body a{color:var(--gold);font-weight:600;}
.legal-content a:hover,.article-body a:hover{color:var(--gold-deep);}
.legal-jump{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:36px;}
.legal-jump a{border:1px solid var(--line-strong);padding:7px 14px;border-radius:20px;font-size:0.78rem;color:var(--text-soft);}
.legal-jump a:hover{border-color:var(--gold);color:var(--gold);}

/* ===== News & Updates article pages: body + right-rail sidebar ===== */
.article-layout{display:grid;grid-template-columns:1fr 300px;gap:48px;align-items:start;}
.article-body{min-width:0;}
.news-sidebar{display:flex;flex-direction:column;gap:30px;position:sticky;top:24px;}
.news-sidebar-block h5{font-family:var(--mono);font-size:0.7rem;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-faint);margin:0 0 14px;}
.news-cat-list{display:flex;flex-direction:column;gap:8px;}
.news-cat-list li{font-size:0.86rem;color:var(--text-soft);padding:9px 14px;border:1px solid var(--line);border-radius:5px;}
.news-cat-list li.is-active{color:var(--gold);border-color:var(--gold);font-weight:600;background:var(--gold-soft);}
.news-recent-list{display:flex;flex-direction:column;gap:14px;}
.news-recent-list li{border-bottom:1px solid var(--line);padding-bottom:13px;}
.news-recent-list li:last-child{border-bottom:none;padding-bottom:0;}
.news-recent-list a{display:block;font-size:0.86rem;font-weight:600;color:var(--text);line-height:1.4;margin-bottom:5px;}
.news-recent-list a:hover{color:var(--gold);}
.news-recent-list .date{display:block;font-family:var(--mono);font-size:0.68rem;color:var(--text-faint);}
.news-sidebar .link{font-size:0.84rem;}
@media (max-width:900px){
  .article-layout{grid-template-columns:1fr;}
  .news-sidebar{position:static;margin-top:8px;padding-top:36px;border-top:1px solid var(--line);}
}
