:root{
  --bg:#eef2f6;
  --panel:#ffffff;
  --line:#d9e0e8;
  --line-2:#e8edf3;
  --text:#1f2937;
  --muted:#6b7280;
  --dark:#2f3338;
  --brand:#5b5853;
  --shadow:0 12px 30px rgba(17,24,39,.08);
  --radius:22px;
  --success:#2f7d4f;
  --warn:#a76539;
  --danger:#b03d3d;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
a{color:inherit;text-decoration:none}
button,input,textarea,select{font:inherit}
.app-shell{display:grid;grid-template-columns:88px 1fr;min-height:100vh}
.sidebar{background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:center;padding:18px 0;gap:18px}
.side-logo{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-weight:800;color:#fff;background:#1f2937;overflow:hidden}
.side-logo img{width:100%;height:100%;object-fit:contain;background:#fff;padding:6px}
.nav{display:flex;flex-direction:column;gap:8px;width:100%;padding:0 8px}
.nav a{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px 8px;border-radius:16px;color:#344054;font-size:12px}
.nav a.active,.nav a:hover{background:#f5f7fa}
.nav .ico{font-size:22px;line-height:1}
.main{padding:22px}
.topbar{height:56px;border:1px solid var(--line);background:#fff;border-radius:18px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;box-shadow:var(--shadow)}
.topbar .right{display:flex;align-items:center;gap:12px}
.badge{padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:#fff;color:var(--muted);font-size:14px}
.content-card{margin-top:18px;border:1px solid var(--line);background:#f4f7fb;border-radius:30px;padding:22px;box-shadow:var(--shadow);min-height:calc(100vh - 120px)}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}
.page-head h1{margin:0;font-size:40px;line-height:1.05;letter-spacing:-.03em}.page-head p{margin:6px 0 0;color:var(--muted)}
.grid{display:grid;gap:16px}.grid.kpis{grid-template-columns:repeat(4,minmax(0,1fr))}
.card{background:var(--panel);border:1px solid var(--line-2);border-radius:24px;padding:20px;box-shadow:var(--shadow)}
.card h3{margin:0 0 10px;font-size:18px}.kpi-num{font-size:38px;font-weight:700;letter-spacing:-.04em}.kpi-label{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.btn{border:none;background:#4b4b4b;color:#fff;padding:12px 16px;border-radius:14px;cursor:pointer;box-shadow:var(--shadow)}
.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--line)}.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}.btn.sm{padding:9px 12px;border-radius:12px;font-size:14px}.btn.danger{background:var(--danger)}
.toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.toolbar.right{justify-content:flex-end}
.table-wrap{overflow:auto} table{width:100%;border-collapse:collapse} th,td{text-align:left;padding:14px 10px;border-bottom:1px solid var(--line-2);vertical-align:middle} th:last-child,td:last-child{text-align:right} th{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.input,.textarea,.select{width:100%;padding:13px 14px;border-radius:14px;border:1px solid var(--line);background:#fff;outline:none}.textarea{min-height:110px;resize:vertical}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid .full{grid-column:1/-1}
.stat-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:18px}.pill{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:#f5f7fa;border:1px solid var(--line);font-size:13px}
.status-active{color:var(--success)}.status-inactive{color:var(--danger)}.muted{color:var(--muted)}
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(180deg,#f8fafc,#edf2f7)}
.login-card{width:min(480px,100%);background:#fff;border:1px solid var(--line);border-radius:30px;padding:34px;box-shadow:var(--shadow)}
.login-logo{display:flex;justify-content:center;margin-bottom:18px}.login-logo img{max-width:260px;height:auto}
.login-card h1{margin:0 0 10px;font-size:34px;letter-spacing:-.03em;text-align:center}.login-card p{margin:0 0 24px;color:var(--muted);text-align:center}
.stack{display:flex;flex-direction:column;gap:14px}.spacer{height:4px}
.viewer-body{background:#0c1015;color:#fff;margin:0;font-family:Inter,ui-sans-serif,system-ui,sans-serif}
.viewer-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr}
.viewer-top{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:rgba(6,8,11,.9);border-bottom:1px solid rgba(255,255,255,.08);position:sticky;top:0;z-index:5}
.viewer-brand{display:flex;align-items:center;gap:14px}.viewer-brand img{height:34px;width:auto;object-fit:contain;background:#fff;border-radius:10px;padding:4px}
.viewer-stage{display:grid;grid-template-columns:330px 1fr;min-height:calc(100vh - 68px)}
.viewer-side{background:#10151d;border-right:1px solid rgba(255,255,255,.08);padding:18px;overflow:auto}.viewer-main{position:relative;background:#05070a;display:flex;align-items:center;justify-content:center;overflow:hidden}.viewer-main img{max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}
.viewer-empty{max-width:560px;text-align:center;color:#c9d1da;padding:24px}.viewer-controls{position:absolute;left:20px;bottom:20px;display:flex;gap:10px;flex-wrap:wrap}.viewer-controls.right{left:auto;right:20px}.viewer-btn{border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.08);color:#fff;padding:10px 14px;border-radius:999px;cursor:pointer}
.project-list{display:grid;gap:12px}.project-tile{padding:16px;border-radius:18px;border:1px solid var(--line);background:#fff;display:flex;justify-content:space-between;align-items:center;gap:12px}.small{font-size:13px}.note{padding:12px 14px;border-radius:14px;background:#f8fafc;border:1px dashed var(--line);color:var(--muted)}.upload-box{padding:18px;border:1px dashed var(--line);border-radius:18px;background:#fbfdff}.hidden{display:none!important}
.filter-bar{display:grid;grid-template-columns:1fr 260px;gap:12px;margin-bottom:16px}.flash{min-height:18px;font-size:13px;color:var(--success)}
/* visor editor */
.visor-editor{display:grid;grid-template-columns:340px 1fr;gap:18px;min-height:760px}.visor-editor.panel-hidden{grid-template-columns:1fr}.visor-editor.panel-hidden .panel{display:none}
.panel,.workspace{background:#fff;border:1px solid var(--line-2);box-shadow:var(--shadow)}.panel{border-radius:24px;padding:20px;overflow:auto}.workspace{border-radius:28px;position:relative;overflow:hidden;min-height:760px}
.section{margin-bottom:22px}.section h2{font-size:16px;margin:0 0 10px;font-weight:600}.hint{color:var(--muted);font-size:12px;line-height:1.45}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.card-lite{background:#f8fafc;border:1px solid var(--line);border-radius:16px;padding:14px}.kpi{display:grid;grid-template-columns:1fr 1fr;gap:10px}.kpi .v{font-size:18px;font-weight:700}
.round-btn{appearance:none;border:1px solid var(--line);background:#fff;color:var(--text);border-radius:999px;padding:11px 14px;cursor:pointer;font-size:13px;line-height:1;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.2s ease}.round-btn.small{padding:9px 12px;font-size:12px}.round-btn.block{width:100%}.round-btn.active{background:#f1f5f9}
.icon-btn{width:46px;height:46px;padding:0;border-radius:999px;font-size:18px}.label{font-size:12px;color:var(--muted);margin-bottom:6px}.inline-title{width:100%;font-size:28px;font-weight:700;letter-spacing:-.03em;background:transparent;border:none;color:var(--text);outline:none;padding:0;margin:0}
.top-tabs{position:absolute;top:18px;left:18px;z-index:18;display:flex;gap:10px}.level-tabs{position:absolute;top:18px;left:190px;z-index:18;display:flex;gap:8px;flex-wrap:wrap;max-width:50%}
.viewer-wrap,.tour-wrap{position:absolute;inset:0;background:#eef2f6;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .28s ease, visibility .28s ease}.viewer-wrap.active,.tour-wrap.active{display:flex;opacity:1;visibility:visible;pointer-events:auto}.viewer-wrap,.tour-wrap{display:flex}
.viewer-stage-editor,.tour-stage-editor{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;user-select:none;cursor:grab}.viewer-stage-editor.dragging{cursor:grabbing}
.viewer-image{max-width:100%;max-height:100%;object-fit:contain;pointer-events:none;user-select:none;-webkit-user-drag:none}.empty-state{margin:auto;text-align:center;padding:32px;max-width:620px}.empty-state h3{margin:0 0 12px;font-size:24px}.empty-state p{margin:0;color:var(--muted);line-height:1.6}
.viewer-cta{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:10}.viewer-secondary{position:absolute;right:18px;bottom:18px;z-index:10;display:flex;gap:10px}.viewer-lefttools{position:absolute;left:18px;bottom:18px;z-index:10;display:flex;gap:10px}.tour-toolbar{position:absolute;top:18px;right:18px;z-index:18;display:flex;gap:10px}.tour-lefttools{position:absolute;left:18px;bottom:18px;z-index:18;display:flex;gap:10px}.tour-iframe{width:100%;height:100%;border:0;background:#000}
.success{color:var(--success);font-size:12px;min-height:16px}.level-list{display:flex;flex-wrap:wrap;gap:8px}.mini-pill{border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-size:12px;cursor:pointer;background:#fff;color:var(--text)}.mini-pill.active{background:#f1f5f9}
@media (max-width:1100px){.grid.kpis,.stat-row,.form-grid,.filter-bar{grid-template-columns:1fr 1fr}.viewer-stage{grid-template-columns:1fr}.visor-editor{grid-template-columns:1fr}.panel{display:none}.level-tabs{top:64px;left:18px;max-width:calc(100% - 36px)}.tour-toolbar{top:64px}}
@media (max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.grid.kpis,.stat-row,.form-grid,.filter-bar{grid-template-columns:1fr}.page-head{flex-direction:column;align-items:flex-start}.main{padding:14px}.content-card{padding:16px;border-radius:22px}.viewer-top{flex-direction:column;align-items:flex-start;gap:12px}.viewer-side{display:none}}

.small{font-size:13px}.note{padding:12px 14px;border-radius:14px;background:#f8fafc;border:1px dashed var(--line);color:var(--muted)}
.table-actions{text-align:right}.table-actions .toolbar{justify-content:flex-end}
.filters{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}.filters .input,.filters .select{max-width:280px}
.viewer-stage{display:grid;grid-template-columns:320px 1fr;min-height:calc(100vh - 72px)}
.viewer-side{padding:22px;background:linear-gradient(180deg,#11161c,#0b0f14);border-right:1px solid rgba(255,255,255,.08)}
.viewer-main{position:relative;overflow:hidden;background:#07090c;min-height:70vh}
.viewer-canvas{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;cursor:grab;user-select:none}
.viewer-canvas.dragging{cursor:grabbing}
.viewer-frame{max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;display:block}
.viewer-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#b7c0ca;padding:30px;text-align:center}
.viewer-controls{position:absolute;left:20px;bottom:20px;display:flex;gap:10px;z-index:3}.viewer-controls.right{left:auto;right:20px}
.viewer-btn{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.12);padding:12px 14px;border-radius:14px;cursor:pointer}.viewer-btn:hover{background:rgba(255,255,255,.15)}
.hidden{display:none!important}.global-toast{position:fixed;right:22px;bottom:22px;background:#16202a;color:#fff;padding:12px 16px;border-radius:14px;box-shadow:var(--shadow);opacity:0;transform:translateY(16px);transition:.22s ease;z-index:99}.global-toast.show{opacity:1;transform:none}.global-toast.error{background:#7f1d1d}.global-toast.success{background:#14532d}
.level-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.chip{padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;cursor:pointer}.chip.active{background:#4b4b4b;color:#fff;border-color:#4b4b4b}
.upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.muted-link{color:var(--muted);font-size:12px;word-break:break-all}
@media (max-width: 1100px){.viewer-stage{grid-template-columns:1fr}.viewer-side{border-right:none;border-bottom:1px solid rgba(255,255,255,.08)}.grid.kpis,.stat-row,.upload-grid,.form-grid{grid-template-columns:1fr 1fr}}
@media (max-width: 780px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.main{padding:14px}.page-head{flex-direction:column;align-items:flex-start}.grid.kpis,.stat-row,.upload-grid,.form-grid{grid-template-columns:1fr}}

.btn,.viewer-btn,.chip,.round-btn,.nav a,.input,.textarea,.select{transition:all .18s ease}
.btn:hover,.round-btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.06)}
.btn.secondary:hover,.btn.ghost:hover,.viewer-btn:hover,.chip:hover{background:#f2f5f8}
.nav a:hover{background:#f4f7fb}
.input:focus,.textarea:focus,.select:focus{border-color:#b8c5d6;box-shadow:0 0 0 3px rgba(160,180,205,.15)}

.tech-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tech-card{border:1px solid var(--line);border-radius:20px;padding:16px;background:#fff}
.feature-tags{display:flex;gap:10px;flex-wrap:wrap}.feature-tag{padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:#fff}
.viewer-body.light-view{background:#f3f6f9;color:#1f2937}
.light-view .viewer-top{background:#fff;border-bottom:1px solid #e5ebf1}
.light-view .viewer-brand img{background:#fff}
.light-view .viewer-stage{grid-template-columns:auto 1fr;background:#f3f6f9;min-height:calc(100vh - 72px);transition:grid-template-columns .28s ease}
.light-view .viewer-side{background:#fff;border-right:1px solid #e5ebf1;color:#364152;padding:26px}
.light-view .viewer-main{background:#edf2f7;min-height:calc(100vh - 72px)}
.light-view .viewer-btn{background:#fff;color:#1f2937;border:1px solid #d8e0e8}
.light-view .viewer-btn:hover{background:#f6f8fb}
.light-view .viewer-empty{color:#6b7280}
.light-view .muted-soft{color:#7a8594}
.viewer-title-block{display:flex;flex-direction:column;gap:4px}
.viewer-title-block .small{font-size:13px}
.viewer-tech{display:flex;flex-direction:column;gap:28px}
.viewer-tech h4{margin:0 0 10px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#b28b73}
.viewer-program-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.viewer-program-card{border:1px solid #e2e8f0;border-radius:24px;padding:12px;min-height:92px;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.viewer-surface-box{border:1px solid #e4e7eb;border-radius:24px;overflow:hidden;background:#fff}
.viewer-surface-row{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid #f1f5f9}
.viewer-surface-row:last-child{border-bottom:none;background:#f8fafc;font-weight:700;border-radius:0 0 24px 24px}
.viewer-surface-row:first-child{border-radius:24px 24px 0 0}
.viewer-features{display:flex;flex-wrap:wrap;gap:8px}.viewer-features span{padding:8px 16px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;font-size:14px;color:#1e293b}
.viewer-divider{height:1px;background:#e7ebf0;margin:8px 0 6px}
@media (max-width:1100px){.tech-grid,.viewer-program-grid{grid-template-columns:1fr}.light-view .viewer-stage{grid-template-columns:1fr}.light-view .viewer-side{border-right:none;border-bottom:1px solid #e5ebf1}}


.global-toast{position:fixed;right:20px;top:20px;z-index:9999;background:#1f2937;color:#fff;padding:12px 16px;border-radius:14px;box-shadow:var(--shadow);opacity:0;transform:translateY(-8px);transition:.2s ease;pointer-events:none}.global-toast.show{opacity:1;transform:none}.global-toast.error{background:#b03d3d}
.preview-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.preview-box{background:#fff;border:1px solid var(--line);border-radius:22px;overflow:hidden;min-height:260px;position:relative}.preview-box h4{margin:0;padding:14px 16px;border-bottom:1px solid var(--line-2);font-size:14px}.mini-viewer-stage{position:relative;height:220px;background:#eef2f6;display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab}.mini-viewer-stage.dragging{cursor:grabbing}.mini-viewer-stage img{max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none}.mini-empty{padding:20px;color:var(--muted);text-align:center}.mini-tour-frame{width:100%;height:220px;border:0;background:#fff}
.viewer-top.minimal{justify-content:center;padding:18px 26px}.viewer-top.minimal .viewer-brand{justify-content:center}.viewer-top.minimal .viewer-brand img{height:44px;padding:4px;background:transparent}.viewer-top.minimal .viewer-title-block{display:none}
.viewer-side-wrap{position:relative;width:360px;min-width:360px;transition:width .28s ease,min-width .28s ease,opacity .24s ease,transform .28s ease;overflow:visible}
.viewer-side{height:100%;transition:opacity .22s ease,transform .28s ease,padding .28s ease}
.viewer-side-toggle{position:absolute;top:50%;right:-14px;transform:translateY(-50%);width:28px;height:56px;border-radius:999px;border:1px solid #d8e0e8;background:#fff;color:#364152;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow);z-index:4}
.viewer-shell.side-collapsed .viewer-stage{grid-template-columns:0 1fr}
.viewer-shell.side-collapsed .viewer-side-wrap{width:0;min-width:0;opacity:0;transform:translateX(-18px)}
.viewer-shell.side-collapsed .viewer-side{opacity:0;pointer-events:none}
.viewer-overlay-left,.viewer-overlay-right,.viewer-overlay-center{position:absolute;z-index:4;display:flex;gap:10px;align-items:center}.viewer-overlay-left{top:18px;left:18px}.viewer-overlay-right{top:18px;right:18px}.viewer-overlay-center{left:50%;bottom:22px;transform:translateX(-50%)}
.viewer-icon-btn{width:44px;height:44px;border-radius:999px;border:1px solid #d8e0e8;background:rgba(255,255,255,.92);display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow);font-size:18px}.viewer-icon-btn:hover{background:#fff}.viewer-icon-btn.active{background:#1f2937;color:#fff;border-color:#1f2937}
.level-chip{padding:10px 14px;border-radius:999px;border:1px solid #d8e0e8;background:rgba(255,255,255,.92);cursor:pointer;box-shadow:var(--shadow);font-size:13px}.level-chip.active{background:#1f2937;color:#fff;border-color:#1f2937}
.viewer-main-inner{position:relative;width:100%;height:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}.viewer-main img.viewer-frame{max-width:100%;max-height:100%;object-fit:contain}
.viewer-stage.tight{min-height:calc(100vh - 82px)}
@media (max-width:1100px){.preview-grid{grid-template-columns:1fr}.viewer-side-toggle{right:10px;top:10px;transform:none}.viewer-shell:not(.side-collapsed) .viewer-stage{grid-template-columns:1fr}.viewer-shell:not(.side-collapsed) .viewer-side-wrap{position:absolute;z-index:6;inset:82px auto 0 0;width:min(380px,88vw);min-width:min(380px,88vw);box-shadow:var(--shadow)}.viewer-shell.side-collapsed .viewer-side-wrap{position:absolute;z-index:6;inset:82px auto 0 0;width:0;min-width:0;box-shadow:none}}


/* MVP05 fixes */
.global-toast{max-width:320px;right:18px;top:18px;font-size:13px;line-height:1.35;padding:10px 14px;border-radius:12px}.global-toast.show{opacity:1}.global-toast.success{background:#14532d}.global-toast.error{background:#991b1b}


/* MVP06 fixes */
.global-toast{width:auto !important;max-width:280px !important;min-width:0 !important;height:auto !important;max-height:none !important;right:18px !important;top:18px !important;left:auto !important;bottom:auto !important;padding:10px 14px !important;border-radius:12px !important;display:block !important;white-space:normal !important;overflow:hidden !important;}
.viewer-reopen-btn{position:fixed;left:14px;top:50%;width:32px;height:56px;border-radius:999px;border:1px solid #d8e0e8;background:#fff;color:#364152;display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow);z-index:8}
.viewer-reopen-btn.hidden{display:none !important}


/* MVP07 refinements */
.viewer-top.minimal{padding:14px 26px;}
#sideTitle{margin:0; padding:8px 0; display:block;}
.viewer-side-wrap,.viewer-side{transition:transform .28s ease, opacity .28s ease, width .28s ease, padding .28s ease;}
.viewer-reopen-btn{top:50%;transform:translateY(-50%);transition:opacity .22s ease, transform .22s ease, left .22s ease;}
.viewer-reopen-btn:hover{transform:translateY(-50%) scale(1.03);}
.viewer-shell.side-collapsed .viewer-reopen-btn{left:14px;transform:translateY(-50%);}
.level-chip{background:#fff;color:#364152;border-color:#d8e0e8;}
.level-chip.active{background:#f7f9fb;color:#364152;border-color:#cfd8e3;box-shadow:var(--shadow);}
.viewer-icon-btn{color:#364152;}
.viewer-icon-btn.active{background:#f7f9fb;color:#364152;border-color:#cfd8e3;}
.viewer-surface-row strong:empty::before{content:'—';}
.global-toast{right:16px !important; top:16px !important; width:auto !important; height:auto !important; min-height:0 !important; max-height:none !important; max-width:260px !important; padding:10px 12px !important; font-size:12px !important; line-height:1.3 !important; border-radius:12px !important; display:inline-block !important; white-space:normal !important;}


/* MVP 09 refinements */
.viewer-title-side{display:flex;flex-direction:column;justify-content:center;min-height:132px;padding:8px 0;}
#sideTitle{font-size:32px;font-weight:800;line-height:1.1;margin:0;display:flex;align-items:center;min-height:64px;color:#1e293b}
#sideTagline{font-size:15px;color:#64748b;line-height:1.35;margin:0;min-height:24px;display:flex;align-items:center;}
.viewer-side-wrap{transition:width .58s cubic-bezier(.22,1,.36,1),min-width .58s cubic-bezier(.22,1,.36,1),opacity .42s ease,transform .58s cubic-bezier(.22,1,.36,1);}
.viewer-side{transition:opacity .42s ease,transform .58s cubic-bezier(.22,1,.36,1);}
.viewer-reopen-btn{position:absolute;left:14px;top:50%;transform:translateY(-50%);transition:opacity .3s ease;z-index:12;}
.viewer-reopen-btn:hover{transform:translateY(-50%);}
.viewer-shell.side-collapsed .viewer-reopen-btn{left:14px;top:50%;transform:translateY(-50%);}
.viewer-shell.side-collapsed .viewer-side-wrap{transform:translateX(-28px);}
.viewer-side-toggle{transition:background .25s ease,border-color .25s ease,box-shadow .25s ease;top:50%;transform:translateY(-50%);}
.level-chip,.viewer-icon-btn{background:#fff;color:#334155;border:1px solid #d7dde5;}
.level-chip.active,.viewer-icon-btn.active{background:#eef2f7;color:#1e293b;border-color:#cfd8e3;}


/* MVP11 viewer refinements */
.viewer-side-wrap{transition:width .92s cubic-bezier(.16,1,.3,1),min-width .92s cubic-bezier(.16,1,.3,1),opacity .58s ease,transform .92s cubic-bezier(.16,1,.3,1);will-change:width,transform,opacity;}
.viewer-side{transition:opacity .54s ease,transform .92s cubic-bezier(.16,1,.3,1),padding .92s cubic-bezier(.16,1,.3,1);}
.viewer-shell.side-collapsed .viewer-side-wrap{transform:translateX(-20px);}
.viewer-side-toggle{transition:right .92s cubic-bezier(.16,1,.3,1),background .25s ease,border-color .25s ease,box-shadow .25s ease;top:50%;transform:translateY(-50%);}
.viewer-reopen-btn{position:fixed;left:14px;transform:none;transition:opacity .24s ease,left .92s cubic-bezier(.16,1,.3,1),top .92s cubic-bezier(.16,1,.3,1);z-index:12;}
.viewer-reopen-btn:hover{transform:none;}
.viewer-shell.side-collapsed .viewer-reopen-btn{left:14px;transform:none;}


/* MVP14 targeted viewer fixes */
.viewer-shell{min-height:100vh; height:100vh; overflow:hidden;}
.viewer-stage{height:calc(100vh - 82px); min-height:calc(100vh - 82px); overflow:hidden;}
.viewer-main,.viewer-main-inner{height:100%;}
.viewer-empty{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; max-width:none; width:100%; height:100%; text-align:center; padding:24px; z-index:1;}
.viewer-frame.hidden + #tourFrame.hidden + .viewer-controls + .viewer-overlay-center + .viewer-empty{}
.viewer-main-inner #emptyState.viewer-empty{display:flex;}
.viewer-main-inner #frameImg:not(.hidden) ~ #emptyState,
.viewer-main-inner #tourFrame:not(.hidden) ~ .viewer-controls ~ .viewer-overlay-center ~ #emptyState{display:none;}
.viewer-overlay-left,.viewer-overlay-right,.viewer-overlay-center,.viewer-controls{z-index:30;}
.viewer-side-wrap{overflow:visible; z-index:20;}
.viewer-side-toggle{z-index:60 !important; right:-14px; top:50%; transform:translateY(-50%);}
.viewer-reopen-btn{position:fixed; left:14px; top:50% !important; transform:translateY(-50%) !important; z-index:80 !important;}
.viewer-reopen-btn:hover{transform:translateY(-50%) !important;}
.viewer-shell.side-collapsed .viewer-side-wrap{transform:translateX(-16px);} 
.viewer-side-wrap{transition:width 1.2s cubic-bezier(.22,1,.36,1),min-width 1.2s cubic-bezier(.22,1,.36,1),opacity .7s ease,transform 1.2s cubic-bezier(.22,1,.36,1);} 
.viewer-side{transition:opacity .65s ease,transform 1.2s cubic-bezier(.22,1,.36,1),padding 1.2s cubic-bezier(.22,1,.36,1);} 


/* MVP16 visual fix */
.viewer-body.light-view .viewer-tech{height:100%;overflow:auto;padding-right:4px;scrollbar-width:thin;}
.viewer-body.light-view .viewer-title-side{min-height:auto;padding:0 0 6px;display:flex;align-items:flex-start;justify-content:flex-start;}
.viewer-body.light-view #sideTitle{min-height:auto !important;padding:0 !important;margin:0 0 6px !important;display:block !important;}
.viewer-body.light-view #sideTagline{display:none !important;}
.viewer-body.light-view .viewer-features{max-height:none;overflow:visible;align-content:flex-start;}
.viewer-body.light-view .viewer-controls{bottom:26px !important;}
.viewer-body.light-view .viewer-overlay-center{bottom:26px !important;}
.viewer-body.light-view .viewer-reopen-btn{position:fixed !important;left:14px !important;top:50% !important;transform:translateY(-50%) !important;z-index:120 !important;display:grid;}
.viewer-body.light-view .viewer-reopen-btn.hidden{display:none !important;}
.viewer-body.light-view .viewer-side-toggle{z-index:100 !important;}
.viewer-body.light-view .viewer-shell.side-collapsed .viewer-side-wrap{width:0 !important;min-width:0 !important;opacity:0 !important;transform:translateX(-10px) !important;}
.viewer-body.light-view .viewer-shell.side-collapsed .viewer-main{min-width:0;}
.viewer-body.light-view .viewer-shell.side-collapsed #viewerCanvas{width:100% !important;height:100% !important;transform:none !important;}


/* MVP17 viewer polish */
.viewer-body.light-view .viewer-main,
.viewer-body.light-view .viewer-main-inner,
.viewer-body.light-view #viewerCanvas,
.viewer-body.light-view .viewer-stage{
  background:#ffffff !important;
}
.viewer-body.light-view .viewer-reopen-btn{
  top:calc(50% + 8px) !important;
  transform:translateY(-50%) !important;
}
.viewer-body.light-view .viewer-reopen-btn:hover{
  transform:translateY(-50%) !important;
}
.viewer-body.light-view .viewer-shell.side-collapsed .viewer-reopen-btn{
  top:calc(50% + 8px) !important;
}


.save-all-fab{
  position:fixed;
  right:28px;
  bottom:24px;
  z-index:120;
  min-width:160px;
  padding:14px 20px;
  border-radius:14px;
  border:1px solid #1f2937;
  background:#1f2937;
  color:#fff;
  font-weight:700;
  box-shadow:0 12px 28px rgba(15,23,42,.18);
}
.save-all-fab:hover{ transform:translateY(-1px); box-shadow:0 16px 30px rgba(15,23,42,.22); }
.save-all-fab:disabled{ opacity:.75; cursor:wait; }


/* MVP22 - keep viewer canvas stable when side panel opens/closes */
.viewer-body.light-view .viewer-shell{
  height:100vh !important;
  min-height:100vh !important;
  overflow:hidden !important;
}

.viewer-body.light-view .viewer-stage{
  position:relative !important;
  display:block !important;
  height:calc(100vh - 82px) !important;
  min-height:calc(100vh - 82px) !important;
  max-height:calc(100vh - 82px) !important;
  overflow:hidden !important;
  background:#ffffff !important;
}

.viewer-body.light-view .viewer-main{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  min-height:0 !important;
  overflow:hidden !important;
  background:#ffffff !important;
}

.viewer-body.light-view .viewer-main-inner,
.viewer-body.light-view #viewerCanvas{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  max-width:100% !important;
  max-height:100% !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  background:#ffffff !important;
  transform:none !important;
}

.viewer-body.light-view .viewer-side-wrap{
  position:absolute !important;
  left:0 !important;
  top:0 !important;
  bottom:0 !important;
  width:360px !important;
  min-width:360px !important;
  z-index:60 !important;
  opacity:1 !important;
  overflow:visible !important;
  will-change:transform !important;
  transition:transform 1.15s cubic-bezier(.22,1,.36,1) !important;
}

.viewer-body.light-view .viewer-shell.side-collapsed .viewer-side-wrap{
  width:360px !important;
  min-width:360px !important;
  opacity:1 !important;
  transform:translateX(calc(-100% - 10px)) !important;
}

.viewer-body.light-view .viewer-side{
  height:100% !important;
  overflow:auto !important;
  background:#ffffff !important;
}

.viewer-body.light-view .viewer-main img.viewer-frame,
.viewer-body.light-view #frameImg{
  display:block !important;
  width:auto !important;
  height:auto !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
  object-position:center center !important;
  transform:none !important;
  transition:none !important;
  backface-visibility:hidden;
}

.viewer-body.light-view #tourFrame{
  background:#ffffff !important;
}

.viewer-body.light-view .viewer-empty{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  display:flex !important;
  flex-direction:column !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  padding:24px !important;
  margin:0 !important;
}

.viewer-body.light-view .viewer-side-toggle{
  z-index:95 !important;
}

.viewer-body.light-view .viewer-reopen-btn{
  z-index:120 !important;
}

@media (max-width:1100px){
  .viewer-body.light-view .viewer-stage{
    display:block !important;
  }
  .viewer-body.light-view .viewer-side-wrap{
    width:min(380px,88vw) !important;
    min-width:min(380px,88vw) !important;
  }
  .viewer-body.light-view .viewer-shell.side-collapsed .viewer-side-wrap{
    transform:translateX(calc(-100% - 10px)) !important;
  }
}


/* MVP23 - center frame when left panel opens/closes without scaling */
.viewer-body.light-view .viewer-main{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  overflow:hidden !important;
}

.viewer-body.light-view .viewer-main-inner,
.viewer-body.light-view #viewerCanvas{
  position:absolute !important;
  inset:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:hidden !important;
  transition:transform 1.15s cubic-bezier(.22,1,.36,1) !important;
  will-change:transform !important;
  transform:translateX(180px) !important; /* half of visible left panel width */
}

.viewer-body.light-view .viewer-shell.side-collapsed .viewer-main-inner,
.viewer-body.light-view .viewer-shell.side-collapsed #viewerCanvas{
  transform:translateX(0) !important;
}

.viewer-body.light-view #frameImg,
.viewer-body.light-view .viewer-main img.viewer-frame{
  position:relative !important;
  z-index:2 !important;
}

.viewer-body.light-view .viewer-empty{
  z-index:1 !important;
  pointer-events:none !important;
}

@media (max-width:1100px){
  .viewer-body.light-view .viewer-main-inner,
  .viewer-body.light-view #viewerCanvas{
    transform:translateX(0) !important;
  }
}


/* MVP28 safe viewer UI tweaks */
#tourFrame{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  border:0 !important;
  background:#fff !important;
  z-index:50 !important;
  pointer-events:auto !important;
}
#frameImg{
  z-index:10 !important;
}
.viewer-controls{
  left:auto !important;
  right:18px !important;
  bottom:18px !important;
  z-index:60 !important;
}
#prevBtn,#nextBtn{
  display:none !important;
}
#autoplayBtn{
  min-width:44px !important;
  width:44px !important;
  height:44px !important;
  padding:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  border-radius:999px !important;
}
#autoplayBtn #autoplayGlyph{
  line-height:1 !important;
  font-size:16px !important;
}
#tourBtn,#backBtn{
  z-index:60 !important;
}


/* MVP29 VR control visibility fixes */
#autoplayBtn{
  position:fixed !important;
  right:18px !important;
  bottom:18px !important;
  z-index:120 !important;
  display:inline-flex !important;
}
#tourBtn{
  position:absolute !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  bottom:18px !important;
  z-index:120 !important;
}
#backBtn{
  position:absolute !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  bottom:18px !important;
  z-index:121 !important;
}
#tourFrame.hidden{
  display:none !important;
}


/* MVP31 control visibility stabilization */
#tourFrame{
  z-index:120 !important;
}
#tourBtn,
#backBtn{
  position:fixed !important;
  left:50% !important;
  transform:translateX(-50%) !important;
  bottom:18px !important;
  z-index:220 !important;
}
#tourBtn{
  display:inline-flex;
}
#backBtn{
  display:none;
}
#autoplayBtn{
  position:fixed !important;
  right:18px !important;
  bottom:18px !important;
  z-index:221 !important;
  min-width:44px !important;
  width:44px !important;
  height:44px !important;
  padding:0 !important;
  border-radius:999px !important;
  align-items:center !important;
  justify-content:center !important;
}
#prevBtn,#nextBtn{
  display:none !important;
}
.viewer-controls{
  position:fixed !important;
  right:18px !important;
  bottom:18px !important;
  left:auto !important;
  z-index:221 !important;
}
.viewer-overlay-center{
  position:fixed !important;
  left:0 !important;
  right:0 !important;
  bottom:18px !important;
  display:flex !important;
  justify-content:center !important;
  pointer-events:none !important;
  z-index:220 !important;
}
.viewer-overlay-center > button{
  pointer-events:auto !important;
}


/* MVP32 precise control placement */
#tourBtn,
#backBtn{
  position: fixed !important;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
  bottom: 18px !important;
  top: auto !important;
  margin: 0 !important;
  z-index: 230 !important;
}
#autoplayBtn{
  position: fixed !important;
  right: 18px !important;
  left: auto !important;
  bottom: 18px !important;
  top: auto !important;
  transform: none !important;
  z-index: 231 !important;
}
body.vr-open #autoplayBtn{
  display: none !important;
}
body:not(.vr-open) #autoplayBtn{
  display: inline-flex !important;
}
body.vr-open #backBtn{
  display: inline-flex !important;
}
body.vr-open #tourBtn{
  display: none !important;
}
body:not(.vr-open) #backBtn{
  display: none !important;
}
body:not(.vr-open) #tourBtn{
  display: inline-flex !important;
}


/* MVP39 FINAL CLEAN CONTROL OVERRIDES */
#viewerCanvas,
.viewer-main-inner{
  position: relative !important;
}

.viewer-overlay-center{
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 28px !important;
  display: flex !important;
  justify-content: center !important;
  align-items: center !important;
  pointer-events: none !important;
  z-index: 5000 !important;
  transform: none !important;
}

.viewer-overlay-center > button{
  pointer-events: auto !important;
}

#tourBtn,
#backBtn{
  position: static !important;
  left: auto !important;
  right: auto !important;
  top: auto !important;
  bottom: auto !important;
  transform: none !important;
  margin: 0 !important;
  z-index: 5001 !important;
  max-width: calc(100% - 32px) !important;
}

.viewer-controls{
  position: absolute !important;
  right: 18px !important;
  left: auto !important;
  bottom: 18px !important;
  top: auto !important;
  transform: none !important;
  z-index: 5002 !important;
  display: flex !important;
  gap: 10px !important;
}

#autoplayBtn{
  position: static !important;
  min-width: 44px !important;
  width: 44px !important;
  height: 44px !important;
  padding: 0 !important;
  border-radius: 999px !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
}

#prevBtn,
#nextBtn{
  display: none !important;
}

body.vr-open .viewer-controls{
  display: none !important;
}

body.vr-open #backBtn{
  display: inline-flex !important;
}

body.vr-open #tourBtn{
  display: none !important;
}

body:not(.vr-open) #backBtn{
  display: none !important;
}

body:not(.vr-open) #tourBtn{
  display: inline-flex !important;
}


/* MVP40 fade + spacing tweaks */
#frameImg,
#tourFrame{
  transition: opacity 520ms ease !important;
}

/* Remove extra band below side title if present */
.viewer-tech .viewer-tagline,
#sideTagline{
  display: none !important;
  margin: 0 !important;
  padding: 0 !important;
  min-height: 0 !important;
  height: 0 !important;
}

/* Lower reopen button a bit more */
#reopenPanelBtn{
  top: calc(50% + 30px) !important;
  transform: translateY(-50%) !important;
}


/* MVP42: keep back button above Kuula iframe and clickable */
#tourFrame{
  z-index: 200 !important;
}
#backBtn{
  position: fixed !important;
  left: 50% !important;
  bottom: 28px !important;
  transform: translateX(-50%) !important;
  z-index: 99999 !important;
  pointer-events: auto !important;
}
#tourBtn{
  z-index: 99998 !important;
}
#viewerCenterOverlay,
.viewer-overlay-center{
  z-index: 99998 !important;
  pointer-events: none !important;
}
#viewerCenterOverlay > button,
.viewer-overlay-center > button{
  pointer-events: auto !important;
}


/* MVP45: sync A/B by same frame index + soft fade */
#frameImg{
  transition: opacity 220ms ease !important;
}


/* MVP46: real crossfade between A/B sequences */
#frameImg,
#frameImgBack{
  transition: opacity 420ms ease !important;
}
#frameImgBack{
  position:absolute !important;
  inset:0 !important;
  margin:auto !important;
  z-index:1 !important;
  opacity:0;
}
#frameImg{
  position:relative !important;
  z-index:2 !important;
}


/* MVP47: slower real preload crossfade */
#frameImg,
#frameImgBack{
  transition: opacity 760ms ease !important;
}
#frameImgBack{
  background: transparent !important;
}


/* MVP48: never show empty state during A/B swap and make crossfade slower */
#emptyState{
  z-index: 0 !important;
}
#frameImg,
#frameImgBack{
  transition: opacity 1200ms ease-in-out !important;
}
#frameImgBack{
  z-index: 1 !important;
}
#frameImg{
  z-index: 2 !important;
}


/* MVP49: dual preloaded sequence layers for true eye-toggle crossfade */
#frameImgA,
#frameImgB{
  transition: opacity 1200ms ease-in-out !important;
}
.viewer-frame-layer{
  position:absolute !important;
  inset:0 !important;
  margin:auto !important;
  width:auto !important;
  height:auto !important;
  max-width:100% !important;
  max-height:100% !important;
  object-fit:contain !important;
}
#frameImgA{ z-index:2 !important; opacity:1; }
#frameImgB{ z-index:1 !important; opacity:0; }
#emptyState{ z-index:0 !important; }


/* MVP50: force A/B layers to share the exact same canvas geometry */
#viewerCanvas,
.viewer-main-inner,
.viewer-main{
  position: relative !important;
}

#frameImgA,
#frameImgB{
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  max-width: 100% !important;
  max-height: 100% !important;
  object-fit: contain !important;
  object-position: center center !important;
  margin: 0 !important;
  padding: 0 !important;
  background: transparent !important;
}

#frameImgA{
  z-index: 2 !important;
}

#frameImgB{
  z-index: 1 !important;
}


/* MVP52: hide empty-state copy only during eye-toggle crossfade */
body.seq-swapping #emptyState h2,
body.seq-swapping #emptyState p{
  opacity: 0 !important;
}


/* MVP53: restore VR iframe display and button switching */
#tourFrame{
  position:absolute !important;
  inset:0 !important;
  width:100% !important;
  height:100% !important;
  border:0 !important;
  background:#fff !important;
  z-index:300 !important;
}
body.vr-open #tourFrame{
  display:block !important;
}
body.vr-open #backBtn{
  display:inline-flex !important;
}
body.vr-open #tourBtn{
  display:none !important;
}
body.vr-open .viewer-controls{
  display:none !important;
}


