/* ═══════════════════════════════════════════════
   ALLURE — 3D Exhibition Platform · Full UI
   ═══════════════════════════════════════════════ */

@font-face { font-family:"Scandia"; src:url("fonts/Scandia-Regular.ttf") format("truetype"); font-weight:400; font-display:swap; }
@font-face { font-family:"Scandia"; src:url("fonts/Scandia-Medium.ttf") format("truetype"); font-weight:500; font-display:swap; }
@font-face { font-family:"Scandia"; src:url("fonts/Scandia-Bold.ttf") format("truetype"); font-weight:700; font-display:swap; }
@font-face { font-family:"GE SS Two"; src:url("fonts/GE_SS_Two_Light.otf") format("opentype"); font-weight:300; font-display:swap; }
@font-face { font-family:"GE SS Two"; src:url("fonts/GE_SS_Two_Medium.otf") format("opentype"); font-weight:500; font-display:swap; }
@font-face { font-family:"GE SS Two"; src:url("fonts/GE_SS_Two_Bold.otf") format("opentype"); font-weight:700; font-display:swap; }

/* ── Variables ──────────────────────────────────── */
:root{
  --cream:#EEECD7; --black:#000; --green:#193C26;
  --burg:#6F1946;  --navy:#0F2838;
  --bg:#0a0a0a;    --surface:#111111; --surface2:#1a1a1a;
  --border:rgba(238,236,215,.1); --muted:rgba(238,236,215,.4);
  --cream-dim:rgba(238,236,215,.07);
  --fs-xs:10px; --fs-sm:11px; --fs-base:13px; --fs-lg:15px;
  --header-h:56px; --bar-h:44px; --tool-w:46px;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{font-size:14px;}
/* Latin-numeral shim: intercepts 0-9 before GE SS Two can substitute Arabic-Indic digits */
@font-face{font-family:"LatNums";src:local("Arial"),local("Helvetica Neue"),local("sans-serif");unicode-range:U+0030-0039,U+002E,U+0025,U+002B,U+002D;}
body{background:var(--bg);color:var(--cream);font-family:"LatNums","GE SS Two","Scandia",sans-serif;direction:rtl;text-align:right;min-height:100vh;overflow-x:hidden;}
/* English mode: swap font order so Scandia (Latin) leads, keep GE SS Two for Arabic fallback */
html[lang="en"] body{font-family:Scandia,"GE SS Two",sans-serif;}
a{text-decoration:none;color:inherit;}
button{cursor:pointer;font-family:inherit;border:none;background:none;}
input,textarea,select{font-family:inherit;direction:rtl;}
html[lang="en"] input,html[lang="en"] textarea{direction:ltr;text-align:left;}
html[lang="en"] select{direction:ltr;}
select option{background:var(--surface2);color:var(--cream);}

/* ── Scrollbar ──────────────────────────────────── */
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px;}

/* ── Pages ──────────────────────────────────────── */
.page{display:none;}
.page.active{display:block;}

/* ── Header ─────────────────────────────────────── */
.header{height:var(--header-h);display:flex;align-items:center;gap:16px;padding:0 24px;background:var(--black);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;}
.logo img{height:26px;filter:brightness(1);}
.logo-divider{width:1px;height:20px;background:var(--border);}
.logo-sub{font-family:"Scandia";font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);}
.nav{display:flex;gap:2px;margin-inline-start:auto;}
.nav-btn{padding:6px 14px;background:transparent;color:var(--muted);font-size:var(--fs-sm);border-radius:999px;transition:color .15s,background .15s;}
.nav-btn:hover{color:var(--cream);background:var(--cream-dim);}
.nav-btn.active{color:var(--cream);background:var(--cream-dim);}
.header-actions{display:flex;align-items:center;gap:8px;}
.lang-toggle-btn{padding:5px 11px;background:transparent;color:var(--muted);font-size:11px;font-family:'Scandia','GE SS Two',sans-serif;font-weight:600;letter-spacing:.08em;border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:color .15s,border-color .15s;}
.lang-toggle-btn:hover{color:var(--cream);border-color:var(--cream-dim);}

/* ── Buttons ────────────────────────────────────── */
.btn-primary{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;background:var(--cream);color:var(--black);font-family:"GE SS Two";font-size:var(--fs-sm);font-weight:500;border-radius:999px;transition:opacity .15s;}
.btn-primary:hover{opacity:.88;}
.btn-secondary{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;background:transparent;color:var(--cream);font-size:var(--fs-sm);border:1px solid var(--border);border-radius:999px;transition:background .15s;}
.btn-secondary:hover{background:var(--cream-dim);}
.tag{display:inline-block;padding:3px 9px;background:var(--cream-dim);color:var(--cream);font-size:var(--fs-xs);border-radius:999px;}
.tag.active{background:var(--cream);color:var(--black);}
.eyebrow-label{display:inline-block;font-family:"Scandia";font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;}

/* ── Gallery page ───────────────────────────────── */
.gallery-hero{position:relative;padding:60px 32px 48px;overflow:hidden;border-bottom:1px solid var(--border);}
.hero-motif-bg{position:absolute;left:-40px;top:-40px;width:340px;opacity:.04;pointer-events:none;}
.gallery-hero-text{position:relative;z-index:1;}
.gallery-eyebrow{font-family:"Scandia";font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:12px;}
.gallery-hero h1{font-family:"LatNums","GE SS Two";font-size:36px;font-weight:700;line-height:1.2;margin-bottom:10px;}
html[lang="en"] .gallery-hero h1{font-family:Scandia,"GE SS Two",sans-serif;}
.gallery-hero p{color:var(--muted);font-size:14px;max-width:480px;}
.gallery-hero-motif{position:absolute;left:32px;bottom:10px;width:100px;opacity:.12;pointer-events:none;}
.gallery-toolbar{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--border);flex-wrap:wrap;}
.search-box{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);padding:7px 12px;flex:1;min-width:200px;}
.search-box svg{color:var(--muted);flex-shrink:0;}
.search-box input{background:none;border:none;color:var(--cream);outline:none;width:100%;font-size:var(--fs-base);}
.filter-tags{display:flex;gap:6px;flex-wrap:wrap;}
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;padding:24px;}
.empty-state{display:flex;flex-direction:column;align-items:center;gap:14px;padding:80px 20px;color:var(--muted);text-align:center;}
.empty-motif{width:100px;opacity:.15;}
.empty-state-label{font-family:"Scandia";font-size:10px;letter-spacing:.15em;text-transform:uppercase;}
.empty-state p{font-size:var(--fs-sm);}

/* ── Model card ─────────────────────────────────── */
.model-card{background:var(--surface);border:1px solid var(--border);cursor:pointer;transition:border-color .18s,transform .18s;}
.model-card:hover{border-color:rgba(238,236,215,.3);transform:translateY(-2px);}
.card-thumb{height:175px;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative;}
.card-thumb img{width:100%;height:100%;object-fit:cover;}
.card-thumb-placeholder{color:var(--muted);}
.card-body{padding:14px;}
.card-cat{margin-bottom:6px;}
.card-name{font-size:var(--fs-base);font-weight:500;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.card-date{font-size:var(--fs-xs);color:var(--muted);margin-bottom:12px;}
.card-actions{display:flex;gap:8px;align-items:center;}
.card-view-btn{padding:5px 14px;background:var(--cream);color:var(--black);font-size:var(--fs-xs);font-family:"GE SS Two";font-weight:500;border-radius:999px;transition:opacity .15s;}
.card-view-btn:hover{opacity:.85;}
.card-del-btn{margin-inline-start:auto;color:var(--muted);padding:4px;border-radius:4px;transition:color .15s;}
.card-del-btn:hover{color:#ff5555;}

/* ── Upload page ────────────────────────────────── */
.upload-container{max-width:900px;margin:0 auto;padding:40px 24px;}
.upload-header{margin-bottom:28px;}
.upload-header h2{font-size:24px;font-weight:700;}
.upload-drop{border:1.5px dashed var(--border);background:var(--surface);padding:52px 24px;display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;transition:border-color .2s,background .2s;position:relative;overflow:hidden;}
.upload-drop.drag-over{border-color:var(--cream);background:var(--cream-dim);}
.drop-motif{width:80px;opacity:.12;margin-bottom:8px;}
.upload-hint{font-size:var(--fs-xs);color:var(--muted);}
.upload-preview{display:flex;gap:24px;flex-wrap:wrap;}
.preview-viewer{flex:1;min-width:280px;height:320px;background:var(--surface);border:1px solid var(--border);position:relative;overflow:hidden;}
.upload-form{flex:1;min-width:240px;}
.form-group{margin-bottom:16px;}
.form-label{display:block;font-size:var(--fs-xs);color:var(--muted);margin-bottom:6px;letter-spacing:.05em;}
.form-group input,.form-group textarea,.form-group select{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--cream);padding:8px 12px;font-size:var(--fs-sm);outline:none;transition:border-color .15s;}
.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:rgba(238,236,215,.4);}
.form-group textarea{resize:vertical;min-height:70px;}
.color-presets{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:6px;}
.color-btn{width:26px;height:26px;border-radius:999px;border:2px solid transparent;transition:border-color .15s;cursor:pointer;}
.color-btn.active{border-color:var(--cream);}
.color-presets input[type="color"]{width:26px;height:26px;padding:0;border:none;background:none;cursor:pointer;border-radius:999px;}
.form-actions{display:flex;gap:10px;margin-top:24px;flex-wrap:wrap;}

/* ══ VIEWER LAYOUT ══════════════════════════════════ */
.viewer-page{display:none;flex-direction:column;height:100vh;}
.viewer-page.active{display:flex;}
.vw-wrap{display:flex;flex:1;overflow:hidden;position:relative;}

/* Left tools */
.vw-tools{display:flex;flex-direction:column;align-items:center;gap:2px;width:var(--tool-w);padding:8px 4px;background:var(--surface);border-inline-end:1px solid var(--border);flex-shrink:0;overflow-y:auto;}
.vw-tool{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--muted);transition:all .15s;}
.vw-tool svg{width:17px;height:17px;}
.vw-tool:hover{color:var(--cream);background:var(--cream-dim);}
.vw-tool.active{background:var(--cream);color:var(--black);border-color:transparent;}
.vw-tool-sep{width:28px;height:1px;background:var(--border);margin:4px 0;}

/* Canvas */
.vw-canvas-wrap{flex:1;position:relative;overflow:hidden;background:#000;}
#vw-canvas{position:absolute;inset:0;}
#vw-canvas canvas{display:block;width:100%!important;height:100%!important;}
#ann-overlay{position:absolute;inset:0;pointer-events:none;}
#measure-svg{position:absolute;inset:0;pointer-events:none;}
#hud-overlay{position:absolute;inset:0;pointer-events:none;}
#pres-hud-overlay{position:absolute;inset:0;pointer-events:none;z-index:10;}
#pres-ann-overlay{position:absolute;inset:0;pointer-events:none;z-index:15;}
#pres-ann-overlay .ann-dot{pointer-events:auto;}
#pres-hotspot-popup{position:absolute;z-index:50;}

/* Context panels */
.ctx-panel{position:fixed;background:rgba(10,10,10,.92);border:1px solid var(--border);backdrop-filter:blur(8px);padding:12px 16px;display:flex;flex-direction:column;gap:10px;min-width:260px;z-index:1800;border-radius:10px;}
.ctx-panel .fw-hdr{margin:-12px -16px 4px;border-radius:10px 10px 0 0;}
.ctx-title{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);color:var(--muted);}
.ctx-row{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);}
.ctx-row span:first-child{width:14px;text-align:center;color:var(--muted);}
.ctx-row input[type=range]{flex:1;}
.ctx-val{font-size:var(--fs-xs);color:var(--muted);min-width:32px;text-align:center;}
.ctx-reset{align-self:flex-start;padding:4px 12px;background:var(--cream-dim);color:var(--cream);font-size:var(--fs-xs);border-radius:999px;border:1px solid var(--border);}
.ctx-reset:hover{background:rgba(238,236,215,.15);}
.measure-ctx-body{display:flex;align-items:center;gap:10px;}
.ctx-transform-panel{min-width:310px;}

