*{box-sizing:border-box}html{background:#030305;color:#e6dce0;scrollbar-width:none}html::-webkit-scrollbar{display:none}body{margin:0;height:100vh;overflow:hidden;overscroll-behavior:none;font-family:Arial,Helvetica,sans-serif}main{position:fixed;inset:0;overflow:hidden;background:#030305}#world{display:block;width:100%;height:100%;outline:none;touch-action:pinch-zoom}.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 44%,transparent 35%,#02020466 78%,#020204cf 100%),linear-gradient(0deg,#020204 0%,transparent 26%,transparent 85%,#02020477)}.grain{position:absolute;inset:-50%;pointer-events:none;opacity:.045;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='.94' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.65' filter='url(%23n)'/%3E%3C/svg%3E");transform:rotate(3deg)}.loading{position:absolute;left:50%;bottom:9.5%;transform:translateX(-50%);text-align:center;pointer-events:none}h1{font-size:clamp(15px,1.35vw,21px);font-weight:400;letter-spacing:.55em;margin:0 0 19px;text-indent:.55em;text-shadow:0 0 20px #ffa8b23a}h1 span{letter-spacing:.2em}.loading-line{height:1px;width:112px;margin:auto;background:#ffffff13;overflow:hidden}.loading-line i{display:block;width:34%;height:100%;background:#f8a7b2;box-shadow:0 0 12px #ff5a85;animation:scan 3.5s ease-in-out infinite}.scroll-cue{position:absolute;bottom:3%;left:calc(50% - 8px);height:24px;width:15px;border:1px solid #dcbec348;border-radius:12px}.scroll-cue i{display:block;margin:5px auto;width:2px;height:5px;background:#dcbec3a0;animation:scroll 2s ease infinite}button{position:absolute;bottom:28px;right:30px;border:1px solid #ffffff16;border-radius:50%;width:34px;height:34px;background:#07070a44;color:#c5adb7;cursor:pointer;opacity:.6}button:hover,button:focus-visible{opacity:1;border-color:#e49ab0;outline:none}button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.4}#error{position:absolute;top:42%;left:15%;width:70%;text-align:center;font-size:14px;line-height:1.8;color:#c2a7af}.paused *{animation-play-state:paused!important}@keyframes scan{0%,100%{transform:translateX(-110%)}50%{transform:translateX(300%)}}@keyframes scroll{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(8px);opacity:0}}@media(max-width:600px){.loading{bottom:13%}button{right:18px;bottom:20px}.scroll-cue{bottom:5%}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}
.brand{position:absolute;left:36px;top:32px;color:#e5d5db;font-family:Impact,'Arial Black',Arial,sans-serif;font-weight:900;font-style:italic;font-size:31px;letter-spacing:-.055em;line-height:.82;transform:rotate(-5deg);user-select:none;pointer-events:none;text-shadow:0 0 24px #fb8aa315}.brand>span{display:block}.brand>span+span{font-size:27px;letter-spacing:-.035em;margin-top:4px}.brand-star{display:inline-block;font-size:20px;margin-left:3px;vertical-align:top}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:600px){.brand{top:24px;left:23px;font-size:26px}.brand>span+span{font-size:23px}}

.brand{width:clamp(132px,12vw,190px);transform:none;opacity:.9}.brand img{display:block;width:100%;height:auto}@media(max-width:600px){.brand{width:132px}}

[hidden]{display:none!important}
#startup{position:fixed;inset:0;z-index:20;background:#030305;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:32px;opacity:1;transition:opacity .85s ease,filter .85s ease}
#startup.complete{opacity:0;filter:blur(15px);pointer-events:none}
.signal{width:110px;height:110px;position:relative;filter:drop-shadow(0 0 18px #e6467966)}
.signal i{position:absolute;inset:0;border:1px solid #df5c8e18;border-top-color:#f2a0bc;border-bottom-color:#8a264c;border-radius:50%;animation:signal-orbit 2.4s linear infinite}
.signal i:nth-child(2){inset:15px;animation-duration:1.7s;animation-direction:reverse;transform:rotate(70deg)}
.signal i:nth-child(3){inset:31px;border-style:dashed;animation-duration:4s}
.signal b{position:absolute;inset:48px;background:#ffd6e6;border-radius:50%;box-shadow:0 0 30px #fa659f;animation:signal-pulse 1.8s ease-in-out infinite}
#startup.failed .signal{opacity:.3}#startup.failed .signal *{animation:none}
#startup-status:not(.sr-only){max-width:340px;margin:0 24px;text-align:center;color:#d0bbc5;font-size:14px;line-height:1.7}
#retry{position:static;width:auto;height:auto;border-radius:4px;padding:12px 23px;opacity:1;color:#f2d9e3;background:#22121d;border:1px solid #75445c;font-size:14px}
.no-script{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:#030305;color:#d0bbc5;text-align:center;padding:24px}
@keyframes signal-orbit{to{transform:rotate(360deg)}}@keyframes signal-pulse{50%{opacity:.35;transform:scale(.65)}}
@media(prefers-reduced-motion:reduce){.signal *{animation:none!important}#startup{transition:opacity .15s}}
.signal{width:150px;height:90px;filter:none}.signal b{inset:32px 55px;background:#e7a1c4;border-radius:50%;filter:blur(13px);box-shadow:0 0 35px 12px #cd2e7277,18px 0 30px #814de777,-18px 0 28px #ef688777;animation:signal-glow 2.8s ease-in-out infinite,signal-glitch 3.7s steps(1,end) infinite}@keyframes signal-glow{0%,100%{opacity:.45;transform:scale(.85)}50%{opacity:.85;transform:scale(1.25,.85)}}@keyframes signal-glitch{0%,89%,94%,100%{translate:0;clip-path:none}90%{translate:-9px 2px;clip-path:inset(0 0 35% 0)}92%{translate:7px -1px;clip-path:inset(20% 0 0 0)}}

/* Mobile-only: clean image and a deep foreground that conceals sparse feet/gaps. */
.mobile-scene .grain{display:none}
.mobile-scene .vignette{background:radial-gradient(ellipse at 50% 42%,transparent 32%,#02020455 78%,#020204aa 100%),linear-gradient(0deg,#020204 0%,#020204f5 12%,#020204b8 25%,#02020455 36%,transparent 49%)}
.mobile-scene #motion{width:46px;height:46px;touch-action:manipulation;bottom:max(20px,env(safe-area-inset-bottom));z-index:3}
.mobile-scene .audio-status{position:absolute;right:20px;bottom:78px;max-width:230px;font-size:12px;line-height:1.5;color:#e6dce0;text-align:right;pointer-events:none}
@font-face{font-family:'Zen Dots';src:url('./assets/zen-dots.ttf') format('truetype');font-display:swap}
.brand{pointer-events:auto}.contact-trigger{position:static;display:block;width:auto;height:auto;border:0;border-radius:0;background:none;padding:14px 0;color:#d1aebd;opacity:.75;font:9px monospace;letter-spacing:.18em}.contact-trigger span{margin-left:9px}.contact-trigger:hover{color:#fff}
#backstage{left:70%;top:70%;right:auto;bottom:auto;width:auto;height:auto;min-width:142px;border:1px solid #dc7b9a55;border-radius:2px;padding:12px 14px;background:#140c12ba;color:#f0c8da;opacity:.85;box-shadow:0 0 22px #da527d16;font:10px monospace;letter-spacing:.14em;text-align:left;z-index:2;transition:background .25s,box-shadow .25s}
#backstage small{display:block;margin:8px 0 0 13px;font-size:8px;letter-spacing:.18em;color:#c980a0}.sign-light{display:inline-block;width:4px;height:4px;margin:0 8px 2px 0;border-radius:50%;background:#f5b5d2;box-shadow:0 0 9px #ee8abd}#backstage:hover,#backstage:focus-visible{background:#25101fd9;box-shadow:0 0 28px #dc598b30;opacity:1}
#reveal{position:fixed;inset:0;margin:auto;width:min(610px,calc(100% - 40px));max-height:calc(100dvh - 70px);overflow:auto;padding:70px 54px 42px;border:1px solid #d5a1bb22;border-radius:3px;background:#100b13e8;color:#f2e0e9;box-shadow:0 0 120px #bc508820;backdrop-filter:blur(18px)}
#reveal::backdrop{background:#020205ad;backdrop-filter:blur(4px)}#reveal[open]{animation:reveal-in .4s ease-out}.reveal-close{position:absolute;right:15px;top:15px;bottom:auto;width:40px;height:40px;font:25px Arial;z-index:2;border-color:#ffffff22}.reveal-content{position:relative;z-index:1}.reveal-beam{position:absolute;pointer-events:none;inset:0;background:conic-gradient(from 155deg at 50% 0%,transparent 0deg,#c881b52a 19deg,transparent 46deg);filter:blur(18px)}.reveal-label{font:10px monospace;letter-spacing:.25em;color:#d28caa;margin:0 0 27px}#reveal h2{font-family:'Zen Dots',sans-serif;font-size:clamp(24px,4vw,35px);line-height:1.3;font-weight:400;letter-spacing:-.04em;margin:0 0 24px}.reveal-copy{font-size:14px;line-height:1.8;color:#c4aab9;max-width:390px}.reveal-email{display:inline-block;margin:16px 0;color:#f5dcea;font-size:clamp(16px,3vw,23px);text-decoration:none;border-bottom:1px solid #bd739655;padding:9px 0;overflow-wrap:anywhere}.reveal-email:hover{border-color:#f1bad3}.reveal-signature{display:block;font:9px monospace;letter-spacing:.22em;color:#947b8a;margin-top:42px}.reveal-roles{padding:0;list-style:none}.reveal-roles li{border-bottom:1px solid #bd739622;padding:10px 0;color:#dec1d0;font-size:14px}@keyframes reveal-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){#reveal{padding:65px 25px 32px}.contact-trigger{padding-top:12px;font-size:8px}#backstage{min-width:134px;padding:12px;font-size:9px}}
@media(prefers-reduced-motion:reduce){#reveal[open]{animation:none}}

/* The visible sign is real arena geometry. Keep an equivalent keyboard entry. */
#backstage.backstage-access{position:absolute;width:1px;height:1px;min-width:0;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;left:0;top:0}
#backstage.backstage-access:focus-visible{clip-path:none;width:auto;height:auto;padding:14px 20px;left:24px;top:auto;bottom:30px;margin:0;outline:1px solid #ecc3d8}
.mobile-scene .scroll-cue{display:none}

#contact-return{position:fixed;top:25px;right:24px;bottom:auto;border:1px solid #d6a5bc55;border-radius:2px;width:auto;height:auto;padding:13px 15px;font:10px monospace;letter-spacing:.1em;color:#f1dce7;background:#100b13cc;opacity:1;z-index:5}
.screen-email{position:fixed;display:block;z-index:4;border-radius:2px;outline:0}.screen-email:hover,.screen-email:focus-visible{background:#f7bbda14;box-shadow:0 1px 0 #ecc3d8}
.contact-open .contact-trigger{visibility:hidden}.contact-open .scroll-cue{display:none}
@media(max-width:600px){#contact-return{top:auto;bottom:30px;left:20px;right:auto;font-size:9px}}

/* Funding acknowledgement is visible only in the contact view. */
.eu-funding{position:fixed;left:max(24px,env(safe-area-inset-left));bottom:max(24px,env(safe-area-inset-bottom));width:150px;height:auto;z-index:5;pointer-events:none}
@media(max-width:600px){.eu-funding{left:20px;bottom:calc(88px + env(safe-area-inset-bottom));width:125px}}

.contact-description{position:fixed;left:24px;bottom:84px;z-index:5;max-width:260px;margin:0;color:#d6c6d0;font:12px/1.6 Arial,Helvetica,sans-serif;text-wrap:pretty}
@media(max-width:600px){.contact-description{left:20px;right:20px;top:100px;bottom:auto;max-width:330px;font-size:11px}}

/* Prevent mobile long-press selection without cancelling touch gestures or links. */
@media (pointer:coarse), (max-width:699px){
 html,body,body *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
 img{-webkit-user-drag:none}
 input,textarea,[contenteditable="true"]{-webkit-user-select:text;user-select:text}
}

/* Swap desktop navigation in the same brand slot. */
@media(min-width:601px){.contact-open .contact-trigger{display:none}#contact-return{position:static;display:block;top:auto;right:auto;bottom:auto;left:auto;width:auto;height:auto;padding:14px 0;border:0;border-radius:0;background:none;color:#d1aebd;opacity:.85;font:9px monospace;letter-spacing:.18em;text-align:left;white-space:nowrap}#contact-return span{margin-left:9px}#contact-return:hover,#contact-return:focus-visible{color:#fff;opacity:1}}
