:root{--paper:#eeece5;--ink:#292a26;--muted:#6e7067;--line:#cacbc0}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a,input{touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid #6b7655;outline-offset:7px}button{color:inherit;cursor:pointer}#world{position:fixed;inset:0;width:100%;height:100%;z-index:-2;background:radial-gradient(ellipse at 66% 44%,#918e80 0%,#c7c5b8 20%,var(--paper) 58%)}.grain{position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23000' filter='url(%23n)' opacity='.4' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}header{position:fixed;top:0;left:0;right:0;padding:30px 4.5%;display:flex;align-items:center;justify-content:space-between;z-index:10}.wordmark{display:flex;align-items:center;gap:12px;font-size:10px;font-weight:700;line-height:1.2;letter-spacing:1.4px}.brand-symbol{font:42px Georgia,serif;line-height:1}nav{display:flex;gap:32px;align-items:center;font-size:12px}.talk{border:1px solid #76797066;border-radius:30px;padding:13px 19px;backdrop-filter:blur(12px);background:#eeece55c}.talk span{margin-left:20px}.nav-link{border-bottom:1px solid transparent;padding-bottom:4px}.nav-link:hover{border-color:currentColor}.chapter{position:relative;min-height:100svh}.hero{height:115svh}.hero-copy{position:absolute;top:29svh;left:7%;width:70%;max-width:900px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:600;margin:0 0 28px}h1,h2{font-weight:400;letter-spacing:-.065em;line-height:.99;margin:0}h1{font-size:clamp(64px,7.9vw,122px)}em{font-family:Georgia,'Times New Roman',serif;font-weight:400}p{line-height:1.65}.intro{font-size:15px;margin-top:30px}.scroll-link{display:inline-flex;align-items:center;gap:15px;font-size:11px;margin-top:31px}.circle-arrow{display:grid;place-items:center;border:1px solid #91958a;border-radius:50%;width:40px;height:40px;font-size:18px}.scroll-link:hover .circle-arrow{background:var(--ink);color:var(--paper)}.object-caption{position:absolute;right:7%;top:83svh;font:9px monospace;letter-spacing:1px;color:var(--muted)}.leap{height:140svh;display:grid;place-items:center}.center-copy{text-align:center;max-width:840px;padding:20px;opacity:0;transform:translateY(25px);transition:opacity .45s,transform .45s}.center-copy h2,.discovery-copy h2{font-size:clamp(58px,6.8vw,100px)}.center-copy p,.discovery-copy>p{font-size:14px}.discover{height:140svh;display:flex;align-items:center;padding:0 9%}.discovery-copy{max-width:620px;opacity:0;transform:translateY(25px);transition:opacity .45s,transform .45s}.shape-control{display:block;width:260px;margin-top:45px;padding:20px 0;border-top:1px solid #888b7c70;font-size:11px}.shape-control>span{display:flex;justify-content:space-between;gap:10px}input[type=range]{width:100%;margin:20px 0 14px;accent-color:#363d2e;cursor:pointer}.range-labels{font:8px monospace;letter-spacing:1px;color:var(--muted)}.floating-words{position:absolute;left:58%;right:7%;top:24%;height:50%;pointer-events:none;opacity:0;transition:opacity .6s}.floating-words span{position:absolute;font:italic clamp(24px,3vw,46px) Georgia,serif;color:#515849}.floating-words span:nth-child(1){top:0;left:0}.floating-words span:nth-child(2){top:28%;right:0}.floating-words span:nth-child(3){top:62%;left:13%}.floating-words span:nth-child(4){bottom:0;right:8%;font-size:22px}.active .center-copy,.active .discovery-copy{opacity:1;transform:none}.active .floating-words{opacity:.8}.contact{height:105svh;background:linear-gradient(to bottom,#eeece500,var(--paper) 25%);display:flex;align-items:center;justify-content:center;padding:80px 6% 120px;text-align:center}.contact-copy h2{font-size:clamp(48px,6.3vw,90px)}.contact-copy>p:not(.eyebrow){font-size:14px;margin-top:28px}.contact-button{display:inline-flex;align-items:center;gap:48px;margin-top:22px;padding:20px 28px;background:var(--ink);color:var(--paper);border:1px solid var(--ink);border-radius:2px;font-size:12px;transition:background .2s,transform .2s}.contact-button:hover{background:#4b5142;transform:translateY(-2px)}.contact-copy .contact-note{font-size:10px!important;color:var(--muted);margin:14px 0!important}.email-link{display:block;font-size:11px;margin-top:18px}.email-link[hidden]{display:none}footer{position:absolute;left:4.5%;right:4.5%;bottom:70px;display:flex;justify-content:space-between;font-size:9px;letter-spacing:.7px;padding-top:23px;border-top:1px solid var(--line)}footer span:first-child{font-weight:700}.scene-controls{position:fixed;right:4.5%;bottom:75px;display:flex;gap:8px;z-index:12}.scene-controls button{border:1px solid #aaa99c80;background:#eeece5bd;backdrop-filter:blur(12px);padding:10px 13px;border-radius:22px;font-size:10px;min-height:36px}.view-icon{margin-right:10px}.journey{position:fixed;bottom:24px;left:4.5%;right:4.5%;display:flex;align-items:center;gap:24px;font:9px monospace;letter-spacing:1px;z-index:10;pointer-events:none}.journey>span:first-child{width:160px}.progress-track{flex:1;height:1px;background:#969b8870}#progress{height:100%;width:0;background:var(--ink)}#progress-number{width:30px}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);padding:55px;max-width:calc(100% - 32px)}dialog::backdrop{background:#171a1466;backdrop-filter:blur(6px)}dialog h2{font-size:48px}dialog p:not(.eyebrow){font-size:14px}#close-dialog{position:absolute;right:12px;top:8px;border:0;background:none;font-size:26px}.no-script{position:fixed;bottom:0;padding:10px;background:var(--paper)}body.reduced-motion{scroll-behavior:auto}body.reduced-motion .floating-words{transform:none!important}@media(max-width:700px){header{padding:22px 6%}.nav-link{display:none}.talk{padding:11px 15px;font-size:11px}.wordmark{font-size:9px}.hero-copy{top:38svh;left:7%;width:90%}h1{font-size:clamp(56px,12vw,85px)}.eyebrow{font-size:8px;letter-spacing:1.5px;margin-bottom:23px}.intro{font-size:13px;margin-top:24px}.object-caption{top:86svh;font-size:7px}.hero{height:110svh}.discover{padding:0 7%}.discovery-copy h2,.center-copy h2{font-size:clamp(52px,11vw,78px)}.discovery-copy>p{font-size:12px}.floating-words{left:54%;right:8%;top:17%;height:62%}.floating-words span{font-size:21px;opacity:.4}.floating-words span:nth-child(2){top:18%}.floating-words span:nth-child(3){top:85%}.floating-words span:nth-child(4){display:none}.contact-copy h2{font-size:clamp(43px,9vw,64px)}footer{bottom:80px;gap:20px;font-size:8px}footer span:nth-child(2){display:none}.journey{gap:14px}.journey>span:first-child{width:135px;font-size:8px}.scene-controls{bottom:48px}.shape-control{width:235px}.contact{padding-bottom:160px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}

/* The opening is a sustained, pinned scroll scene. */
body{isolation:isolate}#world{z-index:-1}
.hero{height:105svh}.leap{height:300svh;display:block}
.center-copy{position:sticky;top:0;height:100svh;max-width:none;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:none;padding:80px 20px;transition:color .5s;}
.center-copy h2{font-size:clamp(70px,9vw,136px);line-height:1.02;text-shadow:0 2px 32px #eeece533}
.center-copy>p:last-child{margin-top:28px}.discover{height:120svh}
.inside-aperture{color:#eeece5}.inside-aperture header .talk{border-color:#eeece566;background:#24291f44}
.inside-aperture .journey{color:#eeece5}.inside-aperture #progress{background:#eeece5}
.inside-aperture .floating-words span{color:#d3d8c8}.inside-aperture .range-labels{color:#c1c7b6}
.inside-aperture .shape-control{border-color:#bbc2af66}.inside-aperture input[type=range]{accent-color:#c4cbb5}
.scene-controls{color:var(--ink)}.contact{color:var(--ink);background:linear-gradient(to bottom,#eeece500,var(--paper) 40%)}
.reduced-motion .center-copy{transition:none}
@media(max-width:700px){.hero{height:105svh}.leap{height:280svh}.center-copy h2{font-size:clamp(64px,14vw,100px)}.hero-copy{top:36svh}}

/* Language selector */
#language-switch{font:inherit;color:inherit;background:transparent;border:1px solid #76797066;border-radius:24px;padding:11px 9px;cursor:pointer;min-height:40px}#language-switch option{color:#292a26;background:#eeece5}select:focus-visible{outline:2px solid #6b7655;outline-offset:5px}.inside-aperture #language-switch{border-color:#eeece566}@media(max-width:700px){nav{gap:10px}.talk span{margin-left:8px}#language-switch{padding:9px 6px}}

/* Floating mathematical objects, with lettering in front. */
.floating-words{left:58%;right:5%;top:12%;height:78%;opacity:0;transition:opacity .6s}
.active .floating-words{opacity:1}
.math-object{position:absolute;width:240px;height:210px;display:grid;place-items:center}
.math-object canvas{position:absolute;width:148.75%;height:148.75%;inset:-24.375% auto auto -24.375%;opacity:.85;pointer-events:none}
.floating-words .math-object>span{position:relative!important;inset:auto!important;font:italic clamp(24px,3vw,46px) Georgia,serif;color:#eeece5;text-shadow:0 2px 15px #20261dcc;z-index:1;white-space:nowrap;will-change:transform}
.math-object-0{top:0;left:-8%}.math-object-1{top:22%;right:-3%}.math-object-2{top:48%;left:-4%}.math-object-3{top:72%;right:1%}
@media(max-width:700px){.discover{height:auto;min-height:165svh;display:block;padding:150px 7% 75px}.discovery-copy{position:relative;max-width:100%}.floating-words{position:relative;inset:auto;width:100%;height:440px;margin-top:25px;transform:none!important}.math-object{width:50%;height:210px}.math-object-0{top:0;left:0}.math-object-1{top:0;right:0}.math-object-2{top:220px;left:0}.math-object-3{top:220px;right:0}.floating-words .math-object>span{font-size:25px;opacity:1}.math-object canvas{opacity:.95}}

.curve-preview{display:block;width:100%;height:auto;aspect-ratio:5/2;margin-top:18px;pointer-events:none}

.math-object{will-change:transform}

/* Captions stay anchored; only their background figures float. */
.floating-words,.math-object{transform:none!important}
.floating-words .math-object>span{transform:none!important;will-change:auto}
.math-object{will-change:auto}
.math-object canvas{will-change:transform}

/* Mobile keeps the same artwork and hierarchy without shrinking the desktop. */
@media(max-width:700px){
 header{padding:16px max(5%,env(safe-area-inset-left));gap:10px}
 nav{gap:8px;flex-shrink:0}
 .talk,#language-switch,.scene-controls button{min-height:44px}
 .wordmark{gap:8px;letter-spacing:1px}
 .center-copy{padding:96px 6% 100px}
 .center-copy h2{font-size:clamp(46px,12vw,84px)}
 .discover{padding:110px 7% 100px;min-height:145svh}
 .discovery-copy h2{font-size:clamp(45px,11vw,78px)}
 .shape-control{width:min(100%,300px);margin-top:30px}
 input[type=range]{min-height:36px;margin:8px 0}
 .floating-words{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 0;height:auto;margin-top:24px;pointer-events:auto;touch-action:pan-y}
 .floating-words .math-object{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:6/5}
 .floating-words .math-object>span{font-size:25px}
 .contact{height:auto;min-height:105svh;padding:110px 7% 180px}
 .contact-copy{max-width:100%;min-width:0}
 .contact-copy h2{font-size:clamp(32px,8.5vw,60px);overflow-wrap:break-word}
 .contact-copy>p:not(.eyebrow){font-size:14px}
 footer{bottom:105px;align-items:center}
 .scene-controls{bottom:calc(48px + env(safe-area-inset-bottom));right:5%}
 .journey{bottom:calc(18px + env(safe-area-inset-bottom));gap:10px}
 .journey>span:first-child{width:auto;max-width:60%}
 dialog{padding:48px 24px 28px}
 dialog h2{font-size:38px}
}
@media(max-width:360px){
 .wordmark{font-size:8px}.brand-symbol{font-size:32px}
 .talk{padding:10px;font-size:10px}.talk span{margin-left:5px}
 h1{font-size:clamp(44px,14vw,56px)}
}

/* Direct WhatsApp contact and QR. */
.contact{height:auto;min-height:105svh}
.whatsapp-details{margin-top:18px}
.phone-number{display:inline-block;font-size:14px;letter-spacing:.05em;border-bottom:1px solid var(--line);padding:8px 4px}
.whatsapp-qr{margin:18px auto 0}
.whatsapp-qr>a{display:inline-block;background:#fff;padding:12px;border-radius:8px}
.whatsapp-qr img{display:block;width:132px;height:132px;max-width:100%;object-fit:contain}
.whatsapp-qr figcaption{font-size:11px;line-height:1.6;margin-top:10px}
.whatsapp-qr small{display:block;color:var(--muted);font-size:10px;margin-top:4px}
@media(max-width:700px){.contact{padding-bottom:190px}.whatsapp-qr img{width:120px;height:120px}}

/* Independent overlay: the existing centered contact layout stays intact. */
.dani-overlay{position:absolute;right:2%;top:42%;width:min(47.25vw,708.75px);margin:0;z-index:2;pointer-events:none}
.dani-reveal{opacity:var(--reveal,1);transform:translateY(var(--rise,0px))}
.dani-overlay img{display:block;width:100%;height:auto;transform:scaleX(1);filter:drop-shadow(0 12px 16px #292a2626);animation:dani-hover 7s ease-in-out infinite}
@keyframes dani-hover{0%,100%{transform:scaleX(1) translateY(0)}50%{transform:scaleX(1) translateY(-6px)}}
body.reduced-motion .dani-overlay img{animation:none}
@media(prefers-reduced-motion:reduce){.dani-overlay img{animation:none}}
@media(max-width:1100px){
 .contact{flex-direction:column;gap:28px}
 .dani-overlay{position:relative;inset:auto;top:38px;width:min(118.8vw,540px);max-width:90%;flex:none}
}

/* Keep chapter 02 readable when embedded previews cannot render WebGL. */
.discover .discovery-copy,.discover .floating-words{opacity:1;transform:none}
body:not(.webgl-ready) .discover{background:#1f221d;color:#eeece5}
body:not(.webgl-ready) .discover .range-labels{color:#c1c7b6}
body:not(.webgl-ready) .discover .shape-control{border-color:#bbc2af66}
body:not(.webgl-ready) .discover input[type=range]{accent-color:#c4cbb5}
