:root{--bg:#0b0f17;--panel:#111722d1;--panel-solid:#121826;--border:#ffffff17;--text:#e9eef7;--muted:#9aa6bb;--accent:#2ec5ff;--accent-strong:#1595ff;--danger:#ff5d5d;--radius:14px;--shadow:0 10px 30px #00000059;--font:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}kbd{text-align:center;background:#ffffff0f;border:1px solid #ffffff40;border-bottom-width:2px;border-radius:5px;min-width:1.6em;padding:.05em .4em;font-size:.8em;display:inline-block}.app{position:fixed;inset:0}.viewer{position:absolute;inset:0}.viewer-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}.viewer-canvas:active{cursor:grabbing}.viewer-labels{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.viewer-fade{opacity:0;pointer-events:none;background:#000;transition:opacity .2s;position:absolute;inset:0}.viewer-fade.is-visible{opacity:1}.crosshair{pointer-events:none;background:radial-gradient(circle,#fff 0 2px,#0000 2.5px),radial-gradient(circle,#0000 7px,#ffffffb3 7.5px 8.5px,#0000 9px);width:18px;height:18px;margin:-9px 0 0 -9px;position:absolute;top:50%;left:50%}.poi-label{border:1px solid color-mix(in srgb, var(--poi-color) 60%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);white-space:nowrap;cursor:pointer;pointer-events:auto;background:#0b0f17c7;border-radius:999px;align-items:center;gap:6px;margin-bottom:4px;padding:4px 10px 4px 5px;font-size:12px;font-weight:600;transition:opacity .25s,transform .15s,background .15s;display:inline-flex;box-shadow:0 4px 14px #00000059}.poi-label .poi-icon{background:var(--poi-color);border-radius:50%;place-items:center;width:20px;height:20px;font-size:11px;display:grid}.poi-label.is-hovered,.poi-label.is-selected{background:#0b0f17f2;transform:scale(1.08)}.poi-label.is-selected{border-color:var(--poi-color);box-shadow:0 0 0 3px color-mix(in srgb, var(--poi-color) 35%, transparent), 0 4px 14px #0006}.poi-label.is-occluded{filter:grayscale(.5)}.topbar{pointer-events:none;align-items:center;gap:12px;display:flex;position:absolute;top:12px;left:12px;right:12px}.topbar>*{pointer-events:auto}.brand{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);letter-spacing:.01em;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);white-space:nowrap;align-items:center;gap:8px;padding:9px 14px;font-weight:800;display:inline-flex}.brand-pin{background:linear-gradient(135deg, var(--accent), var(--accent-strong));width:12px;height:12px;box-shadow:0 0 12px var(--accent);border-radius:50% 50% 50% 0;transform:rotate(-45deg)}.brand-large{padding:14px 22px;font-size:28px}.scene-name,.scene-select{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);color:var(--muted);white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);text-overflow:ellipsis;max-width:260px;padding:9px 12px;font-size:13px;overflow:hidden}.topbar-actions{gap:6px;margin-left:auto;display:flex}.icon-btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:11px;place-items:center;width:38px;height:38px;padding:0;font-size:16px;display:grid}.icon-btn:hover{background:#28344ae6}.icon-btn.is-on{border-color:var(--accent);color:var(--accent)}.btn{border:1px solid var(--border);cursor:pointer;white-space:nowrap;background:#ffffff0f;border-radius:10px;padding:9px 14px;font-size:14px;font-weight:600}.btn:hover{background:#ffffff1f}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:linear-gradient(135deg, var(--accent), var(--accent-strong));color:#04121d;border-color:#0000}.btn-primary:hover{filter:brightness(1.08);background:linear-gradient(135deg, var(--accent), var(--accent-strong))}.btn-small{padding:6px 10px;font-size:13px}.btn-danger{color:var(--danger)}.search{flex:360px;max-width:520px;margin:0 auto;position:relative}.search-box{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);align-items:center;gap:8px;height:42px;padding:0 12px;display:flex}.search-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #2ec5ff2e}.search-icon{color:var(--muted);font-size:18px}.search-box input{background:0 0;border:0;outline:0;flex:1;min-width:0;font-size:15px}.search-kbd{color:var(--muted)}.search-results{background:var(--panel-solid);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);max-height:60vh;margin:0;padding:6px;list-style:none;position:absolute;top:48px;left:0;right:0;overflow:auto}.search-results li{cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.search-results li.is-active{background:#2ec5ff1f}.search-empty{color:var(--muted);cursor:default!important}.result-icon{border-radius:9px;flex:none;place-items:center;width:30px;height:30px;font-size:15px;display:grid}.result-text{flex-direction:column;flex:1;min-width:0;display:flex}.result-text strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.result-text small{color:var(--muted);font-size:12px}.result-go{color:var(--accent);cursor:pointer;background:#2ec5ff29;border:0;border-radius:8px;padding:6px 10px;font-weight:700}.poi-card,.poi-list,.nav-hud,.stats,.admin-bar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow)}.poi-card{width:320px;padding:14px;position:absolute;top:70px;right:12px}.poi-card header{align-items:center;gap:12px;display:flex}.poi-card header>div{flex:1;min-width:0}.poi-card h2{margin:0;font-size:18px}.poi-card header p{color:var(--muted);margin:2px 0 0;font-size:13px}.poi-card-icon{border-radius:12px;flex:none;place-items:center;width:42px;height:42px;font-size:20px;display:grid}.poi-card-desc{color:var(--muted);margin:12px 0 0;font-size:14px}.poi-card-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.poi-card-admin{border-top:1px solid var(--border);gap:6px;margin-top:10px;padding-top:10px;display:flex}.tags{flex-wrap:wrap;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.tags li{color:var(--muted);background:#ffffff12;border-radius:999px;padding:2px 8px;font-size:12px}.poi-list{width:280px;max-height:calc(100% - 330px);padding:12px;position:absolute;top:70px;left:12px;overflow:auto}.poi-list header{justify-content:space-between;align-items:center;display:flex}.poi-list h2{margin:0;font-size:16px}.poi-list h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:14px 0 6px;font-size:12px}.poi-list h3 span{float:right}.poi-list ul{margin:0;padding:0;list-style:none}.poi-list li button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;width:100%;padding:7px 8px}.poi-list li button:hover,.poi-list li button.is-selected{background:#2ec5ff1f}.muted{color:var(--muted)}.nav-hud{border-color:#2ec5ff59;align-items:center;gap:14px;min-width:min(560px,100% - 24px);padding:12px 14px;display:flex;position:absolute;top:70px;left:50%;transform:translate(-50%)}.nav-arrow{background:linear-gradient(135deg, var(--accent), var(--accent-strong));color:#04121d;border-radius:14px;flex:none;place-items:center;width:52px;height:52px;font-size:30px;font-weight:900;display:grid}.nav-text{flex-direction:column;flex:1;min-width:0;display:flex}.nav-text strong{font-size:17px}.nav-text span{color:var(--muted);margin-top:2px;font-size:13px}.nav-actions{gap:6px;display:flex}.nav-hud.is-arrived{border-color:#2fbf7199}.nav-hud.is-arrived .nav-arrow{background:linear-gradient(135deg,#48e08f,#1fae63)}.minimap{border:1px solid var(--border);border-radius:var(--radius);width:240px;height:240px;box-shadow:var(--shadow);background:#0b0f17db;position:absolute;bottom:12px;left:12px;overflow:hidden}.minimap canvas{cursor:crosshair;width:100%;height:100%;display:block}.minimap.is-expanded{z-index:5;background:var(--panel-solid);width:min(86vw,900px);height:min(78vh,760px);margin:auto;animation:.18s ease-out map-in;inset:0}@keyframes map-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}.minimap-toggle{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;width:30px;height:30px;position:absolute;top:8px;right:8px}.minimap-hint{color:var(--muted);font-size:12px;position:absolute;bottom:10px;left:12px}.lock-hint{border:1px solid var(--border);color:var(--muted);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b0f17a6;border-radius:999px;padding:8px 14px;font-size:13px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.stats{min-width:200px;padding:10px 12px;font-size:12px;position:absolute;bottom:12px;right:12px}.stats div{justify-content:space-between;gap:16px;padding:2px 0;display:flex}.stats span{color:var(--muted)}.stats-warn{color:#ffd166}.admin-bar{border-color:#ffd16673;flex-wrap:wrap;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:8px 10px;display:flex;position:absolute;top:64px;left:50%;transform:translate(-50%)}.admin-bar strong{color:#ffd166;font-size:13px}.admin-hint{color:var(--muted);font-size:13px}.admin-spacer{flex:1}.admin-error{color:var(--danger);width:100%;font-size:12px}.admin-bar~.poi-card,.admin-bar~.nav-hud{top:118px}.modal-backdrop{z-index:10;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04070c99;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.modal{background:var(--panel-solid);border:1px solid var(--border);width:min(460px,100%);box-shadow:var(--shadow);border-radius:18px;padding:22px}.modal h2{margin:0 0 14px;font-size:20px}.keys{color:var(--muted);gap:9px;margin:0 0 18px;padding:0;font-size:14px;list-style:none;display:grid}.keys li span{min-width:130px;color:var(--text);display:inline-block}.poi-editor label{color:var(--muted);flex-direction:column;gap:5px;margin-bottom:12px;font-size:13px;display:flex}.poi-editor input,.poi-editor select,.poi-editor textarea{border:1px solid var(--border);color:var(--text);background:#ffffff0d;border-radius:9px;padding:9px 10px;font-size:14px}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.loading{z-index:20;background:radial-gradient(1200px 600px at 50% 40%, #13213a 0%, var(--bg) 60%);flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:0}.loading p{color:var(--muted);margin:0}.loading small{color:var(--muted);min-height:1em}.loading-error{text-align:center;max-width:520px;padding:0 16px;color:var(--danger)!important}.progress{background:#ffffff14;border-radius:999px;width:min(360px,80vw);height:6px;overflow:hidden}.progress>div{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-strong));height:100%;transition:width .2s}.progress.is-indeterminate>div{animation:1.2s ease-in-out infinite slide}@keyframes slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.toast{z-index:15;background:var(--panel-solid);border:1px solid var(--border);opacity:0;pointer-events:none;box-shadow:var(--shadow);border-radius:999px;padding:10px 16px;font-weight:600;transition:all .25s;position:absolute;bottom:64px;left:50%;transform:translate(-50%,20px)}.toast.is-visible{opacity:1;transform:translate(-50%)}.touch-joystick{pointer-events:none;background:#ffffff0f;border:2px solid #ffffff59;border-radius:50%;width:112px;height:112px;margin:-56px 0 0 -56px;position:absolute}.touch-joystick:after{content:"";width:46px;height:46px;transform:translate(var(--dx,0px), var(--dy,0px));background:#ffffff8c;border-radius:50%;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%}@media (width<=760px){.topbar{flex-wrap:wrap;gap:8px;top:8px;left:8px;right:8px}.scene-name,.scene-select{display:none}.search{flex-basis:100%;order:3;max-width:none}.brand{padding:8px 12px}.poi-card{width:auto;inset:auto 8px 8px}.poi-list{width:auto;max-height:50vh;top:116px;left:8px;right:8px}.nav-hud{flex-wrap:wrap;top:112px}.minimap{width:140px;height:140px;bottom:8px;left:8px}.poi-card~.minimap{bottom:200px}.stats,.lock-hint{display:none}}
