/* Editorial rhythm for the approved long-form copy. */
.copy-block{white-space:normal;max-width:65ch}.copy-block p{margin:0 0 1.25em;white-space:normal}.copy-block p:last-child{margin-bottom:0}
.intro.section{max-width:1440px;display:grid;grid-template-columns:1fr 1fr;gap:8%;text-align:left;align-items:start;padding-block:clamp(72px,8vw,120px)}
.intro .homepage-heading{font-size:clamp(44px,4.8vw,70px);line-height:1.06;margin:0;max-width:12ch}
.intro-bottom .copy-block{max-width:53ch}.intro-bottom p{font-size:16px;line-height:1.85;margin:0 0 1.3em;max-width:none}
.experience-grid{align-items:start}.experience-copy .copy-block p{font-size:15px;line-height:1.85}.experience-copy .copy-block{margin-bottom:28px}.experience-copy :is(h3,.brand-service-heading){line-height:1.15;margin-bottom:26px}.brand-experience{margin-top:48px;padding-top:40px;border-top:1px solid var(--line)}
.creative-lead.copy-block{max-width:65ch;margin-bottom:48px}.creative-lead p{font-size:16px;line-height:1.85}
.services{gap:0 40px}.service-item{padding:32px 28px 36px;border-top:1px solid var(--line);transition:background .3s,color .3s,transform .3s;outline-offset:5px}.service-item h3{font-size:clamp(27px,2.5vw,34px);line-height:1.15;max-width:22ch}.service-item p{font-size:15px;line-height:1.85}.service-item:after{display:none}.service-item:focus-visible{background:#171717;color:#fff;transform:translateY(-3px)}.service-item:focus-visible p,.service-item:focus-visible:before{color:#eee}.service-item:focus-visible{outline:1px solid #171717}
@media(hover:hover){.service-item:hover{background:#171717;color:#fff;transform:translateY(-3px)}.service-item:hover p,.service-item:hover:before{color:#eee}}
.about-body{align-items:start}.about-body .copy-block{margin:0 0 30px}.about-body .copy-block p{font-size:15px;line-height:1.9}.about-body .about-large p{font-size:17px;line-height:1.8}.about-body .copy-block:last-child{margin-bottom:0}
@media(min-width:1000px){.experience-images,.about-visual{position:sticky;top:115px}}
@media(max-width:820px){.intro.section{grid-template-columns:1fr;gap:32px}.intro .homepage-heading{max-width:16ch}.intro-bottom .copy-block{max-width:65ch}.services{gap:0 20px}.service-item{padding:26px 18px 30px}}
@media(max-width:600px){.intro.section{padding-block:64px;gap:28px}.intro .homepage-heading{font-size:44px}.intro-bottom p,.creative-lead p{font-size:15px}.services{grid-template-columns:1fr}.service-item{padding:28px 20px 32px}.experience-copy .copy-block p,.about-body .copy-block p{font-size:14px;line-height:1.85}.brand-experience{margin-top:36px;padding-top:32px}.about-body .about-large p{font-size:16px}.copy-block p{margin-bottom:1.2em}}
@media(prefers-reduced-motion:reduce){.service-item{transition:none;transform:none!important}}

/* Long copy remains in normal document flow at every viewport width. */
.intro.section{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px 7%}.intro>.intro-signature{grid-column:1/-1;margin:0}.intro .homepage-heading{grid-column:1;grid-row:auto;max-width:14ch}.intro-bottom{display:block;grid-column:2;grid-row:auto;min-width:0}.intro-bottom p{grid-column:auto;grid-row:auto}.intro-bottom .copy-block{margin:0}
.experience-grid,.about-body,.film-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);column-gap:7%;row-gap:36px}.services{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 36px}.service-item{min-width:0;height:auto;align-self:stretch}.service-item p+p{margin-top:18px}.service-item h3{overflow-wrap:break-word}.services-label{margin:48px 0 0}#creative .services{margin-top:20px}.studio-capabilities{font-size:12px;line-height:1.9;color:var(--muted);max-width:75ch;margin:24px 0 0}.experience-copy [data-edit-text="8"],.experience-copy [data-edit-text="12"]{font-size:12px;line-height:1.9;white-space:normal;overflow-wrap:anywhere}
.service-item.is-touching{background:#171717;color:#fff;transform:translateY(-3px)}.service-item.is-touching p,.service-item.is-touching:before{color:#eee}
@media(max-width:820px){.intro.section{grid-template-columns:minmax(0,1fr);row-gap:24px}.intro .homepage-heading,.intro-bottom{grid-column:1;grid-row:auto}.intro .homepage-heading{font-size:clamp(38px,7vw,58px);max-width:17ch}.about-body{grid-template-columns:minmax(0,1fr);gap:30px}.about-visual{position:static;max-width:560px}.section h2{overflow-wrap:break-word}.event-heading,.event-copy,.film-columns,.experience-copy{min-width:0}}
@media(max-width:600px){.experience-grid,.film-layout,.services{grid-template-columns:minmax(0,1fr);gap:30px}.services{gap:0}.intro.section{gap:24px}.service-item h3{font-size:28px}.about-body .copy-block{max-width:100%}.studio-capabilities{font-size:11px}}
html,body{overflow-anchor:none}#portal-stage{touch-action:pan-y}img{vertical-align:middle}.memory-image{flex-shrink:0}.ribbon-track{animation-play-state:paused}.ribbon-track.gallery-ready{animation-play-state:running}.ribbon-window{isolation:isolate}.memory-image img{backface-visibility:hidden}

/* Quiet headings with room for the approved long-form narrative. */
.intro.section{padding-block:82px;column-gap:9%;row-gap:30px}.intro .homepage-heading{font-size:clamp(35px,3.5vw,48px);line-height:1.16;letter-spacing:-.015em;max-width:17ch}.intro .intro-signature{margin-bottom:4px}
#creative>h2,#about>h2{font-size:clamp(34px,3.6vw,49px);line-height:1.18;letter-spacing:-.015em;max-width:23ch;margin-bottom:38px}#creative>.creative-lead{max-width:62ch}#creative .creative-lead p{margin-bottom:24px}.studio-capabilities{margin-top:34px}.services-label{margin-top:52px}
#about .about-body{margin-top:0;column-gap:9%}.about-visual .about-large{font-size:16px;line-height:1.65;margin-bottom:24px}.founders-caption{font:10px/1.7 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:18px 0 0}.about-body .copy-block p{margin-bottom:26px}
.service-item.is-reading{background:#171717;color:white;transform:none}.service-item.is-reading p,.service-item.is-reading:before{color:#eee}
body footer #back-universe{grid-column:1;justify-self:start;text-align:start}body footer>span{grid-column:2;justify-self:center;text-align:center}body footer>a:last-child{grid-column:3;justify-self:end}
@media(max-width:820px){.intro.section{padding-block:64px;gap:26px}.intro .homepage-heading{font-size:38px;max-width:19ch}#creative>h2,#about>h2{font-size:38px;margin-bottom:30px}.about-body .copy-block p{margin-bottom:24px}}
@media(max-width:600px){.intro .homepage-heading{font-size:35px;line-height:1.2}#creative>h2,#about>h2{font-size:34px;line-height:1.2}.founders-caption{font-size:9px;letter-spacing:.1em}body footer{grid-template-columns:1fr 1.25fr .85fr;gap:12px}body footer>span{font-size:10px;max-width:125px}.service-item{transform:none!important}}

/* Equal introduction distance with reduced motion; only movement style changes. */
@media(prefers-reduced-motion:reduce){#portal-runway{height:370svh}}
@media(prefers-reduced-motion:reduce) and (max-width:700px){#portal-runway{height:330svh}}
body.portal-entered #portal-runway{height:100svh}
.ribbon-track,.brand-track{animation-play-state:paused}
.ribbon-track.gallery-ready.gallery-visible,.brand-track.gallery-ready.gallery-visible{animation-play-state:running}
.gallery-motion{display:block;margin:18px auto 0;padding:10px 4px;border:0;border-bottom:1px solid currentColor;background:transparent;color:inherit;font:12px Montserrat,Arial,sans-serif;cursor:pointer}
.gallery-motion[hidden]{display:none}
@media(prefers-reduced-motion:reduce){.motion-enabled .ribbon-track{animation:memory-flow 110s linear infinite}.motion-enabled.ai-work .ribbon-track{animation-direction:reverse;animation-duration:125s}.motion-enabled .brand-track{animation:brands-left 90s linear infinite}.motion-enabled .ribbon-group[aria-hidden],.motion-enabled .brand-group[aria-hidden]{display:flex}.motion-enabled .ribbon-window,.motion-enabled .brand-window{overflow:hidden}.motion-enabled .ribbon-track,.motion-enabled .brand-track{animation-play-state:paused}.motion-enabled .gallery-ready.gallery-visible{animation-play-state:running}}
img{-webkit-user-drag:none;-webkit-touch-callout:none}.memory-image,.brand-group{-webkit-touch-callout:none}
@media(hover:none),(pointer:coarse){.service-item:not(.is-reading):hover{background:transparent;color:var(--ink);transform:none}.service-item:not(.is-reading):hover p{color:var(--muted)}}
/* Explicit visitor opt-in overrides the global reduced-motion reset. */
@media(prefers-reduced-motion:reduce){.motion-enabled .ribbon-track{animation:memory-flow 110s linear infinite!important}.motion-enabled.ai-work .ribbon-track{animation:memory-flow 125s linear infinite reverse!important}.motion-enabled .brand-track{animation:brands-left 90s linear infinite!important}.motion-enabled .ribbon-track,.motion-enabled .brand-track{animation-play-state:paused!important}.motion-enabled .gallery-ready.gallery-visible{animation-play-state:running!important}}
#about .founders-caption{font-size:10px;line-height:1.7;margin-top:18px}
@media(max-width:600px){#about .founders-caption{font-size:9px}}

/* The footer reflows instead of squeezing three labels into narrow columns. */
body footer{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) minmax(0,1fr)}body footer>*{min-width:0}body footer>span{max-width:none;white-space:normal}
@media(max-width:600px){body footer{grid-template-columns:minmax(0,1fr) minmax(0,1fr);row-gap:20px;padding:26px 20px}body footer>span{grid-column:1/-1;grid-row:1;justify-self:center;font-size:11px;white-space:normal;text-wrap:balance}body footer #back-universe{grid-column:1;grid-row:2;font-size:10px}body footer>a:last-child{grid-column:2;grid-row:2;font-size:10px}}
.services-introduction{font-size:15px;color:var(--muted);margin:14px 0 28px;max-width:55ch}.contact-support{max-width:54ch;margin:0 0 38px}.contact-support p{color:inherit;font-size:14px;line-height:1.8}.contact-support p+p{margin-top:16px}
/* Keep the main-video wordmark uppercase without changing the Universe title. */
.cinematic.hero .brand-heading,html[lang=es] .cinematic.hero .brand-heading,html[dir=rtl] .cinematic.hero .brand-heading{text-transform:uppercase;font-size:clamp(48px,7.5vw,112px);letter-spacing:-.035em}
@media(max-width:600px){
  .cinematic.hero .brand-heading,html[lang=es] .cinematic.hero .brand-heading,html[dir=rtl] .cinematic.hero .brand-heading{font-size:clamp(32px,10.5vw,60px);letter-spacing:-.035em;white-space:nowrap}
}
/* The original high-resolution logo bypasses SVG + CSS filter rasterisation
   on the solid mobile header. The transparent hero header stays unchanged. */
@media(max-width:820px){
  header.scrolled .wordmark{position:relative;isolation:isolate;opacity:1}
  header.scrolled .wordmark img{content:url('assets/villadoce-ink.svg');filter:none;image-rendering:auto;transform:none;opacity:1}
}
html[dir=rtl] body{font-family:'Noto Naskh Arabic',Tahoma,serif}html[dir=rtl] h1,html[dir=rtl] h2,html[dir=rtl] h3{font-family:'Noto Naskh Arabic',Tahoma,serif;letter-spacing:0;line-height:1.4}html[lang=hi] body{font-family:Arial,sans-serif}html[lang=hi] h1,html[lang=hi] h2,html[lang=hi] h3{font-family:Georgia,serif;line-height:1.4}html[dir=rtl] .eyebrow{letter-spacing:0}.contact-channels a{min-width:0}.channel-value{overflow-wrap:anywhere}.service-item h3{hyphens:auto;overflow-wrap:anywhere}

/* Studio illustration and a distinct heading for the service collection. */
.studio-intro-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:6%;align-items:center}.studio-intro-copy{min-width:0}.studio-readers{margin:-65px 0 -25px;max-width:400px;justify-self:center;pointer-events:none}.studio-readers img{display:block;width:100%;height:auto;max-height:590px;object-fit:contain}.services-heading{margin-top:100px;padding-top:45px;border-top:1px solid var(--line,#ddd);scroll-margin-top:120px}.services-heading .services-label{margin:0 0 22px}.services-heading .services-introduction{font:500 clamp(34px,3.6vw,49px)/1.18 var(--serif,'Cormorant Garamond',serif);letter-spacing:-.015em;color:var(--ink,#171717);max-width:28ch;margin:0 0 42px;text-wrap:balance}#creative .services{margin-top:0}
@media(max-width:820px){.studio-intro-layout{gap:24px;grid-template-columns:minmax(0,1fr)}.studio-readers{margin:0;max-width:310px}.studio-readers img{max-height:440px}.services-heading{margin-top:60px;scroll-margin-top:100px}.services-heading .services-introduction{font-size:34px}}
/* Leave room for the added service link and longer translated labels. */
@media(min-width:821px) and (max-width:1100px){header .nav-contact{display:none}header #language{margin-inline-start:auto}header .menu-toggle{display:flex;align-items:center;gap:10px;background:transparent;border:0;padding:10px 0 10px 8px;min-height:44px;cursor:pointer;font-size:14px}header #navigation{position:absolute;top:100%;left:0;right:0;display:none;margin:0;padding:12px 24px 24px;background:var(--paper);border-bottom:1px solid var(--line);max-height:calc(100svh - 100px);overflow:auto}header.menu-open #navigation{display:flex;flex-direction:column;align-items:stretch;gap:0}header #navigation a{font-size:19px;padding:16px 0;border-bottom:1px solid var(--line)}header #navigation .mobile-contact{display:block;border:0}}

/* True vector variants avoid the nested SVG raster-filter on the video banner. */
header:not(.scrolled) .wordmark img,header.menu-open:not(.scrolled) .wordmark img{content:url('assets/villadoce-white.svg');filter:none;transform:none;opacity:1}header.scrolled .wordmark img{content:url('assets/villadoce-ink.svg');filter:none;transform:none;opacity:1}

/* Keep the approved carousel presentation automatic on all visitor motion settings.
   This override is scoped to carousel tracks, not welcome or other animations. */
.ribbon-track{animation:memory-flow 110s linear infinite!important;transform:translateX(0);animation-play-state:paused!important}
.brand-track{animation:brands-left 90s linear infinite!important;animation-play-state:paused!important}
.ai-work .ribbon-track{animation-name:memory-flow!important;animation-duration:125s!important;animation-direction:reverse!important}
.ribbon-track.gallery-ready.gallery-visible,.brand-track.gallery-ready.gallery-visible{animation-play-state:running!important}
.ribbon-group[aria-hidden],.brand-group[aria-hidden]{display:flex!important}
.ribbon-window,.brand-window{overflow:hidden!important}
.gallery-motion{display:none!important}
@media(max-width:600px){.ribbon-track{animation-duration:95s!important}.ai-work .ribbon-track{animation-duration:125s!important}}
/* Translation changes text direction without mirroring the 3D scene or phone input. */
.phone-fields,input[type=tel],input[type=email]{direction:ltr}
#runway-world,#runway-panels{direction:ltr}
html[dir=rtl] .project-card,html[dir=rtl] #detail-content{direction:rtl}
.project-card strong,.project-card em,.legal-links>*{overflow-wrap:anywhere}
