/* World art stays beside its story, or above it on small screens. */
.world-panel{display:grid;grid-template-columns:.85fr 1.15fr;align-items:stretch;min-height:0;background:radial-gradient(ellipse at 0 0,#36592144,transparent 70%),#101a0b}
.world-panel>img{position:static;grid-column:2;grid-row:1;width:100%;height:100%;min-height:420px;object-fit:cover;object-position:center;z-index:auto;filter:none}
.world-panel:after{display:none}
.world-caption{grid-column:1;grid-row:1;align-self:center;padding:36px;max-width:none}
.world-caption h3{font-size:37px;letter-spacing:-1.2px;line-height:1.15}
.world-caption>p:last-child{font-size:16px;color:#b8ccb0}
.world-caption .eyebrow{font-size:11px;letter-spacing:1px}

/* A shared stage keeps the portal and mascot aligned in Safari.
   Animate scale/rotation without filtering the transparent image layer. */
.portal-dialog{background:#030704;perspective:none;isolation:isolate;overflow:auto;overscroll-behavior:contain;padding:70px 20px 30px;padding-top:max(70px,calc(env(safe-area-inset-top) + 60px));padding-bottom:max(30px,env(safe-area-inset-bottom))}
.portal-dialog[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}
.portal-dialog:after{display:none}
.portal-dialog::backdrop{background:#030704;backdrop-filter:none}
.portal-stage{position:relative;width:min(86vw,50dvh,490px);aspect-ratio:1;flex-shrink:0;isolation:isolate;background:radial-gradient(ellipse,#72c92124,transparent 65%)}
.portal-stage:before{content:"";position:absolute;inset:-10% -35%;background:url('assets/pons-entrance-portal.jpg') center/contain no-repeat;z-index:0;pointer-events:none}
.portal-ring,.portal-depth{position:absolute;inset:auto;top:50%;left:50%;width:80%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:1}
.portal-ring{border:2px solid #caff7e90;background:transparent;box-shadow:0 0 35px #b5ff3955,inset 0 0 35px #b5ff3940;animation:portal-shine-v3 3s ease-in-out infinite}
.portal-depth{width:72%;border:1px solid #ceff9f50;box-shadow:inset 0 0 30px #b5ff3933}
.portal-particles{position:absolute;inset:0;pointer-events:none;z-index:2}
.portal-particles i{position:absolute;left:50%;top:50%;width:3px;height:3px;background:#dbffb5;border-radius:50%;box-shadow:0 0 7px #b5ff39;animation:portal-spark 3.2s ease-out infinite;--spark-x:-120px;--spark-y:-150px}
.portal-particles i:nth-child(2){--spark-x:120px;--spark-y:-110px;animation-delay:.4s}
.portal-particles i:nth-child(3){--spark-x:160px;--spark-y:80px;animation-delay:.8s}
.portal-particles i:nth-child(4){--spark-x:-150px;--spark-y:90px;animation-delay:1.2s}
.portal-particles i:nth-child(5){--spark-x:-70px;--spark-y:-160px;animation-delay:1.6s}
.portal-particles i:nth-child(6){--spark-x:80px;--spark-y:150px;animation-delay:2s}
.portal-particles i:nth-child(7){--spark-x:180px;--spark-y:-60px;animation-delay:2.4s}
.portal-particles i:nth-child(8){--spark-x:-170px;--spark-y:0px;animation-delay:2.8s}
.portal-dialog[open] .portal-hero,.portal-dialog[open] .signal-hero{position:absolute;inset:0;top:0;left:0;width:100%;height:100%;max-height:none;object-fit:contain;background:transparent;transform:none;transform-origin:center;filter:none!important;opacity:0;visibility:hidden;z-index:3;animation:none}
.portal-dialog.portal-ready .portal-hero,.portal-dialog.portal-ready .signal-hero{opacity:1;visibility:visible;animation:hero-portal-flight-v3 2.4s cubic-bezier(.2,.65,.3,1) both}
.portal-loading{position:absolute;left:0;right:0;bottom:5%;text-align:center;font-size:13px;color:#c9e6b9;z-index:4}
.portal-ready .portal-loading{display:none}
.portal-dialog .portal-message,.signal-dialog .portal-message{position:relative;inset:auto;bottom:auto;left:auto;width:100%;padding:0;max-width:640px;z-index:4;opacity:1;transform:none;animation:none}
.portal-message h2{font-size:clamp(30px,4.5vw,52px);line-height:1.08;letter-spacing:-1.2px;margin:12px 0 18px}
.portal-message .eyebrow{font-size:11px;letter-spacing:2px;margin:0;justify-content:center}
.portal-message>p:last-child{margin:12px 0 0}
.portal-skip{position:fixed;top:max(18px,env(safe-area-inset-top));right:max(18px,env(safe-area-inset-right));z-index:6;backdrop-filter:none}
@keyframes hero-portal-flight-v3{0%{opacity:0;transform:scale(.12) rotate(-12deg)}22%{opacity:1}70%{opacity:1;transform:scale(1.04) rotate(1deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
@keyframes portal-shine-v3{0%,100%{opacity:.65;box-shadow:0 0 30px #b5ff3955,inset 0 0 30px #b5ff3930}50%{opacity:1;box-shadow:0 0 55px #b5ff3970,inset 0 0 45px #b5ff3950}}
@keyframes portal-spark{0%{opacity:0;transform:translate(0,0) scale(.4)}15%{opacity:.75}80%{opacity:.35}100%{opacity:0;transform:translate(var(--spark-x),var(--spark-y)) scale(.1)}}
@media(max-width:1000px){.world-caption{padding:28px}.world-caption h3{font-size:31px}.world-panel>img{min-height:400px}}
@media(max-width:700px){.world-panel{grid-template-columns:1fr;border-radius:13px}.world-panel>img{grid-column:1;grid-row:1;min-height:0;height:auto;aspect-ratio:3/2;object-fit:contain}.world-caption{grid-column:1;grid-row:2;padding:26px}.world-caption h3{font-size:31px;margin-top:15px;margin-bottom:20px}.world-caption>p:last-child{font-size:15px}.world-caption .eyebrow{font-size:10px}.portal-dialog .portal-message h2{font-size:clamp(28px,8vw,36px)}.portal-dialog .portal-message .eyebrow{font-size:10px}}
@media(max-height:550px) and (min-width:700px){.portal-dialog[open]{flex-direction:row;gap:30px}.portal-stage{width:min(43vw,75dvh)}.portal-dialog .portal-message{width:45%;max-width:420px}.portal-message h2{font-size:32px}}
@media(prefers-reduced-motion:reduce){.portal-ring,.portal-particles i,.portal-dialog.portal-ready .portal-hero,.portal-dialog.portal-ready .signal-hero{animation:none!important}.portal-dialog.portal-ready .portal-hero,.portal-dialog.portal-ready .signal-hero{opacity:1!important;transform:none!important}}
body.motion-paused .portal-dialog.portal-ready .portal-hero,body.motion-paused .portal-dialog.portal-ready .signal-hero{animation:none!important;opacity:1!important;transform:none!important}

/* One seamless loop, with a single readable copy for assistive technology. */
.manifesto-band{position:relative;overflow:hidden;background:#b5ff39;color:#101807;border-top:1px solid #d8ffa0;border-bottom:1px solid #78ad29}
.manifesto-accessible{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.manifesto-track{display:flex;width:max-content;animation:manifesto-flow 30s linear infinite}
.manifesto-set{display:flex;align-items:center;justify-content:space-around;flex-shrink:0;min-width:max(100vw,1000px);min-height:58px;padding:0 28px;gap:42px}
.manifesto-set span{white-space:nowrap;font-size:18px;font-weight:800;font-style:italic;letter-spacing:.25px;line-height:1.2}
.manifesto-set i{width:6px;height:6px;flex-shrink:0;background:#31540d;transform:rotate(45deg);opacity:.7}
@keyframes manifesto-flow{to{transform:translateX(-50%)}}
@media(hover:hover){.manifesto-band:hover .manifesto-track{animation-play-state:paused}}
@media(max-width:700px){.manifesto-set{min-width:800px;min-height:48px;padding:0 22px;gap:32px}.manifesto-set span{font-size:15px}}
@media(prefers-reduced-motion:reduce){.manifesto-track{animation:none;width:100%}.manifesto-set{min-width:0;width:100%;gap:12px;flex-wrap:wrap;padding:14px 18px}.manifesto-set span{font-size:12px}.manifesto-set:nth-child(2),.manifesto-set i:last-child{display:none}}
body.motion-paused .manifesto-track{animation:none;width:100%;transform:none}body.motion-paused .manifesto-set{min-width:0;width:100%;gap:12px;flex-wrap:wrap;padding:14px 18px}body.motion-paused .manifesto-set span{font-size:12px}body.motion-paused .manifesto-set:nth-child(2),body.motion-paused .manifesto-set i:last-child{display:none}

.community-links{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0 13px}
.social-pill{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:11px 17px;border:1px solid #476332;border-radius:7px;background:#111c0e;color:#d5e7c9;text-decoration:none;font-size:13px;font-weight:600;transition:background .2s,border-color .2s,color .2s}
.social-pill svg{flex-shrink:0;color:#b5ff39}
.social-pill:hover{background:#1d3214;border-color:#9fda50;color:#fff}
.contract-panel{display:flex;align-items:center;gap:13px;width:100%;max-width:475px;padding:16px;border:1px solid #385129;border-radius:9px;background:linear-gradient(120deg,#182710,#0e170b)}
.contract-info{min-width:0;flex:1}
.contract-label{display:block;font:600 10px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;letter-spacing:1.3px;color:#a0bd8d;margin-bottom:9px}
.contract-info code{display:block;font:12px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace;color:#e0efd7;overflow-wrap:anywhere;user-select:all}
.contract-copy{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;flex-shrink:0;min-width:46px;min-height:46px;padding:8px;background:#24391a;border:1px solid #5c8141;border-radius:6px;color:#b5ff39;font-size:10px;cursor:pointer;transition:background .2s,border-color .2s}
.contract-copy:hover{background:#345023;border-color:#b5ff39}
.footer-socials{display:flex;gap:8px;flex-wrap:wrap}.footer-socials .social-pill{padding:9px 12px;font-size:12px}
@media(max-width:700px){.community-links{gap:8px}.community-links .social-pill{flex:1;padding:11px 12px}.contract-panel{padding:13px;gap:10px}.contract-info code{font-size:11px}.footer{gap:18px}.footer-socials{width:100%}.footer-socials .social-pill{flex:1}}
