/* Progressive enhancement: content remains visible without JavaScript. */
[hidden] { display:none !important; }
:is(.teaser,.feature,.service-card,.process-row,.person,.work-card,.project-case,.section h2,.section-label,.lead,.proof-item,.team-group-photo,.cta-band .wrap) { transition: opacity .7s ease, translate .7s cubic-bezier(.2,.7,.2,1), box-shadow .3s ease; }
.reveal-pending { opacity:0; translate:0 24px; }
.site-header { transition: height .3s ease, background-color .3s ease, box-shadow .3s ease, border-color .3s ease; }
.site-header.is-scrolled { height:66px; background:rgba(242,240,231,.985); box-shadow:0 10px 28px rgba(16,25,24,.1); border-color:transparent; }
.site-header .brand { transition:width .3s ease; }
.site-header.is-scrolled .brand { width:195px; }
.site-header.is-scrolled .mobile-panel { top:66px; }
.desktop-nav a:not(.nav-cta) { position:relative; transition:color .2s ease; }
.desktop-nav a:not(.nav-cta)::after { content:""; position:absolute; left:0; right:0; bottom:6px; height:2px; background:var(--green); transform:scaleX(0); transform-origin:left; transition:transform .28s ease; }
.desktop-nav a:not(.nav-cta):hover::after,.desktop-nav a:not(.nav-cta):focus-visible::after,.desktop-nav a[aria-current="page"]::after { transform:scaleX(1); }
.desktop-nav a[aria-current="page"] { border-bottom:0; }
.mobile-panel a { transition:color .2s ease, padding-left .2s ease; }
.mobile-panel a:hover,.mobile-panel a:focus-visible { color:#5d7e27; padding-left:10px; }
.menu-icon::before,.menu-icon::after { transition:transform .25s ease,top .25s ease; }
.button,.nav-cta,.contact-option,.floating-whatsapp { transition:transform .22s ease,background .22s ease,box-shadow .22s ease; }
.button:active,.nav-cta:active,.floating-whatsapp:active { transform:scale(.97); }
button { font:inherit; }
button:focus-visible { outline:3px solid var(--orange); outline-offset:4px; }
.hero-grid > * { animation: hero-enter .8s both; }
.hero-grid > :nth-child(2) { animation-delay:.08s; }
.hero-grid > :nth-child(3) { animation-delay:.16s; }
.hero-grid > :nth-child(4) { animation-delay:.24s; }
@keyframes hero-enter { from { opacity:0; transform:translateY(20px); } to { opacity:1; transform:none; } }
.hero > img,.page-hero > img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.12; will-change:transform; }
.hero > img { animation:hero-image-enter 1.25s ease-out both; }
@keyframes hero-image-enter { from { opacity:.65; scale:1.16; } to { opacity:1; scale:1.12; } }
.team-group-photo { overflow:hidden; }
.team-group-photo img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.07; }
.proof-item strong { display:inline-block; font-variant-numeric:tabular-nums; }
.teaser { transition:translate .28s ease,background .28s ease,box-shadow .28s ease,border-color .28s ease,opacity .7s ease; }
.teaser:hover { transform:none; translate:0 -6px; box-shadow:0 20px 35px rgba(16,25,24,.12); border-color:var(--green); }
.teaser span { transition:translate .25s ease; }
.teaser:hover span { translate:4px 0; }
.work-card { isolation:isolate; transition:opacity .7s ease,translate .7s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease; }
.work-card img { transition:scale .6s cubic-bezier(.2,.7,.2,1),filter .4s ease; }
.home-gallery .work-card img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.06; }
.work-card figcaption { transition:translate .35s ease; }
.work-card::after { transition:opacity .35s ease; }
.project-case-media { overflow:hidden; }
.project-case-media:not(.four) img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.1; transition:scale .6s cubic-bezier(.2,.7,.2,1); }
.team-text .person { transition:opacity .75s ease,translate .75s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease; }
.team-text .person:nth-child(even) { transition-delay:.08s; }
.team-text .person:nth-child(odd) { transition-delay:.02s; }
@media (hover:hover) {
  .button:hover,.nav-cta:hover,.contact-option:hover { transform:translateY(-3px); box-shadow:0 8px 22px #10191820; }
  .floating-whatsapp:hover { transform:translateY(-4px); }
  .person:hover,.service-card:hover { box-shadow:0 12px 30px #10191816; }
  .work-card:hover { box-shadow:0 18px 38px rgba(0,0,0,.2); }
  .work-card:hover img { transform:none; scale:1.075; filter:saturate(1.08); }
  .home-gallery .work-card:hover img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.11; }
  .work-card:hover figcaption { translate:0 -6px; }
  .work-card:hover::after { opacity:.9; }
  .photo-frame:hover img { transform:scale(1.045); }
  .project-case-media:not(.four) .photo-frame:hover img { transform:translate3d(0,var(--parallax-y,0px),0); scale:1.14; }
  .project-case:hover .project-case-media img { scale:1.035; }
  .project-case:hover .project-case-media:not(.four) img { scale:1.14; }
  .team-text .person:hover { box-shadow:0 18px 38px rgba(16,25,24,.12); }
}
.photo-open { border:0; padding:0; background:transparent; color:white; cursor:zoom-in; }
.photo-overlay { position:absolute; inset:0; z-index:3; width:100%; height:100%; }
.photo-overlay span { position:absolute; right:14px; top:14px; padding:9px 12px; background:#101918d9; border:1px solid #ffffff70; border-radius:24px; font-size:14px; }
.photo-frame { display:block; overflow:hidden; width:100%; height:100%; min-width:0; min-height:0; }
.photo-frame img { transition:transform .45s ease; }
.project-filters { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px; }
.project-filters button { cursor:pointer; min-height:46px; padding:10px 19px; border:1px solid #8b918a; border-radius:28px; color:var(--ink); background:transparent; font-size:1rem; transition:background .2s,color .2s; }
.project-filters button[aria-pressed=true] { background:var(--ink); color:var(--lime); border-color:var(--ink); }
.filter-status { font-size:14px; color:#59625e; margin:0 0 28px; }
.viewer-open { overflow:hidden; }
.photo-viewer { width:100vw; max-width:100vw; height:100dvh; max-height:100dvh; margin:0; padding:70px 5vw 22px; border:0; color:white; background:#101918f7; }
.photo-viewer::backdrop { background:#101918; }
.photo-viewer[open] { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:16px; }
.photo-viewer figure { margin:0; min-height:0; width:100%; flex:1; display:flex; flex-direction:column; align-items:center; gap:14px; }
.photo-viewer img { min-height:0; flex:1; width:100%; object-fit:contain; }
.photo-viewer figcaption { flex:none; font-size:1rem; line-height:1.4; text-align:center; max-width:900px; }
.photo-viewer button { cursor:pointer; color:white; background:#ffffff12; border:1px solid #ffffff70; border-radius:50%; width:48px; height:48px; font-size:24px; }
.photo-viewer button:disabled { opacity:.35; cursor:default; }
.viewer-close { position:absolute; top:16px; right:20px; }
.viewer-controls { display:flex; flex:none; align-items:center; gap:24px; }
.viewer-count { min-width:70px; text-align:center; font-variant-numeric:tabular-nums; }
@media (max-width:700px) {
 .hero > img,.page-hero > img,.team-group-photo img,.home-gallery .work-card img,.project-case-media:not(.four) img { transform:none; scale:1; animation:none; }
 .home-gallery .work-card:hover img,.project-case:hover .project-case-media:not(.four) img,.project-case-media:not(.four) .photo-frame:hover img { transform:none; scale:1; }
}
@media (max-width:650px) {
 .site-header.is-scrolled { height:62px; }
 .site-header.is-scrolled .brand { width:158px; }
 .site-header.is-scrolled .mobile-panel { top:62px; }
 .photo-viewer { padding:72px 16px 24px; }
 .photo-viewer figcaption { font-size:14px; }
}
@media (prefers-reduced-motion:reduce) {
 html { scroll-behavior:auto; }
 *,*::before,*::after { animation:none !important; transition:none !important; }
 .reveal-pending { opacity:1; translate:none; }
 .hero > img,.page-hero > img,.team-group-photo img,.home-gallery .work-card img,.project-case-media:not(.four) img,.work-card:hover img,.photo-frame:hover img,.project-case:hover .project-case-media img,.project-case-media:not(.four) .photo-frame:hover img,.button:hover,.teaser:hover,.contact-option:hover,.floating-whatsapp:hover,.nav-cta:hover { transform:none; scale:1; }
 .teaser:hover,.work-card:hover figcaption { translate:none; }
}
