@font-face{font-family:Spectral;src:url('./assets/Spectral-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
:root{--ink:#eeedf5;--muted:#c5bfdf;--purple:#b48cff;--peach:#ff9b78;--base:#1a1340;font-family:"Segoe UI",sans-serif;color:var(--ink);background:var(--base);color-scheme:dark}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a,input{touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--peach);outline-offset:5px}button{color:inherit;border:1px solid #d0baff38;background:#ffffff0c;border-radius:999px;padding:12px 18px;font-size:14px;transition:background .2s,transform .2s}button:hover:not(:disabled){background:#ffffff1f;transform:translateY(-1px)}[hidden]{display:none!important}#stage{position:fixed;inset:0}#stage canvas{display:block;touch-action:none}header{position:fixed;z-index:4;inset:0 0 auto;display:flex;align-items:center;gap:34px;padding:25px 38px;background:linear-gradient(#1a1340cc,transparent)}.brand img{width:159px;height:52px;object-fit:contain}.edition{font-size:11px;letter-spacing:.2em;display:flex;align-items:center;gap:18px;color:#d9d0ef}.edition b{border:1px solid #bca2e563;border-radius:50%;width:29px;height:29px;display:grid;place-items:center;font-weight:400;letter-spacing:0}.top-actions{display:flex;gap:10px;margin-left:auto}.top-actions button{font-size:13px}#intro{position:fixed;z-index:2;left:5vw;top:24%;pointer-events:none;max-width:420px;text-shadow:0 3px 24px #1a1340}#intro button{pointer-events:auto}.kicker{font-size:11px;letter-spacing:.19em;color:#d3bdf7;font-weight:600}h1,h2{font-family:Spectral,Georgia,serif;font-weight:400}h1{font-size:clamp(42px,4.8vw,78px);line-height:1.08;letter-spacing:-.045em;margin:18px 0}h1 em{color:#ffc2ac;font-weight:400}#intro p{font-size:16px;line-height:1.7;color:#d4cbe8}.enter-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:28px}.primary{background:#e9dfff;color:#25154c;border:0;padding:15px 24px;font-weight:600}.primary:hover:not(:disabled){background:#fff}.secondary{backdrop-filter:blur(12px)}#status{font-size:12px!important;max-width:360px;line-height:1.5!important;color:#b9acca!important}#location{position:fixed;right:38px;top:132px;text-align:right;display:flex;flex-direction:column;gap:9px;pointer-events:none}#place-index{font-size:11px;letter-spacing:.2em;color:#e5d2ff}#place-caption{font-family:Spectral,Georgia,serif;font-size:20px;max-width:310px;color:#d5c7e8}#destinations{position:fixed;z-index:4;bottom:66px;left:50%;transform:translateX(-50%);display:flex;padding:7px;border:1px solid #c8b4e53b;border-radius:24px;background:#1a1340c9;backdrop-filter:blur(22px);box-shadow:0 12px 60px #09032066}#destinations button{border:0;border-radius:18px;min-width:143px;text-align:left;padding:13px 19px;display:flex;gap:12px;align-items:center;white-space:nowrap;background:transparent}#destinations button[aria-pressed=true]{background:#b48cff25;box-shadow:inset 0 0 0 1px #c7a0ff55}#destinations small{font-size:11px;color:#b8a3d2}#destinations span{font-size:14px}footer{position:fixed;bottom:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:14px 38px;color:#c2b4d8;font-size:11px;letter-spacing:.08em;gap:16px}footer button{font-size:12px;padding:7px 12px;border:0}#hint{letter-spacing:0;font-size:13px}#panel{position:fixed;z-index:5;right:32px;top:120px;width:min(360px,calc(100vw - 32px));max-height:calc(100dvh - 300px);overflow:auto;padding:28px;border:1px solid #bea4ef55;background:#21194deb;backdrop-filter:blur(24px);border-radius:30px;box-shadow:0 20px 80px #10082688}h2{font-size:34px;line-height:1.15;margin:12px 0}#panel p,dialog p{font-size:15px;line-height:1.6;color:#ccc1df}.close{position:absolute;right:12px;top:9px;border:0;background:none;font-size:25px;padding:6px 13px}#panel-content{display:grid;gap:10px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chips button{padding:10px 13px}.chips button[aria-pressed=true]{background:#b48cff38;border-color:#d6bbff}.activity-note{font-size:13px!important;color:#d9c9ef!important;margin:8px 0}blockquote{font:26px/1.45 Spectral,Georgia,serif;margin:14px 0 20px;color:#fff0ee}#panel .primary{width:100%;margin-top:10px}.venue{width:100%;height:120px;object-fit:cover;border-radius:16px;opacity:.9}.plan{padding:16px;background:#b48cff12;border:1px solid #b48cff33;border-radius:18px}.plan h3{font-family:Spectral,Georgia,serif;font-size:23px;font-weight:400;margin:0}.plan p{margin:6px 0!important}.row{display:flex;gap:8px;flex-wrap:wrap}dialog{color:var(--ink);background:#241a50;border:1px solid #b48cff66;border-radius:28px;max-width:570px;width:calc(100vw - 30px);max-height:85dvh;padding:32px}dialog::backdrop{background:#0d0526b8;backdrop-filter:blur(10px)}dialog summary{cursor:pointer}pre{font-size:12px;white-space:pre-wrap;line-height:1.6;color:#d8bcff}#toast{position:fixed;z-index:6;bottom:164px;left:50%;transform:translate(-50%,10px);opacity:0;transition:opacity .25s,transform .25s;background:#e8dcff;color:#211540;border-radius:18px;padding:14px 22px;max-width:90vw;font-size:14px;text-align:center;pointer-events:none}#toast.show{opacity:1;transform:translate(-50%,0)}#veil{position:fixed;inset:0;z-index:10;background:#1a1340;pointer-events:none;opacity:0;transition:opacity .15s}body.away #intro{display:none}body.away #location{left:38px;right:auto;text-align:left}body.in-vr header,body.in-vr main,body.in-vr aside,body.in-vr nav,body.in-vr footer,body.in-vr #location,body.in-vr #toast{display:none}
@media(max-width:900px){header{padding:18px 22px}.edition{display:none}#intro{left:26px;top:19%;max-width:300px}#intro h1{font-size:48px}#intro p{font-size:14px}#location{right:22px;top:110px;max-width:200px}#place-caption{font-size:17px}#destinations button{min-width:0;padding:12px}#panel{right:18px;top:110px}footer{padding:14px 20px}footer>span:first-child{display:none}}
@media(max-width:600px){header{padding:12px 16px}.brand img{width:115px;height:42px}.top-actions{gap:5px}.top-actions button{padding:9px 10px;font-size:12px}#intro{top:15%;left:22px;right:22px;max-width:none}#intro h1{font-size:43px;max-width:260px}#intro>p{max-width:260px}#intro .kicker{font-size:9px}.enter-row{margin-top:17px;gap:8px}.enter-row button{font-size:13px;padding:12px 17px}#location{display:none}#destinations{bottom:59px;width:calc(100vw - 24px);border-radius:20px;justify-content:space-between;padding:5px}#destinations button{flex:1;display:flex;flex-direction:column;gap:5px;text-align:center;padding:11px 4px;white-space:normal}#destinations span{font-size:11px}#destinations small{font-size:10px}footer{padding:10px 14px}#hint{font-size:11px;max-width:210px}footer button{font-size:11px;max-width:100px}#panel{top:82px;right:16px;max-height:calc(100dvh - 228px);padding:22px;width:calc(100vw - 32px)}h2{font-size:30px}#toast{bottom:150px}}
/* Keep the invitation readable over the scene without covering the world after arrival. */
body::before{content:"";position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,#1a1340ed 0%,#1a1340b8 27%,#1a134000 65%);transition:opacity .35s}
body.away::before,body.in-vr::before{opacity:0}
header,#location,footer{z-index:4}
#panel{scrollbar-width:thin;scrollbar-color:#9b7bb8 transparent;overscroll-behavior:contain;scroll-padding:24px}
#panel button{min-height:44px}
#panel h2{padding-right:12px}
#destinations button{min-height:52px}
#intro{max-height:calc(100dvh - 260px);overflow-y:auto;scrollbar-width:thin;pointer-events:auto;padding-right:12px}
#status{color:#d4c7e6!important}
@media(max-width:600px){body::before{background:linear-gradient(100deg,#1a1340ed,#1a1340b8 65%,#1a13403d)}#intro{top:105px;max-height:calc(100dvh - 260px)}#intro h1{font-size:clamp(34px,9.5vw,43px)}.top-actions button{min-height:44px}#panel{scrollbar-gutter:stable}}
@media(max-height:600px) and (min-width:601px){header{padding:8px 22px}.brand img{height:38px}#intro{top:76px;max-height:calc(100dvh - 204px)}#intro h1{font-size:38px;margin:10px 0}#intro p{font-size:13px;margin:8px 0}.enter-row{margin-top:12px}#location{top:85px}#panel{top:76px;max-height:calc(100dvh - 205px);padding:20px}#destinations{bottom:48px}footer{padding:6px 20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