/* MVP54: soft fade from VR back to 360 */
#tourFrame,
#frameImgA,
#frameImgB{
  transition: opacity 420ms ease !important;
}


/* MVP56 admin polish progress */
.login-subtle{
  margin-top:8px !important;
  margin-bottom:8px !important;
  color:var(--muted);
  font-size:13px;
  letter-spacing:.06em;
  text-transform:uppercase;
}
.login-links{
  display:flex;
  justify-content:space-between;
  gap:14px;
  font-size:13px;
}
.login-links a{
  color:var(--muted);
}
.login-links a:hover{
  color:var(--text);
}
.fixed-action-btn{
  min-width:110px !important;
  justify-content:center;
  text-align:center;
}
.copy-btn{
  min-width:104px !important;
}
.open-icon-btn{
  min-width:40px !important;
  width:40px !important;
  padding-left:0 !important;
  padding-right:0 !important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}
.table-actions .toolbar.right{
  justify-content:flex-end;
}
#projectRows td:nth-child(4) .toolbar{
  justify-content:flex-start;
}
#projectRows td:nth-child(5) .toolbar{
  justify-content:flex-end;
}
.topbar > div:first-child{
  font-size:13px;
  color:var(--muted);
}
.project-list .project-tile .toolbar{
  justify-content:flex-end;
}
.project-list .project-tile .open-icon-btn{
  min-width:36px !important;
  width:36px !important;
}
#reopenPanelBtn{
  top:calc(50% + 30px) !important;
}

