/* Shared typography: tracking 10 = 10/1000 em. Applies to future views too. */
:root { --brand-orange:#FFB812; --brand-peach:#FFE19F; --brand-white:#FEFEFE; --brand-blue:#56B8E8; --brand-ink:#242423; --world-title-zone:clamp(150px,18vh,210px); --world-bottom-zone:clamp(30px,5vh,70px); }
::selection { background:var(--brand-orange); color:var(--brand-ink); }
body .world-greeting { font-family:Modak,Arial,sans-serif!important; font-weight:400!important; }
body[data-view] .portal-header { display:flex; justify-content:flex-end; }
.logo-menu-button { display:block; width:72px; height:72px; margin-left:auto; padding:0; border:0; border-radius:50%; background:#fff; color:var(--circle-blue); box-shadow:none; pointer-events:auto; cursor:pointer; }
.logo-menu-button .menu-home-icon { display:block; width:50%; height:50%; margin:auto; color:inherit; transition:color 220ms ease; }
.logo-menu-button:is(:hover,:focus-visible) { color:var(--circle-orange); }
.logo-menu-button img { display:block; width:100%; height:100%; object-fit:contain; }
.logo-menu-button:hover { scale:1.06; }
.logo-menu-button:focus-visible { outline:3px solid var(--brand-blue); outline-offset:5px; }
.intro-pending .logo-menu-button { visibility:hidden; }
body, body * { font-family:Arial,sans-serif!important; font-weight:700!important; letter-spacing:.01em!important; }
body h1, body h2, body h3, body h4, body h5, body h6 { font-family:Modak,Arial,sans-serif!important; font-weight:400!important; color:var(--brand-blue)!important; letter-spacing:.01em!important; }
body .intro-word, body .intro-sentence { font-family:Modak,Arial,sans-serif!important; font-weight:400!important; }
body .planet-link > span,
body .planet-link > strong, body .planet-link > strong *,
body .mini-planet, body .mini-planet *,
body #menu-preview-title, body #menu-preview-title * { font-family:Modak,Arial,sans-serif!important; font-weight:400!important; }
body[data-view="do-world"] { height:auto; min-height:100dvh; overflow-x:clip; overflow-y:visible; }
body[data-view="do-world"] .view-stage { height:auto; min-height:100dvh; overflow:visible; }
body:not([data-view="home"]) .world-view { display:block; padding:0; transform:none; overflow:clip; background:transparent; color:var(--brand-ink); isolation:isolate; }
.world-view::after { display:none; }
.world-view p { font-size:inherit; line-height:1.6; margin:0 0 1em; max-width:none; }
.world-view h1 { font-size:clamp(58px,7vw,112px); line-height:1; margin:0; }
.world-background { position:fixed; inset:0; pointer-events:none; z-index:-1; background:var(--portal-background); background-attachment:fixed; transition:filter 1s; }
.world-opening { height:430svh; }
.world-hero { position:sticky; top:0; z-index:3; min-height:100svh; padding:0 7vw clamp(40px,6vh,72px); display:flex; flex-direction:column; justify-content:center; }
.world-title { position:fixed; top:clamp(24px,4vh,46px); left:7vw; z-index:20; isolation:isolate; transition:transform 1.8s cubic-bezier(.22,1,.36,1),opacity 1.4s ease; }
.world-gandhi-title-cleared .world-title { transform:translateY(-150%); opacity:0; pointer-events:none; }
.world-arrival { position:relative; isolation:isolate; display:grid; grid-template-columns:1fr 1.2fr; gap:7vw; align-items:center; width:100%; min-height:100svh; padding-top:var(--world-title-zone); padding-bottom:clamp(40px,6vh,72px); will-change:transform,opacity; }
.world-arrival::before { content:''; position:absolute; left:36.3vw; top:-2.4vw; width:64vw; aspect-ratio:1; border-radius:50%; background:var(--brand-orange); z-index:-1; pointer-events:none; }
.world-view.is-active .world-arrival::before { animation:world-enter 5s cubic-bezier(.2,.7,.2,1) .15s both; }
.world-view.is-active .world-hero { animation:world-open 2.4s cubic-bezier(.2,.7,.2,1) both; }
.world-view.is-active .world-globe-wrap,.world-view.is-active .world-intro-copy { animation:world-enter 5s cubic-bezier(.2,.7,.2,1) both; }
.world-view.is-active .world-title { animation:world-title-enter 5s cubic-bezier(.2,.7,.2,1) both; }
.world-view.is-active .world-intro-copy { animation-delay:.15s; }
.world-globe-wrap { position:relative; z-index:2; text-align:center; }
#world-globe { width:min(100%,48vh,560px); height:auto; cursor:grab; touch-action:pan-y; border-radius:50%; }
#world-globe:active { cursor:grabbing; }
.world-globe-hint { display:block; font-size:11px; opacity:.6; margin-top:8px; }
.world-intro-copy { position:relative; align-self:center; width:min(100%,760px); font-size:clamp(20.8px,1.625vw,27.3px); padding:clamp(24px,4vh,44px) clamp(20px,3vw,58px) clamp(40px,6vh,72px); transform:translateY(-3vh); }
.world-intro-copy p:first-child { font-size:1.3em; }
.world-people { position:relative; z-index:1; transition:filter 1s,opacity 1s; }
.world-person { position:relative; padding:0 8vw 12vh; }
.world-portrait-step { min-height:75svh; display:flex; align-items:center; justify-content:flex-start; padding:10vh 5vw 5vh; }
.world-portrait { width:clamp(230px,32vw,480px); aspect-ratio:1; position:relative; }
.world-portrait::before,.world-portrait::after { content:''; position:absolute; inset:-6%; border-radius:50%; background:var(--brand-peach); z-index:-1; }
.world-portrait::after { inset:-12%; opacity:.28; }
.world-person-0 .world-portrait::before,.world-person-0 .world-portrait::after { background:var(--brand-blue); }
.world-portrait-core { width:100%; height:100%; border-radius:50%; overflow:hidden; background:var(--brand-orange); animation:world-float 6s ease-in-out infinite; }
.world-portrait img { width:100%; height:100%; object-fit:contain; object-position:center bottom; }
.world-person-0 img { object-fit:cover; object-position:center 23%; }
@media(min-width:701px) {
  /* Keep the title's sticky layer active through the start of Gandhi's exit. */
  .world-people { margin-top:-220svh; }
  .world-person-0 .world-portrait-step { justify-content:flex-end; }
}
.world-person-1 .world-portrait-step { justify-content:flex-end; }
.world-person-1 .world-portrait-core { background:var(--brand-blue); }
.world-person-1 .world-portrait::before,.world-person-1 .world-portrait::after { background:#56B8E8; opacity:.2; }
.world-quote-step { min-height:95svh; display:flex; justify-content:flex-end; align-items:center; padding:8vh 0; }
.world-person-1 .world-quote-step { justify-content:flex-start; }
.world-quote { width:min(760px,76vw); min-height:600px; aspect-ratio:1; border-radius:50%; background:var(--brand-peach); padding:12% 10%; display:flex; flex-direction:column; justify-content:center; text-align:center; font-size:clamp(17px,2.3vh,22px); }
.world-person-1 .world-quote { background:#d9effa; }
.world-person-2 .world-quote { width:min(980px,84vw); min-height:780px; padding:10% 12%; }
.world-quote h2 { width:100%; max-width:none; overflow-wrap:normal; word-break:normal; font-size:clamp(36px,5.5vh,60px); line-height:1.1; margin:0 0 12px; }
.world-person-2 .world-quote h2 { white-space:nowrap; }
.world-role { font-size:.85em!important; }
.world-quote blockquote { margin:12px 0 0; font:inherit; line-height:1.6; }
.world-person-0 .world-quote .world-role { font-size:1.02em!important; }
.world-person-0 .world-quote blockquote { font-size:1.2em; }
@media(min-width:1000px) {
  .world-person-track { position:relative; height:220svh; }
  .world-person-track .world-person { position:sticky; top:0; }
  .world-person-track .world-portrait-step,.world-person-track .world-quote-step { will-change:transform,opacity; }
  .world-person-track .world-reveal { opacity:1; transform:none; transition:none; }
  .world-person { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,.85fr); gap:7vw; align-items:center; min-height:100svh; padding:var(--world-title-zone) 8vw clamp(40px,6vh,72px); }
  .world-person { transition:padding-top 2.2s cubic-bezier(.22,1,.36,1); }
  .world-gandhi-title-cleared .world-person { padding-top:var(--world-bottom-zone); }
  .world-gandhi-title-cleared .world-person-0 { transition-delay:.55s; }
  .world-person .world-quote-step { grid-column:1; grid-row:1; min-height:0; padding:0; justify-content:center; }
  .world-person .world-portrait-step { grid-column:2; grid-row:1; min-height:0; padding:0; justify-content:center; }
  .world-person-1 { grid-template-columns:minmax(0,.85fr) minmax(0,1.35fr); }
  .world-person-1 .world-portrait-step { grid-column:1; }
  .world-person-1 .world-quote-step { grid-column:2; }
  .world-person .world-portrait { width:100%; max-width:480px; }
  .world-person .world-quote { width:100%; max-width:760px; min-height:0; padding:clamp(28px,4vh,44px) clamp(42px,6vw,88px); font-size:clamp(17px,2.45vh,23px); }
  .world-person.world-person-0 .world-portrait { width:min(100%,480px,calc(100svh - var(--world-title-zone) - var(--world-bottom-zone) - 7vh - 30px)); }
  .world-person-2 .world-quote { max-width:900px; padding:clamp(24px,3.5vh,40px) clamp(42px,5.5vw,80px); font-size:clamp(16px,2.3vh,21px); }
  .world-person-2 .world-quote blockquote { line-height:1.5; }
  .world-quote h2 { max-width:none; text-align:center; font-size:clamp(38px,6vh,60px); }
}
.world-reveal { opacity:0; transform:translateY(56px); transition:opacity 3.2s cubic-bezier(.22,1,.36,1),transform 3.8s cubic-bezier(.22,1,.36,1); }
.world-reveal.world-visible { opacity:1; transform:none; }
@media(max-width:999px) and (prefers-reduced-motion:no-preference) {
  .world-person .world-portrait:not(.world-visible) { transform:translateX(24vw); }
  .world-person .world-quote:not(.world-visible) { transform:translateX(-20vw); }
  .world-person-1 .world-portrait:not(.world-visible) { transform:translateX(-24vw); }
  .world-person-1 .world-quote:not(.world-visible) { transform:translateX(20vw); }
}
.world-finale { min-height:100svh; padding:6vh 4vw; display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:10vw; align-items:center; position:relative; z-index:2; }
.world-finale { opacity:0; visibility:hidden; pointer-events:none; transition:opacity 1.2s ease,visibility 0s linear 1.2s; }
.world-tesla-cleared .world-finale { opacity:1; visibility:visible; pointer-events:auto; transition:none; }
.world-finale .world-reveal { transition:opacity 3.2s cubic-bezier(.22,1,.36,1),transform 3.8s cubic-bezier(.22,1,.36,1); }
@media(min-width:1000px) {
  .world-finale { margin-top:-100svh; }
}
.world-finale::before { content:''; position:absolute; inset:-15vh 0 0; pointer-events:none; }
.world-at-finale .world-finale::before { backdrop-filter:blur(14px); }
.world-final-orb { position:relative; isolation:isolate; width:100%; padding:7vh 2vw; text-align:center; font-size:clamp(20px,1.625vw,28.75px); color:#fff; transform:translateX(-100vw); }

.world-final-orb::before { content:''; position:absolute; right:-2vw; top:50%; transform:translateY(-50%); width:76vw; aspect-ratio:1; border-radius:50%; background:var(--brand-peach); z-index:-1; }

.world-greeting { font-size:clamp(47.5px,6.25vw,87.5px)!important; color:var(--brand-blue); margin-bottom:0!important; }
.world-at-finale .world-people,.world-at-finale .world-background { filter:blur(12px); }
.world-at-finale .world-title { opacity:0; pointer-events:none; }
.world-scroll { position:fixed; bottom:24px; left:50%; transform:translateX(-50%) scale(.5); transform-origin:center bottom; z-index:15; display:flex; align-items:center; gap:10px; border:0; border-radius:30px; background:#FEFEFEd9; color:var(--brand-ink); padding:10px 18px; font-size:12px; animation:world-cue 2.5s ease-in-out infinite; }
.world-scroll[hidden] { display:none; }
.world-back-top { position:fixed; right:24px; bottom:24px; z-index:40; display:grid; place-items:center; width:52px; height:52px; padding:0; border:0; border-radius:50%; background:var(--brand-orange); color:#fff; cursor:pointer; }
.world-back-top[hidden] { display:none; }
.world-back-top svg { width:25px; height:25px; }
.world-back-top:hover { scale:1.06; }
.world-back-top:focus-visible { outline:3px solid var(--brand-blue); outline-offset:4px; }
.world-scroll span { font-size:24px; }
@keyframes world-open { from { clip-path:circle(0% at 28% 50%); } to { clip-path:circle(150% at 28% 50%); } }
@keyframes world-enter { from { translate:100vw 0; } to { translate:0 0; } }
@keyframes world-title-enter { from { translate:-100vw 0; } to { translate:0 0; } }
@keyframes world-float { 50% { transform:translateY(-12px) scale(1.015); } }
@keyframes world-cue { 50% { opacity:.45; } }
@media(max-width:700px) {
  .world-hero { padding:100px 7vw 70px; gap:24px; }
  .world-view .world-title { position:relative; top:auto; left:auto; margin:100px 7vw 0; }
  .world-gandhi-title-cleared .world-title { transform:none; opacity:1; }
  .world-arrival { grid-template-columns:1fr; gap:22px; min-height:0; padding:0; }
  #world-globe { width:min(60vw,280px); }
  .world-arrival::before { display:none; }
  .world-globe-wrap { margin:clamp(24px,5vh,48px) 0; }
  #world-globe { width:min(72vw,300px); }
  .world-intro-copy { width:100%; min-height:max(760px,96svh); margin-top:clamp(20px,5vh,48px); padding:clamp(72px,10vh,100px) 7vw; transform:none; isolation:isolate; display:flex; flex-direction:column; justify-content:center; }
  .world-intro-copy::before { content:''; position:absolute; width:max(190vw,760px); aspect-ratio:1; border-radius:50%; background:var(--brand-orange); left:50%; top:50%; transform:translate(-50%,-50%); z-index:-1; pointer-events:none; }
  .world-opening { height:auto; padding-bottom:clamp(80px,12vh,120px); }
  .world-hero { position:relative; }
  .world-person { display:flex; flex-direction:column; gap:clamp(28px,6vh,52px); padding:clamp(28px,5vh,48px) 5vw clamp(80px,12vh,120px); }
  .world-portrait-step { min-height:0; padding:0; justify-content:center!important; }
  .world-quote-step { min-height:0; padding:0; justify-content:center!important; }
  .world-quote,.world-person-2 .world-quote { width:100%; min-height:0; aspect-ratio:auto; padding:clamp(64px,9vh,84px) 9%; border-radius:48% / 22%; font-size:clamp(18px,2.4vh,20px); }
  .world-quote h2 { font-size:clamp(34px,5vh,44px); }
  .world-person-2 .world-quote { border-radius:48% / 15%; }
  .world-final-orb { padding:60px 6%; }
  .world-final-orb::before { width:160vw; right:-12vw; }
  .world-finale { padding:6vh 4vw 12vh; }
}
@media(min-width:701px) and (max-width:999px) {
  .world-arrival { grid-template-columns:1fr; gap:clamp(28px,5vh,52px); padding:var(--world-title-zone) 5vw 10vh; }
  .world-arrival::before { display:none; }
  #world-globe { width:min(46vw,360px); }
  .world-intro-copy { width:min(82vw,680px); min-height:min(82vw,680px); justify-self:center; padding:clamp(70px,9vw,105px); transform:none; isolation:isolate; display:flex; flex-direction:column; justify-content:center; }
  .world-intro-copy::before { content:''; position:absolute; inset:0; border-radius:50%; background:var(--brand-orange); z-index:-1; pointer-events:none; }
  .world-person {
    display:grid;
    grid-template-columns:minmax(0,1.45fr) minmax(0,.8fr);
    gap:clamp(24px,4vw,42px);
    align-items:center;
    min-height:100svh;
    padding:var(--world-title-zone) 5vw var(--world-bottom-zone);
    transition:padding-top 2.2s cubic-bezier(.22,1,.36,1);
  }
  .world-gandhi-title-cleared .world-person { padding-top:var(--world-bottom-zone); }
  .world-person .world-quote-step { grid-column:1; grid-row:1; min-height:0; padding:0; justify-content:center; }
  .world-person .world-portrait-step { grid-column:2; grid-row:1; min-height:0; padding:0; justify-content:center; }
  .world-person-1 { grid-template-columns:minmax(0,.8fr) minmax(0,1.45fr); }
  .world-person-1 .world-portrait-step { grid-column:1; }
  .world-person-1 .world-quote-step { grid-column:2; }
  .world-person .world-portrait { width:100%; max-width:320px; }
  .world-person .world-quote,
  .world-person-2 .world-quote {
    width:100%;
    max-width:520px;
    min-height:0;
    aspect-ratio:1;
    padding:clamp(24px,3.5vh,34px) clamp(26px,4vw,42px);
    border-radius:50%;
    font-size:clamp(16px,2vh,18px);
  }
  .world-person-2 .world-quote { font-size:clamp(15px,1.8vh,17px); }
  .world-quote h2 { font-size:clamp(34px,4.5vh,44px); }
}
@media(max-width:1199px) {
  .world-finale { grid-template-columns:1fr; gap:50px; padding-top:40px; }
  .world-finale::before { inset:0; }
  
  .world-final-orb::before { width:max(140vw,800px); }
}

@media(prefers-reduced-motion:reduce) {
  
  .world-person-track { height:auto; }
  .world-person-track .world-person { position:relative; top:auto; }
  .world-view *, .world-view.is-active .world-arrival::before, .world-view.is-active .world-hero, .world-view.is-active .world-globe-wrap, .world-view.is-active .world-intro-copy { animation:none!important; transition:none!important; }
  .world-reveal { opacity:1; transform:none; }
}

/* Keep the opening copy inside the same circle as the viewport narrows. */
@media (min-width:1000px) {
  .world-view .world-intro-copy {
    position:absolute; left:45.9vw; top:7.2vw;
    width:44.8vw; height:44.8vw; min-width:0; min-height:0;
    padding:0; transform:none; display:flex; flex-direction:column; justify-content:center;
    box-sizing:border-box; font-size:min(1.625vw,27.3px); overflow-wrap:anywhere;
  }
  .world-view .world-intro-copy p:last-child { margin-bottom:0; }
}
@media (min-width:821px) and (max-width:999px) {
  .world-view .world-intro-copy {
    font-size:min(2.55vw,21px); padding:15%; box-sizing:border-box; overflow-wrap:anywhere;
  }
  .world-view .world-intro-copy p:last-child { margin-bottom:0; }
}
