/* Assembly, second pass: clearer type, spatial modules, quieter supporting sections. */
@font-face{font-family:DM;src:url('/assets/fonts/dm-sans-semibold.ttf') format('truetype');font-weight:600 900;font-style:normal;font-display:swap}
:root{--bg:#0e1723;--ink:#f5f6f5;--muted:#acb8c8;--blue:#99bdff;--line:#adc8e523}
body{background-color:var(--bg);background-image:none}
h1,h2,h3{letter-spacing:-.043em}
.header{height:88px;padding:0 5.6vw;background:#0e1723d9;border-bottom:1px solid #c2d5ee0b;gap:22px}
.header .wordmark{width:149px}.header nav{gap:34px}.header nav a{font-size:13px;color:#d3dce8}
.header nav a[aria-current]{color:var(--blue)}
.nav-contact{border:0;background:#e9f0fa;color:#152335!important;padding:10px 20px}
.motion{width:32px;height:32px;border-color:transparent;color:#a6b5c8;font-size:12px}.motion:hover{border-color:var(--line)}
.menu-toggle{display:none}
.intro{background:radial-gradient(ellipse at 92% 10%,#3049654f,transparent 65%);min-height:100svh;padding:170px 8vw 30px}
.intro-inner{padding:0 0 9vh}.intro .eyebrow{margin-bottom:38px;font-size:10px;letter-spacing:.23em;color:#9faec0}
.intro h1{font-size:clamp(50px,5.7vw,94px);font-weight:600;letter-spacing:-.052em;line-height:1.05}
.intro h1 span{color:#a8c9ff}.intro-lead{font-size:21px;margin-top:34px;color:#d7e0eb}.intro-sub{font-size:16px;color:#9bacc1;margin-top:8px}
.actions{margin-top:32px;gap:34px}.button{font-size:14px;border-radius:8px;background:#c4d9ff;padding:14px 23px;gap:32px}.button:hover{background:#dbe8ff}
.text-link{font-size:14px;border-color:#a7c6f93d;color:#c5d7f0;gap:26px;padding-bottom:8px}
.intro-foot{border:0;padding-top:24px;font-size:11px;color:#8495ac}.intro-foot span:last-child{color:#b7c5d7}
.story{height:185svh;border:0}.story-sticky{grid-template-columns:minmax(0,.76fr) minmax(0,1.24fr);gap:5vw;padding:116px 6vw 62px;min-height:100svh;background:radial-gradient(ellipse at 80% 48%,#2e49694d,transparent 55%)}
.story-copy{align-self:center;padding-bottom:20px}.story-copy .eyebrow{font-size:10px;letter-spacing:.2em;margin-bottom:28px;color:#8d9fb6}
.story-copy h2{font-size:clamp(34px,3.15vw,55px);font-weight:600;line-height:1.12;letter-spacing:-.045em}
.story-copy h2 em{color:#a9c9ff}.story-copy>p:not(.eyebrow){font-size:17px;line-height:1.7;max-width:325px;margin:25px 0 26px;color:#aebccf}
.visual{perspective:1800px;transform:none;isolation:isolate}
.construction-plane{position:absolute;inset:7% -1% 9% 4%;border:1px solid #9ac1ff2b;border-radius:14px;transform:perspective(1400px) rotateY(-15deg) translate3d(-22px,-8px,-80px);background:linear-gradient(135deg,#a9caff08,transparent);opacity:calc((1 - var(--p)) * .8);pointer-events:none}
.surface,.browser-frame{transform:perspective(1700px) rotateY(calc(-13deg + var(--p) * 6deg)) rotateX(calc(4deg - var(--p) * 2deg)) scale(calc(.83 + var(--p) * .17));transform-origin:center;transform-style:preserve-3d;box-shadow:0 35px 75px #04080f80,0 1px 0 #fff3 inset;border-color:#bed0e855;border-radius:13px;will-change:transform}
.dashboard-surface{background:linear-gradient(145deg,#25344bed,#1a283dd9);color:#e8f0fe;padding:23px;border-color:#95b6e03b}
.surface-top{font-size:13px;font-weight:500;letter-spacing:-.01em;color:#e1ebf9;margin-bottom:22px}.surface-top>span:first-child{display:flex;align-items:center;gap:10px}
.app-symbol{display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-style:italic;font-family:Georgia,serif;width:25px;height:25px;border-radius:7px;background:#d0e1fa;color:#19324f}
.period{background:#0a15243d;border:1px solid #b1ccec22;color:#aebfd5;font-size:10px;border-radius:5px}
.kpis{gap:13px;transform-style:preserve-3d}.kpis>div,.kpis>div:nth-child(2),.kpis>div:nth-child(3){background:linear-gradient(120deg,#e7f0ff,#c8dcf8);color:#183151;border:1px solid #eaf3ffad;padding:20px 17px;border-radius:9px;box-shadow:0 15px 32px #050c1917}
.kpis>div:nth-child(2){background:linear-gradient(120deg,#f3f5f8,#dbe2ec)}.kpis>div:nth-child(3){background:linear-gradient(120deg,#e0efec,#c8e5e0)}
.kpis small{font-size:11px;color:#4c617c}.kpis strong{font-size:37px;font-weight:600;line-height:1.55}.kpis span{font-size:9px;color:#536b85}
.charts{gap:13px;margin-top:14px;transform-style:preserve-3d}.chart-card{background:#f6f8fc;border:1px solid #ffffffbd;border-radius:9px;color:#1e344f;padding:20px 17px;box-shadow:0 18px 35px #030b191f}.chart-card h3{font-size:12px;font-weight:600}
.histogram{height:180px;margin-top:22px;gap:14px}.bar-slot i{height:var(--height);max-height:none;background:linear-gradient(#98bef2,#487ccb);transform:scaleY(var(--bar,1));box-shadow:0 0 0 1px #5586c91a;border-radius:3px 3px 0 0}
.bar-slot:nth-child(even) i{background:linear-gradient(#77a6e5,#2d619e)}.bar-slot{padding-bottom:22px}.bar-slot span{bottom:-2px;font-size:10px;color:#657892}
.donut{max-width:155px;margin:24px auto 16px}.donut-value{stroke:#3b8a88}.donut-track{stroke:#aac8f1}.donut strong{font-weight:600;font-size:25px}.donut small{font-size:9px}.legend{font-size:8px;gap:13px}.legend i{background:#3b8a88}
.sample-note{color:#97abc7;font-size:9px;text-align:left;margin:18px 0 0}.piece{opacity:calc(.42 + var(--a) * .58);transform:translate3d(calc((1 - var(--a)) * var(--dx,40px)),calc((1 - var(--a)) * var(--dy,45px)),calc((1 - var(--a)) * var(--dz,90px))) rotateY(calc((1 - var(--a)) * var(--ry,-6deg)));transform-origin:center;backface-visibility:hidden}
.kpis .piece:nth-child(1){--dx:-35px;--dy:-35px;--dz:100px}.kpis .piece:nth-child(2){--dx:10px;--dy:-60px;--dz:130px}.kpis .piece:nth-child(3){--dx:40px;--dy:-25px;--dz:170px}
.charts .piece:nth-child(1){--dx:-36px;--dy:40px;--dz:115px}.charts .piece:nth-child(2){--dx:45px;--dy:70px;--dz:160px}
.browser-top{height:34px;font-size:10px;background:#1c2b40;color:#b4c5dd;border-color:#a4c6ef20;border-radius:12px 12px 0 0;transform:translateZ(1px)}.window-dots{color:#63768f;font-size:7px}
.browser-frame{background:#16243b}.web-assembly{aspect-ratio:1917/944;background:#16243b;transform-style:preserve-3d;border-radius:0 0 11px 11px}
.web-grid{inset:7%;border-color:#c7dafa24;background:linear-gradient(transparent 45%,#c7dafa18 45% 45.5%,transparent 45.5%)}
.web-slice{background-image:url('/assets/la-tortue-desktop.webp');filter:drop-shadow(0 12px 12px #0003)}
.web-nav{clip-path:inset(0 0 92% 0);--dx:15px;--dy:-55px;--dz:130px;--ry:-5deg}
.web-hero{clip-path:inset(8% 0 40.7% 0);--dx:65px;--dy:8px;--dz:190px;--ry:-7deg}
.web-content{clip-path:inset(59.3% 0 0 0);--dx:-22px;--dy:70px;--dz:115px;--ry:3deg}
.visual-caption{margin-top:34px;font-size:9px;letter-spacing:.13em;color:#8eabc9;display:flex;align-items:center;gap:16px}.visual-caption::before{content:'';width:24px;height:1px;background:#7d9bc166}
.inspection-assembly{transform-style:preserve-3d;background:#16243b}.inspection-sidebar{--dx:-40px;--dy:0px;--dz:100px}.inspection-head{--dx:0px;--dy:-40px;--dz:75px}.inspection-messages{--dx:25px;--dy:-20px;--dz:140px}.inspection-status{--dx:70px;--dy:22px;--dz:180px}.inspection-action{--dx:10px;--dy:75px;--dz:120px}
.inspection-slice{filter:drop-shadow(0 10px 10px #0002)}.scene-progress{bottom:35px;left:6vw;right:auto;width:70px;background:#c3daf41a}.scene-progress span{background:#829fc466}
.resort-visual{margin-left:-2vw;width:calc(100% + 4vw)}.resort-stage{background:transparent;border-radius:0;aspect-ratio:1.15;overflow:visible}.model-platform{position:absolute;inset:64% 10% 9%;background:#0005;border-radius:50%;filter:blur(26px);opacity:var(--p);pointer-events:none}
.resort-poster{border-radius:10px}.resort-controls{bottom:1%;right:7%;gap:8px}.resort-controls button{width:36px;height:36px;background:#1a2b40bd;border-color:#9dc5f733}.resort-controls button:hover{background:#345074}.model-status{font-size:10px;color:#8199b6;margin:12px 0 0 40px}.resort-visual .visual-caption{margin-left:40px;margin-top:5px}
.section-pad{padding:110px 8vw}.section-pad h2{font-size:clamp(34px,3.2vw,54px);font-weight:600;letter-spacing:-.04em;line-height:1.13}.section-pad .eyebrow{font-size:10px;color:#8a9db6;letter-spacing:.19em}
.services{background:#142031;border-top:1px solid #c5ddff0a;gap:10vw}.service-list summary{font-size:17px;font-weight:500}.service-list details{padding:21px 0}.service-list details p{font-size:15px;line-height:1.7}.service-list details a{font-size:13px}
.testimonials{border-top:0;background:#111b29}.testimonials h2{margin-bottom:48px}.quotes{gap:7vw}.quotes figure{border-top:0;padding:0 0 0 25px;border-left:1px solid #9abdff4d}.quotes blockquote{font-size:clamp(21px,1.9vw,28px);line-height:1.5;letter-spacing:-.025em;color:#d2ddeb}.quotes figcaption{font-size:12px;margin-top:26px}.quotes figcaption a{color:#94b7ec}
.about{background:#0e1723;gap:60px 9vw;border-top:0}.about-copy p{font-size:16px;line-height:1.85}.about-copy p:first-child{font-size:23px;line-height:1.4}.method{gap:5vw;padding-top:10px}.method h3{font-weight:500;font-size:24px}.method span{font-size:10px;color:#819bbd}.method p{font-size:14px}
.contact{background:radial-gradient(ellipse at 85% 100%,#334e7155,transparent 65%),#152132;border:0;gap:9vw;padding-top:105px;padding-bottom:110px}.contact h2{max-width:580px}.contact form{padding:28px 30px;background:#0e1928a6;border:1px solid #a5c8f218;border-radius:12px}.contact label{font-size:12px;color:#c6d2e2}.contact input,.contact textarea{margin-bottom:25px;font-size:16px;padding:5px 0 13px}.contact .button{width:100%;font-size:13px}.form-note{font-size:10px}.contact form>.text-link{font-size:11px}.contact>div>p:last-child{font-size:17px}.contact>div{align-self:center}
footer{background:#0b1420;padding:35px 6vw;border-top:0}dialog{border-radius:12px;background:#18283e}dialog h2{font-weight:600}
@media(min-width:1700px){.story-sticky{padding-left:8vw;padding-right:8vw;gap:6vw}.intro{padding-left:8vw}.histogram{height:205px}}
@media(max-width:1100px){.header{height:80px}.intro{padding-left:6vw;padding-right:6vw}.intro h1{font-size:7vw}.story-sticky{grid-template-columns:.85fr 1.15fr;gap:4vw;padding-left:5vw;padding-right:5vw}.story-copy h2{font-size:3.7vw}.story-copy>p:not(.eyebrow){font-size:16px}.surface{padding:16px}.kpis{gap:9px}.kpis>div,.kpis>div:nth-child(2),.kpis>div:nth-child(3){padding:13px 10px}.kpis strong{font-size:28px}.kpis span{display:none}.charts{gap:9px}.chart-card{padding:14px 10px}.histogram{height:145px;gap:8px}.donut{max-width:120px;margin:19px auto 12px}.legend{gap:7px;font-size:7px}.resort-visual{margin-left:-1vw;width:calc(100% + 2vw)}}
@media(max-width:760px){.header{height:72px;padding:0 6vw;gap:11px}.header .wordmark{width:118px;height:40px}.header nav{display:flex;gap:0;margin-left:auto}.header nav a{display:none!important}.header nav .nav-contact{display:inline-flex!important;font-size:12px;padding:8px 14px}.menu-toggle{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:31px;height:36px;order:4}.menu-toggle span{height:1px;width:17px;background:#b4c4d8}.motion{width:28px;height:31px;font-size:11px}.header nav.mobile-open{position:absolute;top:72px;left:0;right:0;display:flex;flex-direction:column;align-items:stretch;gap:0;background:#17263afc;padding:12px 6vw 22px;border-bottom:1px solid #c7dcf22b}.header nav.mobile-open a{display:block!important;padding:14px 0;font-size:17px}.header nav.mobile-open .nav-contact{background:none;color:#c3d8fb!important;border-top:1px solid var(--line);margin-top:8px;border-radius:0}.intro{padding:130px 6vw 25px;min-height:100svh}.intro-inner{padding:0 0 9vh}.intro .eyebrow{font-size:9px;margin-bottom:28px}.intro h1{font-size:clamp(38px,9.1vw,62px);font-weight:600;letter-spacing:-.047em;line-height:1.1}.intro-lead{font-size:18px;max-width:315px;margin-top:30px}.intro-sub{font-size:14px;line-height:1.7;max-width:300px;margin-top:7px}.actions{gap:23px;margin-top:28px}.button{font-size:13px;padding:13px 20px}.text-link{font-size:12px;gap:12px}.intro-foot{font-size:10px;padding-top:20px}.story{height:180svh}.story-sticky{grid-template-columns:1fr;gap:34px;padding:102px 6vw 44px;min-height:100svh;align-content:center}.story-copy{padding-bottom:0}.story-copy h2{font-size:clamp(30px,6.8vw,44px);font-weight:600;line-height:1.12}.story-copy .eyebrow{font-size:9px;margin-bottom:17px}.story-copy>p:not(.eyebrow){font-size:14px;margin:17px 0 10px;max-width:330px}.story-copy .text-link{font-size:12px}.surface,.browser-frame{transform:perspective(1200px) rotateY(calc((1 - var(--p)) * -7deg));border-radius:10px}.piece{transform:translate3d(calc((1 - var(--a)) * var(--dx,40px) * .4),calc((1 - var(--a)) * var(--dy,45px) * .6),calc((1 - var(--a)) * var(--dz,90px) * .2));opacity:calc(.42 + var(--a) * .58)}.construction-plane{inset:4% 1% 10%;transform:rotateY(-8deg)}.dashboard-surface{padding:13px}.surface-top{font-size:11px;margin-bottom:13px}.app-symbol{width:22px;height:22px;font-size:11px}.period{font-size:8px;padding:4px 6px}.kpis{gap:7px}.kpis>div,.kpis>div:nth-child(2),.kpis>div:nth-child(3){padding:11px 9px}.kpis small{font-size:9px}.kpis strong{font-size:26px}.charts{gap:7px;margin-top:9px;grid-template-columns:1.3fr 1fr}.chart-card{padding:12px 9px}.chart-card h3{font-size:10px}.histogram{height:109px;gap:7px;margin-top:17px}.bar-slot span{font-size:8px}.donut{max-width:112px;margin:13px auto 8px}.donut strong{font-size:22px}.donut small{font-size:8px}.legend{font-size:6px;gap:5px;flex-wrap:wrap}.sample-note{font-size:8px;margin-top:12px}.browser-top{height:27px;font-size:8px;border-radius:9px 9px 0 0}.web-assembly{aspect-ratio:1917/1100;background-size:cover}.visual-caption{font-size:7px;margin-top:22px;gap:9px;letter-spacing:.1em}.visual-caption::before{width:16px}.scene-progress{left:6vw;bottom:20px;width:45px}.resort-visual{width:100%;margin:0}.resort-stage{aspect-ratio:1.35}.resort-controls{bottom:0;right:1%}.resort-visual .visual-caption{margin:18px 0 0}.model-status{font-size:9px;margin:8px 0 0}.resort-controls button{width:34px;height:34px}.section-pad{padding:70px 6vw}.section-pad h2{font-size:34px}.services{gap:28px}.service-list summary{font-size:15px}.service-list details p{font-size:14px}.testimonials h2{margin-bottom:35px}.quotes{gap:37px}.quotes figure{padding-left:19px}.quotes blockquote{font-size:21px}.quotes figcaption{font-size:12px;margin-top:22px}.about{gap:32px}.about-copy p{font-size:15px}.about-copy p:first-child{font-size:21px}.method{gap:24px;padding-top:8px}.method h3{font-size:23px;margin:0 0 10px}.method p{font-size:14px}.contact{gap:30px}.contact form{padding:23px 20px}.contact h2{font-size:35px}.contact>div>p:last-child{font-size:15px}footer{padding:30px 6vw}footer .wordmark{width:115px}}
@media(max-height:640px){.story{height:auto}.story-sticky{position:relative;min-height:660px}.intro{min-height:660px;padding-top:135px}.intro h1{font-size:clamp(38px,5.7vw,68px)}}
@media(prefers-reduced-motion:reduce){.story{height:auto}.piece{opacity:1!important;transform:none!important}.construction-plane{display:none}.story-sticky{position:relative}.surface,.browser-frame{transform:none!important}}
body.motion-paused .construction-plane{display:none}

/* Quiet story: read the question before the work begins to assemble. */
.intro{padding-top:120px;padding-bottom:70px;min-height:100svh}
.intro-inner{padding:0;--intro-out:1}
.story-motion .intro-inner{opacity:var(--intro-out);transform:translateY(calc((1 - var(--intro-out)) * -28px))}
.story-motion .intro h1{animation:question-arrives 1.5s cubic-bezier(.2,.7,.2,1) both;animation-delay:.15s}
@keyframes question-arrives{from{opacity:0;transform:translateY(20px);filter:blur(5px)}to{opacity:1;transform:none;filter:blur(0)}}
.story{height:270svh;--text:1;--visual:1;--settle:1}
.story-motion .story{--text:0;--visual:0;--settle:0}
.story-motion .story-copy{opacity:var(--text);transform:translateX(calc((1 - var(--settle)) * 20vw)) translateY(calc((1 - var(--text)) * 14px))}
.story-copy h2{line-height:1.15}
.story-copy>.text-link{margin-top:30px}
.story-motion .visual{opacity:var(--visual);transform:translateY(calc((1 - var(--visual)) * 22px))}
.story-motion .piece{opacity:var(--a,0)}
.construction-plane,.scene-progress,.web-grid{display:none}
.model-status:empty{display:none}
.story-motion .resort-stage:not(.loaded):not([data-fallback]) .resort-poster{visibility:hidden}
.resort-controls{opacity:var(--p)}
@media(max-width:760px){.story{height:250svh}.story-motion .story-copy{transform:translateY(calc((1 - var(--settle)) * 17svh))}.intro h1{font-size:clamp(38px,9.1vw,62px)}}
@media(max-height:640px){.story{height:auto}.story-motion .story-copy,.story-motion .visual,.story-motion .intro-inner{opacity:1;transform:none}.story-motion .piece{opacity:1}}
body.motion-paused .intro h1{animation:none}
body.motion-paused .intro-inner,body.motion-paused .story-copy,body.motion-paused .visual{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.story{height:auto}.story-motion .story-copy,.story-motion .visual,.story-motion .intro-inner{opacity:1;transform:none}.story-motion .piece{opacity:1}}