/* MVP58 projects/profile fix */
.fixed-action-btn{
  min-width:110px !important;
  justify-content:center;
  text-align:center;
}
.copy-btn{
  min-width:104px !important;
}
.open-icon-btn{
  min-width:40px !important;
  width:40px !important;
  padding-left:0 !important;
  padding-right:0 !important;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}


/* MVP60 sidebar isotipo + better icons */
.side-logo{
  width:56px;
  height:56px;
  border-radius:16px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:transparent;
  box-shadow:none;
}
.side-logo img{
  width:36px;
  height:36px;
  object-fit:contain;
  background:transparent;
  padding:0;
}
.nav{
  gap:10px;
  padding:0 10px;
}
.nav a{
  gap:9px;
  padding:12px 6px;
  border-radius:18px;
  font-size:13px;
}
.nav a.active,.nav a:hover{
  background:#f4f6f9;
}
.nav .ico{
  width:28px;
  height:28px;
  display:grid;
  place-items:center;
}
.nav .ico svg{
  width:26px;
  height:26px;
  stroke:#344054;
  fill:none;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.nav a.active .ico svg,
.nav a:hover .ico svg{
  stroke:#2f3d56;
}


/* MVP61 final pre-hosting tweaks */
.side-logo{
  width:68px !important;
  height:68px !important;
}
.side-logo img{
  width:56px !important;
  height:56px !important;
}

/* Video integration */
.mini-video-canvas{width:100%;height:100%;display:block;background:#fff}
.viewer-frame-layer{position:absolute !important;inset:0 !important;margin:auto !important;max-width:100% !important;max-height:100% !important}

/* v6 admin/video cleanup */
.mini-empty{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:24px;
  z-index:2;
  line-height:1.35;
}
.mini-video-canvas{
  position:relative;
  z-index:1;
  background:#fff;
}


#tourBtn, #toggleSeqBtn, #autoplayBtn, #sideToggle, #reopenPanelBtn, .level-chip{
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease;
  transform-origin:center center;
}
#tourBtn:hover, #toggleSeqBtn:hover, #autoplayBtn:hover, #sideToggle:hover, #reopenPanelBtn:hover, .level-chip:hover{
  transform: translateY(-1px) scale(1.08);
  box-shadow: 0 12px 24px rgba(17,24,39,.14);
}
#tourBtn:active, #toggleSeqBtn:active, #autoplayBtn:active, #sideToggle:active, #reopenPanelBtn:active, .level-chip:active{
  transform: translateY(0) scale(1.03);
}
#miniEmpty{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:20px;
  line-height:1.35;
  word-break:break-word;
  white-space:normal;
}

