:root{--ink: #2c2a4a;--ink-soft: #5f5b84;--glass: rgba(255, 255, 255, .42);--glass-strong: rgba(255, 255, 255, .62);--stroke: rgba(255, 255, 255, .7);--shadow: 0 10px 40px -12px rgba(70, 50, 120, .35);--accent: #9a8cff;--accent-2: #ffb38a;--radius: 18px;--font: "Outfit", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}body.night{--ink: #f2efff;--ink-soft: #c3bce8;--glass: rgba(40, 36, 88, .38);--glass-strong: rgba(48, 42, 104, .6);--stroke: rgba(200, 190, 255, .28);--shadow: 0 10px 40px -12px rgba(0, 0, 0, .55)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#cdb8ee;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased}body{transition:color .8s ease;user-select:none;-webkit-user-select:none;touch-action:none}#scene{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;outline:none;cursor:grab}#scene.dragging{cursor:grabbing}#scene.pointing{cursor:pointer}button,input{font:inherit;color:inherit}.glass{background:var(--glass);border:1px solid var(--stroke);box-shadow:var(--shadow),inset 0 1px #ffffff59;backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);border-radius:var(--radius);transition:background .8s ease,border-color .8s ease,box-shadow .8s ease}.brand{position:fixed;top:16px;left:16px;display:flex;align-items:center;gap:12px;padding:10px 16px 10px 12px}.brand h1{margin:0;font-size:17px;font-weight:600;letter-spacing:.02em;line-height:1.1}.gem{width:30px;height:30px;clip-path:polygon(50% 0,100% 38%,50% 100%,0 38%);background:linear-gradient(160deg,#ffd2b8,#c69cff 55%,#7fd3f7);box-shadow:0 0 18px #c69cff;animation:shimmer 6s ease-in-out infinite}@keyframes shimmer{50%{filter:hue-rotate(25deg) brightness(1.08)}}.phase{margin-top:2px;padding:0;border:0;background:none;font-size:12.5px;color:var(--ink-soft);cursor:pointer;letter-spacing:.04em}.phase:before{content:"◐ "}.phase:hover{color:var(--ink)}.hud{position:fixed;top:16px;right:16px;padding:12px 14px;min-width:220px;display:grid;gap:8px}.hud>*{min-width:0}.hud-row{display:flex;align-items:center;gap:10px}.avatar{width:26px;height:26px;border-radius:50%;background:conic-gradient(from 200deg,#ffd2b8,#c69cff,#7fd3f7,#ffd2b8);box-shadow:0 0 0 2px #fff9;flex:none}.name{flex:1;min-width:0;border:1px solid transparent;background:transparent;padding:3px 8px;border-radius:10px;font-size:15px;font-weight:500;outline:none;transition:background .2s,border-color .2s}.name:hover{background:#ffffff2e}.name:focus{background:var(--glass-strong);border-color:var(--stroke)}.stats{justify-content:space-between;font-size:14px}.stats b{font-weight:600;font-variant-numeric:tabular-nums}.stats small{margin-left:4px;color:var(--ink-soft);font-size:12px}.spark{font-style:normal;margin-right:5px;background:linear-gradient(135deg,#ffb38a,#c69cff);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:15px}.balance b.bump{animation:bump .6s ease;display:inline-block}@keyframes bump{40%{transform:scale(1.18)}}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c9c3dd;margin-right:6px;vertical-align:1px}.dot.on{background:#6fe3a8;box-shadow:0 0 #6fe3a899;animation:ping 2.2s infinite}@keyframes ping{70%{box-shadow:0 0 0 7px #6fe3a800}to{box-shadow:0 0 #6fe3a800}}.mode{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--ink-soft);text-align:center;padding:3px 8px;border-radius:999px;background:#ffffff29;letter-spacing:.03em}.card{position:fixed;left:0;top:0;pointer-events:none;padding:12px 14px;width:230px;font-size:13px;transform:translate(-9999px);opacity:0;transition:opacity .18s ease}.card.show{opacity:1}.card h3{margin:0 0 2px;font-size:15px;font-weight:600}.card .sub{color:var(--ink-soft);font-size:12px;margin-bottom:8px}.kv{display:grid;grid-template-columns:auto 1fr;gap:3px 12px}.kv dt{color:var(--ink-soft)}.kv dd{margin:0;text-align:right;font-weight:500;font-variant-numeric:tabular-nums}.swatch{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:0;box-shadow:0 0 0 1.5px #fffc}.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;background:#fff6;color:var(--ink-soft)}.tag.free{background:linear-gradient(135deg,#ffd2b8b3,#c69cff8c);color:#3b2f63}.panel{position:fixed;right:16px;top:156px;width:300px;padding:18px;max-height:calc(100% - 172px);overflow:auto;animation:slide .35s cubic-bezier(.2,.8,.2,1)}@keyframes slide{0%{opacity:0;transform:translate(16px) scale(.98)}}.panel h2{margin:0;font-size:20px;font-weight:600;line-height:1.2;padding-right:28px}.panel .sub{color:var(--ink-soft);font-size:13px;margin:4px 0 14px}.panel .close{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:0;background:#ffffff4d;cursor:pointer;font-size:16px;line-height:1}.panel .close:hover{background:#ffffff8c}.panel .kv{font-size:14px;margin-bottom:16px}.btn{width:100%;border:0;padding:12px 16px;border-radius:14px;cursor:pointer;font-weight:600;font-size:15px;color:#fff;background:linear-gradient(135deg,#ffad8a,#c69cff 60%,#8ab8ff);box-shadow:0 8px 24px -8px #9a78ffb3;transition:transform .15s ease,filter .2s,opacity .2s}.btn:hover{transform:translateY(-1px);filter:brightness(1.05)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:grayscale(.3)}.btn.ghost{background:#ffffff59;color:var(--ink);box-shadow:none}.note{font-size:12px;color:var(--ink-soft);margin-top:8px;text-align:center}.field{display:grid;gap:6px;margin-bottom:14px;font-size:13px;color:var(--ink-soft)}.field input[type=text]{border:1px solid var(--stroke);background:#ffffff59;border-radius:12px;padding:9px 12px;font-size:15px;color:var(--ink);outline:none}.field input[type=text]:focus{background:#ffffff8c}body.night .field input[type=text]{background:#ffffff14}.swatches{display:flex;flex-wrap:wrap;gap:8px}.swatches button{width:30px;height:30px;border-radius:50%;border:0;cursor:pointer;box-shadow:0 0 0 2px #ffffffb3;transition:transform .15s}.swatches button:hover{transform:scale(1.1)}.swatches button.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--accent)}.swatches label{position:relative;width:30px;height:30px;border-radius:50%;background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);box-shadow:0 0 0 2px #ffffffb3;cursor:pointer;overflow:hidden}.swatches input[type=color]{opacity:0;width:100%;height:100%;cursor:pointer}.hint{position:fixed;left:50%;bottom:18px;transform:translate(-50%);display:flex;gap:16px;padding:9px 16px;font-size:13px;color:var(--ink-soft);white-space:nowrap;transition:opacity 1.2s ease,transform 1.2s ease}.hint.gone{opacity:0;transform:translate(-50%,10px);pointer-events:none}kbd{font-family:inherit;font-size:11px;padding:1px 6px;margin-right:3px;border-radius:6px;background:#ffffff73;border:1px solid var(--stroke);color:var(--ink)}.minimap{position:fixed;right:16px;bottom:16px;width:160px;height:160px;border-radius:22px;padding:0;cursor:crosshair;transition:opacity .3s ease,transform .3s ease}body.panel-open .minimap{opacity:0;transform:scale(.94);pointer-events:none}@media(min-height:760px){body.panel-open .minimap{opacity:1;transform:none;pointer-events:auto}}.peer-label{position:fixed;left:0;top:0;pointer-events:none;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:500;color:#fff;white-space:nowrap;background:color-mix(in srgb,var(--c, #9aa8ff) 55%,rgba(40,30,80,.35));box-shadow:0 0 14px var(--c, #9aa8ff);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}#labels{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.touch{position:fixed;inset:auto 0 0 0;height:0;transition:opacity .25s ease}body.panel-open .touch{opacity:0;pointer-events:none}.panel{z-index:3}.joy{position:fixed;left:24px;bottom:28px;width:120px;height:120px;border-radius:50%;background:#ffffff38;border:1px solid var(--stroke);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);touch-action:none}.knob{position:absolute;left:50%;top:50%;width:50px;height:50px;margin:-25px;border-radius:50%;background:linear-gradient(160deg,#ffffffe6,#c69cffbf);box-shadow:0 4px 16px #785ac859}.vbtns{position:fixed;right:20px;bottom:196px;display:grid;gap:10px}.vbtns button{width:52px;height:52px;border-radius:50%;border:1px solid var(--stroke);background:#ffffff47;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);font-size:16px;touch-action:none}.toasts{position:fixed;left:50%;top:18px;transform:translate(-50%);display:grid;gap:8px;justify-items:center;pointer-events:none;z-index:9}.toast{padding:9px 16px;font-size:14px;border-radius:999px;animation:toast 3.2s ease forwards;white-space:nowrap}@keyframes toast{0%{opacity:0;transform:translateY(-8px)}10%,85%{opacity:1;transform:none}to{opacity:0;transform:translateY(-6px)}}@media(max-width:720px){.brand{top:12px;left:12px;padding:8px 12px 8px 10px;gap:9px}.brand h1{font-size:15px}.gem{width:24px;height:24px}.hud{top:12px;right:12px;min-width:0;width:176px;padding:10px;gap:6px}.name{font-size:14px}.stats{font-size:13px}.stats small{display:none}.stats small#onlineLabel{display:inline}.mode{font-size:10.5px}.hint{display:none}.minimap{width:108px;height:108px;right:12px;bottom:auto;top:128px;border-radius:18px}.panel{left:12px;right:12px;top:auto;bottom:12px;width:auto;max-height:62%;border-radius:22px;animation-name:rise}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}.toasts{top:auto;bottom:170px}}[hidden]{display:none!important}.agent-btn{border:1px solid var(--stroke);background:#ffffff38;border-radius:12px;padding:7px 10px;font-size:13px;font-weight:500;cursor:pointer;transition:background .2s}.agent-btn:hover{background:var(--glass-strong)}.agent-btn i{font-style:normal;background:linear-gradient(135deg,#ffb38a,#c69cff);-webkit-background-clip:text;background-clip:text;color:transparent}.agent{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(440px,calc(100% - 32px));max-height:calc(100% - 40px);overflow:auto;padding:20px;z-index:6;display:grid;gap:12px;animation:pop .3s cubic-bezier(.2,.8,.2,1);user-select:text;-webkit-user-select:text}@keyframes pop{0%{opacity:0;transform:translate(-50%,-48%) scale(.97)}}.agent h2{margin:0;font-size:20px;font-weight:600;padding-right:30px}.agent .sub{color:var(--ink-soft);font-size:13px;margin-top:-8px}.agent .close{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;border:0;background:#ffffff4d;cursor:pointer;font-size:16px}.agent .lead{margin:0;font-size:14px;line-height:1.45}.agent .field,.agent .note{margin:0}.steps{margin:0;padding-left:20px;font-size:13.5px;line-height:1.6;color:var(--ink-soft)}.select,.mono{width:100%;border:1px solid var(--stroke);background:#fff6;border-radius:12px;padding:9px 12px;font-size:14px;color:var(--ink);outline:none;font-family:inherit}body.night .select,body.night .mono{background:#ffffff14}.select option{color:#2c2a4a}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12.5px;resize:none;line-height:1.45}.keybox{display:grid;gap:8px;padding:12px;border-radius:14px;background:linear-gradient(135deg,#ffd2b873,#c69cff59)}.keybox .warn{font-size:13px;font-weight:600}.keybox .row{display:flex;gap:8px}.btn.small{width:auto;padding:8px 14px;font-size:13px;flex:none}.keystate{font-size:13.5px;padding:9px 12px;border-radius:12px;background:#ffffff38}.problems{font-size:12.5px;display:grid;gap:4px;padding:10px 12px;border-radius:12px;background:#ff8a9a2e}.split{display:flex;gap:8px;margin-top:12px}.split .btn{padding:10px 8px;font-size:13.5px}.btn kbd{margin-left:6px;vertical-align:1px}.tag.game{background:linear-gradient(135deg,#8fe3b5b3,#7fd3f799);color:#23405a}.veil{position:fixed;top:0;right:0;bottom:0;left:0;z-index:7;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 50% 55%,#fffaf4,#f7ecff 45%,#e3d6ff)}body.in-lot .brand,body.in-lot .hud,body.in-lot .hint,body.in-lot .minimap,body.in-lot .panel,body.in-lot .touch,body.in-lot .card,body.in-lot #labels,body.in-lot .agent{opacity:0!important;pointer-events:none!important;transition:opacity .4s ease}.interior{position:fixed;top:0;right:0;bottom:0;left:0;z-index:8;opacity:0;pointer-events:none;transition:opacity .55s ease;color:#2c2a4a;--ink: #2c2a4a;--ink-soft: #5f5b84;--glass: rgba(255,255,255,.42);--glass-strong: rgba(255,255,255,.62);--stroke: rgba(255,255,255,.7)}.interior.shown{opacity:1;pointer-events:auto}.room{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;perspective:900px;background:radial-gradient(ellipse at 50% 40%,#fffaf4,#efe3ff 60%,#dccfff)}.room-3d{position:absolute;left:50%;top:52%;width:0;height:0;transform-style:preserve-3d;animation:sway 18s ease-in-out infinite}@keyframes sway{50%{transform:rotateY(3deg) rotateX(-1deg)}}.face{position:absolute;left:0;top:0;border:1px solid rgba(255,255,255,.75)}.face.back{width:130vw;height:110vh;transform:translate(-50%,-50%) translateZ(-140vh);background:repeating-linear-gradient(90deg,#fff0 0,#fff0 calc(13vw - 2px),#ffffffd9 calc(13vw - 2px),#ffffffd9 13vw),repeating-linear-gradient(0deg,#fff0 0,#fff0 calc(22vh - 2px),#ffffffb3 calc(22vh - 2px),#ffffffb3 22vh),linear-gradient(180deg,#b9c9f6,#d9c3f2 45%,#ffd6bf 80%,#ffe9d6)}.face.floor{width:130vw;height:140vh;transform:translate(-50%,-50%) translateY(55vh) translateZ(-70vh) rotateX(90deg);background:repeating-linear-gradient(90deg,transparent 0 calc(13vw - 1px),rgba(154,140,255,.25) calc(13vw - 1px) 13vw),repeating-linear-gradient(0deg,transparent 0 calc(14vh - 1px),rgba(154,140,255,.22) calc(14vh - 1px) 14vh),linear-gradient(0deg,#f6efff,#e8dcff)}.face.ceil{width:130vw;height:140vh;transform:translate(-50%,-50%) translateY(-55vh) translateZ(-70vh) rotateX(-90deg);background:repeating-linear-gradient(90deg,transparent 0 calc(13vw - 1px),rgba(255,255,255,.8) calc(13vw - 1px) 13vw),linear-gradient(#f3ecff,#fdf9ff)}.face.left,.face.right{width:140vh;height:110vh;background:repeating-linear-gradient(90deg,#fff0 0,#fff0 calc(14vh - 2px),#fffc calc(14vh - 2px),#fffc 14vh),linear-gradient(90deg,#d6e2ffd9,#f0e2ff99)}.face.left{transform:translate(-50%,-50%) translate(-65vw) translateZ(-70vh) rotateY(90deg)}.face.right{transform:translate(-50%,-50%) translate(65vw) translateZ(-70vh) rotateY(-90deg)}.sunbeam{position:absolute;top:-20%;right:10%;bottom:0;left:30%;background:linear-gradient(115deg,transparent 30%,rgba(255,236,214,.55) 45%,transparent 60%);filter:blur(18px);animation:beam 9s ease-in-out infinite;mix-blend-mode:screen}@keyframes beam{50%{opacity:.55;transform:translate(-3%)}}.crystal{position:absolute;left:50%;top:30%;width:70px;height:96px;margin-left:-35px;clip-path:polygon(50% 0,100% 38%,50% 100%,0 38%);background:linear-gradient(160deg,#fff,#ffd2b8 30%,#c69cff 65%,#7fd3f7);filter:drop-shadow(0 0 24px #c69cff);animation:float 6s ease-in-out infinite;opacity:.9}@keyframes float{50%{transform:translateY(-14px) rotate(4deg);filter:drop-shadow(0 0 34px #ffd2b8) hue-rotate(20deg)}}.motes{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.motes i{position:absolute;bottom:-10px;width:calc(6px * var(--s, 1));height:calc(6px * var(--s, 1));border-radius:50%;background:#fff;box-shadow:0 0 10px 3px #ffecd6e6;animation:rise-mote 13s linear infinite;opacity:0}@keyframes rise-mote{10%{opacity:.9}90%{opacity:.6}to{opacity:0;transform:translate(30px,-105vh)}}.room-msg{position:absolute;left:50%;top:58%;transform:translate(-50%);width:min(440px,calc(100% - 32px));padding:22px;text-align:center;animation:pop2 .5s .15s both cubic-bezier(.2,.8,.2,1)}@keyframes pop2{0%{opacity:0;transform:translate(-50%,12px)}}.room-msg h2{margin:0 0 6px;font-size:21px;font-weight:600}.room-msg p{margin:0 0 6px;color:var(--ink-soft);font-size:14.5px;line-height:1.5}.room-msg .actions{display:grid;gap:8px;margin-top:14px}.room-msg.loading p:after{content:"";display:inline-block;width:12px;height:12px;margin-left:8px;border-radius:50%;border:2px solid #c69cff;border-top-color:transparent;animation:spin 1s linear infinite;vertical-align:-1px}@keyframes spin{to{transform:rotate(360deg)}}.stage{position:absolute;top:0;right:0;bottom:0;left:0;display:none;touch-action:none}.interior.playing .stage{display:block}.interior.playing .room-msg{display:none}.game-frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0;display:block;pointer-events:none;background:transparent;opacity:0;transition:opacity .5s ease}.interior.ready .game-frame{opacity:1}.interior.ready .room{opacity:0;transition:opacity .6s ease}.lot-bar{position:absolute;left:16px;top:16px;display:flex;align-items:center;gap:12px;padding:8px 8px 8px 12px;max-width:calc(100% - 32px);z-index:2}.lot-bar .gem{width:22px;height:22px;flex:none}.lot-txt{display:grid;min-width:0}.lot-txt b{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lot-txt small{font-size:12px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.leave{flex:none;border:0;border-radius:12px;padding:8px 12px;background:#ffffff8c;cursor:pointer;font-weight:600;font-size:13.5px}.leave:hover{background:#fffc}.game-err{position:absolute;left:16px;top:76px;max-width:min(520px,calc(100% - 32px));padding:8px 12px;font-size:12.5px;z-index:2;background:#ffe6ecbf;font-family:ui-monospace,Consolas,monospace}@media(max-width:720px){.agent-btn{font-size:12px;padding:6px 8px}.room-msg{top:auto;bottom:16px}.crystal{top:22%}}@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
