:root{--g:#0c6e32;--gd:#06130c;--au:#d9b45a;--au2:#f6e2a0;--ink:#f3ecd6}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:#000;color:var(--ink);font:16px/1.55 Georgia,"Times New Roman",serif;overflow:hidden}
a{color:var(--au2)}
.skip{position:fixed;left:8px;top:-60px;z-index:99;background:var(--au);color:#111;padding:8px 12px;border-radius:6px;font:600 14px system-ui}
.skip:focus{top:8px}
.hud{position:fixed;inset:0 0 auto 0;z-index:20;display:flex;align-items:center;gap:12px;padding:10px 14px;background:linear-gradient(#000b,#0000);font:600 13px/1 system-ui,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.brand{display:flex;align-items:center;gap:8px;color:var(--au2);text-decoration:none}.brand img{border-radius:50%;box-shadow:0 0 0 1px var(--au),0 0 14px #d9b45a66}
.where{flex:1;text-align:center;color:var(--au);text-shadow:0 0 10px #000}
.hudr{display:flex;gap:8px}
.hud button,.bookbtn{font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--ink);background:#0008;border:1px solid #d9b45a88;border-radius:999px;padding:8px 12px;cursor:pointer;text-decoration:none;backdrop-filter:blur(6px)}
.bookbtn{background:linear-gradient(#e9c86c,#a8802c);color:#1a1205;border-color:#f6e2a0}
.hud button:hover,.hud button:focus-visible{border-color:var(--au2);box-shadow:0 0 12px #d9b45a88}
#world{position:fixed;inset:0}
#vp{position:absolute;inset:0;overflow:hidden}
#stage{position:absolute;left:50%;top:50%;width:max(100vw,177.78vh);height:max(100vh,56.25vw);transform:translate(-50%,-50%);transform-origin:50% 50%}
.scene{position:absolute;inset:0;background-size:cover;background-position:center;animation:enter 1.1s ease-out both}
.scene .bg{position:absolute;inset:0;background-size:cover;background-position:center;filter:contrast(1.12) saturate(1.15)}
.scene::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 55%,transparent 45%,#000a 100%),repeating-linear-gradient(0deg,#0000 0 2px,#00000014 2px 3px);mix-blend-mode:multiply}
.v-night .bg{transform:scale(1.6);transform-origin:50% 70%;filter:hue-rotate(-25deg) brightness(.7) saturate(1.3) contrast(1.1)}
.v-library .bg{transform:scale(1.7);transform-origin:12% 35%;filter:sepia(.25) contrast(1.15) saturate(1.2) brightness(.9)}
.v-dawn .bg{transform:scale(1.35);transform-origin:50% 40%;filter:sepia(.3) hue-rotate(-12deg) saturate(1.4) brightness(1.08)}
.v-fountain .bg{transform:scale(1.9);transform-origin:50% 62%}
@keyframes enter{from{opacity:0;transform:scale(1.08)}to{opacity:1;transform:none}}
#fade{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .55s ease}
#fade.on{opacity:1}
#stage.zoom{transition:transform .8s cubic-bezier(.6,0,.9,.6)}
/* hotspots */
.hs{position:absolute;display:block;border:0;padding:0;background:transparent;cursor:pointer;color:inherit;outline:none}
.hs::before{content:"";position:absolute;inset:0;border-radius:6px;transition:box-shadow .35s,background .35s,opacity .35s;opacity:0}
.hs.arch::before{border-radius:50% 50% 6px 6px/30% 30% 6px 6px}
.hs.round::before{border-radius:50%}
.hs:hover::before,.hs:focus-visible::before{opacity:1;background:radial-gradient(ellipse,#f6e2a033,#d9b45a11 60%,transparent 75%);box-shadow:0 0 0 2px #f6e2a0cc,0 0 28px 6px #e9c86c99,inset 0 0 40px #f6e2a066}
.hs .lbl{position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%,6px);white-space:nowrap;font:700 12px/1 system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#1a1205;background:linear-gradient(#f6e2a0,#c99a3d);padding:7px 10px;border-radius:3px;box-shadow:0 2px 12px #000a,0 0 0 1px #fff6 inset;opacity:0;transition:.3s;pointer-events:none}
.hs:hover .lbl,.hs:focus-visible .lbl,.touch .hs .lbl{opacity:1;transform:translate(-50%,0)}
.touch .hs .lbl{opacity:.92;font-size:10px}
.touch .hs::before{opacity:.55;box-shadow:0 0 0 1px #f6e2a088,0 0 16px #e9c86c66;animation:pulse 2.4s infinite}
@keyframes pulse{50%{opacity:.2}}
.hs.soon .lbl{background:linear-gradient(#bbb,#777);color:#111}
/* gate */
.leaf{position:absolute;inset:0;background-size:cover;transition:transform 1.4s cubic-bezier(.5,0,.2,1),filter 1.4s;transform-style:preserve-3d}
.leaf.l{clip-path:inset(0 50% 0 0);transform-origin:22% 50%}.leaf.r{clip-path:inset(0 0 0 50%);transform-origin:78% 50%}
.gatewrap{position:absolute;inset:0;perspective:1400px}
.open .leaf.l{transform:rotateY(70deg);filter:brightness(.4)}.open .leaf.r{transform:rotateY(-70deg);filter:brightness(.4)}
.sigil{position:absolute;left:50%;top:51.5%;width:15%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:url(/img/sigil.webp) center/cover;box-shadow:0 0 0 .4vw #b8902f,0 0 0 .7vw #5a4214,0 0 30px #000;filter:sepia(.35) saturate(1.3) contrast(1.1);pointer-events:none;transition:filter .4s,box-shadow .4s}
.gate-hs:hover~.sigil,.gate-hs:focus-visible~.sigil{filter:brightness(1.25) saturate(1.4);box-shadow:0 0 0 .4vw #f6e2a0,0 0 0 .7vw #8a6a24,0 0 60px 10px #e9c86caa}
.behind{position:absolute;inset:0;background:none center/cover;filter:brightness(1.4) blur(2px)}
.mote{position:absolute;width:4px;height:4px;border-radius:50%;background:#f6e2a0;box-shadow:0 0 8px #f6e2a0;opacity:0;animation:mote 9s linear infinite;pointer-events:none}
@keyframes mote{10%{opacity:.8}90%{opacity:.6}to{transform:translate(var(--dx),-40vh);opacity:0}}
.title-card{position:absolute;left:50%;bottom:7%;transform:translateX(-50%);text-align:center;pointer-events:none;width:min(90vw,820px)}
.title-card h1{margin:0;font:400 clamp(20px,3.2vw,44px)/1.15 Georgia,serif;color:var(--au2);text-shadow:0 2px 0 #3a2a08,0 0 24px #000,0 0 40px #d9b45a55}
.title-card p{margin:.4em 0 0;font:600 clamp(10px,1vw,13px) system-ui;letter-spacing:.3em;text-transform:uppercase;color:#e8dcb6;text-shadow:0 0 10px #000}
/* ripple */
.ring{position:absolute;border-radius:50%;border:2px solid #cffff0aa;transform:translate(-50%,-50%) scale(.1,.04);animation:ring 2.2s ease-out forwards;pointer-events:none;box-shadow:0 0 18px #9fffe066}
@keyframes ring{to{transform:translate(-50%,-50%) scale(1,.35);opacity:0}}
.water{position:absolute;left:0;right:0;top:62%;bottom:0;pointer-events:none;background:linear-gradient(#5fe0c010,#0000);mix-blend-mode:screen;animation:shim 6s ease-in-out infinite}
@keyframes shim{50%{opacity:.3}}
/* panels */
.panel{position:fixed;z-index:40;left:50%;bottom:0;width:min(760px,100vw);max-height:78vh;transform:translate(-50%,110%);transition:transform .7s cubic-bezier(.2,.9,.2,1)}
.panel.show{transform:translate(-50%,0)}
.glass{position:relative;max-height:78vh;overflow:auto;padding:28px clamp(18px,4vw,40px) 22px;border-radius:18px 18px 0 0;
background:linear-gradient(160deg,#ffffff2e,#ffffff08 40%,#0b2a1a99 60%,#06130ccc),radial-gradient(ellipse at 20% 0,#f6e2a040,transparent 60%);
backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);
border:1px solid #f6e2a0aa;border-bottom:0;box-shadow:0 -10px 60px #000c,inset 0 1px 0 #fff8,inset 0 0 0 1px #d9b45a33}
.glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(100deg,transparent 30%,#ffffff22 45%,transparent 60%);background-size:250% 100%;animation:sheen 6s linear infinite}
@keyframes sheen{from{background-position:150% 0}to{background-position:-100% 0}}
.glass h2{margin:0 0 .4em;font:400 clamp(22px,3vw,32px)/1.15 Georgia,serif;color:var(--au2)}
.glass h3{color:var(--au);font-weight:400;margin:1.2em 0 .3em}
.lede{font-size:1.15em;color:#fff}.meta,.fine{font:13px/1.5 system-ui;color:#cfc6a8}.foot{margin-top:18px;border-top:1px solid #d9b45a44;padding-top:10px}
.steps{counter-reset:s;list-style:none;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.steps li{counter-increment:s;border:1px solid #d9b45a66;border-radius:10px;padding:10px 12px;background:#0004}
.steps li::before{content:counter(s);display:inline-grid;place-items:center;width:24px;height:24px;margin-right:8px;border-radius:50%;background:linear-gradient(#f6e2a0,#b8902f);color:#1a1205;font:700 13px system-ui}
.btn{display:inline-block;padding:12px 18px;border-radius:999px;background:linear-gradient(#f6e2a0,#c99a3d 55%,#8a6a24);color:#1a1205;text-decoration:none;font:700 14px system-ui;letter-spacing:.05em;box-shadow:0 0 0 1px #fff6 inset,0 4px 18px #000a}
.btn:hover{box-shadow:0 0 0 1px #fff inset,0 0 24px #e9c86c}
.btn.ghost{background:#0006;color:var(--au2);border:1px solid var(--au)}
.close{position:absolute;right:12px;top:10px;width:36px;height:36px;border-radius:50%;border:1px solid #d9b45a88;background:#0007;color:var(--au2);font-size:22px;cursor:pointer;z-index:2}
.svc{list-style:none;padding:0;display:grid;gap:10px}.svc li{padding:12px 14px;border:1px solid #d9b45a55;border-radius:10px;background:#0b2a1a66}
.svc strong{display:block;color:var(--au2);font-weight:400;font-size:1.1em}.svc span{display:block;font-size:.95em}
.svc .soon{opacity:.7;border-style:dashed}.svc em{font:700 11px system-ui;letter-spacing:.15em;text-transform:uppercase;color:#1a1205;background:#bbb;padding:2px 6px;border-radius:3px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.stats figure{margin:0;padding:12px;border:1px solid #d9b45a55;border-radius:10px;background:#0006}.stats b{display:block;font:400 30px Georgia;color:var(--au2)}
.stats small{display:block;margin-top:6px;font:11px system-ui;color:#bdb393}
details{border-bottom:1px solid #d9b45a44;padding:8px 0}summary{cursor:pointer;color:var(--au2);font-size:1.05em}
.portrait{float:right;width:min(38%,200px);height:auto;margin:0 0 10px 14px;border-radius:12px;border:2px solid var(--au);box-shadow:0 0 24px #d9b45a55}
.ph span{background:#e9c86c22;border:1px dashed var(--au);padding:1px 6px;border-radius:4px;font:12px system-ui}
.textmenu{position:fixed;inset:0;z-index:60;display:none;background:#000b;place-items:center}.textmenu.show{display:grid}
.textmenu .glass{border-radius:18px;border:1px solid #f6e2a0aa;width:min(520px,92vw)}
.textmenu ul{list-style:none;padding:0;columns:2;font-size:1.1em}.textmenu li{margin:6px 0}
@media (max-width:640px){.hud{padding:8px}.brand span,.where{display:none}.hud button,.bookbtn{padding:7px 9px;font-size:11px}.textmenu ul{columns:1}.panel{max-height:84vh}.glass{max-height:84vh}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
#vp.pan{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}#vp.pan::-webkit-scrollbar{display:none}
#vp.pan #stage{left:0;transform:translateY(-50%)}
.panhint{position:fixed;z-index:15;left:50%;bottom:14px;transform:translateX(-50%);font:600 11px system-ui;letter-spacing:.2em;text-transform:uppercase;color:var(--au2);background:#0009;padding:6px 10px;border-radius:999px;pointer-events:none;animation:hint 4s forwards}
@keyframes hint{80%{opacity:1}to{opacity:0}}
#world canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block;touch-action:manipulation}
#fade{z-index:5}
#labels{position:absolute;inset:0;pointer-events:none;z-index:6}
.lbl3{position:absolute;left:0;top:0;pointer-events:auto;white-space:nowrap;font:700 12px/1 system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#1a1205;background:linear-gradient(#f6e2a0,#c99a3d);padding:7px 10px;border-radius:3px;border:0;box-shadow:0 2px 12px #000a,0 0 0 1px #fff6 inset;opacity:0;transition:opacity .3s,filter .3s;cursor:pointer}
.lbl3.on,.lbl3:focus-visible{opacity:1;filter:drop-shadow(0 0 10px #e9c86c)}
.lbl3:focus-visible{outline:2px solid #fff}
.touch .lbl3{opacity:.9;font-size:10px;padding:6px 8px}
.lbl3.dim{background:linear-gradient(#ccc,#888)}
.nogl #world{display:none}
.bk-steps{display:flex;gap:6px;list-style:none;padding:0;margin:0 0 14px;font:600 11px system-ui;letter-spacing:.14em;text-transform:uppercase}
.bk-steps li{flex:1;padding:6px 0;border-top:3px solid #d9b45a33;color:#bdb393}.bk-steps .cur{border-color:var(--au2);color:var(--au2)}.bk-steps .done{border-color:#c99a3d;color:#e8dcb6}
.bk-paths{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.bk-path,.bk-asap{text-align:left;cursor:pointer;color:var(--ink);font:inherit;padding:16px;border-radius:14px;border:1px solid #d9b45a88;background:linear-gradient(160deg,#ffffff1a,#0b2a1a99);box-shadow:inset 0 1px 0 #fff4;transition:.25s}
.bk-path:hover,.bk-path:focus-visible,.bk-asap:hover,.bk-asap.sel{border-color:var(--au2);box-shadow:0 0 22px #e9c86c66,inset 0 1px 0 #fff6;transform:translateY(-2px)}
.bk-path small{font:700 10px system-ui;letter-spacing:.2em;text-transform:uppercase;color:var(--au)}.bk-path b{display:block;font:400 22px Georgia;color:var(--au2);margin:4px 0}.bk-path span{display:block;font:600 13px system-ui}.bk-path em{display:block;margin-top:8px;font-size:.92em;color:#ddd3b4;font-style:normal}
.bk-asap{width:100%;display:block}.bk-asap b{display:block;font:400 20px Georgia;color:var(--au2)}.bk-asap span{font-size:.92em;color:#ddd3b4}.bk-asap.sel{background:linear-gradient(160deg,#f6e2a033,#0b2a1aaa)}
.bk-or{text-align:center;margin:14px 0;font:600 11px system-ui;letter-spacing:.18em;text-transform:uppercase;color:#bdb393;display:flex;align-items:center;gap:10px}.bk-or::before,.bk-or::after{content:"";flex:1;border-top:1px solid #d9b45a44}
.bk-cal{border:1px solid #d9b45a55;border-radius:14px;padding:10px;background:#0006}
.bk-mh{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.bk-mh b{font:400 18px Georgia;color:var(--au2)}.bk-mh button{width:34px;height:34px;border-radius:50%;border:1px solid #d9b45a88;background:#0007;color:var(--au2);font-size:20px;cursor:pointer}.bk-mh button:disabled{opacity:.3}
.bk-dow,.bk-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.bk-dow span{font:600 11px system-ui;color:#bdb393;padding:4px 0}
.bk-grid .day{aspect-ratio:1;max-height:44px;border-radius:50%;border:1px solid transparent;background:#d9b45a1f;color:var(--ink);font:600 14px system-ui;cursor:pointer}
.bk-grid .day:hover{border-color:var(--au2)}.bk-grid .day.today{border-color:#d9b45a88}.bk-grid .day.sel{background:linear-gradient(#f6e2a0,#c99a3d);color:#1a1205;box-shadow:0 0 14px #e9c86c}.bk-grid .day:disabled{background:none;color:#ffffff40;cursor:default}
.bk-time{display:flex;flex-direction:column;gap:6px;margin-top:14px;color:var(--au2)}.bk-time input,.bk-form input:not([type=radio]):not([type=checkbox]),.bk-form textarea{font:16px system-ui;padding:10px 12px;border-radius:10px;border:1px solid #d9b45a88;background:#000a;color:var(--ink);color-scheme:dark}
.bk-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.bk-chips button{padding:7px 11px;border-radius:999px;border:1px solid #d9b45a77;background:#0007;color:var(--ink);font:600 13px system-ui;cursor:pointer}.bk-chips .sel{background:linear-gradient(#f6e2a0,#c99a3d);color:#1a1205}
.bk-tz{font:13px system-ui;color:#ddd3b4;margin:12px 0 0}.bk-err{color:#ffb4a0;font:600 14px system-ui;background:#5a0a0a66;border:1px solid #ff806088;padding:8px 10px;border-radius:8px}
.bk-nav{display:flex;justify-content:space-between;gap:10px;margin-top:16px}.btn:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.6)}button.btn{border:0;cursor:pointer;font:700 14px system-ui}
.bk-form{display:grid;gap:12px}.bk-form>label{display:grid;gap:5px;color:var(--au2);font-size:.95em}.bk-form fieldset{border:1px solid #d9b45a44;border-radius:12px;padding:8px 12px 10px}.bk-form legend{color:var(--au2);padding:0 6px}
.opt{display:inline-flex;align-items:center;gap:6px;margin:4px 12px 4px 0;font:14px system-ui;cursor:pointer}.opt input{accent-color:#d9b45a;width:18px;height:18px}.hp{position:absolute;left:-9999px}
.bk-sum{display:grid;grid-template-columns:minmax(110px,35%) 1fr;gap:6px 12px;padding:14px;border:1px solid #d9b45a55;border-radius:12px;background:#0006;margin:0}.bk-sum dt{font:600 12px system-ui;color:#bdb393}.bk-sum dd{margin:0}
.bk-commit{display:flex;gap:10px;align-items:flex-start;margin-top:14px;padding:12px 14px;border:1px solid var(--au);border-radius:12px;background:#d9b45a1a;cursor:pointer;font-size:1.02em}.bk-commit input{width:22px;height:22px;accent-color:#d9b45a;flex:none;margin-top:2px}
.bk-done{text-align:center;padding:10px 0}.seal{width:72px;height:72px;margin:0 auto 10px;border-radius:50%;display:grid;place-items:center;font-size:36px;color:#1a1205;background:radial-gradient(circle at 35% 30%,#fff3c0,#d9b45a 50%,#8a6a24);box-shadow:0 0 30px #e9c86c}
.bk-big{font:400 clamp(20px,3vw,28px) Georgia;color:var(--au2)}
.panel .glass{background:linear-gradient(160deg,#ffffff24,#ffffff06 35%,#0b2a1ad9 55%,#06130cf0),radial-gradient(ellipse at 20% 0,#f6e2a033,transparent 60%),#06130ca8}
.lock{display:inline-flex;flex-direction:column;line-height:1;text-transform:none;letter-spacing:0}
.lock b{font:400 15px/1 Georgia,"Times New Roman",serif;letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(180deg,#fff6d0,#e9c86c 45%,#a8802c);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 1px 0 #3a2a08)}
.lock i{font:italic 400 11px/1.2 Georgia,serif;letter-spacing:.06em;color:#e8dcb6;margin-top:3px}
.lock-md{margin-bottom:10px}.lock-md b{font-size:18px}.lock-md i{font-size:12.5px}.lock.center{align-items:center;display:flex}
.textmenu .lock-md{display:flex}
.gate-lock{position:fixed;left:50%;bottom:9vh;transform:translateX(-50%);z-index:4;pointer-events:none;text-align:center;display:none;flex-direction:column;align-items:center;transition:opacity .8s}
body[data-cur="gate"] .gate-lock{display:flex}
.gate-lock b{font:400 clamp(34px,6.4vw,84px)/1 Georgia,"Times New Roman",serif;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;background:linear-gradient(180deg,#fffbe6 0%,#f6e2a0 30%,#d9a93c 55%,#8a6420 75%,#e9c86c 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 2px 0 #2a1d05) drop-shadow(0 0 18px #00000099) drop-shadow(0 0 30px #e9b85a55)}
.gate-lock .rule{display:block;width:min(46vw,420px);height:1px;margin:14px 0 10px;background:linear-gradient(90deg,transparent,#f6e2a0,transparent);box-shadow:0 0 8px #e9c86c}
.gate-lock i{font:italic 400 clamp(16px,2.1vw,26px)/1 Georgia,serif;letter-spacing:.22em;color:#f3e6bf;text-shadow:0 0 12px #000,0 1px 0 #000}
.gate-lock::before,.gate-lock::after{content:"";position:absolute;inset:-28px -60px;z-index:-1;background:radial-gradient(ellipse,#000a,transparent 70%)}
.gate-lock::after{display:none}
@media (max-width:640px){.hud .brand span.lock{display:inline-flex}.hud .t{display:none}.lock b{font-size:13px}.lock i{font-size:10px}.gate-lock{bottom:12vh}.gate-lock b{font-size:clamp(28px,9vw,40px);letter-spacing:.1em}}

.zoom{position:fixed;z-index:20;right:14px;bottom:18px;display:flex;flex-direction:column;gap:6px}.zoom button{width:40px;height:40px;border-radius:50%;font:600 22px/1 system-ui;color:var(--au2);background:#000a;border:1px solid #d9b45a88;cursor:pointer;backdrop-filter:blur(6px)}.zoom button:hover,.zoom button:focus-visible{box-shadow:0 0 12px #d9b45a88;border-color:var(--au2)}body.nogl .zoom{display:none}
.gate-lock{bottom:3.5vh!important}
.gate-lock{transition:opacity .4s}body.zoomed .gate-lock{opacity:0}