/* viewer-hover-fix-v10 */
#tourBtn, #toggleSeqBtn, #autoplayBtn{
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease;
  transform-origin:center center;
}
#tourBtn:hover, #toggleSeqBtn:hover, #autoplayBtn:hover{
  transform: scale(1.08);
  box-shadow: 0 12px 24px rgba(17,24,39,.14);
}
#tourBtn:active, #toggleSeqBtn:active, #autoplayBtn:active{
  transform: scale(1.03);
}
#sideToggle, #reopenPanelBtn, .level-chip{
  transition: box-shadow .18s ease, background-color .18s ease, opacity .18s ease;
}
#sideToggle:hover, #reopenPanelBtn:hover, .level-chip:hover{
  box-shadow: 0 10px 22px rgba(17,24,39,.12);
}

/* viewer-hover-fix-v11 */
#sideToggle:hover, #reopenPanelBtn:hover{
  transform: none !important;
  box-shadow: 0 10px 22px rgba(17,24,39,.12) !important;
}
#sideToggle, #reopenPanelBtn{
  transform: none !important;
}
#tourBtn, #toggleSeqBtn, #autoplayBtn{
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease !important;
  transform-origin:center center;
}
#tourBtn:hover, #toggleSeqBtn:hover, #autoplayBtn:hover{
  transform: scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#tourBtn:active, #toggleSeqBtn:active, #autoplayBtn:active{
  transform: scale(1.03) !important;
}

