html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;height:100%;overflow:hidden}#app,#stage{position:fixed;inset:0}#stage canvas{cursor:grab;outline:none;width:100%;height:100%;display:block}#stage canvas:active{cursor:grabbing}#topbar{top:calc(16px + var(--safe-top));left:calc(16px + var(--safe-left));right:calc(16px + var(--safe-right));pointer-events:none;z-index:10;justify-content:space-between;align-items:center;display:flex;position:fixed}.brand-pill{pointer-events:auto;background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(14px);max-width:min(520px,100%);box-shadow:var(--shadow-sm);align-items:center;gap:10px;padding:9px 16px;display:inline-flex}.brand-pill strong{letter-spacing:.02em;white-space:nowrap;font-size:.92rem;font-weight:700}.brand-pill .sep{color:var(--muted)}#node-title{color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:500;overflow:hidden}.btn{min-height:var(--touch-min);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);justify-content:center;align-items:center;gap:8px;padding:10px 18px;font-size:.92rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}.btn.primary{background:var(--accent);color:var(--accent-contrast);border-color:#0000;box-shadow:0 6px 20px #2563eb59}.btn.primary:hover{background:var(--accent-hover)}.btn.btn-lg{border-radius:var(--radius-pill);min-height:52px;padding:13px 28px;font-size:1.02rem}.btn.block{width:100%}.icon-btn,.close-btn{width:var(--touch-min);height:var(--touch-min);color:var(--text);background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-pill);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);place-items:center;padding:0;display:inline-grid}.icon-btn:hover,.close-btn:hover{background:var(--surface-hover);border-color:var(--border-strong)}#bottom-dock{left:50%;bottom:calc(18px + var(--safe-bottom));background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(16px);max-width:calc(100vw - 24px);box-shadow:var(--shadow-md);z-index:20;align-items:center;gap:6px;padding:6px;display:flex;position:fixed;transform:translate(-50%)}.dock-divider{background:var(--border);width:1px;height:24px;margin:0 2px}.dock-btn{min-height:var(--touch-min);color:var(--text);border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-size:.9rem;font-weight:500;display:inline-flex}.dock-btn.icon-only{width:var(--touch-min);padding:0}.dock-btn:hover{background:var(--surface-hover)}.dock-btn.active{background:var(--accent-soft);color:var(--accent-text);border-color:#2563eb73}.dock-location{max-width:260px}#location-label{text-overflow:ellipsis;overflow:hidden}.dock-chevron{color:var(--muted);transition:transform var(--transition-fast);display:inline-flex}.dock-location[aria-expanded=true] .dock-chevron{transform:rotate(180deg)}.dock-vr{background:var(--accent);color:var(--accent-contrast);font-weight:600}.dock-vr:hover{background:var(--accent-hover)}#nav-panel{left:50%;bottom:calc(82px + var(--safe-bottom));background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(18px);width:min(380px,100vw - 24px);max-height:min(440px,62vh);box-shadow:var(--shadow-lg);z-index:22;animation:popUp var(--transition-base);flex-direction:column;gap:12px;padding:14px;display:flex;position:fixed;transform:translate(-50%)}@keyframes popUp{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.nav-filters{grid-template-columns:1fr 1fr;gap:8px;display:grid}.nav-filters label{flex-direction:column;gap:4px;display:flex}.nav-filters label span{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-size:.72rem;font-weight:600}select{min-height:40px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;font-size:.88rem}#node-list{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.node-item{text-align:left;width:100%;min-height:48px;color:var(--text);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);background:0 0;border:1px solid #0000;align-items:center;gap:10px;padding:6px 8px;display:flex}.node-item:hover{background:var(--surface)}.node-item[aria-current=true]{background:var(--accent-soft);border-color:var(--accent)}.node-thumb{object-fit:cover;background:var(--surface);border-radius:6px;flex-shrink:0;width:52px;height:32px}.node-thumb.placeholder{color:var(--muted);place-items:center;display:grid}.node-meta{flex-direction:column;min-width:0;display:flex}.node-meta strong{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.node-meta small{color:var(--muted);font-size:.76rem}.empty-row{text-align:center;padding:12px 8px}#minimap{left:calc(16px + var(--safe-left));bottom:calc(18px + var(--safe-bottom));background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px);width:210px;height:210px;box-shadow:var(--shadow-md);transition:width var(--transition-base), height var(--transition-base), border-radius var(--transition-base);z-index:15;position:fixed;overflow:hidden}#minimap.collapsed{border-radius:var(--radius-pill);width:48px;height:48px}#minimap.collapsed canvas{opacity:0;pointer-events:none}#minimap canvas{cursor:pointer;width:100%;height:100%;transition:opacity var(--transition-fast);display:block}#minimap-toggle{width:34px;height:34px;position:absolute;top:6px;right:6px}#minimap.collapsed #minimap-toggle{background:0 0;border-color:#0000;width:42px;height:42px;inset:2px}.side-drawer{top:calc(16px + var(--safe-top));right:calc(16px + var(--safe-right));bottom:calc(86px + var(--safe-bottom));background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(18px);width:min(380px,100vw - 32px);max-height:fit-content;box-shadow:var(--shadow-lg);z-index:25;animation:slideInRight var(--transition-base);padding:22px 22px 20px;position:fixed;overflow-y:auto}@keyframes slideInRight{0%{opacity:0;transform:translate(18px)}to{opacity:1;transform:translate(0)}}.sheet-handle{cursor:grab;touch-action:none;padding:6px 0 12px;display:none}.sheet-handle span{background:var(--border-strong);border-radius:var(--radius-pill);width:42px;height:5px;margin:0 auto;display:block}.close-btn{width:38px;height:38px;position:absolute;top:14px;right:14px}.chip{text-transform:uppercase;letter-spacing:.06em;color:var(--accent-text);background:var(--accent-soft);border-radius:var(--radius-pill);align-items:center;gap:6px;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-flex}#info-card h2,.modal-card h2{margin:12px 42px 8px 0;font-size:1.25rem;font-weight:700;line-height:1.25}#info-card p{color:var(--text-secondary);margin:0 0 16px;font-size:.94rem;line-height:1.55}.pre{white-space:pre-line}.muted{color:var(--muted)}.modal{padding:calc(16px + var(--safe-top)) calc(16px + var(--safe-right)) calc(86px + var(--safe-bottom));-webkit-backdrop-filter:blur(4px);z-index:30;background:#05070a59;justify-content:flex-end;align-items:flex-start;display:flex;position:fixed;inset:0}.modal-card{background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-xl);width:min(440px,100%);max-height:calc(100vh - 110px);box-shadow:var(--shadow-lg);animation:slideInRight var(--transition-base);padding:24px;position:relative;overflow-y:auto}.ficha-section{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.ficha-section h3{text-transform:uppercase;letter-spacing:.07em;color:var(--muted);align-items:center;gap:6px;margin:0 0 8px;font-size:.76rem;font-weight:600;display:flex}.ficha-section p{color:var(--text-secondary);margin:0;font-size:.93rem;line-height:1.55}ul.plain{gap:8px;margin:0;padding:0;list-style:none;display:grid}.contact-list li{color:var(--text-secondary);align-items:center;gap:8px;font-size:.92rem;display:flex}.contact-list a{color:var(--accent-text);text-decoration:none}.contact-list a:hover{text-decoration:underline}ul.rt li{background:var(--accent-soft);border-radius:var(--radius-sm);border:1px solid #2563eb4d;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}#welcome{z-index:40;transition:opacity var(--transition-base);position:fixed;inset:0}#welcome.closing{opacity:0;pointer-events:none}#welcome-bg{opacity:0;transition:opacity var(--transition-base);z-index:1;position:absolute;inset:0;overflow:hidden}#welcome-bg.ready{opacity:1}.welcome-media,.welcome-iframe{border:0;width:100%;height:100%;display:block}.welcome-media{object-fit:cover}.welcome-overlay{z-index:2;pointer-events:none;background:radial-gradient(circle,#0b0d1138 0%,#0b0d1194 100%);place-items:center;width:100%;height:100%;padding:24px;display:grid;position:relative}.welcome-card{pointer-events:auto;text-align:center;background:var(--bg-glass-strong);border:1px solid var(--border);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(16px);width:100%;max-width:480px;box-shadow:var(--shadow-lg);padding:36px 32px}.welcome-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.78rem;font-weight:600;display:inline-block}.welcome-card h1{letter-spacing:-.02em;margin:10px 0 8px;font-size:clamp(2rem,5vw,2.75rem);font-weight:700}.welcome-sub{color:var(--text-secondary);margin:0 0 26px;font-size:.98rem}#building-directory{background:var(--bg);z-index:50;padding:40px 24px;position:fixed;inset:0;overflow-y:auto}.directory-shell{gap:28px;max-width:960px;margin:0 auto;display:grid}.directory-head{text-align:center}.directory-head h1{margin:8px 0 6px;font-size:clamp(1.85rem,4vw,2.5rem)}.directory-head p{margin:0}.directory-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px;display:grid}.directory-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text);box-shadow:var(--shadow-sm);transition:transform var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.directory-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.directory-thumb{aspect-ratio:2;object-fit:cover;background:var(--surface);width:100%;display:block}.directory-thumb.placeholder{color:var(--muted);place-items:center;display:grid}.directory-body{flex-direction:column;gap:6px;padding:16px 18px;display:flex}.directory-body strong{font-size:1.08rem}.directory-cta{color:var(--accent-text);align-items:center;gap:6px;margin-top:8px;font-size:.88rem;font-weight:600;display:inline-flex}#loader,#empty{text-align:center;background:var(--bg);z-index:50;place-items:center;padding:24px;display:grid;position:fixed;inset:0}.empty-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);max-width:440px;box-shadow:var(--shadow-md);flex-direction:column;align-items:center;gap:12px;padding:34px 30px;display:flex}.empty-icon{width:64px;height:64px;color:var(--accent-text);background:var(--accent-soft);border-radius:var(--radius-pill);place-items:center;display:grid}.empty-card h1{margin:4px 0 0;font-size:1.55rem}.empty-lead{margin:0;font-size:1.08rem;font-weight:600}.empty-card p.muted{margin:0;font-size:.92rem;line-height:1.55}.spinner{border:3px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:42px;height:42px;margin:0 auto 12px;animation:.85s linear infinite spin}.spinner.small{vertical-align:-2px;border-width:2px;width:14px;height:14px;margin:0 8px 0 0;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}#busy{top:calc(16px + var(--safe-top));right:calc(16px + var(--safe-right));background:var(--bg-glass);border:1px solid var(--border);border-radius:var(--radius-pill);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;z-index:12;padding:8px 14px;font-size:.82rem;font-weight:500;position:fixed}#toast{left:50%;bottom:calc(84px + var(--safe-bottom));background:var(--bg-glass-strong);border:1px solid var(--border-strong);border-radius:var(--radius-pill);max-width:min(480px,100vw - 32px);box-shadow:var(--shadow-md);opacity:0;pointer-events:none;transition:opacity var(--transition-base), transform var(--transition-base);z-index:60;padding:10px 18px;font-size:.9rem;position:fixed;transform:translate(-50%,16px)}#toast.show{opacity:1;transform:translate(-50%)}@media (width<=768px){#minimap{top:calc(68px + var(--safe-top));width:150px;height:150px;bottom:auto}.dock-location{max-width:150px}.side-drawer{width:100%;max-height:68vh;padding:8px 20px calc(22px + var(--safe-bottom));border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:slideUpSheet var(--transition-base);inset:auto 0 0}.modal{align-items:flex-end;padding:0}.modal-card{width:100%;max-height:82vh;padding:8px 20px calc(24px + var(--safe-bottom));border-radius:var(--radius-xl) var(--radius-xl) 0 0;animation:slideUpSheet var(--transition-base)}.sheet-handle{display:block}@keyframes slideUpSheet{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}}