/* ── Lighting Library ──────────────────────────── */
.light-add-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:4px;}
.light-add-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 4px;background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:6px;color:var(--cream);font-size:9px;cursor:pointer;transition:background .15s;}
.light-add-btn svg{width:20px;height:20px;opacity:.7;}
.light-add-btn:hover{background:rgba(238,236,215,.1);border-color:rgba(238,236,215,.3);}
.light-add-btn.ies-btn{grid-column:span 1;}
.light-list{display:flex;flex-direction:column;gap:3px;max-height:180px;overflow-y:auto;margin-top:4px;}
.light-item{display:flex;align-items:center;gap:6px;padding:6px 8px;background:rgba(255,255,255,.04);border:1px solid transparent;border-radius:6px;cursor:pointer;transition:background .15s;}
.light-item:hover{background:rgba(255,255,255,.07);}
.light-item.selected{background:rgba(238,236,215,.1);border-color:rgba(238,236,215,.25);}
.light-item-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;opacity:.7;}
.light-item-icon svg{width:14px;height:14px;}
.light-item-info{flex:1;min-width:0;}
.light-item-name{font-size:11px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.light-item-type{font-size:9px;opacity:.45;}
.light-item-del{padding:2px 5px;opacity:0;font-size:11px;color:var(--muted);transition:opacity .15s;}
.light-item:hover .light-item-del{opacity:.6;}
.light-item-del:hover{opacity:1!important;color:#e05252;}
.light-color-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;box-shadow:0 0 4px currentColor;}
.lp-type-badge{display:inline-block;padding:1px 7px;border-radius:99px;font-size:9px;background:rgba(238,236,215,.1);color:var(--muted);margin-bottom:8px;}
.light-gizmo-bar{display:flex;align-items:center;gap:3px;background:rgba(0,0,0,.35);border:1px solid var(--border);border-radius:7px;padding:4px 5px;margin-bottom:8px;flex-wrap:wrap;}
.lgb-btn{display:flex;align-items:center;gap:4px;padding:4px 8px;border-radius:5px;font-size:10px;color:var(--muted);background:transparent;border:1px solid transparent;cursor:pointer;transition:all .15s;white-space:nowrap;}
.lgb-btn svg{width:12px;height:12px;opacity:.7;}
.lgb-btn:hover{background:rgba(238,236,215,.08);color:var(--cream);}
.lgb-btn.active{background:rgba(238,236,215,.14);border-color:rgba(238,236,215,.25);color:var(--cream);}
.lgb-target-btn{color:#52c97b;}
.lgb-target-btn.active{background:rgba(82,201,123,.15);border-color:rgba(82,201,123,.3);color:#52c97b;}
.lgb-sep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0;}
.lgb-space-toggle{display:flex;gap:2px;margin-right:auto;}
.lgb-space-btn{padding:3px 7px;font-size:9px;border-radius:4px;color:var(--muted);background:transparent;border:1px solid transparent;cursor:pointer;}
.lgb-space-btn.active{background:rgba(238,236,215,.1);color:var(--cream);border-color:var(--border);}
.light-gizmo-hint{font-size:9px;opacity:.4;padding:2px 4px;white-space:nowrap;}

/* ══ VIEWPORT CONTROLS ══════════════════════════════ */
#vp-controls{position:absolute;top:10px;left:10px;display:flex;align-items:center;gap:5px;z-index:30;pointer-events:auto;}
.vp-current-btn{display:flex;align-items:center;gap:5px;padding:5px 10px;background:rgba(10,10,10,.82);border:1px solid rgba(238,236,215,.18);backdrop-filter:blur(8px);border-radius:7px;color:var(--cream);font-size:11px;cursor:pointer;transition:background .15s;white-space:nowrap;}
.vp-current-btn:hover{background:rgba(30,30,30,.9);}
.vp-layout-strip{display:flex;gap:2px;background:rgba(10,10,10,.82);border:1px solid rgba(238,236,215,.18);backdrop-filter:blur(8px);border-radius:7px;padding:3px;}
.vp-layout-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:5px;color:var(--muted);background:transparent;border:none;cursor:pointer;transition:all .15s;}
.vp-layout-btn:hover{background:rgba(238,236,215,.1);color:var(--cream);}
.vp-layout-btn.active{background:rgba(238,236,215,.18);color:var(--cream);}
.vp-layout-btn svg{width:18px;height:13px;}

/* Popup */
#vp-popup{position:absolute;top:48px;left:10px;background:rgba(12,12,12,.95);border:1px solid rgba(238,236,215,.18);backdrop-filter:blur(12px);border-radius:10px;padding:12px;z-index:40;width:224px;pointer-events:auto;}
.vp-popup-hdr{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);opacity:.6;margin-bottom:7px;}
.vp-presets-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-bottom:4px;}
.vp-preset-btn{display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 4px;background:rgba(255,255,255,.04);border:1px solid transparent;border-radius:6px;color:var(--muted);font-size:9px;cursor:pointer;transition:all .15s;}
.vp-preset-btn svg{width:22px;height:22px;}
.vp-preset-btn:hover{background:rgba(238,236,215,.09);color:var(--cream);}
.vp-preset-btn.active{background:rgba(238,236,215,.14);border-color:rgba(238,236,215,.28);color:var(--cream);}

/* Layout options */
.vp-layout-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;}
.vp-layout-opt{display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px 4px;background:rgba(255,255,255,.04);border:1px solid transparent;border-radius:6px;color:var(--muted);font-size:9px;cursor:pointer;transition:all .15s;}
.vp-layout-opt:hover{background:rgba(238,236,215,.09);color:var(--cream);}
.vp-layout-opt.active{background:rgba(238,236,215,.14);border-color:rgba(238,236,215,.28);color:var(--cream);}
.vlo-icon{width:30px;height:20px;border:1px solid currentColor;border-radius:2px;overflow:hidden;display:flex;opacity:.7;}
.vlo-full{flex:1;background:rgba(238,236,215,.2);}
.vlo-half-l,.vlo-half-r{flex:1;background:rgba(238,236,215,.15);}
.vlo-half-l{border-right:1px solid currentColor;}
.vlo-half-t,.vlo-half-b{width:100%;flex:1;background:rgba(238,236,215,.15);}
.vlo-half-t{border-bottom:1px solid currentColor;}
.vlo-q{width:50%;height:50%;background:rgba(238,236,215,.15);box-sizing:border-box;}
.vlo-q:nth-child(1){border-right:1px solid currentColor;border-bottom:1px solid currentColor;}
.vlo-q:nth-child(2){border-bottom:1px solid currentColor;}
.vlo-q:nth-child(3){border-right:1px solid currentColor;}