/* v13-targeted-fix */
#sideToggle, #reopenPanelBtn{
  transform: none !important;
  transition: box-shadow .18s ease, background-color .18s ease, opacity .18s ease !important;
}
#sideToggle:hover, #reopenPanelBtn:hover{
  transform: none !important;
  box-shadow: 0 10px 22px rgba(17,24,39,.12) !important;
}
#tourBtn, #backBtn, #toggleSeqBtn, #autoplayBtn{
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease !important;
  transform-origin: center center;
}
#tourBtn:hover, #backBtn:hover, #toggleSeqBtn:hover, #autoplayBtn:hover{
  transform: scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#tourBtn:active, #backBtn:active, #toggleSeqBtn:active, #autoplayBtn:active{
  transform: scale(1.03) !important;
}
#miniEmpty{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:20px;
  line-height:1.35;
  word-break:break-word;
  white-space:normal;
}

/* v14 back button hover + sensitivity range */
#backBtn{
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease !important;
  transform-origin:center center !important;
}
#backBtn:hover{
  transform: scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#backBtn:active{
  transform: scale(1.03) !important;
}

/* v15 exact back button hover */
#backBtn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transform: none !important;
  translate: none !important;
  transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, opacity .18s ease !important;
  transform-origin:center center !important;
}
#backBtn:hover{
  transform: scale(1.08) !important;
  translate: none !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#backBtn:active{
  transform: scale(1.03) !important;
  translate: none !important;
}

