/* Shared responsive, RTL and accessible logo corrections. */
.hero>*,.intro-section>*,.market-grid>*,.market-logos>*,.full-logo-wall>*,.capability>*,.booking>*{min-width:0}
.brand{direction:ltr;flex-shrink:0}.header-actions{flex-shrink:0}.button{min-height:48px}.lang-toggle,.menu-toggle{min-height:44px;min-width:44px;cursor:pointer}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid currentColor;outline-offset:5px}
.inner-page:has(.page-hero-navy) .menu-toggle span{background:var(--white)}
.inner-page:has(.page-hero-navy) .lang-toggle{color:var(--white);border-color:var(--white)}
.inner-page:has(.page-hero-navy) .lang-toggle .active{background:var(--white);color:var(--navy)}
.logo-marquee{overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:var(--orange) transparent;padding-bottom:14px;direction:ltr}
.logo-track{animation:none;gap:14px;padding:4px 20px;width:max-content}
.logo-tile{width:176px;height:100px;flex:0 0 176px;padding:16px;scroll-snap-align:center;background:#fff;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.market-card{min-height:0}.market-card h3{margin:12px 0 32px}.market-grid{align-items:start}
.market-logos{grid-template-columns:repeat(3,minmax(0,1fr))}
.market-logos>div{height:96px;padding:14px;background:#fff;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.full-logo-wall{grid-template-columns:repeat(5,minmax(0,1fr))}
.full-logo-wall>div{background:#fff;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.logo-tile img,.market-logos img,.full-logo-wall img{display:block;width:100%;height:100%;min-width:0;min-height:0;object-fit:contain;mix-blend-mode:normal;border-radius:0}
.logo-on-navy{background:var(--navy)!important;border:1px solid rgba(255,255,255,.3)}
.logo-tile:has(img[src*="aldar"]),.market-logos>div:has(img[src*="aldar"]),.full-logo-wall>div:has(img[src*="aldar"]){padding:8px}
.phone-number{direction:ltr;unicode-bidi:isolate;display:inline-block;white-space:nowrap}
.booking-form input,.booking-form select,.booking-form textarea{font-size:12.8px}.booking-form textarea{resize:vertical;min-height:130px}
.form-status{font-size:11.2px;line-height:1.7;margin:0}.form-status:empty{display:none}.form-status a{color:inherit;font-weight:700}
.page-hero h1{position:relative;z-index:2}.page-mark,.booking-mark{pointer-events:none}.direct-contact{flex-wrap:wrap}
body[dir=rtl] :is(h1,h2,h3,p,small,label,li,.eyebrow,.section-kicker,.hero-card,.panorama-label){letter-spacing:0}
body[dir=rtl] :is(h1,h2,h3){line-height:1.4}
body[dir=rtl] :is(p,li){line-height:1.85}
body[dir=rtl] .hero h1{font-size:clamp(41.6px,5.44vw,86.4px);line-height:1.35;margin-block:22px}
body[dir=rtl] .hero-art{direction:ltr}
body[dir=rtl] .page-mark{right:auto;left:5vw}
body[dir=rtl] .booking-mark{left:auto;right:30%}
body[dir=rtl] .page-hero h1,body[dir=rtl] .booking h1{font-size:clamp(38.4px,6vw,88px)}
body[dir=rtl] .value-card h3{font-size:clamp(32px,3.6vw,54.4px)}
@media(max-width:980px){
 .desktop-nav.mobile-open{display:flex;position:absolute;top:calc(100% + 8px);inset-inline:var(--pad);flex-direction:column;gap:0;padding:12px 20px;border-radius:18px;background:var(--white);color:var(--navy);box-shadow:0 15px 40px rgba(12,48,80,.2);max-height:70svh;overflow:auto}
 .site-header .desktop-nav.mobile-open a{display:flex;align-items:center;min-height:48px;color:var(--navy);font-size:12.8px;border-bottom:1px solid var(--line)}
 .site-header .desktop-nav.mobile-open a:last-child{border:0}
 .hero{min-height:0;grid-template-columns:minmax(0,1fr);padding:122px var(--pad) 48px}
 .hero-art{position:relative;inset:auto;width:100%;height:280px;min-height:0;opacity:1;overflow:hidden;margin-top:24px}
 .loop-mark{width:190px;right:calc(50% - 95px);top:-10px}
 .hero-card{padding:12px 16px}.card-a{left:12%;top:18%}.card-b{right:10%;top:46%}.card-c{left:22%;bottom:8%}
 .hero h1{font-size:clamp(48px,8vw,72px);line-height:1.02}.scroll-cue{display:none}
 .page-hero{min-height:0;padding:140px var(--pad) 64px}.page-hero h1{font-size:clamp(38.4px,6.4vw,62.4px);line-height:1.05}
 .page-mark{width:220px;opacity:.07}.full-logo-wall{grid-template-columns:repeat(3,minmax(0,1fr))}
 .market-grid{grid-template-columns:minmax(0,1fr)}
 .booking{min-height:0;grid-template-columns:minmax(0,1fr);gap:32px;padding-top:136px}
 .intro-copy h2,.section-heading h2{font-size:clamp(28.8px,4.4vw,48px)}
}
@media(max-width:640px){
 .section-pad{padding:64px 20px}.site-header{padding-inline:20px}.header-actions{gap:8px}
 .hero{padding:104px 20px 28px}.hero h1{font-size:clamp(33.6px,9.44vw,52.8px);line-height:1.08;margin:24px 0}.hero-lede{font-size:12.8px;line-height:1.75}
 .hero-actions{margin-top:26px;gap:18px;align-items:stretch}.hero-actions .text-link{justify-content:center;min-height:44px;align-items:center}
 .hero-art{height:225px;margin-top:12px}.loop-mark{width:148px;right:calc(50% - 74px);top:0}
 .intro-copy h2,.section-heading h2{font-size:25.6px;line-height:1.18}.intro-body p{font-size:12.8px}
 .service-grid{grid-template-columns:minmax(0,1fr)}.service-card{min-height:220px;padding:24px}.service-card h3{font-size:18.4px;padding-top:32px}
 .logo-tile{width:150px;flex-basis:150px;height:88px;padding:12px}
 .market-card{padding:24px;min-height:0}.market-card h3{font-size:44.8px}.market-logos{grid-template-columns:repeat(2,minmax(0,1fr))}.market-logos>div{height:90px;padding:12px}
 .full-logo-wall{grid-template-columns:repeat(2,minmax(0,1fr))}.full-logo-wall>div{height:100px;padding:14px}
 .panorama{background:transparent}.panorama img{aspect-ratio:3/1;object-fit:contain;border-radius:12px}.panorama-label{position:static;display:inline-block;margin-top:10px;padding:8px 0;font-size:7.2px;background:transparent}
 .work-card>div{inset:auto 20px 20px}.work-card h3{font-size:21.6px}
 .process-list li{grid-template-columns:32px minmax(0,1fr);gap:12px}.process-list p{grid-column:2;margin-top:0}
 .contact h2{font-size:clamp(32px,9.2vw,48px);line-height:1.12}.contact-copy>p:last-child{font-size:12.8px}
 .page-hero{min-height:0;padding:116px 20px 50px}.page-hero h1{font-size:clamp(32px,8.8vw,48px);line-height:1.08}.page-lede{font-size:12.8px}
 .capability h2{font-size:25.6px;line-height:1.2}.capability>p{font-size:12px}.capability li{font-size:11.2px}
 .case-intro h2{font-size:25.6px;line-height:1.2}.case-shells{margin-top:42px;gap:32px}.case-shell h3{font-size:20.8px}
 .story-lead h2{font-size:28.8px;line-height:1.2}.story-copy{padding:0}.story-copy p{font-size:12.8px}.story{gap:24px}
 .value-card{min-height:250px;padding:26px}.value-card h3{font-size:38.4px}.office-band>div{padding:48px 20px}
 .page-cta{padding:60px 20px}.page-cta h2{font-size:30.4px;line-height:1.15;margin:24px 0 32px}
 .booking{padding:110px 20px 64px}.booking h1{font-size:33.6px;line-height:1.15}.booking-copy>p{font-size:12.8px}.booking-form{padding:24px 20px}.booking-mark{opacity:.03}
 body[dir=rtl] .hero h1{font-size:clamp(30.4px,8.48vw,46.4px);line-height:1.45}
 body[dir=rtl] :is(.intro-copy h2,.section-heading h2,.capability h2,.case-intro h2,.story-lead h2){font-size:24px;line-height:1.5}
 body[dir=rtl] :is(.page-hero h1,.booking h1,.contact h2,.page-cta h2){font-size:28.8px;line-height:1.5}
 body[dir=rtl] .page-mark{left:-40px}
}
@media(prefers-reduced-motion:reduce){.loop-mark{animation:none!important;transform:none!important;will-change:auto}.reveal{opacity:1;transform:none}html{scroll-behavior:auto}}

/* v10: size the opening section against the viewport, not the old type size.
   The absolute header is included in this height, not added to it. */
:root{--header-height:88px;--hero-gap:clamp(32px,4vw,56px)}
.site-header{height:var(--header-height)}
.hero{
 min-height:100vh;min-height:100svh;min-height:100dvh;
 padding-block:calc(var(--header-height) + var(--hero-gap)) 48px;
 align-items:start;
}
.hero-copy{align-self:start}
.hero-copy>.eyebrow{margin-top:0}
.hero-art{height:clamp(320px,55svh,560px);min-height:0;align-self:center}
.hero h1{line-height:1.02}
.page-hero{
 min-height:0;
 padding-block:calc(var(--header-height) + var(--hero-gap)) clamp(48px,6vw,88px);
 justify-content:flex-start;
}
.page-hero>.eyebrow,.page-hero>.section-kicker{margin-top:0}
.page-hero h1{line-height:1.06}
.booking{padding-top:calc(var(--header-height) + var(--hero-gap));align-items:start}
.booking-copy>.eyebrow,.booking-copy>.section-kicker{margin-top:0}
.booking h1{line-height:1.06}
body[dir=rtl] :is(.hero h1,.page-hero h1,.booking h1){line-height:1.4}
@media(max-width:980px){
 .hero{display:flex;flex-direction:column;gap:0;padding-bottom:24px}
 .hero-copy{width:100%;max-width:800px}
 .hero-art{flex:1 0 250px;min-height:250px;height:auto;width:100%;margin-top:20px;align-self:stretch}
 .loop-mark{top:calc(50% - 108px)}
}
@media(max-width:640px){
 :root{--header-height:72px;--hero-gap:32px}
 .hero{padding-inline:20px;padding-bottom:20px}
 .hero h1{line-height:1.08}
 .hero-art{flex-basis:200px;min-height:200px;margin-top:16px}
 .loop-mark{top:calc(50% - 84px)}
 .page-hero{padding-bottom:48px}
 .booking{padding-bottom:56px}
 .intro-section.section-pad{padding-top:44px}
}

/* v13: keep the opening canvas continuous even when Safari reveals the
   beginning of the introduction below its floating browser controls. */
.hero + .intro-section{background:var(--orange)}

/* v12: Safari's floating toolbar can reveal content beyond 100dvh.
   Reserve the large viewport on touch layouts and paint the document's
   bottom/overscroll surface navy rather than the default off-white canvas. */
html{min-height:100%;background:#071f34}
body,body.inner-page,body.contact-page{min-height:100vh;background:#071f34}
main{display:flow-root;background:var(--white)}
.contact-page main{background:var(--navy)}
footer{margin:0;background:#071f34;padding-bottom:calc(42px + env(safe-area-inset-bottom,0px))}
.site-header{
 height:calc(var(--header-height) + env(safe-area-inset-top,0px));
 padding-top:env(safe-area-inset-top,0px);
}
.hero,.page-hero{padding-top:calc(var(--header-height) + var(--hero-gap) + env(safe-area-inset-top,0px))}
.booking{padding-top:calc(var(--header-height) + var(--hero-gap) + env(safe-area-inset-top,0px))}
@media(max-width:980px){
 .hero{
  min-height:calc(100vh + env(safe-area-inset-bottom,0px));
  min-height:calc(100lvh + env(safe-area-inset-bottom,0px));
  padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));
 }
}