/* Viewport panel labels (multi-view) */
#vp-labels{position:absolute;inset:0;pointer-events:none;z-index:20;}
.vp-label{position:absolute;padding:3px 7px;background:rgba(0,0,0,.5);color:rgba(238,236,215,.55);font-size:10px;border-radius:0 0 5px 0;pointer-events:none;letter-spacing:.05em;}
.vp-divider-v{position:absolute;top:0;bottom:0;width:1px;background:rgba(238,236,215,.12);pointer-events:none;}
.vp-divider-h{position:absolute;left:0;right:0;height:1px;background:rgba(238,236,215,.12);pointer-events:none;}
.tf-xyz-row{display:grid;grid-template-columns:18px 1fr 18px 1fr 18px 1fr;gap:4px;align-items:center;margin-bottom:6px;}
.tf-axis{font-size:10px;font-weight:700;text-align:center;padding:3px 0;border-radius:3px;}
.tf-axis.x{color:#e05252;background:rgba(224,82,82,.15);}
.tf-axis.y{color:#52c97b;background:rgba(82,201,123,.15);}
.tf-axis.z{color:#529ae0;background:rgba(82,154,224,.15);}
.tf-num{background:rgba(255,255,255,.06);border:1px solid var(--border);color:var(--cream);font-size:11px;padding:4px 5px;border-radius:4px;width:100%;text-align:center;}
.tf-num:focus{outline:none;border-color:rgba(238,236,215,.4);}
.ctx-label{font-size:var(--fs-xs);color:var(--muted);}
.cam-hint{position:absolute;bottom:calc(var(--bar-h)+10px);right:12px;font-size:var(--fs-xs);color:var(--muted);opacity:.6;pointer-events:none;animation:fade-out 4s forwards;}
@keyframes fade-out{0%{opacity:.6}80%{opacity:.6}100%{opacity:0}}

/* Right panel */
.vw-panel{width:270px;display:flex;flex-direction:column;background:var(--surface);border-inline-start:1px solid var(--border);transition:width .22s;flex-shrink:0;overflow:hidden;position:relative;}
.vw-panel.collapsed{width:0;border-inline-start:none;}
.vw-panel-top{display:flex;align-items:center;gap:4px;padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0;}
.back-btn-sm{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:var(--fs-xs);padding:4px 8px;border-radius:999px;transition:color .15s,background .15s;flex-shrink:0;}
.back-btn-sm:hover{color:var(--cream);background:var(--cream-dim);}
.panel-collapse-btn{color:var(--muted);padding:4px;border-radius:4px;transition:color .15s;flex-shrink:0;}
.panel-collapse-btn:hover{color:var(--cream);}

/* ── Dockable Panel ──────────────────────────────── */
.panel-drag-handle{flex:1;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--muted);padding:4px;border-radius:4px;transition:color .15s;font-size:15px;letter-spacing:1px;}
.panel-drag-handle:hover{color:var(--cream);}
.panel-drag-handle:active{cursor:grabbing;}
.panel-dock-btn{color:var(--muted);padding:4px;border-radius:4px;transition:color .15s;flex-shrink:0;}
.panel-dock-btn:hover{color:var(--cream);background:var(--cream-dim);}
.panel-resize-handle{position:absolute;left:0;top:0;width:5px;height:100%;cursor:ew-resize;z-index:10;transition:background .15s;display:none;}
.panel-resize-handle:hover,.panel-resize-handle.rs-active{background:rgba(238,236,215,.18);}
.vw-panel.floating{position:fixed!important;z-index:500;border-radius:10px;box-shadow:0 12px 40px rgba(0,0,0,.72),0 2px 8px rgba(0,0,0,.4);border:1px solid rgba(238,236,215,.14);transition:none;overflow:hidden;}
.vw-panel.floating .panel-resize-handle{display:block;}
.vw-panel.floating .panel-dock-btn{display:flex!important;}
.vw-panel.minimized .vw-tab-body,.vw-panel.minimized .vw-tabs,.vw-panel.minimized .vw-model-header{display:none!important;}
.vw-wrap.panel-left .vw-panel{order:-1;border-inline-start:none;border-inline-end:1px solid var(--border);}
.vw-wrap.panel-left .vw-panel .panel-resize-handle{left:auto;right:0;}
.dock-snap-indicator{position:fixed;top:0;width:5px;height:100vh;pointer-events:none;z-index:499;opacity:0;transition:opacity .18s;}
.dock-snap-indicator.left{left:0;background:linear-gradient(90deg,rgba(238,236,215,.25),transparent);}
.dock-snap-indicator.right{right:0;background:linear-gradient(270deg,rgba(238,236,215,.25),transparent);}
.dock-snap-indicator.visible{opacity:1;}

/* ── Viewport Context Menu ───────────────────────── */
.vp-ctx-menu{position:fixed;z-index:700;background:rgba(12,12,12,.97);border:1px solid var(--border);border-radius:9px;padding:4px;min-width:170px;backdrop-filter:blur(10px);box-shadow:0 8px 28px rgba(0,0,0,.55);direction:rtl;}
.vp-ctx-item{padding:7px 12px;font-size:12px;color:var(--muted);border-radius:6px;cursor:pointer;transition:background .1s,color .1s;display:flex;align-items:center;gap:8px;white-space:nowrap;user-select:none;}
.vp-ctx-item:hover{background:var(--cream-dim);color:var(--cream);}
.vp-ctx-item.danger:hover{background:rgba(220,55,55,.14);color:#ff6b6b;}
.vp-ctx-item.disabled{opacity:.35;pointer-events:none;}
.vp-ctx-sep{height:1px;background:var(--border);margin:3px 8px;}
.vp-ctx-label{padding:5px 12px 2px;font-size:9px;color:var(--muted);opacity:.55;letter-spacing:.06em;text-transform:uppercase;}
.vw-model-header{padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;}
.vw-model-eyebrow{font-family:"Scandia";font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;}
.vw-model-name{font-size:var(--fs-base);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}

/* Tabs (7 tabs) */
.vw-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0;}
.vw-tab{flex:1;display:flex;align-items:center;justify-content:center;padding:9px 2px;color:var(--muted);border-bottom:2px solid transparent;transition:color .15s,border-color .15s;font-size:10px;}
.vw-tab svg{width:15px;height:15px;}
.vw-tab:hover{color:var(--cream);}
.vw-tab.active{color:var(--cream);border-bottom-color:var(--cream);}
.vw-tab-body{flex:1;overflow-y:auto;position:relative;}
.tc{display:none;padding:14px 12px;}
.tc.active{display:block;}

/* Prop groups */
.prop-group{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.prop-group:last-child{border-bottom:none;margin-bottom:0;}
.prop-group.pg-collapsed>*:not(.prop-label){display:none!important;}
.prop-group .prop-label{transition:opacity .15s;}
.prop-group .prop-label:hover{opacity:.8;}

/* Accordion sections */
.acc-sect{border-bottom:1px solid var(--border);}
.acc-sect:last-child{border-bottom:none;}
.acc-hdr{width:100%;display:flex;align-items:center;justify-content:space-between;padding:9px 14px;background:none;border:none;color:var(--muted);font-size:9px;font-family:"Scandia",sans-serif;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:color .15s;text-align:start;}
.acc-hdr:hover{color:var(--cream);}
.acc-chevron{transition:transform .22s ease;flex-shrink:0;opacity:.55;}
.acc-sect.open .acc-chevron{transform:rotate(180deg);}
.acc-body{overflow:hidden;max-height:0;transition:max-height .28s ease;}
.acc-sect.open .acc-body{max-height:3200px;}
.acc-body .prop-group{padding-inline-start:0;padding-inline-end:0;}
.acc-body .prop-group:last-child{border-bottom:none;margin-bottom:4px;}
.prop-label{font-family:"Scandia";font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;}
.prop-sub{font-size:var(--fs-xs);color:var(--muted);min-width:60px;flex-shrink:0;}
.prop-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.slider-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.slider-row input[type=range]{flex:1;}
.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:3px 0;margin-bottom:4px;font-size:var(--fs-sm);}
.prop-btn{display:flex;align-items:center;justify-content:flex-start;gap:6px;width:100%;padding:7px 10px;background:var(--surface2);color:var(--cream);font-size:var(--fs-xs);border:1px solid var(--border);margin-bottom:6px;transition:background .15s;}
.prop-btn:hover{background:var(--cream-dim);}
.prop-btn.primary{background:var(--cream);color:var(--black);}
.prop-btn.primary:hover{opacity:.88;}
.prop-btn.danger{background:rgba(139,30,60,.3);color:#ff8888;border-color:rgba(139,30,60,.3);}
.prop-btn.danger:hover{background:rgba(139,30,60,.5);}
.prop-input{width:100%;background:var(--surface2);border:1px solid var(--border);color:var(--cream);padding:6px 10px;font-size:var(--fs-sm);outline:none;font-family:inherit;}
.prop-input:focus{border-color:rgba(238,236,215,.3);}

/* Inputs */
input[type=range]{-webkit-appearance:none;height:3px;background:var(--border);border-radius:2px;outline:none;}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;background:var(--cream);border-radius:50%;cursor:pointer;}
input[type=range]::-moz-range-thumb{width:13px;height:13px;background:var(--cream);border:none;border-radius:50%;cursor:pointer;}
.color-pick{width:28px;height:22px;padding:0;border:1px solid var(--border);background:none;cursor:pointer;}

/* Seg-ctrl */
.seg-ctrl{display:flex;border:1px solid var(--border);}
.seg{flex:1;padding:5px 4px;font-size:var(--fs-xs);color:var(--muted);text-align:center;background:transparent;border-inline-end:1px solid var(--border);transition:all .12s;}
.seg:last-child{border-inline-end:none;}
.seg.active{background:var(--cream);color:var(--black);}
.seg:hover:not(.active){background:var(--cream-dim);color:var(--cream);}

/* Toggle switch */
.sw{position:relative;display:inline-block;width:32px;height:18px;flex-shrink:0;}
.sw input{opacity:0;width:0;height:0;position:absolute;}
.sw span{position:absolute;inset:0;background:var(--border);cursor:pointer;border-radius:999px;transition:background .2s;}
.sw span::before{content:'';position:absolute;width:12px;height:12px;left:3px;bottom:3px;background:var(--muted);border-radius:50%;transition:transform .2s,background .2s;}
.sw input:checked+span{background:var(--cream);}
.sw input:checked+span::before{transform:translateX(14px);background:var(--black);}
.sw-sm{position:relative;display:inline-block;width:26px;height:15px;flex-shrink:0;}
.sw-sm input{opacity:0;width:0;height:0;position:absolute;}
.sw-sm span{position:absolute;inset:0;background:var(--border);cursor:pointer;border-radius:999px;transition:background .2s;}
.sw-sm span::before{content:'';position:absolute;width:10px;height:10px;left:2px;bottom:2px;background:var(--muted);border-radius:50%;transition:transform .2s,background .2s;}
.sw-sm input:checked+span{background:var(--cream);}
.sw-sm input:checked+span::before{transform:translateX(11px);background:var(--black);}

/* Color grid */
.color-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:5px;margin-bottom:8px;}
.cg-swatch{height:22px;border-radius:2px;border:1.5px solid transparent;transition:border-color .12s,transform .12s;cursor:pointer;}
.cg-swatch.active{border-color:var(--cream);}
.cg-swatch:hover{transform:scale(1.15);}

/* Env grid */
.env-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.env-btn{display:flex;align-items:center;gap:7px;padding:7px 10px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:var(--fs-xs);transition:all .15s;}
.env-btn.active{color:var(--cream);border-color:rgba(238,236,215,.35);}
.env-sw{width:14px;height:14px;border-radius:2px;flex-shrink:0;}

/* Display modes */
.dm-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;}
.dm-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 4px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:10px;transition:all .15s;cursor:pointer;}
.dm-btn.active{background:var(--cream-dim);color:var(--cream);border-color:rgba(238,236,215,.3);}
.dm-btn:hover:not(.active){background:var(--cream-dim);color:var(--cream);}
.dm-icon{width:30px;height:22px;border-radius:2px;}
.shaded-icon{background:linear-gradient(135deg,#888,#333);}
.wf-icon{background:repeating-linear-gradient(45deg,transparent,transparent 3px,#555 3px,#555 4px);}
.mc-icon{background:radial-gradient(circle at 65% 35%,#fff,#888 40%,#222);}
.nm-icon{background:linear-gradient(135deg,#4488ff,#ff44ff,#44ffaa);}
.flat-icon{background:linear-gradient(180deg,#888 49%,#555 50%);}
.depth-icon{background:linear-gradient(135deg,#fff,#000);}
.toon-icon{background:linear-gradient(135deg,#ff6644 33%,#ffee44 34% 66%,#44aaff 67%);}

/* Stats */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.stat-item{background:var(--surface2);padding:8px 10px;}
.stat-lbl{display:block;font-size:var(--fs-xs);color:var(--muted);margin-bottom:2px;}
.stat-val{font-family:"Scandia";font-size:14px;font-weight:500;color:var(--cream);}

/* Upload mini btn */
.upload-mini-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--surface2);border:1px solid var(--border);color:var(--cream);font-size:var(--fs-xs);cursor:pointer;font-family:inherit;transition:background .15s;}
.upload-mini-btn:hover{background:var(--cream-dim);}
.upload-mini-btn input{display:none;}

/* ── Material Editor ────────────────────────────── */
.mat-hint{font-size:var(--fs-xs);color:var(--muted);padding:8px;background:var(--surface2);border:1px solid var(--border);text-align:center;}
.mat-sel-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--surface2);border:1px solid rgba(238,236,215,.2);}
.mat-mesh-name{font-size:var(--fs-xs);font-family:"Scandia";color:var(--cream);}

/* Texture slots */
.tex-slot{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border);}
.tex-slot:last-child{border-bottom:none;}
.tex-slot .prop-sub{flex:1;}
.tex-preview-thumb{width:28px;height:28px;background:var(--surface2);border:1px solid var(--border);flex-shrink:0;background-size:cover;background-position:center;}
.tex-upload-btn{display:inline-flex;align-items:center;padding:3px 8px;background:var(--surface2);border:1px solid var(--border);color:var(--cream);font-size:var(--fs-xs);cursor:pointer;font-family:inherit;white-space:nowrap;}
.tex-upload-btn:hover{background:var(--cream-dim);}
.tex-upload-btn input{display:none;}
.tex-clear-btn{width:20px;height:20px;background:transparent;color:var(--muted);font-size:14px;flex-shrink:0;transition:color .15s;}
.tex-clear-btn:hover{color:#ff6666;}

/* ── Layer System ───────────────────────────────── */
.layer-item{display:flex;align-items:center;gap:8px;padding:8px 6px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s;}
.layer-item:hover,.layer-item.selected{background:var(--cream-dim);}
.layer-thumb{width:36px;height:28px;background:var(--surface2) center/cover;border:1px solid var(--border);flex-shrink:0;}
.layer-name{flex:1;font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.layer-vis-btn{color:var(--muted);width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:4px;flex-shrink:0;}
.layer-vis-btn:hover{color:var(--cream);}

/* ── HUD Buttons ────────────────────────────────── */
.hud-btn-item{padding:7px 10px;background:var(--surface2);border:1px solid var(--border);margin-bottom:5px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:background .12s;}
.hud-btn-item:hover,.hud-btn-item.selected{background:var(--cream-dim);}
.empty-targets{font-size:var(--fs-xs);color:var(--muted);padding:4px 0;}

/* Bookmarks */
.bookmarks-grid{display:flex;flex-direction:column;gap:5px;margin-bottom:8px;}
.bookmark-btn{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:var(--surface2);border:1px solid var(--border);color:var(--cream);font-size:var(--fs-xs);font-family:inherit;transition:background .12s;}
.bookmark-btn:hover{background:var(--cream-dim);}
.bookmark-btn svg{color:var(--muted);flex-shrink:0;}

/* Anim controls */
.anim-transport{display:flex;align-items:center;justify-content:center;gap:10px;}
.anim-transport button{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--surface2);border:1px solid var(--border);color:var(--cream);border-radius:4px;transition:background .12s;}
.anim-transport button:hover{background:var(--cream-dim);}
.anim-clip-btn{display:block;width:100%;text-align:right;padding:6px 10px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);font-size:var(--fs-xs);font-family:inherit;margin-bottom:5px;transition:all .12s;}
.anim-clip-btn.active,.anim-clip-btn:hover{background:var(--cream-dim);color:var(--cream);}
.no-anim-msg{color:var(--muted);font-size:var(--fs-sm);text-align:center;padding:20px;}

/* Slides */
.slide-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface2);border:1px solid var(--border);margin-bottom:5px;cursor:pointer;transition:background .12s;}
.slide-item:hover,.slide-item.active{background:var(--cream-dim);border-color:rgba(238,236,215,.25);}
.slide-num{width:20px;height:20px;background:var(--burg);color:var(--cream);font-size:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:2px;}
.slide-title-text{font-size:var(--fs-xs);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

/* Bottom bar */
.vw-bar{height:var(--bar-h);display:flex;align-items:center;padding:0 12px;background:var(--black);border-top:1px solid var(--border);gap:8px;flex-shrink:0;}
.vw-bar-l,.vw-bar-r{display:flex;align-items:center;gap:6px;}
.vw-bar-c{flex:1;text-align:center;font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.vwb-btn{display:flex;align-items:center;gap:5px;padding:5px 12px;background:var(--surface);border:1px solid var(--border);color:var(--cream);font-size:var(--fs-xs);font-family:inherit;border-radius:999px;transition:background .12s;}
.vwb-btn:hover{background:var(--cream-dim);}
.vwb-btn.primary{background:var(--cream);color:var(--black);border:none;}
.vwb-btn.primary:hover{opacity:.88;}

/* ── Hotspot Dots ─────────────────────────────────── */
.ann-dot{position:absolute;width:28px;height:28px;border-radius:50%;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;border:2.5px solid rgba(255,255,255,.7);transition:transform .15s,opacity .15s;pointer-events:auto;}
.ann-dot:hover{transform:translate(-50%,-50%) scale(1.2);}
/* In annotate mode dots get a grab cursor (set via JS activeTool check) */
body.tool-annotate .ann-dot{cursor:grab;}
body.tool-annotate .ann-dot:hover{transform:translate(-50%,-50%) scale(1.15);}
.ann-dot::after{content:'';position:absolute;inset:-6px;border-radius:50%;border:2px solid currentColor;opacity:.35;animation:ann-ring 2.5s ease-out infinite;}
@keyframes ann-ring{0%{transform:scale(.6);opacity:.5}100%{transform:scale(1.6);opacity:0}}
.ann-num{font-size:11px;font-family:"Scandia",sans-serif;font-weight:700;color:#fff;pointer-events:none;line-height:1;}

/* ── Marker shapes ────────────────────────────────── */
.ann-dot.shape-square{border-radius:4px;}
.ann-dot.shape-square::after{border-radius:4px;}
.ann-dot.shape-diamond{border-radius:3px;transform:translate(-50%,-50%) rotate(45deg);}
.ann-dot.shape-diamond:hover{transform:translate(-50%,-50%) rotate(45deg) scale(1.2);}
.ann-dot.shape-diamond .ann-num{transform:rotate(-45deg);}
.ann-dot.shape-diamond::after{border-radius:3px;}
.ann-dot.shape-pin{border-radius:50% 50% 50% 0;transform:translate(-50%,-50%) rotate(-45deg);}
.ann-dot.shape-pin:hover{transform:translate(-50%,-50%) rotate(-45deg) scale(1.2);}
.ann-dot.shape-pin .ann-num{transform:rotate(45deg);}
.ann-dot.shape-pin::after{border-radius:50%;transform:none!important;animation:none;display:none;}

/* ── Marker animation effects ─────────────────────── */
/* none: keep the default ring */
.ann-dot.eff-none::after{animation:none;opacity:0;}
@keyframes ann-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
@keyframes ann-glow{0%,100%{box-shadow:0 0 0 2px currentColor}50%{box-shadow:0 0 12px 4px currentColor}}
@keyframes ann-ripple{0%{inset:-4px;opacity:.6}100%{inset:-14px;opacity:0}}
@keyframes ann-bounce{0%,100%{transform:translate(-50%,-60%)}50%{transform:translate(-50%,-40%)}}
@keyframes ann-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
@keyframes ann-spin{100%{transform:rotate(360deg)}}
.ann-dot.eff-pulse{animation:ann-pulse 1.4s ease-in-out infinite;}
.ann-dot.eff-pulse::after{animation:none;opacity:0;}
.ann-dot.eff-glow{animation:ann-glow 2s ease-in-out infinite;}
.ann-dot.eff-glow::after{animation:none;opacity:0;}
.ann-dot.eff-ripple::after{animation:ann-ripple 1.8s ease-out infinite;}
.ann-dot.eff-bounce{animation:ann-bounce 1.2s ease-in-out infinite;}
.ann-dot.eff-bounce::after{animation:none;opacity:0;}
.ann-dot.eff-breathe{animation:ann-breathe 2.2s ease-in-out infinite;}
.ann-dot.eff-breathe::after{animation:none;opacity:0;}
.ann-dot.eff-spin::after{animation:ann-spin 3s linear infinite;border-style:dashed;}

/* ── Hotspot Popup Card ───────────────────────────── */
.hotspot-popup{position:absolute;width:260px;background:#EEECD7;box-shadow:0 8px 32px rgba(0,0,0,.4);z-index:200;pointer-events:all;overflow:hidden;border-radius:8px;}
.hotspot-popup::before{content:'';position:absolute;left:-7px;top:50%;margin-top:-7px;border:7px solid transparent;border-right-color:var(--hspop-arrow-color,#EEECD7);}
/* caret arrow for top/bottom positions */
.hotspot-popup.pos-top::before,.hotspot-popup.pos-bottom::before{left:50%;top:auto;margin-top:0;border:0;}
.hotspot-popup.pos-top::after{content:'';position:absolute;bottom:-7px;left:50%;margin-left:-7px;border:7px solid transparent;border-top-color:var(--hspop-arrow-color,#EEECD7);}
.hotspot-popup.pos-bottom::before{content:'';position:absolute;top:-14px;left:50%;margin-left:-7px;border:7px solid transparent;border-bottom-color:var(--hspop-arrow-color,#EEECD7);display:block;left:auto;top:auto;}
.hotspot-popup.pos-bottom::after{content:'';position:absolute;top:-7px;left:50%;margin-left:-7px;border:7px solid transparent;border-bottom-color:var(--hspop-arrow-color,#EEECD7);}

/* Card style presets */
.hotspot-popup.style-glass{background:rgba(20,30,40,.72)!important;backdrop-filter:blur(14px);color:#eee!important;border:1px solid rgba(255,255,255,.15);box-shadow:0 8px 32px rgba(0,0,0,.6);}
.hotspot-popup.style-dark{background:#111!important;color:#eee!important;box-shadow:0 8px 32px rgba(0,0,0,.7);}
.hotspot-popup.style-minimal{background:transparent!important;color:inherit;box-shadow:none;border:1px solid rgba(255,255,255,.25);}
.hotspot-popup.style-glass::before,.hotspot-popup.style-dark::before{border-right-color:rgba(20,30,40,.72);}
.hotspot-popup.style-dark::before{border-right-color:#111;}
/* Card shadow */
.hotspot-popup.shadow-none{box-shadow:none!important;}
.hotspot-popup.shadow-strong{box-shadow:0 16px 48px rgba(0,0,0,.8),0 4px 12px rgba(0,0,0,.6)!important;}
/* Card entry animations */
@keyframes hspop-fade{from{opacity:0}to{opacity:1}}
@keyframes hspop-scale{from{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}
@keyframes hspop-slide-up{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes hspop-slide-down{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}
@keyframes hspop-spring{0%{opacity:0;transform:scale(.7)}70%{transform:scale(1.05)}100%{opacity:1;transform:scale(1)}}
.hotspot-popup.anim-fade{animation:hspop-fade .22s ease;}
.hotspot-popup.anim-scale{animation:hspop-scale .22s ease;}
.hotspot-popup.anim-slide-up{animation:hspop-slide-up .22s ease;}
.hotspot-popup.anim-slide-down{animation:hspop-slide-down .22s ease;}
.hotspot-popup.anim-spring{animation:hspop-spring .35s cubic-bezier(.34,1.56,.64,1);}
.hspop-close{position:absolute;top:6px;left:8px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:14px;background:rgba(0,0,0,.15);border-radius:50%;color:inherit;z-index:1;transition:background .15s;}
.hspop-close:hover{background:rgba(0,0,0,.3);}
.hspop-img-wrap{width:100%;max-height:140px;overflow:hidden;}
.hspop-img-wrap img{width:100%;height:140px;object-fit:cover;display:block;}
.hspop-body{padding:12px 14px 10px;}
.hspop-num{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:10px;font-family:"Scandia",sans-serif;font-weight:700;color:#fff;margin-bottom:6px;}
.hspop-title{font-size:13px;font-weight:700;line-height:1.3;margin-bottom:4px;}
.hspop-desc{font-size:12px;line-height:1.5;opacity:.75;white-space:pre-wrap;}
.hspop-actions{display:flex;gap:6px;padding:8px 14px;border-top:1px solid rgba(0,0,0,.1);}
.hspop-edit-btn,.hspop-del-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:5px 8px;font-size:11px;font-family:inherit;border-radius:4px;transition:background .15s;}
.hspop-edit-btn{background:rgba(0,0,0,.08);}
.hspop-edit-btn:hover{background:rgba(0,0,0,.18);}
.hspop-del-btn{background:rgba(180,0,0,.1);color:#b00;}
.hspop-del-btn:hover{background:rgba(180,0,0,.22);}

/* ── Floating Window system (fw-win) ─────────────────
   Generic draggable windows replacing modal overlays.
   Drag handle = .fw-drag  ·  Title = .fw-title
   Body scroll = .fw-body                              */
.fw-win{position:fixed;background:#111;border:1px solid rgba(238,236,215,.13);border-radius:12px;box-shadow:0 16px 50px rgba(0,0,0,.78),0 2px 8px rgba(0,0,0,.4);z-index:1800;display:flex;flex-direction:column;overflow:hidden;max-height:88vh;}
.fw-hdr{display:flex;align-items:center;gap:8px;padding:10px 13px;border-bottom:1px solid var(--border);flex-shrink:0;user-select:none;}
.fw-drag{color:var(--muted);font-size:13px;letter-spacing:1.5px;padding:3px 5px;border-radius:4px;cursor:grab;transition:color .15s;flex-shrink:0;}
.fw-drag:hover{color:var(--cream);}
.fw-drag:active{cursor:grabbing;}
.fw-title{flex:1;font-size:12px;color:var(--cream);font-weight:600;}
.fw-x{color:var(--muted);font-size:17px;line-height:1;padding:2px 7px;border-radius:4px;transition:color .15s;flex-shrink:0;}
.fw-x:hover{color:var(--cream);}
.fw-body{overflow-y:auto;flex:1;}

/* ── Docked window states ─────────────────────────── */
.fw-docked-l,.fw-docked-r{top:50%!important;left:auto;right:auto;transform:translateY(-50%)!important;}
.fw-docked-l{left:0!important;border-radius:0 12px 12px 0!important;border-inline-start-color:transparent!important;box-shadow:6px 0 30px rgba(0,0,0,.8)!important;}
.fw-docked-r{right:0!important;border-radius:12px 0 0 12px!important;border-inline-end-color:transparent!important;box-shadow:-6px 0 30px rgba(0,0,0,.8)!important;}
.fw-docked-l.ctx-panel,.fw-docked-r.ctx-panel{max-height:90vh;overflow-y:auto;padding:0 16px 14px;}
.fw-docked-l.ctx-panel .fw-hdr,.fw-docked-r.ctx-panel .fw-hdr{position:sticky;top:0;margin:0 -16px 8px;z-index:2;background:rgba(10,10,10,.97);backdrop-filter:blur(10px);}
.fw-docked-l.ctx-panel{border-radius:0 10px 10px 0!important;}
.fw-docked-r.ctx-panel{border-radius:10px 0 0 10px!important;}

/* ── Graphic Layer Panel ──────────────────────────── */
.gl-pane{}
.gl-add-btn{width:100%;margin-top:10px;padding:8px;background:var(--green);color:#fff;border:none;border-radius:7px;font-size:12px;font-family:'GE SS Two',sans-serif;cursor:pointer;transition:opacity .15s;}
.gl-add-btn:hover{opacity:.85;}
.gl-hint{margin-top:6px;font-size:10px;color:var(--muted);text-align:center;}
.gl-color-pick{width:34px;height:26px;padding:0;border:none;border-radius:5px;cursor:pointer;background:none;flex-shrink:0;}

/* CountUp / Stat overlay */
.gl-stat-overlay{position:absolute;padding:10px 18px;background:rgba(10,10,10,.85);border:1px solid var(--border);border-radius:10px;text-align:center;cursor:move;user-select:none;z-index:50;backdrop-filter:blur(6px);min-width:100px;}
.gl-stat-num{font-size:28px;font-weight:700;color:var(--cream);font-family:'Scandia',sans-serif;line-height:1.1;}
.gl-stat-title{font-size:11px;color:var(--muted);margin-top:3px;}
.gl-stat-close{position:absolute;top:4px;left:4px;font-size:12px;color:var(--muted);cursor:pointer;line-height:1;padding:2px 5px;border-radius:3px;}
.gl-stat-close:hover{color:var(--cream);}

/* Object lock button */
.soi-lock{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;background:none;color:var(--muted);border-radius:4px;cursor:pointer;flex-shrink:0;transition:color .15s,background .15s;margin-inline-end:2px;}
.soi-lock:hover{color:var(--cream);}
.soi-lock.locked{color:#f5a623;}
.scene-obj-item.locked-item .soi-name{opacity:.5;}

/* ── Keyboard Shortcuts Modal ─────────────────────── */
.sc-grid{display:grid;grid-template-columns:1fr 1fr;gap:0;padding:14px;gap:10px;}
.sc-col{display:flex;flex-direction:column;gap:10px;}
.sc-section{background:var(--surface2);border-radius:8px;overflow:hidden;}
.sc-hdr{font-size:9px;font-family:'Scandia',sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:7px 11px;border-bottom:1px solid var(--border);}
.sc-row{display:flex;align-items:center;gap:8px;padding:5px 11px;}
.sc-row span{font-size:11px;color:var(--cream-dim);flex:1;}
kbd{font-family:'Scandia',monospace;font-size:9px;background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:2px 6px;color:var(--cream);white-space:nowrap;flex-shrink:0;}

/* ── Hotspot Design Modal ─────────────────────────── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;z-index:1000;backdrop-filter:blur(4px);}
.modal-box{background:var(--surface);border:1px solid var(--border);padding:24px;width:360px;max-width:90vw;}
.modal-box h4{font-size:16px;margin-bottom:16px;}
.modal-actions{display:flex;gap:10px;margin-top:16px;justify-content:flex-end;}
.hotspot-modal-box{width:min(820px,95vw);padding:0;overflow:hidden;}
.hotspot-modal-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border);}
.hotspot-modal-hdr h4{font-size:14px;margin:0;}
.modal-x-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--muted);transition:color .15s;}
.modal-x-btn:hover{color:var(--cream);}
.hotspot-modal-cols{display:flex;gap:0;}
.hotspot-editor-col{flex:1;padding:18px 20px;border-inline-end:1px solid var(--border);min-width:0;display:flex;flex-direction:column;gap:0;}
.hotspot-preview-col{width:240px;flex-shrink:0;padding:18px 20px;background:rgba(0,0,0,.2);display:flex;flex-direction:column;}

/* Image upload slot */
.ann-img-slot{width:100%;height:90px;border:1.5px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;transition:border-color .15s;}
.ann-img-slot:hover{border-color:var(--cream);}
#ann-img-ph{display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--muted);font-size:11px;pointer-events:none;}

/* Colors row */
.hotspot-colors-row{display:flex;gap:8px;margin-top:8px;}
.color-swatch-inp{display:flex;align-items:center;gap:6px;border:1px solid var(--border);padding:4px 8px;}
.color-swatch-inp input[type=color]{width:22px;height:22px;padding:0;border:none;background:none;cursor:pointer;flex-shrink:0;}
.color-swatch-inp span{font-size:10px;color:var(--muted);font-family:"Scandia",monospace;}

/* Live preview card */
.hotspot-card-preview{background:#EEECD7;overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,.35);margin-bottom:10px;transition:background .2s,border-radius .2s;}
.hotspot-card-preview.style-glass{background:rgba(20,30,40,.72)!important;backdrop-filter:blur(14px);color:#eee!important;border:1px solid rgba(255,255,255,.15);}
.hotspot-card-preview.style-dark{background:#111!important;color:#eee!important;}
.hotspot-card-preview.style-minimal{background:transparent!important;color:#EEECD7;border:1px solid rgba(255,255,255,.25);}
.hcp-img-wrap{width:100%;overflow:hidden;}
.hcp-img-wrap img{width:100%;height:110px;object-fit:cover;display:block;}
.hcp-body{padding:10px 12px 12px;}
.hcp-marker-row{margin-bottom:6px;}
.hcp-marker-dot{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:10px;font-family:"Scandia",sans-serif;font-weight:700;color:#fff;background:#6F1946;}
.hcp-title{font-size:12px;font-weight:700;color:#0A0A0A;margin-bottom:3px;}
.hcp-desc{font-size:11px;color:#0A0A0A;opacity:.65;line-height:1.45;max-height:48px;overflow:hidden;}
.hotspot-preview-hint{font-size:10px;color:var(--muted);line-height:1.4;margin-top:6px;}

/* ── Hotspot design section (collapsible) ─────────── */
.hsopts-section{border:1px solid var(--border);margin-top:10px;overflow:hidden;}
.hsopts-hdr{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;cursor:pointer;user-select:none;font-size:11px;font-weight:600;color:var(--cream);background:rgba(238,236,215,.04);transition:background .12s;}
.hsopts-hdr:hover{background:rgba(238,236,215,.08);}
.hsopts-hdr svg{transition:transform .2s;flex-shrink:0;}
.hsopts-hdr.open svg{transform:rotate(180deg);}
.hsopts-body{padding:10px;display:none;}
.hsopts-body.open{display:block;}
/* Grid of option buttons */
.hsopt-grid{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px;}
.hsopt-btn{padding:4px 9px;font-size:10px;font-family:inherit;border:1px solid var(--border);color:var(--muted);background:none;border-radius:3px;cursor:pointer;transition:all .12s;white-space:nowrap;}
.hsopt-btn:hover{border-color:rgba(238,236,215,.4);color:var(--cream);}
.hsopt-btn.active{border-color:var(--cream);color:var(--cream);background:rgba(238,236,215,.1);}
/* Icon grid */
.hsicon-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-bottom:8px;}
.hsicon-btn{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--border);background:none;cursor:pointer;border-radius:3px;font-size:8px;color:var(--muted);transition:all .12s;padding:4px;}
.hsicon-btn svg{flex-shrink:0;}
.hsicon-btn:hover{border-color:rgba(238,236,215,.4);color:var(--cream);}
.hsicon-btn.active{border-color:var(--cream);color:var(--cream);background:rgba(238,236,215,.1);}
/* Sliders in hotspot design section */
.hsopts-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:10px;color:var(--muted);}
.hsopts-row label{min-width:60px;flex-shrink:0;}
.hsopts-row input[type=range]{flex:1;height:3px;accent-color:var(--cream);}
.hsopts-row .hsopts-val{min-width:30px;text-align:left;color:var(--cream);}
.hsopts-sub{font-size:9px;color:var(--muted);margin-bottom:4px;margin-top:6px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;}

/* ── Gallery sort controls ────────────────────────── */
.gallery-sort-sel{background:var(--surface);border:1px solid var(--border);color:var(--cream);font-family:inherit;font-size:11px;padding:5px 10px;border-radius:4px;cursor:pointer;margin-right:auto;}
.gallery-sort-sel:hover{border-color:rgba(238,236,215,.35);}
.gallery-empty-search{display:none;text-align:center;padding:40px 20px;color:var(--muted);font-size:13px;}
.gallery-empty-search svg{opacity:.3;margin-bottom:10px;display:block;margin-left:auto;margin-right:auto;}

/* ── Confirm dialog ───────────────────────────────── */
#confirm-dialog{display:none;position:fixed;inset:0;z-index:9999;align-items:center;justify-content:center;background:rgba(0,0,0,.55);backdrop-filter:blur(3px);}
#confirm-dialog.open{display:flex;}
.confirm-box{background:#161616;border:1px solid var(--border);padding:24px 28px;max-width:340px;width:90%;text-align:center;}
.confirm-box h3{font-size:14px;font-weight:700;margin-bottom:8px;color:var(--cream);}
.confirm-box p{font-size:12px;color:var(--muted);margin-bottom:18px;line-height:1.5;}
.confirm-btns{display:flex;gap:8px;justify-content:center;}
.confirm-btns .btn-danger{background:#7a1010;color:#fff;border:none;padding:7px 18px;font-family:inherit;font-size:12px;font-weight:600;border-radius:4px;cursor:pointer;transition:background .12s;}
.confirm-btns .btn-danger:hover{background:#9a1818;}
.confirm-btns .btn-cancel{background:var(--surface2);color:var(--cream);border:1px solid var(--border);padding:7px 18px;font-family:inherit;font-size:12px;border-radius:4px;cursor:pointer;transition:background .12s;}
.confirm-btns .btn-cancel:hover{background:rgba(238,236,215,.07);}

/* Annotations panel list */
.ann-panel-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border:1px solid var(--border);margin-bottom:5px;cursor:pointer;transition:border-color .15s;}
.ann-panel-item:hover{border-color:var(--cream);}
.ann-panel-dot{width:22px;height:22px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-family:"Scandia",sans-serif;font-weight:700;color:#fff;}
.ann-panel-img{width:30px;height:30px;object-fit:cover;flex-shrink:0;}
.ann-panel-info{flex:1;min-width:0;}
.ann-panel-title{font-size:11px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ann-panel-del{width:22px;height:22px;display:flex;align-items:center;justify-content:center;color:var(--muted);flex-shrink:0;font-size:13px;transition:color .15s;}
.ann-panel-del:hover{color:#ff8888;}
.prop-label-count{background:var(--burg);color:#fff;font-size:9px;font-family:"Scandia",sans-serif;font-weight:700;padding:1px 5px;border-radius:10px;margin-inline-start:6px;vertical-align:middle;}

/* Presentation overlay */
#pres-overlay{position:fixed;inset:0;background:#000;z-index:500;display:flex;flex-direction:column;}
#pres-canvas-wrap{position:absolute;inset:0;}
.pres-topbar{position:absolute;top:0;left:0;right:0;height:56px;display:flex;align-items:center;padding:0 20px;background:linear-gradient(to bottom,rgba(0,0,0,.8),transparent);z-index:20;gap:12px;}
.pres-logo{height:22px;}
.pres-model-title{font-size:var(--fs-sm);color:var(--cream);font-weight:500;flex:1;margin-inline-start:8px;}
.pres-exit-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.1);border-radius:50%;color:var(--cream);transition:background .15s;}
.pres-exit-btn:hover{background:rgba(255,255,255,.25);}
.pres-thumbs{position:absolute;top:64px;right:14px;display:flex;flex-direction:column;gap:6px;z-index:20;}
.pres-thumb{width:40px;height:40px;background:rgba(255,255,255,.12);border:1.5px solid transparent;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);color:var(--muted);cursor:pointer;transition:all .15s;border-radius:2px;}
.pres-thumb.active{border-color:var(--cream);color:var(--cream);}
.pres-notes{position:absolute;bottom:70px;left:20px;right:20px;background:rgba(0,0,0,.65);backdrop-filter:blur(6px);padding:10px 14px;font-size:var(--fs-sm);color:var(--muted);z-index:20;max-height:80px;overflow-y:auto;display:none;}
.pres-notes:not(:empty){display:block;}
.pres-autoplay-bar{position:absolute;bottom:44px;left:0;right:0;height:2px;background:rgba(255,255,255,.1);z-index:20;}
.pres-autoplay-fill{height:100%;background:var(--cream);width:0%;}
.pres-controls{position:absolute;bottom:0;left:0;right:0;height:var(--bar-h);display:flex;align-items:center;padding:0 16px;background:linear-gradient(to top,rgba(0,0,0,.9),transparent);z-index:20;gap:12px;}
.pres-slide-info{font-size:var(--fs-sm);color:var(--muted);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pres-nav-btns{display:flex;align-items:center;gap:10px;}
.pres-counter{font-size:var(--fs-xs);color:var(--muted);min-width:48px;text-align:center;}
.pres-nav-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.1);border-radius:50%;color:var(--cream);transition:background .15s;}
.pres-nav-btn:hover{background:rgba(255,255,255,.25);}
.pres-right-btns{display:flex;gap:6px;}

/* Presentation fade overlay */
#pres-fade{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;z-index:80;transition:opacity .28s ease;}
#pres-fade.visible{opacity:1;}
#pres-fade.trans-slide{background:#111;transition:opacity .18s ease,transform .32s cubic-bezier(.4,0,.2,1);}
#pres-fade.trans-zoom{background:#000;transition:opacity .25s ease,transform .3s cubic-bezier(.4,0,.2,1);}
#pres-fade.trans-flip{background:#000;transition:opacity .22s ease,transform .36s cubic-bezier(.4,0,.2,1);transform-origin:center center;}

/* Presentation title card */
#pres-title-card{position:absolute;bottom:60px;left:0;display:flex;align-items:stretch;z-index:25;max-width:420px;overflow:hidden;animation:ptc-in .4s ease forwards;}
@keyframes ptc-in{from{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}
.ptc-accent{width:5px;flex-shrink:0;}
.ptc-body{background:rgba(0,0,0,.72);backdrop-filter:blur(10px);padding:10px 18px 10px 14px;display:flex;align-items:center;gap:14px;}
.ptc-num{font-size:26px;font-family:"Scandia",sans-serif;font-weight:700;color:rgba(255,255,255,.25);line-height:1;flex-shrink:0;}
.ptc-title{font-size:15px;font-family:"Scandia",sans-serif;font-weight:600;color:#fff;line-height:1.3;}

/* Slide thumbnails with image */
.slide-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:4px;cursor:pointer;border:1.5px solid transparent;transition:background .15s,border-color .15s;margin-bottom:4px;}
.slide-item.active{background:rgba(255,255,255,.07);border-color:var(--cream);}
.slide-item:hover:not(.active){background:rgba(255,255,255,.04);}
.slide-item-thumb{width:44px;height:32px;border-radius:2px;object-fit:cover;background:rgba(255,255,255,.08);flex-shrink:0;}
.slide-item-thumb.no-img{display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);color:var(--muted);}
.slide-item-accent{width:3px;height:32px;border-radius:2px;flex-shrink:0;}
.slide-item-info{flex:1;min-width:0;}
.slide-item-title{font-size:var(--fs-xs);color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.slide-item-meta{font-size:10px;color:var(--muted);margin-top:2px;}
.slide-item-del{width:20px;height:20px;display:flex;align-items:center;justify-content:center;color:var(--muted);border-radius:3px;transition:color .15s,background .15s;flex-shrink:0;}
.slide-item-del:hover{color:#e55;background:rgba(229,85,85,.12);}

/* Better pres thumbs with color indicator */
.pres-thumb{width:44px;height:32px;background:rgba(255,255,255,.1);border:1.5px solid transparent;display:flex;align-items:center;justify-content:center;font-size:var(--fs-xs);color:var(--muted);cursor:pointer;transition:all .15s;border-radius:3px;overflow:hidden;position:relative;}
.pres-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.pres-thumb-num{position:relative;z-index:1;font-weight:700;}
.pres-thumb.active{border-color:var(--cream);color:var(--cream);}
.pres-thumb .pres-thumb-accent{position:absolute;bottom:0;left:0;right:0;height:3px;}

/* Toast */
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--surface2);border:1px solid var(--border);color:var(--cream);font-size:var(--fs-sm);padding:9px 18px;z-index:2000;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast.success{border-color:rgba(100,200,100,.4);background:rgba(25,60,38,.8);}
.toast.error{border-color:rgba(200,50,50,.4);background:rgba(80,15,15,.8);}

/* ── Multi-model: Scene Objects ─────────────────── */
.scene-obj-item{display:flex;align-items:center;gap:7px;padding:6px 8px;border-radius:7px;cursor:pointer;border:1px solid transparent;transition:background .12s;}
.scene-obj-item:hover{background:rgba(238,236,215,.06);}
.scene-obj-item.selected{background:rgba(238,236,215,.1);border-color:rgba(238,236,215,.2);}
.soi-vis{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px;display:flex;opacity:.7;flex-shrink:0;}
.soi-vis:hover,.soi-vis.off{opacity:.3;}
.soi-name{flex:1;font-size:11px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.soi-badge{font-size:9px;padding:2px 6px;background:rgba(111,25,70,.5);color:rgba(238,236,215,.7);border-radius:99px;flex-shrink:0;}
.soi-del{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px;display:flex;opacity:.5;flex-shrink:0;}
.soi-copy{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px;display:flex;opacity:0;flex-shrink:0;transition:opacity .15s,color .15s;}
.scene-obj-item:hover .soi-copy{opacity:.5;}
.soi-copy:hover{color:var(--cream);opacity:1!important;}
.soi-drag-ghost{opacity:.4;background:rgba(238,236,215,.12)!important;}
.soi-name[contenteditable="true"]{cursor:text;user-select:text;}
.soi-del:hover{color:#e05555;opacity:1;}

/* ── Multi-model: Add Modal ─────────────────────── */
.add-mtab{padding:7px 16px;font-size:12px;color:var(--muted);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;font-family:"GE SS Two";margin-bottom:-1px;transition:all .15s;}
.add-mtab.active{color:var(--cream);border-bottom-color:var(--cream);}
.add-lib-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.add-lib-card{background:rgba(255,255,255,.04);border:1px solid var(--border);border-radius:10px;overflow:hidden;cursor:pointer;transition:border-color .15s;display:flex;flex-direction:column;}
.add-lib-card:hover{border-color:rgba(238,236,215,.35);}
.add-lib-thumb{width:100%;aspect-ratio:1;background:rgba(255,255,255,.04);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.add-lib-name{font-size:11px;color:var(--cream);padding:6px 8px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.add-lib-btn{margin:0 8px 8px;padding:5px;background:var(--green);color:#fff;border:none;border-radius:6px;font-size:11px;cursor:pointer;font-family:"GE SS Two";}
.add-drop-zone{border:2px dashed var(--border);border-radius:12px;padding:40px 20px;cursor:pointer;transition:border-color .15s;display:flex;flex-direction:column;align-items:center;}
.add-drop-zone:hover{border-color:rgba(238,236,215,.4);}

/* ── Hotspot Media (video / pdf / link) ─────────── */
.hotspot-editor-col{max-height:72vh;overflow-y:auto;scrollbar-width:thin;}
.ann-media-slot{width:100%;height:44px;border:2px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;background:rgba(255,255,255,.03);border-radius:4px;transition:border-color .15s;overflow:hidden;}
.ann-media-slot:hover{border-color:rgba(238,236,215,.35);}
.ann-media-ph{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;pointer-events:none;}
.ann-media-info{display:flex;align-items:center;gap:7px;color:var(--cream);font-size:11px;padding:0 10px;width:100%;pointer-events:none;}
.hcp-media-preview{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px;}
.hcp-media-tag{font-size:9px;padding:2px 7px;background:rgba(0,0,0,.18);border-radius:99px;display:flex;align-items:center;gap:3px;}

/* ── Hotspot popup media bar ─────────────────────── */
.hspop-media-bar{display:flex;gap:4px;padding:6px 10px;border-top:1px solid rgba(0,0,0,.1);flex-wrap:wrap;}
.hspop-media-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;font-size:11px;border-radius:4px;background:rgba(0,0,0,.1);color:inherit;transition:background .12s;text-decoration:none;font-family:inherit;cursor:pointer;border:none;white-space:nowrap;}
.hspop-media-btn:hover{background:rgba(0,0,0,.22);}

/* ── Media Lightbox ──────────────────────────────── */
#media-lightbox{align-items:center;justify-content:center;}
#ml-box{position:relative;width:72vw;height:70vh;display:flex;align-items:center;justify-content:center;transition:width .22s,height .22s;}
#ml-box.expanded{width:96vw;height:92vh;}
.ml-btn{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .15s;flex-shrink:0;}
.ml-btn:hover{background:rgba(255,255,255,.32);}
#ml-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px;}
#ml-video{width:100%;max-height:100%;border-radius:6px;}
#ml-pdf{width:100%;height:100%;border:none;border-radius:6px;}

/* ══════════════════════════════════════════════════
   AGENT PANEL — ALLURE Assistant
══════════════════════════════════════════════════ */

/* ── FAB Button ─────────────────────────────────── */
.agent-fab{
  position:fixed;
  bottom:calc(var(--bar-h, 44px) + 14px);
  left:14px;
  width:46px;height:46px;
  border-radius:50%;
  background:var(--burg);
  box-shadow:0 4px 20px rgba(111,25,70,.45);
  display:flex;align-items:center;justify-content:center;
  z-index:5000;
  transition:transform .18s,box-shadow .18s,background .15s;
  border:1.5px solid rgba(255,255,255,.12);
}
.agent-fab:hover{transform:scale(1.08);box-shadow:0 6px 28px rgba(111,25,70,.65);}
.agent-fab.active{background:var(--surface2);box-shadow:0 4px 20px rgba(0,0,0,.5);}
.agent-fab .ag-fab-icon{transition:opacity .15s,transform .15s;}
.agent-fab .ag-fab-close{position:absolute;opacity:0;transform:scale(0.6) rotate(-90deg);transition:opacity .15s,transform .15s;}
.agent-fab.active .ag-fab-icon{opacity:0;transform:scale(0.6) rotate(90deg);}
.agent-fab.active .ag-fab-close{opacity:1;transform:scale(1) rotate(0);}

/* ── Panel ──────────────────────────────────────── */
.agent-panel{
  position:fixed;
  bottom:calc(var(--bar-h, 44px) + 68px);
  left:14px;
  width:340px;
  max-height:72vh;
  background:#161616;
  border:1px solid rgba(238,236,215,.1);
  border-radius:16px;
  z-index:4999;
  display:flex;flex-direction:column;
  box-shadow:0 12px 48px rgba(0,0,0,.65);
  overflow:hidden;
  transform:translateY(12px) scale(.97);
  opacity:0;
  pointer-events:none;
  transition:opacity .2s,transform .2s;
}
.agent-panel.open{
  transform:translateY(0) scale(1);
  opacity:1;
  pointer-events:all;
}

/* ── Header ─────────────────────────────────────── */
.ag-header{
  display:flex;align-items:center;justify-content:space-between;
  padding:12px 14px;
  border-bottom:1px solid rgba(238,236,215,.07);
  flex-shrink:0;
}
.ag-header-left{display:flex;align-items:center;gap:10px;}
.ag-logo-dot{
  width:32px;height:32px;border-radius:50%;
  background:linear-gradient(135deg,var(--burg),#4a1030);
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.ag-logo-dot::after{content:'A';color:#fff;font-family:'Scandia',sans-serif;font-weight:700;font-size:14px;}
.ag-title{color:var(--cream);font-size:13px;font-weight:600;line-height:1.2;font-family:'Scandia',sans-serif;}
.ag-subtitle{color:var(--muted);font-size:10px;}
.ag-header-right{display:flex;align-items:center;gap:6px;}

/* MCP status dot */
.ag-mcp-status{display:flex;align-items:center;gap:4px;padding:3px 8px;border-radius:99px;background:rgba(238,236,215,.05);border:1px solid rgba(238,236,215,.1);}
.ag-mcp-label{font-size:10px;color:var(--muted);}
.ag-mcp-dot{width:6px;height:6px;border-radius:50%;background:rgba(238,236,215,.2);}
.ag-mcp-dot.connected{background:#4ade80;box-shadow:0 0 6px rgba(74,222,128,.5);}
.ag-icon-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;color:var(--muted);transition:background .12s,color .12s;}
.ag-icon-btn:hover{background:rgba(238,236,215,.08);color:var(--cream);}

/* ── Messages ───────────────────────────────────── */
.ag-messages{
  flex:1;
  overflow-y:auto;
  padding:12px;
  display:flex;flex-direction:column;gap:6px;
  scroll-behavior:smooth;
  scrollbar-width:thin;
  scrollbar-color:rgba(238,236,215,.1) transparent;
}
.agm{font-size:12.5px;line-height:1.55;padding:8px 11px;border-radius:10px;max-width:92%;word-break:break-word;}
.agm code{font-size:11px;background:rgba(255,255,255,.08);padding:1px 5px;border-radius:4px;}
.agm strong{font-weight:600;}
.agm-user{
  background:rgba(111,25,70,.25);border:1px solid rgba(111,25,70,.3);
  color:var(--cream);align-self:flex-end;border-radius:10px 10px 2px 10px;
}
.agm-assistant{
  background:rgba(238,236,215,.05);border:1px solid rgba(238,236,215,.08);
  color:var(--cream);align-self:flex-start;border-radius:10px 10px 10px 2px;
}
.agm-tools{
  align-self:flex-start;display:flex;flex-wrap:wrap;gap:4px;padding:4px 0;
}
.ag-tool-chip{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 8px;border-radius:99px;
  background:rgba(25,60,38,.35);border:1px solid rgba(25,60,38,.5);
  color:rgba(238,236,215,.7);font-size:10.5px;
}
.agm-thinking{
  display:flex;gap:5px;align-items:center;padding:10px 14px;align-self:flex-start;
}
.agm-thinking span{
  width:7px;height:7px;border-radius:50%;
  background:rgba(238,236,215,.35);
  animation:agDot .9s ease-in-out infinite;
}
.agm-thinking span:nth-child(2){animation-delay:.15s;}
.agm-thinking span:nth-child(3){animation-delay:.3s;}
@keyframes agDot{0%,100%{transform:translateY(0);opacity:.35;}50%{transform:translateY(-4px);opacity:1;}}

/* ── Welcome Screen ─────────────────────────────── */
.ag-welcome{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:20px 16px;gap:8px;
}
.ag-welcome-icon{
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,rgba(111,25,70,.3),rgba(25,60,38,.3));
  border:1.5px solid rgba(238,236,215,.12);
  display:flex;align-items:center;justify-content:center;
  color:var(--cream);
}
.ag-welcome-title{font-family:'Scandia',sans-serif;font-weight:700;font-size:15px;color:var(--cream);}
.ag-welcome-sub{font-size:11.5px;color:var(--muted);line-height:1.5;max-width:260px;}
.ag-chips{display:flex;flex-wrap:wrap;gap:5px;justify-content:center;margin-top:4px;}
.ag-chips button{
  padding:5px 11px;border-radius:99px;font-size:11px;
  background:rgba(238,236,215,.06);border:1px solid rgba(238,236,215,.12);
  color:var(--cream);transition:background .12s;font-family:inherit;cursor:pointer;
}
.ag-chips button:hover{background:rgba(238,236,215,.13);}

/* ── Input ──────────────────────────────────────── */
.ag-input-wrap{
  display:flex;align-items:flex-end;gap:6px;
  padding:10px 12px 12px;
  border-top:1px solid rgba(238,236,215,.07);
  flex-shrink:0;
}
.ag-input{
  flex:1;resize:none;background:rgba(238,236,215,.06);
  border:1px solid rgba(238,236,215,.1);border-radius:10px;
  color:var(--cream);font-size:12.5px;line-height:1.4;
  padding:8px 11px;min-height:36px;max-height:120px;
  outline:none;scrollbar-width:thin;
  transition:border-color .15s;
}
.ag-input:focus{border-color:rgba(111,25,70,.5);}
.ag-input::placeholder{color:var(--muted);}
.ag-send-btn{
  width:36px;height:36px;flex-shrink:0;
  border-radius:10px;background:var(--burg);
  display:flex;align-items:center;justify-content:center;
  color:#fff;transition:background .12s,transform .12s;
}
.ag-send-btn:hover{background:#8a1f57;transform:scale(1.06);}

/* ── Mic Button ─────────────────────────────────────── */
.ag-mic-btn{
  width:36px;height:36px;flex-shrink:0;border-radius:10px;
  background:rgba(238,236,215,.07);border:1px solid rgba(238,236,215,.1);
  color:rgba(238,236,215,.55);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .15s;
}
.ag-mic-btn:hover{background:rgba(238,236,215,.13);color:var(--cream);}
.ag-mic-btn.ag-mic-on{
  background:rgba(180,20,60,.25);border-color:rgba(220,50,80,.4);
  color:#ff6b8a;
  animation:micPulse 1.2s ease-in-out infinite;
}
@keyframes micPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(200,30,60,.5);}
  50%{box-shadow:0 0 0 7px rgba(200,30,60,0);}
}

/* ── Attach Button ──────────────────────────────────── */
.ag-att-btn{
  width:36px;height:36px;flex-shrink:0;border-radius:10px;
  background:rgba(238,236,215,.07);border:1px solid rgba(238,236,215,.1);
  color:rgba(238,236,215,.55);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:all .15s;
}
.ag-att-btn:hover{background:rgba(238,236,215,.13);color:var(--cream);}
.ag-att-btn.has-files{background:rgba(25,60,38,.35);border-color:rgba(25,60,38,.6);color:#7ecb8f;}

/* ── Attachment Chips Row ───────────────────────────── */
.ag-attach-row{
  display:none;flex-wrap:wrap;gap:5px;
  padding:6px 12px 2px;
}
.ag-attach-row.has-files{display:flex;}
.ag-afile{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 8px 3px 6px;border-radius:8px;
  font-size:10.5px;color:rgba(238,236,215,.8);
  border:1px solid rgba(238,236,215,.12);
  background:rgba(238,236,215,.07);
  max-width:160px;
}
.ag-afile-image{background:rgba(15,40,56,.35);border-color:rgba(60,120,180,.3);color:#7ec5e8;}
.ag-afile-pdf  {background:rgba(80,15,15,.35);border-color:rgba(200,60,60,.3);color:#e88f8f;}
.ag-afile-text {background:rgba(15,50,25,.35);border-color:rgba(30,120,60,.3);color:#7ecb8f;}
.ag-afile-model3d{background:rgba(60,15,70,.35);border-color:rgba(150,60,180,.3);color:#c48fe8;}
.ag-afile-icon{font-size:11px;flex-shrink:0;}
.ag-afile-name{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  max-width:100px;
}
.ag-afile-rm{
  flex-shrink:0;width:14px;height:14px;border-radius:4px;
  background:rgba(238,236,215,.1);color:rgba(238,236,215,.5);
  font-size:9px;display:flex;align-items:center;justify-content:center;
  cursor:pointer;border:none;padding:0;transition:all .12s;
}
.ag-afile-rm:hover{background:rgba(180,30,30,.4);color:#fff;}

/* ── File chips + thumbnails in chat history ──────── */
.ag-msg-files{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:5px;}
.ag-msg-file{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 7px;border-radius:6px;font-size:10px;
  background:rgba(238,236,215,.1);color:rgba(238,236,215,.65);
}
.ag-msg-img{
  max-width:100%;max-height:160px;border-radius:8px;
  display:block;margin-bottom:4px;object-fit:contain;
  border:1px solid rgba(238,236,215,.1);
}

/* ── Key Setup Screen ───────────────────────────────── */
.ag-key-screen{
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:18px 14px 12px;gap:9px;
}
/* Provider Tabs */
.ag-prov-wrap{display:flex;gap:5px;width:100%;}
.ag-prov-tab{
  flex:1;padding:7px 4px;border-radius:8px;font-size:11px;font-weight:600;
  border:1px solid rgba(238,236,215,.1);background:rgba(238,236,215,.04);
  color:rgba(238,236,215,.45);cursor:pointer;transition:all .15s;font-family:inherit;
}
.ag-prov-tab.ag-prov-on{
  border-color:rgba(25,60,38,.7);background:rgba(25,60,38,.3);
  color:var(--cream);
}
/* Model list */
.ag-model-wrap{display:flex;flex-direction:column;gap:5px;width:100%;text-align:right;}
.ag-mitem{
  display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:9px;
  border:1px solid rgba(238,236,215,.09);background:rgba(238,236,215,.03);
  cursor:pointer;transition:all .15s;
}
.ag-mitem:hover{border-color:rgba(238,236,215,.18);background:rgba(238,236,215,.06);}
.ag-mitem.ag-mitem-on{border-color:rgba(111,25,70,.6);background:rgba(111,25,70,.12);}
.ag-mradio{
  width:13px;height:13px;border-radius:50%;border:2px solid rgba(238,236,215,.25);
  flex-shrink:0;transition:all .15s;
}
.ag-mitem.ag-mitem-on .ag-mradio{border-color:var(--burg);background:var(--burg);}
.ag-mname{font-size:12px;font-weight:600;color:var(--cream);flex:1;}
.ag-mdesc{font-size:10px;color:var(--muted);margin-top:1px;}
.ag-mbadge{
  font-size:9.5px;padding:2px 6px;border-radius:4px;flex-shrink:0;font-weight:600;
}
.ag-mbadge-g{background:rgba(25,100,25,.2);color:#7ecc7e;}
.ag-mbadge-b{background:rgba(15,60,120,.2);color:#7aaed4;}
.ag-mbadge-p{background:rgba(111,25,70,.2);color:#e0a0c4;}
.ag-key-icon{
  width:54px;height:54px;border-radius:50%;
  background:linear-gradient(135deg,rgba(111,25,70,.35),rgba(15,40,56,.35));
  border:1.5px solid rgba(238,236,215,.12);
  display:flex;align-items:center;justify-content:center;
  color:var(--cream);
}
.ag-key-title{font-family:'Scandia',sans-serif;font-weight:700;font-size:14px;color:var(--cream);}
.ag-key-sub{font-size:11px;color:var(--muted);line-height:1.5;max-width:240px;}
.ag-key-inp{
  width:100%;padding:9px 12px;border-radius:9px;
  background:rgba(238,236,215,.06);border:1px solid rgba(238,236,215,.15);
  color:var(--cream);font-size:12px;outline:none;
  transition:border-color .15s;text-align:left;direction:ltr;
}
.ag-key-inp:focus{border-color:rgba(111,25,70,.6);}
.ag-key-inp::placeholder{color:var(--muted);}
.ag-key-btn{
  width:100%;padding:9px;border-radius:9px;
  background:var(--burg);color:#fff;font-size:13px;
  font-family:inherit;cursor:pointer;border:none;
  transition:background .15s;
}
.ag-key-btn:hover{background:#8a1f57;}
.ag-key-link{
  font-size:11px;color:var(--muted);display:flex;align-items:center;gap:4px;
  text-decoration:none;transition:color .12s;
}
.ag-key-link:hover{color:var(--cream);}

/* ── Dragging state ─────────────────────────────── */
.agent-panel.dragging{
  user-select:none;
  box-shadow:0 20px 60px rgba(0,0,0,.8);
  opacity:.96;
}
.ag-header{user-select:none;cursor:grab;}
.ag-header:active{cursor:grabbing;}
.ag-header button,.ag-header a{cursor:pointer;}

/* ── Floating 3D Viewer ─────────────────────────── */
#f3d-win{
  display:none;position:fixed;
  left:calc(50% - 380px);top:8%;
  width:760px;height:520px;min-width:320px;min-height:44px;
  background:#0d0d0d;
  border:1px solid rgba(238,236,215,.13);
  border-radius:12px;
  box-shadow:0 28px 80px rgba(0,0,0,.75),0 0 0 1px rgba(0,0,0,.5);
  z-index:4000;
  flex-direction:column;overflow:hidden;
}
#f3d-win.f3d-visible{display:flex;}
#f3d-win.f3d-maximized{
  left:0!important;top:0!important;
  width:100vw!important;height:100vh!important;
  border-radius:0;border:none;
}
#f3d-header{
  height:44px;flex-shrink:0;
  display:flex;align-items:center;gap:9px;
  padding:0 10px 0 14px;
  background:#141414;
  border-bottom:1px solid rgba(238,236,215,.07);
  cursor:move;user-select:none;
}
#f3d-title{flex:1;color:rgba(238,236,215,.85);font-size:13px;font-weight:600;letter-spacing:.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.f3d-ctrls{display:flex;gap:4px;flex-shrink:0;}
.f3d-cb{
  width:28px;height:28px;border:none;border-radius:7px;cursor:pointer;
  background:rgba(238,236,215,.05);color:rgba(238,236,215,.55);
  display:flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s;flex-shrink:0;
}
.f3d-cb:hover{background:rgba(238,236,215,.12);color:rgba(238,236,215,.95);}
.f3d-cb-on{background:rgba(111,25,70,.35)!important;color:#e8a0c4!important;}
.f3d-cb-on:hover{background:rgba(111,25,70,.55)!important;color:#f5c0d8!important;}
.f3d-close-btn:hover{background:rgba(200,40,40,.25)!important;color:#ff8080!important;}
.f3d-sep{width:1px;height:16px;background:rgba(238,236,215,.1);margin:0 2px;flex-shrink:0;align-self:center;}
#f3d-body{
  flex:1;position:relative;overflow:hidden;
  background:#0a0a0a;min-height:0;
  transition:background .3s;
}
#f3d-win.f3d-minimized #f3d-body{display:none;}
#f3d-win.f3d-minimized{height:44px!important;min-height:44px;}
/* transparent mode */
#f3d-win.f3d-tp{
  background:transparent;
  border:1px solid rgba(238,236,215,.09);
  box-shadow:inset 0 0 0 1px rgba(238,236,215,.04);
}
#f3d-win.f3d-tp #f3d-header{
  background:transparent;
  backdrop-filter:none;-webkit-backdrop-filter:none;
  border-bottom:none;
}
#f3d-win.f3d-tp #f3d-title{
  color:rgba(238,236,215,.55);
  font-size:11px;font-weight:500;
  text-shadow:0 1px 8px rgba(0,0,0,.95),0 0 20px rgba(0,0,0,.7);
}
#f3d-win.f3d-tp .f3d-cb{
  background:rgba(0,0,0,.28);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
#f3d-win.f3d-tp .f3d-cb:hover{background:rgba(0,0,0,.5)!important;}
#f3d-win.f3d-tp .f3d-cb-on{background:rgba(111,25,70,.55)!important;}
#f3d-win.f3d-tp .f3d-cb-on:hover{background:rgba(111,25,70,.75)!important;}
#f3d-win.f3d-tp .f3d-sep{background:rgba(238,236,215,.06);}
#f3d-win.f3d-tp #f3d-body{background:transparent;}
#ml-3d-canvas{position:absolute;inset:0;display:block;}
#ml-3d-loading{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  color:rgba(238,236,215,.35);font-size:13px;pointer-events:none;
  background:transparent;
}
/* resize handles */
.f3d-rz{position:absolute;z-index:1;}
.f3d-rz-r {right:0;top:8px;bottom:8px;width:6px;cursor:e-resize;}
.f3d-rz-l {left:0;top:8px;bottom:8px;width:6px;cursor:w-resize;}
.f3d-rz-b {bottom:0;left:8px;right:8px;height:6px;cursor:s-resize;}
.f3d-rz-t {top:0;left:8px;right:8px;height:6px;cursor:n-resize;}
.f3d-rz-br{right:0;bottom:0;width:14px;height:14px;cursor:se-resize;}
.f3d-rz-bl{left:0;bottom:0;width:14px;height:14px;cursor:sw-resize;}
.f3d-rz-tr{right:0;top:0;width:14px;height:14px;cursor:ne-resize;}
.f3d-rz-tl{left:0;top:0;width:14px;height:14px;cursor:nw-resize;}

/* ── Share modal ─────────────────────────────────── */
.share-card{background:#111;border:1px solid var(--border);border-radius:16px;width:440px;max-width:94vw;max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.6);}
.share-head{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-bottom:1px solid var(--border);color:var(--cream);font-size:15px;font-weight:600;}
.share-x{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1;}
.share-x:hover{color:var(--cream);}
.share-body{padding:16px 20px 20px;overflow-y:auto;}
.share-preview{border-radius:12px;overflow:hidden;border:1px solid var(--border);background:#000;aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;}
.share-preview img{width:100%;height:100%;object-fit:cover;display:block;}
.share-caption{width:100%;margin-top:12px;background:var(--cream-dim);border:1px solid var(--border);border-radius:9px;color:var(--cream);font-family:'GE SS Two',sans-serif;font-size:13px;padding:9px 11px;resize:vertical;line-height:1.6;}
.share-caption:focus{outline:none;border-color:var(--burgundy);}
.share-btns{display:flex;flex-direction:column;gap:9px;margin-top:13px;}
.share-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px;border-radius:10px;font-family:'GE SS Two',sans-serif;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:opacity .15s,background .15s;}
.share-btn.native{background:var(--burgundy);color:#fff;}
.share-btn.dl{background:var(--cream);color:var(--black);}
.share-btn:hover{opacity:.88;}
.share-social{display:flex;gap:8px;margin-top:3px;}
.share-soc{flex:1;height:42px;border-radius:10px;border:1px solid var(--border);background:var(--cream-dim);color:var(--cream);font-size:16px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .12s,background .15s;}
.share-soc:hover{transform:translateY(-2px);}
.share-soc.li:hover{background:#0a66c2;color:#fff;}
.share-soc.x:hover{background:#000;color:#fff;}
.share-soc.wa:hover{background:#25d366;color:#fff;}
.share-soc.fb:hover{background:#1877f2;color:#fff;}
.share-soc.cp:hover{background:var(--green);color:#fff;}
.share-hint{margin-top:13px;font-size:10.5px;line-height:1.7;color:var(--muted);opacity:.7;}

/* ── Share: embed section ────────────────────────── */
.share-embed{background:var(--cream-dim);border:1px solid var(--border);border-radius:12px;padding:13px 14px;}
.se-title{display:flex;align-items:center;gap:7px;color:var(--cream);font-size:13px;font-weight:600;margin-bottom:10px;}
.share-btn.embed{width:100%;background:var(--green);color:#fff;}
.se-steps{font-size:11px;line-height:1.85;color:var(--muted);margin:11px 0 9px;}
.se-steps b{color:var(--cream);}
.se-steps a{color:#7fd6a0;text-decoration:underline;}
.se-code-row{display:flex;gap:6px;}
.se-code{flex:1;background:#0c0c0c;border:1px solid var(--border);border-radius:8px;color:var(--cream);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:10.5px;padding:8px 10px;direction:ltr;text-align:left;}
.share-div{display:flex;align-items:center;gap:10px;margin:16px 0 12px;color:var(--muted);font-size:11px;opacity:.6;}
.share-div::before,.share-div::after{content:"";flex:1;height:1px;background:var(--border);}

/* ── Global scene save button ────────────────────── */
.scene-save-btn{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);z-index:18;
  display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:none;border-radius:999px;cursor:pointer;
  background:var(--green);color:#fff;font-family:'GE SS Two',sans-serif;font-size:13px;font-weight:600;
  box-shadow:0 6px 22px rgba(0,0,0,.4);transition:transform .15s,opacity .15s,background .2s;}
.scene-save-btn:hover{transform:translateX(-50%) translateY(-2px);}
.scene-save-btn.dirty{background:var(--burgundy);animation:savepulse 2s ease-in-out infinite;}
.scene-save-btn.saved{background:#1f7a45;}
@keyframes savepulse{0%,100%{box-shadow:0 6px 22px rgba(111,25,70,.35)}50%{box-shadow:0 6px 28px rgba(111,25,70,.7)}}

/* ── Asset Browser (floating window) ──────────────── */
#ab-panel{
  display:none;
  border-radius:12px;
  border:1px solid var(--border) !important;
  box-shadow:0 8px 40px rgba(0,0,0,.55),0 2px 10px rgba(0,0,0,.3);
}
#ab-panel.open{display:flex!important;}
#ab-drag-handle{cursor:move;user-select:none;}
#ab-drag-handle:active{cursor:grabbing;}
.ab-resize{position:absolute;z-index:10;}
.ab-resize-e {right:0;top:12px;bottom:12px;width:6px;cursor:ew-resize;}
.ab-resize-s {bottom:0;left:12px;right:12px;height:6px;cursor:ns-resize;}
.ab-resize-se{right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;}
.ab-resize-se::after{content:'';position:absolute;right:4px;bottom:4px;width:7px;height:7px;border-right:2px solid var(--border);border-bottom:2px solid var(--border);border-radius:0 0 3px 0;opacity:.6;}
.ab-tab{flex:1;padding:9px 4px;font-size:11px;font-family:inherit;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;}
.ab-tab.active{color:var(--cream);border-bottom-color:var(--cream);}
.ab-src-btn{padding:3px 10px;font-size:10px;font-family:inherit;background:var(--cream-dim);border:1px solid var(--border);color:var(--muted);border-radius:5px;cursor:pointer;transition:all .15s;}
.ab-src-btn.active{background:var(--green);color:var(--cream);border-color:transparent;}
#ab-grid{grid-auto-rows:min-content;}
.ab-card{position:relative;border-radius:8px;overflow:hidden;background:var(--surface2);cursor:pointer;aspect-ratio:1;min-height:120px;border:1px solid var(--border);transition:border-color .15s;display:flex;flex-direction:column;}
.ab-card:hover{border-color:rgba(238,236,215,.4);}
.ab-card img{width:100%;flex:1;object-fit:cover;display:block;min-height:0;}
.ab-card-label{flex-shrink:0;padding:4px 6px;background:rgba(0,0,0,.65);font-size:9px;color:var(--cream);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;order:-1;}
.ab-card-import{flex-shrink:0;background:rgba(20,20,20,.75);color:var(--cream);border:none;border-top:1px solid rgba(255,255,255,.08);padding:5px 4px;font-size:10px;font-family:inherit;cursor:pointer;text-align:center;transition:background .15s;width:100%;}
.ab-card:hover .ab-card-import{background:var(--green);}
.ab-card-spinner{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,.6);font-size:11px;color:var(--cream);}
.ab-card.loading .ab-card-spinner{display:flex;}
.ab-card.loading .ab-card-import{visibility:hidden;}

/* ── Navigation Cube ─────────────────── */
#nav-cube{
  position:absolute;bottom:52px;right:12px;
  width:72px;height:72px;
  perspective:200px;
  cursor:grab;z-index:40;
  user-select:none;
  touch-action:none;
}
#nav-cube:active{cursor:grabbing;}
#nav-cube-inner{
  width:72px;height:72px;
  position:relative;
  transform-style:preserve-3d;
  transform:rotateX(-20deg) rotateY(-30deg);
}
.nc-face{
  position:absolute;
  width:72px;height:72px;
  display:flex;align-items:center;justify-content:center;
  backface-visibility:visible;
  box-sizing:border-box;
  border:1px solid rgba(255,255,255,.12);
  transition:background .15s, border-color .15s;
}
.nc-face:hover{ border-color:rgba(255,255,255,.45); }
.nc-label{
  font-size:11px;font-weight:700;letter-spacing:.5px;
  font-family:monospace;pointer-events:none;
  opacity:.85;text-shadow:0 1px 3px rgba(0,0,0,.6);
}
/* Face colors — axis-coded */
.nc-front { transform:translateZ(36px);  background:rgba(28,38,52,.82); color:#5588e0; }
.nc-back  { transform:rotateY(180deg) translateZ(36px); background:rgba(20,28,42,.75); color:#5588e0; }
.nc-right { transform:rotateY(90deg)  translateZ(36px); background:rgba(52,20,20,.82); color:#e07070; }
.nc-left  { transform:rotateY(-90deg) translateZ(36px); background:rgba(42,18,18,.75); color:#e07070; }
.nc-top   { transform:rotateX(90deg)  translateZ(36px); background:rgba(18,48,28,.88); color:#55d077; }
.nc-bottom{ transform:rotateX(-90deg) translateZ(36px); background:rgba(14,36,20,.75); color:#55d077; }

/* Hover highlights per face */
.nc-front:hover,.nc-back:hover  { background:rgba(60,90,180,.55); }
.nc-right:hover,.nc-left:hover  { background:rgba(180,50,50,.55);  }
.nc-top:hover,.nc-bottom:hover  { background:rgba(30,140,70,.55);  }

/* Axes SVG overlay */
#nc-axes{
  position:absolute;bottom:-34px;right:50%;
  transform:translateX(50%);
  pointer-events:none;
  opacity:.75;
}

/* ── Viewport Stats ──────────────────── */
#vp-stats{
  position:absolute;bottom:8px;left:8px;
  font-size:10px;font-family:monospace;
  color:rgba(255,255,255,.6);
  background:rgba(0,0,0,.45);
  padding:3px 8px;border-radius:5px;
  pointer-events:none;z-index:50;
  display:none;
}

/* ── Morph Target Sliders ────────────── */
.morph-row{display:flex;align-items:center;gap:6px;margin-bottom:6px;}
.morph-row span{font-size:10px;color:var(--muted);flex:0 0 90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.morph-row input[type=range]{flex:1;}
.morph-row .ctx-val{flex:0 0 34px;font-size:10px;text-align:right;color:var(--cream);}

/* ── Snap Controls ───────────────────── */
.snap-group,.align-group{
  margin-top:10px;
  padding:8px;
  background:rgba(255,255,255,.03);
  border:1px solid var(--border);
  border-radius:8px;
}
.snap-header{
  display:flex;align-items:center;gap:6px;
  font-size:10px;font-weight:600;
  color:var(--muted);letter-spacing:.5px;
  text-transform:uppercase;margin-bottom:8px;
}
.snap-row{
  display:flex;align-items:center;gap:6px;
  margin-bottom:6px;
}
.snap-lbl{
  display:flex;align-items:center;gap:5px;
  font-size:10.5px;color:var(--cream);
  flex:1;cursor:pointer;
}
.snap-lbl input[type=checkbox]{accent-color:var(--green);width:13px;height:13px;}
.snap-sel{
  background:var(--surface2);
  border:1px solid var(--border);
  color:var(--cream);
  border-radius:5px;
  font-size:10px;
  padding:2px 4px;
  flex:0 0 60px;
  cursor:pointer;
}
.snap-sel:focus{outline:none;border-color:var(--green);}

/* ── Isolate Banner ──────────────────── */
#isolate-banner{
  position:absolute;top:8px;left:50%;transform:translateX(-50%);
  background:rgba(255,160,0,.12);
  border:1px solid rgba(255,160,0,.35);
  color:rgba(255,195,60,.9);
  padding:4px 18px;border-radius:20px;
  font-size:11px;z-index:60;pointer-events:none;
  white-space:nowrap;
  animation:fadeIn .2s ease;
}

/* ── Wireframe active glow ───────────── */
#tool-wireframe.active svg,
#tool-isolate.active svg{stroke:var(--green);}

/* ── AmbientCG Texture Browser ──────────── */
.acg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:4px;}
.acg-card{border:0.5px solid var(--border);border-radius:6px;overflow:hidden;cursor:pointer;background:var(--surface-1);text-align:center;transition:border-color .15s;}
.acg-card:hover{border-color:var(--green);}
.acg-card.active{border:1.5px solid var(--green);}
.acg-card img{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:var(--surface-0);}
.acg-card-name{font-size:9px;color:var(--text-secondary);padding:2px 3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.acg-apply-row{width:100%;font-size:11px;padding:5px 8px;border-radius:6px;border:0.5px solid var(--border);background:var(--surface-1);color:var(--text-primary);cursor:pointer;margin-top:2px;text-align:center;}
.acg-apply-row:hover{background:var(--green);color:#000;border-color:var(--green);}

/* ── Align grid buttons ──────────────── */
.align-group .ctx-reset{
  font-size:10px;padding:5px 4px;
  border-radius:6px;text-align:center;
}

/* ── FX collapsible sections ─────────── */
.fx-section{border:none;margin-bottom:4px;}
.fx-section[open]{margin-bottom:0;}
.fx-section-head{
  list-style:none;cursor:pointer;
  font-size:11px;font-weight:600;letter-spacing:.03em;
  color:var(--text-secondary);
  padding:8px 4px 6px;
  border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:6px;
  user-select:none;
  transition:color .15s;
}
.fx-section-head::-webkit-details-marker{display:none;}
.fx-section-head::after{
  content:'▾';margin-inline-start:auto;
  font-size:10px;opacity:.5;
  transition:transform .2s;
}
.fx-section[open] .fx-section-head::after{transform:rotate(-180deg);}
.fx-section-head:hover{color:var(--text);}
.fx-section .prop-group{margin-top:0;}

/* ── Command Palette ────────────────────────────── */
.cmd-row{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;transition:background .1s;}
.cmd-row:hover,.cmd-row-active{background:rgba(238,236,215,.07);}
.cmd-icon{font-size:14px;width:22px;text-align:center;flex-shrink:0;}
.cmd-label{font-size:13px;color:var(--cream);}

/* ── Kelvin gradient track ──────────────────────── */
#lp-kelvin{background:linear-gradient(to right,#ff6700,#ff8c00,#ffcc44,#fff8f4,#aabcff);height:4px;}

/* ── Pres laser active btn ──────────────────────── */
.pres-nav-btn.active{color:#ff4444;border-color:rgba(255,68,68,.4);}