/* v17 final targeted overrides */
#tourBtn, #backBtn{
  position: fixed !important;
  left: 50% !important;
  bottom: 18px !important;
  margin: 0 !important;
  top: auto !important;
  right: auto !important;
  translate: none !important;
}
#tourBtn{
  transform: translateX(-50%) !important;
  z-index: 10010 !important;
}
#backBtn{
  transform: translateX(-50%) !important;
  z-index: 10011 !important;
}
#tourBtn:hover{
  transform: translateX(-50%) scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#tourBtn:active{
  transform: translateX(-50%) scale(1.03) !important;
}
#backBtn:hover{
  transform: translateX(-50%) scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#backBtn:active{
  transform: translateX(-50%) scale(1.03) !important;
}
#autoplayBtn:hover, #toggleSeqBtn:hover{
  transform: scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#autoplayBtn:active, #toggleSeqBtn:active{
  transform: scale(1.03) !important;
}
#sideToggle, #reopenPanelBtn{
  transform: none !important;
}
#sideToggle:hover, #reopenPanelBtn:hover{
  transform: none !important;
  box-shadow: 0 10px 22px rgba(17,24,39,.12) !important;
}
#tourFrame.hidden{
  display:none !important;
  opacity:0 !important;
  pointer-events:none !important;
}
#tourFrame{
  pointer-events:auto;
}

/* v18-back-hover-center */
#backBtn{
  left:auto !important;
  right:auto !important;
  margin:0 auto !important;
  transform-origin:center center !important;
}
#backBtn:hover{
  transform: scale(1.08) !important;
}

/* v22 clean hover parity */
#backBtn{
  position:absolute !important;
  left:50% !important;
  bottom:18px !important;
  transform:translateX(-50%) !important;
  transform-origin:center center !important;
  z-index:120 !important;
}
#backBtn:hover{
  transform:translateX(-50%) translateY(-1px) scale(1.08) !important;
  box-shadow:0 12px 24px rgba(17,24,39,.14) !important;
}
#backBtn:active{
  transform:translateX(-50%) scale(1.03) !important;
}
#miniEmpty{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  padding:20px;
  line-height:1.35;
  word-break:break-word;
  white-space:normal;
}

/* v26 stable base tweaks */
#backBtn{
  position: fixed !important;
  left: 50% !important;
  bottom: -12px !important; /* ~30px lower than Experience VR */
  transform: translateX(-50%) !important;
  z-index: 10011 !important;
}
#backBtn:hover{
  transform: translateX(-50%) translateY(-1px) scale(1.08) !important;
  box-shadow: 0 12px 24px rgba(17,24,39,.14) !important;
}
#backBtn:active{
  transform: translateX(-50%) scale(1.03) !important;
}

/* v27 stable tweaks */
#backBtn{
  bottom: 3px !important;
}

/* v28 final alignment */
#backBtn{
  bottom: 9px !important;
}

/* v29 white crossfade + disabled state */
.viewer-main-inner,
#viewerCanvas{
  background:#fff !important;
}
.viewer-empty{
  background:#fff !important;
  color:#c9d1da !important;
  z-index:0 !important;
}
#frameCanvasA,
#frameCanvasB{
  background:#fff !important;
  z-index:1 !important;
}

/* v30 final back button nudge */
#backBtn{
  bottom: 15px !important;
}

/* v34 viewer title spacing fix */
.viewer-tech > h2,
.viewer-tech .viewer-title,
.viewer-tech #projectName{
  margin-bottom: 6px !important;
}
.viewer-tech > .viewer-divider:first-of-type,
.viewer-tech .viewer-divider:first-of-type{
  margin-top: 0 !important;
}

/* v35 real first-gap fix */
.viewer-tech{
  gap: 16px !important;
}
.viewer-title-side{
  min-height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
}
#sideTitle{
  min-height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
}
.viewer-tech > .viewer-divider:first-of-type{
  margin: 0 !important;
}
.viewer-tech > div:first-child{
  margin-bottom: 0 !important;
}

/* v47 clean housing mode from v35 */
.viewer-overlay-mode{
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  top:18px !important;
  display:flex !important;
  justify-content:center !important;
  pointer-events:none !important;
  z-index:10020 !important;
}
.viewer-overlay-mode > button{
  pointer-events:auto !important;
}
#modeToggleBtn{
  display:none;
}
.checkline input[type="checkbox"]{
  width:18px;
  height:18px;
}

/* v51 restore eye icon centering */
#toggleSeqBtn{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
#toggleSeqBtn svg{
  display:block !important;
  margin:auto !important;
  width:18px !important;
  height:18px !important;
  flex:0 0 auto !important;
}

/* v52 autoplay focus/selection cleanup */
#autoplayBtn,
#autoplayBtn *,
#toggleSeqBtn,
#toggleSeqBtn *,
#modeToggleBtn,
#modeToggleBtn *{
  user-select:none !important;
  -webkit-user-select:none !important;
  -webkit-touch-callout:none !important;
}
#autoplayBtn:focus,
#autoplayBtn:focus-visible,
#toggleSeqBtn:focus,
#toggleSeqBtn:focus-visible,
#modeToggleBtn:focus,
#modeToggleBtn:focus-visible{
  outline:none !important;
  box-shadow:0 12px 24px rgba(17,24,39,.14) !important;
}

/* v54 housing mode crossfade */
#frameCanvasA,
#frameCanvasB{
  will-change: opacity;
}

/* v56 loading polish */
.viewer-empty h2{
  letter-spacing:.01em;
}

/* v61 dedicated housing crossfade overlay */
#frameCanvasTransition{
  display:none;
  opacity:0;
  pointer-events:none !important;
  z-index:6 !important;
  background:#fff !important;
}
#frameCanvasA{ z-index:3 !important; }
#frameCanvasB{ z-index:4 !important; }


/* v63: CSS hard rule so facade mode hides eye even if another flex rule tries to show it */
body.facade-mode #toggleSeqBtn{
  display:none !important;
}
body:not(.facade-mode) #toggleSeqBtn{
  display:inline-flex;
}


/* v65 splash + tech visibility */
.checkline{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:38px;
}
.viewer-price-box{
  border:1px solid #e4e7eb;
  border-radius:18px;
  background:#fff;
  padding:18px 20px;
  font-size:24px;
  font-weight:700;
}
.viewer-splash{
  position:fixed;
  inset:0;
  z-index:12000;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.viewer-splash.hidden{ display:none; }
.viewer-splash-inner{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:16px;
}
.viewer-splash-logo{
  max-width:15vw;
  max-height:15vh;
  min-width:120px;
  object-fit:contain;
}
.viewer-splash-hint{
  font-size:14px;
  color:#475569;
}
body.splash-open .viewer-shell{
  visibility:hidden;
}
body.splash-open #splashScreen{
  visibility:visible;
}

/* v66 splash enhancements */
.splash-preview{
  position:relative;
  min-height:210px;
  border:1px solid #e4e7eb;
  border-radius:20px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:14px;
  background:#fff;
}
.splash-preview-logo{
  max-width:32%;
  max-height:32%;
  min-width:96px;
  object-fit:contain;
}
.splash-preview-hint{
  font-size:13px;
  color:#475569;
}
.viewer-splash{
  opacity:1;
  transition:opacity .65s ease;
}
.viewer-splash.closing{
  opacity:0;
}
.viewer-splash-logo{
  max-width:30vw;
  max-height:30vh;
  min-width:180px;
  object-fit:contain;
}

/* v67 preview polish */
.splash-preview-admin-box{ margin-top:16px; }
.splash-colors-row{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:12px;
  margin-top:12px;
}
.splash-color-field{ min-width:0; }
.splash-color-chip{
  display:flex;
  align-items:center;
  gap:10px;
  border:1px solid #d7dde5;
  border-radius:14px;
  padding:8px 10px;
  background:#fff;
}
.splash-color-chip input[type="color"]{
  width:34px;
  height:34px;
  border:none;
  background:transparent;
  padding:0;
  cursor:pointer;
}
.splash-color-chip span{
  font-size:13px;
  color:#475569;
  font-weight:600;
}

/* v69 admin splash preview visible */
.splash-preview-admin-box{
  display:block !important;
}
.splash-preview{
  width:100%;
  min-height:220px;
  border:1px solid #e4e7eb;
  border-radius:20px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:14px;
  background:#fff;
}
.splash-preview.no-logo::before{
  content:"Sin logo";
  font-size:14px;
  color:#64748b;
  font-weight:600;
}

/* v70 splash controls */
.splash-control-grid{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:14px;
  margin-top:14px;
}
.splash-preview{
  --splash-logo-scale: 12;
  --splash-text-size: 14px;
  --splash-font-family: system-ui,-apple-system,"Segoe UI",sans-serif;
  width:100%;
  aspect-ratio:16 / 9;
  min-height:auto;
  border:1px solid #e4e7eb;
  border-radius:20px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:calc(var(--splash-text-size) * 1.2);
  background:#fff;
}
.splash-preview-logo{
  width:calc(var(--splash-logo-scale) * 1%);
  max-width:none;
  max-height:28%;
  min-width:0;
  object-fit:contain;
}
.splash-preview-hint{
  font-size:var(--splash-text-size);
  color:#475569;
  font-family:var(--splash-font-family);
}
.viewer-splash{
  --splash-logo-scale: 12;
  --splash-text-size: 14px;
  --splash-font-family: system-ui,-apple-system,"Segoe UI",sans-serif;
}
.viewer-splash-logo{
  width:calc(var(--splash-logo-scale) * 1vw);
  max-width:none;
  max-height:34vh;
  min-width:0;
  object-fit:contain;
}
.viewer-splash-hint{
  font-size:var(--splash-text-size);
  color:#475569;
  font-family:var(--splash-font-family);
}

/* v71 live preview + logo growth */
.splash-preview{
  gap:max(12px, calc(var(--splash-text-size) * 1.15));
}
.splash-preview-logo{
  width:auto;
  height:calc(var(--splash-logo-scale) * 3.2%);
  max-height:72%;
  max-width:72%;
  min-width:0;
  object-fit:contain;
}
.viewer-splash-logo{
  width:auto;
  height:calc(var(--splash-logo-scale) * 2.2vh);
  max-height:50vh;
  max-width:42vw;
  min-width:0;
  object-fit:contain;
}

/* v73 splash offset + preview closer to real size */
.splash-control-grid{
  grid-template-columns:1fr 1fr 1fr 1fr !important;
}

/* v73 preview closer to viewer + vertical text control */
.splash-preview{
  --splash-text-offset-y: 0px;
  gap:max(10px, calc(var(--splash-text-size) * 0.95)) !important;
}
.splash-preview-logo{
  height:calc(var(--splash-logo-scale) * 2.7%) !important;
  max-height:62% !important;
  max-width:62% !important;
}
.splash-preview-hint{
  transform:translateY(var(--splash-text-offset-y));
}
.viewer-splash{
  --splash-text-offset-y: 0px;
}
.viewer-splash-hint{
  transform:translateY(var(--splash-text-offset-y));
}

/* v74 independent logo/text layers */
.splash-preview,
.viewer-splash-inner{
  position:relative;
}
.splash-preview{
  display:block !important;
}
.splash-preview-logo{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  height:calc(var(--splash-logo-scale) * 2.7%) !important;
  width:auto;
  max-height:62% !important;
  max-width:62% !important;
}
.splash-preview-hint{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%, var(--splash-text-offset-y));
  margin:0;
  line-height:1;
  white-space:nowrap;
}
.viewer-splash-inner{
  width:100%;
  height:100%;
}
.viewer-splash-logo{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:auto;
  height:calc(var(--splash-logo-scale) * 2.2vh);
  max-height:50vh;
  max-width:42vw;
}
.viewer-splash-hint{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%, var(--splash-text-offset-y));
  margin:0;
  line-height:1;
  white-space:nowrap;
}

/* v75 centered independent splash text */
.splash-preview{
  --splash-text-size-adjust: 0.82;
}
.splash-preview-hint{
  left:50% !important;
  top:50% !important;
  transform:translate(-50%, calc(-50% + var(--splash-text-offset-y))) !important;
  font-size:calc(var(--splash-text-size) * var(--splash-text-size-adjust)) !important;
  text-align:center !important;
}
.viewer-splash-hint{
  left:50% !important;
  top:50% !important;
  transform:translate(-50%, calc(-50% + var(--splash-text-offset-y))) !important;
  text-align:center !important;
}

/* v76 force preview text to match viewer more closely */
.splash-preview-hint{
  left:50% !important;
  top:50% !important;
  transform:translate(-50%, calc(-50% + var(--splash-text-offset-y))) !important;
  font-size:var(--splash-text-size) !important;
  line-height:1 !important;
  text-align:center !important;
  white-space:nowrap !important;
}
.viewer-splash-hint{
  line-height:1 !important;
  white-space:nowrap !important;
}

/* v77 final preview text parity */
.splash-preview{
  --splash-text-size-adjust: 0.82;
  --splash-text-offset-y: 0px;
  position:relative !important;
  display:block !important;
}
.splash-preview-logo{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  transform:translate(-50%,-50%) !important;
}
.splash-preview-hint{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  transform:translate(-50%, calc(-50% + var(--splash-text-offset-y))) !important;
  font-size:calc(var(--splash-text-size) * var(--splash-text-size-adjust)) !important;
  font-family:var(--splash-font-family) !important;
  text-align:center !important;
  white-space:nowrap !important;
  line-height:1 !important;
  margin:0 !important;
}
.viewer-splash{
  --splash-text-offset-y: 0px;
}
.viewer-splash-hint{
  position:absolute !important;
  left:50% !important;
  top:50% !important;
  transform:translate(-50%, calc(-50% + var(--splash-text-offset-y))) !important;
  font-size:var(--splash-text-size) !important;
  font-family:var(--splash-font-family) !important;
  text-align:center !important;
  white-space:nowrap !important;
  line-height:1 !important;
  margin:0 !important;
}

/* v78 preview text live + closer size parity */
.splash-preview{
  --splash-text-size-adjust: 0.62 !important;
}

/* v79 preview text ratio sync */
.splash-preview{
  --splash-text-size-adjust: 1 !important;
}

/* v80 splash text full-range percent positioning */
.splash-preview{
  --splash-text-top: 50%;
}
.splash-preview-hint{
  top:var(--splash-text-top) !important;
  transform:translate(-50%, -50%) !important;
}
.viewer-splash{
  --splash-text-top: 50%;
}
.viewer-splash-hint{
  top:var(--splash-text-top) !important;
  transform:translate(-50%, -50%) !important;
}

/* v81 placeholders + department naming */
.input::placeholder,
.textarea::placeholder,
select.input::placeholder{
  color: rgba(71,85,105,.38) !important;
}
.small.muted{
  color: rgba(71,85,105,.7);
}
.dept-name-row{
  display:grid;
  grid-template-columns: 44px 1fr;
  gap:10px;
  align-items:center;
  margin-bottom:10px;
}
.dept-name-index{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:42px;
  border:1px solid #d7dde5;
  border-radius:12px;
  color:#64748b;
  background:#fff;
}

/* v83e level selection polish */
.level-chip.active{
  background: rgba(88, 117, 160, 0.10) !important;
  border-color: rgba(88, 117, 160, 0.28) !important;
  color: #344256 !important;
}

/* v86 admin facade decoder */
#decodeFacadeBtn{ white-space:nowrap; }
#decodeFacadeStatus{ white-space:nowrap; }

/* v87d admin layout real fix */
.kpi-label{letter-spacing:.04em;}
#tokenBox.kpi-num{font-weight:800;color:#1f2937;}
.upload-grid{margin-top:16px;}
#facadeUploadWrap{margin-top:16px;}

/* v87x levels inline correct */
#facadeUploadWrap{display:block !important;}
.levels-inline-wrap .toolbar{
  align-items:center;
}
.levels-inline-wrap #levelRow{
  margin-top:14px !important;
}
.levels-inline-wrap #levelNamesWrap{
  margin-top:14px !important;
}

/* v88 levels box + taller previews */
.levels-inline-wrap .levels-inline-panel{
  border: 1px dashed var(--line);
  background: #f8fafc;
  border-radius: 22px;
  padding: 16px;
}
.levels-inline-wrap .levels-inline-panel .toolbar:first-child{
  margin-bottom: 2px;
}
.levels-inline-wrap #levelRow{
  margin-top: 14px !important;
}
.levels-inline-wrap #levelNamesWrap{
  margin-top: 14px !important;
}
.mini-viewer-stage{
  height: 290px;
}
.mini-tour-frame{
  height: 290px;
}

/* v89 departments modal management */
.modal-shell.hidden{display:none}
.modal-shell{position:fixed;inset:0;z-index:1200}
.modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.28);backdrop-filter:blur(2px)}
.modal-panel{position:relative;max-width:760px;width:min(92vw,760px);max-height:82vh;overflow:hidden;margin:6vh auto 0;background:#fff;border:1px solid var(--line);border-radius:26px;box-shadow:0 24px 80px rgba(15,23,42,.18);display:flex;flex-direction:column}
.modal-head{display:flex;justify-content:space-between;gap:16px;padding:22px 22px 14px;border-bottom:1px solid var(--line)}
.modal-head h3{margin:0 0 6px 0}
.modal-actions{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;border-top:1px solid var(--line);background:#fbfdff}
.dept-modal-body{padding:18px 22px;overflow:auto;display:flex;flex-direction:column;gap:12px}
.dept-row{display:grid;grid-template-columns:90px minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:12px;border:1px dashed var(--line);border-radius:16px;background:#fbfdff}
.dept-row .dept-badge{font-size:12px;color:var(--muted);font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.dept-row .dept-active-tag{font-size:12px;padding:8px 10px;border-radius:999px;border:1px solid var(--line);background:#fff}
.dept-inline-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;border:1px dashed var(--line);border-radius:16px;background:#fbfdff}
.level-row.dept-compact{margin-bottom:0}
.level-row.dept-compact .chip{pointer-events:none}
@media (max-width: 780px){
  .dept-row{grid-template-columns:1fr;align-items:stretch}
  .modal-actions,.modal-head{flex-direction:column;align-items:stretch}
}

/* v89b compact departments row */
.dept-inline-summary{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:12px 14px;
  border:1px dashed var(--line);
  border-radius:16px;
  background:#fbfdff;
}
.dept-inline-meta{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  min-width:0;
}
.dept-inline-current{
  display:inline-flex;
  align-items:center;
  padding:8px 12px;
  border-radius:999px;
  background:#4b4b4b;
  color:#fff;
  font-size:13px;
  line-height:1;
  white-space:nowrap;
}
@media (max-width: 780px){
  .dept-inline-summary{
    flex-direction:column;
    align-items:stretch;
  }
  .dept-inline-meta{
    justify-content:flex-start;
  }
}

/* v89d viewer subtitle + sticky divider */
.viewer-title-head{
  position: sticky;
  top: 0;
  z-index: 3;
  background: #fff;
  padding-top: 8px;
}
.viewer-title-side{
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:auto;
  padding:8px 0 0;
}
#sideTitle{
  font-size:42px;
  font-weight:800;
  line-height:1.02;
  margin:0;
  display:block;
  min-height:0;
}
#sideTagline{
  margin:10px 0 0;
  font-size:21px;
  line-height:1.25;
  color:#7a8594;
  font-weight:600;
}
.viewer-divider{
  height:1px;
  background:#e7ebf0;
  margin:12px 0 18px;
  display:block;
  flex:0 0 auto;
}

/* v90 single status row */
.save-status-row{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
}
.save-status-row #assetStatus{
  text-align:center;
}

/* v91 stage1 admin-only per-department data */
.input-disabled{
  opacity:.58;
  background:#f3f5f7 !important;
  color:#7a8594 !important;
  cursor:not-allowed !important;
}
.dept-row-rich{
  display:flex;
  flex-direction:column;
  gap:12px;
}
.dept-row-top{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}
.dept-row-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.dept-form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.dept-form-grid .full{
  grid-column:1/-1;
}
@media (max-width: 780px){
  .dept-form-grid{grid-template-columns:1fr}
  .dept-row-top{flex-direction:column;align-items:stretch}
}

/* v91k hard force subtitle layout */
#sideTagline{
  display:block !important;
  position:relative !important;
  overflow:visible !important;
}
.viewer-title-side{
  overflow:visible !important;
}
.viewer-title-head{
  overflow:visible !important;
}

/* v91l subtitle drawn inside sideTitle for guaranteed visibility */
#sideTitle{
  display:block !important;
}
#sideTitle .side-subtitle-inline{
  display:block;
  margin-top:10px;
  color:#7a8594;
  font-size:21px;
  line-height:1.25;
  font-weight:600;
}
#sideTagline{
  display:none !important;
}

/* v91m divider vertical centering fix */
.viewer-title-side{
  padding: 8px 0 0 !important;
}
#sideTitle{
  margin: 0 !important;
}
#sideTitle .side-subtitle-inline{
  margin-top: 8px !important;
}
.viewer-divider{
  margin: 16px 0 16px !important;
}

/* v91n divider balance refine */
.viewer-title-head{
  display:flex !important;
  flex-direction:column !important;
}
.viewer-title-side{
  padding: 0 !important;
}
#sideTitle .side-subtitle-inline{
  margin-top: 10px !important;
}
.viewer-divider{
  margin: 14px 0 14px !important;
}

/* v91o title top gap fix */
.viewer-title-head{
  padding-top: 0 !important;
  gap: 0 !important;
}
.viewer-title-side{
  padding-top: 0 !important;
  margin-top: 0 !important;
  align-items: flex-start !important;
  justify-content: flex-start !important;
}
#sideTitle{
  padding-top: 0 !important;
  margin-top: 0 !important;
}

/* v91p price above program + compact program cards */
.viewer-tech{
  gap: 22px;
}
.viewer-program-grid{
  gap: 10px !important;
}
.viewer-program-card{
  min-height: 88px !important;
  padding: 14px !important;
  border-radius: 18px !important;
}
.viewer-program-card .small.muted-soft{
  font-size: 13px !important;
  line-height: 1.2 !important;
}
#bedroomsValue,
#bathroomsValue,
#parkingValue{
  font-size: 18px !important;
  margin-top: 8px !important;
}
#viewValue{
  font-size: 16px !important;
  margin-top: 8px !important;
  line-height: 1.2 !important;
  word-break: break-word;
}

/* v91t price currency formatting admin */
.price-admin-row{
  display:grid;
  grid-template-columns:110px 1fr;
  gap:10px;
  align-items:center;
}
.price-currency-select{
  min-width:0;
}
@media (max-width: 720px){
  .price-admin-row{
    grid-template-columns:1fr;
  }
}

/* v91x3 price typography + facade autoplay hidden */
#priceValue{
  font-weight:500 !important;
  letter-spacing:-0.02em;
  display:flex;
  align-items:flex-start;
  gap:8px;
  flex-wrap:wrap;
  color:#374151;
}
#priceValue .price-main{
  font-size:0.96em;
  font-weight:500;
  line-height:1.05;
}
#priceValue .price-cents{
  font-size:0.42em;
  line-height:1;
  transform:translateY(0.18em);
  font-weight:600;
  opacity:0.85;
}
#priceValue .price-code{
  font-size:0.44em;
  line-height:1;
  transform:translateY(0.22em);
  font-weight:600;
  letter-spacing:0.06em;
  opacity:0.8;
}

/* v91x4 center numeric values in tech cards */
#bedroomsValue,
#bathroomsValue,
#parkingValue,
#viewValue{
  display:flex !important;
  width:100%;
  justify-content:center !important;
  align-items:center !important;
  text-align:center !important;
}

.viewer-program-card{
  display:flex;
  flex-direction:column;
}

.viewer-program-card .small.muted-soft{
  text-align:center !important;
}

.viewer-price-box{
  display:flex !important;
  justify-content:center !important;
  align-items:center !important;
  text-align:center !important;
}

#priceValue{
  width:100%;
  justify-content:center !important;
  text-align:center !important;
}

/* v91x5 hide lateral tech scrollbar but keep scrolling */
.viewer-tech{
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.viewer-tech::-webkit-scrollbar{
  width: 0;
  height: 0;
  display: none;
}

/* v91x6 hide any viewer lateral scrollbar but keep scrolling */
.viewer-side,
.viewer-side-wrap,
.viewer-tech{
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}
.viewer-side::-webkit-scrollbar,
.viewer-side-wrap::-webkit-scrollbar,
.viewer-tech::-webkit-scrollbar{
  width: 0 !important;
  height: 0 !important;
  display: none !important;
  background: transparent !important;
}

.file-status-label {
  font-size: 11px;
  color: var(--muted);
  margin-top: 5px;
  word-break: break-all;
  display: block;
}
