:root{--red:#e31b23;--bg:#f5f5f6;--card:#fff;--text:#22252a;--muted:#74777d;--line:#e5e6e8;--dark:#1d1f23}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,Helvetica,sans-serif}.hidden{display:none!important}
button,input,a{font:inherit}.admin-topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:20}.brand{font-size:15px;font-weight:800;letter-spacing:.045em}.subbrand{font-size:11px;color:var(--muted);margin-top:3px}.top-actions{display:flex;gap:8px;align-items:center}.top-actions a,.top-actions button{height:38px;padding:0 14px;border-radius:9px;border:1px solid var(--line);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.ghost{background:#fff;color:var(--text)}.primary,.small-primary{background:var(--red)!important;color:#fff!important;border-color:var(--red)!important;font-weight:700}.shell{max-width:1160px;margin:26px auto 70px;padding:0 20px}.card{background:var(--card);border:1px solid var(--line);border-radius:15px;box-shadow:0 7px 25px rgba(0,0,0,.04)}.hero{padding:22px 24px;display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--red);margin-bottom:4px}.tour-name{border:0;background:transparent;font-size:28px;font-weight:750;padding:2px 0;min-width:280px;outline:none;color:var(--text)}.tour-name:focus{border-bottom:2px solid var(--red)}.muted{color:var(--muted);margin:4px 0 0;font-size:13px;line-height:1.45}.save-state{font-size:12px;color:#4c7d52;background:#eef7ef;padding:8px 11px;border-radius:999px}.tabs{display:flex;gap:24px;border-bottom:1px solid var(--line);margin:26px 0 0}.tab{border:0;background:transparent;padding:13px 2px 12px;cursor:pointer;color:#7a7d82;border-bottom:2px solid transparent;font-weight:650}.tab.active{color:var(--text);border-color:var(--red)}.section{display:none;padding-top:24px}.section.active{display:block}.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.section h2{font-size:20px;margin:0}.count-pill{background:#ececef;color:#60636a;border-radius:999px;padding:7px 10px;font-size:12px}.dropzone{border:2px dashed #d6d8dc;border-radius:16px;min-height:190px;background:rgba(255,255,255,.65);display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;padding:24px;text-align:center;transition:.15s ease}.dropzone.dragover{border-color:var(--red);background:#fff5f5;transform:translateY(-1px)}.drop-icon{width:54px;height:54px;border-radius:50%;background:#efeff1;display:grid;place-items:center;font-weight:800;color:#555b62}.small-primary{border:0;border-radius:8px;padding:9px 13px;cursor:pointer}.dropzone small{color:#8a8d92;margin-top:4px}.upload-queue{background:#fff;border:1px solid var(--line);border-radius:12px;margin:14px 0;padding:10px}.upload-item{display:grid;grid-template-columns:1fr 150px 80px;align-items:center;gap:12px;padding:8px;border-bottom:1px solid #f0f0f1;font-size:12px}.upload-item:last-child{border-bottom:0}.progress{height:6px;border-radius:999px;background:#ececef;overflow:hidden}.progress i{display:block;height:100%;background:var(--red);width:0;transition:width .15s}.scene-list{display:grid;gap:10px;margin-top:14px}.scene-row{display:grid;grid-template-columns:40px 150px minmax(180px,1fr) 130px 40px;gap:12px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 10px;box-shadow:0 3px 10px rgba(0,0,0,.025)}.drag-handle{cursor:grab;color:#aaa;text-align:center;font-size:20px}.scene-row.dragging{opacity:.45}.scene-row img{width:150px;height:74px;object-fit:cover;border-radius:8px;background:#eee}.scene-name-input{border:1px solid transparent;border-radius:7px;padding:8px 9px;font-weight:650;background:#fafafa;min-width:0}.scene-name-input:focus{outline:none;border-color:#c9cbd0;background:#fff}.scene-meta{font-size:11px;color:#8a8d92}.delete-scene{width:34px;height:34px;border:0;border-radius:8px;background:#f2f2f3;color:#8a2f34;cursor:pointer}.plan-grid{display:grid;grid-template-columns:360px 1fr;gap:16px}.dropzone.compact{min-height:310px}.card-soft{background:#fff;border:1px solid var(--line);border-radius:16px;min-height:310px;overflow:hidden;display:grid;place-items:center}.plan-preview img{max-width:100%;max-height:520px;object-fit:contain;display:block}.empty-state{color:#96999f;font-size:13px}.workflow-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.step{background:#fff;border:1px solid var(--line);border-radius:13px;padding:16px;display:grid;gap:7px}.step>span{width:26px;height:26px;border-radius:50%;background:var(--red);color:#fff;display:grid;place-items:center;font-size:12px;font-weight:800}.step small{color:var(--muted);line-height:1.45}.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#1d1f23;color:#fff;padding:11px 16px;border-radius:999px;font-size:12px;z-index:100;box-shadow:0 8px 25px rgba(0,0,0,.2)}
@media(max-width:820px){.admin-topbar{height:auto;padding:14px 16px;align-items:flex-start}.top-actions{flex-wrap:wrap;justify-content:flex-end}.shell{margin-top:16px}.hero{align-items:flex-start}.plan-grid{grid-template-columns:1fr}.workflow-grid{grid-template-columns:1fr 1fr}.scene-row{grid-template-columns:30px 105px 1fr 34px}.scene-row img{width:105px;height:58px}.scene-meta{display:none}}
@media(max-width:560px){.admin-topbar{display:block}.top-actions{margin-top:10px;justify-content:flex-start}.top-actions a,.top-actions button{padding:0 10px}.hero{display:block}.save-state{display:inline-block;margin-top:12px}.tour-name{font-size:23px;min-width:0;width:100%}.tabs{gap:14px}.workflow-grid{grid-template-columns:1fr}.scene-row{grid-template-columns:26px 82px 1fr 34px}.scene-row img{width:82px;height:52px}}

/* =========================================================
   V0.8.1 — dashboard multi-tour
   ========================================================= */
.small-ghost{border:1px solid var(--line);border-radius:8px;padding:9px 13px;background:#fff;color:var(--text);cursor:pointer;margin-left:6px}
.dashboard-shell{max-width:1220px}.dashboard-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.dashboard-hero h1{font-size:30px;margin:2px 0 4px}.dashboard-stats{display:flex;align-items:baseline;gap:7px;color:var(--muted)}.dashboard-stats strong{font-size:30px;color:var(--text)}.dashboard-tools{min-height:0!important;display:flex!important;align-items:center;justify-content:space-between;padding:12px 14px;margin-bottom:14px}.searchbox{display:flex;align-items:center;gap:8px;flex:1;max-width:480px;background:#f6f6f7;border:1px solid #e3e4e6;border-radius:10px;padding:0 11px}.searchbox input{width:100%;height:40px;border:0;background:transparent;outline:none}.dashboard-tools select{height:40px;border:1px solid #e0e1e4;border-radius:9px;background:#fff;padding:0 34px 0 11px;color:#555}.tour-list{display:grid;gap:10px}.tour-row{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:18px;align-items:center;background:#fff;border:1px solid var(--line);border-radius:13px;padding:10px 12px;box-shadow:0 3px 12px rgba(0,0,0,.035)}.tour-thumb{width:150px;height:82px;border-radius:9px;overflow:hidden;background:#ececee}.tour-thumb img{width:100%;height:100%;object-fit:cover;display:block}.tour-thumb-empty{width:100%;height:100%;display:grid;place-items:center;font-weight:800;color:#9a9da2}.tour-main{min-width:0}.tour-name-line{display:flex;align-items:center;gap:9px;min-width:0}.tour-name-line h3{font-size:15px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-pill{font-size:10px;font-weight:800;padding:5px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.status-pill.published{background:#e8f5eb;color:#3f7349}.status-pill.draft{background:#f0f0f1;color:#75787d}.tour-meta{font-size:11px;color:#878a90;margin-top:8px}.tour-actions{display:flex;gap:7px;align-items:center}.row-btn,.more-btn{height:34px;border:1px solid #e0e1e4;border-radius:8px;background:#fff;color:#333;text-decoration:none;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:11px;font-weight:650}.row-btn:hover,.more-btn:hover{border-color:#bfc2c7;background:#fafafa}.more-btn{width:34px;padding:0;font-size:18px}.tour-menu{position:fixed;z-index:200;width:180px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 12px 36px rgba(0,0,0,.16);padding:6px}.tour-menu button{width:100%;border:0;background:transparent;text-align:left;padding:9px 10px;border-radius:7px;cursor:pointer;color:#34373b;font-size:12px}.tour-menu button:hover{background:#f3f3f4}.tour-menu button.danger{color:#b3262e}.empty-dashboard{margin:60px auto;text-align:center;max-width:460px;color:var(--muted)}.empty-dashboard h2{color:var(--text);margin:12px 0 6px}.empty-dashboard p{line-height:1.5}.empty-dashboard .primary{border:0;border-radius:9px;padding:11px 15px;cursor:pointer;margin-top:8px}.empty-icon{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;margin:auto;background:#e8e8ea;color:#7f8287;font-weight:800;font-size:18px}.no-results{padding:40px;text-align:center;color:#8b8e93}
@media(max-width:900px){.tour-row{grid-template-columns:120px 1fr}.tour-thumb{width:120px;height:72px}.tour-actions{grid-column:2;justify-content:flex-start;flex-wrap:wrap}.dashboard-tools{gap:10px}.searchbox{max-width:none}}
@media(max-width:600px){.dashboard-hero{align-items:flex-start}.dashboard-stats{display:none}.dashboard-tools{display:grid!important;grid-template-columns:1fr}.dashboard-tools select{width:100%}.tour-row{grid-template-columns:88px 1fr;gap:10px}.tour-thumb{width:88px;height:58px}.tour-actions{grid-column:1/-1}.row-btn.copy-link{display:none}}

/* =========================================================
   V0.8.1 — identidade / logo por empreendimento
   ========================================================= */
.branding-grid{display:grid;grid-template-columns:360px 1fr;gap:16px}
.logo-drop{min-height:250px!important}
.logo-preview{min-height:250px!important;padding:24px;background:linear-gradient(135deg,#f7f7f8,#ececee)}
.logo-preview img{max-width:min(520px,90%);max-height:180px;object-fit:contain;display:block}
@media(max-width:820px){.branding-grid{grid-template-columns:1fr}}

/* =========================================================
   V0.8.7 — publicação direta na dashboard
   ========================================================= */
.tour-row{grid-template-columns:150px minmax(0,1fr) 118px auto}
.publish-cell{display:flex;align-items:center;justify-content:flex-end}
.publish-switch{border:0;background:transparent;display:inline-flex;align-items:center;gap:8px;padding:6px 4px;cursor:pointer;color:#666;font-size:11px;font-weight:700}
.publish-switch:disabled{opacity:.5;cursor:wait}
.publish-track{position:relative;width:36px;height:20px;border-radius:999px;background:#d7d9dd;box-shadow:inset 0 0 0 1px rgba(0,0,0,.04);transition:.18s ease;flex:0 0 auto}
.publish-track i{position:absolute;left:3px;top:3px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.22);transition:.18s ease}
.publish-switch.on .publish-track{background:var(--red)}
.publish-switch.on .publish-track i{transform:translateX(16px)}
.publish-switch.on .publish-label{color:var(--red)}
.publish-switch:hover .publish-track{box-shadow:0 0 0 3px rgba(227,27,35,.08)}
@media(max-width:900px){.tour-row{grid-template-columns:120px 1fr}.publish-cell{grid-column:2;justify-content:flex-start}.tour-actions{grid-column:2}}
@media(max-width:600px){.tour-row{grid-template-columns:88px 1fr}.publish-cell{grid-column:2}.tour-actions{grid-column:1/-1}}

/* =========================================================
   V0.8.9 — controlo de tamanho do logo
   ========================================================= */
.logo-size-control{
  margin-top:16px;
  min-height:0!important;
  display:flex!important;
  align-items:center;
  justify-content:space-between;
  gap:28px;
  padding:18px 20px;
}
.logo-size-control>div:first-child{min-width:260px}
.logo-size-row{display:flex;align-items:center;gap:14px;min-width:min(520px,52%)}
.logo-size-row input[type="range"]{width:100%;accent-color:var(--red);cursor:pointer}
.logo-size-row output{min-width:62px;text-align:right;font-size:12px;font-weight:800;color:#555b62}
@media(max-width:820px){
  .logo-size-control{display:block!important}
  .logo-size-row{min-width:0;width:100%;margin-top:14px}
}


/* =========================================================
   V0.10.0 — Importador iStaging
   ========================================================= */
.empty-actions{display:flex;gap:8px;justify-content:center;align-items:center;margin-top:12px}.empty-actions .ghost,.empty-actions .primary{height:40px;border-radius:9px;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none}.empty-actions .ghost{background:#fff;border:1px solid var(--line)}
.import-overlay{position:fixed;inset:0;z-index:500;background:rgba(20,22,25,.58);backdrop-filter:blur(3px);display:grid;place-items:center;padding:20px}.import-card{width:min(520px,calc(100vw - 40px));background:#fff;border-radius:16px;padding:26px 28px;box-shadow:0 20px 70px rgba(0,0,0,.28)}.import-card h2{margin:4px 0 8px;font-size:24px}.import-progress{height:8px;background:#ececef;border-radius:999px;overflow:hidden;margin-top:22px}.import-progress i{display:block;width:0;height:100%;background:var(--red);transition:width .2s ease}.import-percent{text-align:right;color:#777b81;font-size:11px;font-weight:800;margin-top:7px}

/* =========================================================
   V0.11.0 — Multi-floor management
   ========================================================= */
.floor-manager{margin-top:14px!important;display:block!important;padding:18px 18px 16px!important;min-height:0!important}
.floor-manager.hidden{display:none!important}
.floor-manager-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:14px}
.floor-manager-head p{margin:4px 0 0;max-width:680px;line-height:1.45}
.floor-manager-actions{display:flex;gap:8px;flex:0 0 auto}
.floor-list{display:grid;gap:9px}
.floor-empty{border:1px dashed #d9dade;border-radius:10px;padding:14px;display:grid;gap:4px;background:#fafafa}
.floor-empty span{font-size:11px;color:var(--muted)}
.floor-row{display:grid;grid-template-columns:116px minmax(0,1fr) auto 34px;gap:12px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:9px;background:#fff}
.floor-crop-mini{position:relative;width:116px;height:72px;overflow:hidden;border-radius:7px;background:#eee}
.floor-crop-mini img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.58}
.floor-crop-mini span{position:absolute;border:2px solid var(--red);background:rgba(227,27,35,.08);box-sizing:border-box}
.floor-row-main{min-width:0;display:grid;gap:6px}.floor-name{width:100%;height:34px;border:1px solid #e1e2e4;border-radius:7px;padding:0 9px;font-weight:750;background:#fafafa}.floor-name:focus{outline:none;border-color:#bfc2c7;background:#fff}.floor-row-main small{color:var(--muted)}
.floor-delete{width:34px;height:34px;border:0;border-radius:8px;background:#f2f2f3;color:#8a2f34;cursor:pointer;font-size:17px}
.floor-assignments{margin-top:16px;border-top:1px solid var(--line);padding-top:14px;display:grid;gap:7px}
.floor-assignments:empty{display:none}
.floor-assignment-title{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:2px}.floor-assignment-title span{font-size:11px;color:var(--muted)}
.floor-assignment-row{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:12px;align-items:center;padding:7px 9px;border-radius:8px;background:#fafafa}.floor-assignment-row span{font-size:12px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.floor-assignment-row select{height:34px;border:1px solid #dedfe2;border-radius:7px;background:#fff;padding:0 8px;font-size:11px}
@media(max-width:700px){.floor-manager-head{display:block}.floor-manager-actions{margin-top:12px}.floor-row{grid-template-columns:86px minmax(0,1fr) 34px}.floor-row-actions{grid-column:1/-1}.floor-crop-mini{width:86px;height:58px}.floor-assignment-row{grid-template-columns:1fr}.floor-assignment-title{display:block}.floor-assignment-title span{display:block;margin-top:3px}}

/* V0.11.1 — edição manual de recortes e imagem própria por piso */
.floor-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.floor-row-actions button{white-space:nowrap}
.floor-crop-mini.own-image::after{content:"imagem própria";position:absolute;left:5px;bottom:5px;padding:2px 5px;border-radius:999px;background:rgba(0,0,0,.68);color:#fff;font-size:8px;font-weight:800;letter-spacing:.03em}
.crop-editor{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.62);display:flex;align-items:center;justify-content:center;padding:24px}.crop-editor.hidden{display:none!important}
.crop-editor-card{width:min(1080px,96vw);max-height:94vh;background:#fff;border-radius:15px;padding:16px;display:grid;grid-template-rows:auto minmax(260px,1fr) auto;gap:14px;box-shadow:0 24px 80px rgba(0,0,0,.28)}
.crop-editor-head,.crop-editor-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.crop-editor-head p{margin:3px 0 0}.crop-editor-actions{align-items:center}.crop-view-actions,.crop-save-actions{display:flex;gap:8px;flex-wrap:wrap}
.crop-stage{position:relative;min-height:300px;height:min(68vh,720px);overflow:auto;background:#151618;border-radius:10px;user-select:none;overscroll-behavior:contain;padding:12px;box-sizing:border-box;scrollbar-color:#555 #1b1c1e}.crop-sheet{position:relative;flex:none;margin:0 auto;background:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.08),0 8px 34px rgba(0,0,0,.28)}.crop-sheet>img{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none;user-select:none}.crop-box{position:absolute;border:3px solid #e31b23;background:rgba(227,27,35,.10);box-sizing:border-box;cursor:move;box-shadow:0 0 0 9999px rgba(0,0,0,.28);touch-action:none}.crop-handle{position:absolute;width:18px;height:18px;right:-10px;bottom:-10px;background:#fff;border:3px solid #e31b23;border-radius:50%;cursor:nwse-resize}
@media(max-width:700px){.crop-editor{padding:8px}.crop-editor-card{width:100%;max-height:98vh;padding:10px}.crop-editor-actions{align-items:stretch;flex-direction:column}.crop-view-actions,.crop-save-actions{justify-content:flex-end}}

/* V0.11.4 — iStaging floorpoint calibration */
.floor-calibration{margin-top:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 8px;border:1px dashed #dadcdf;border-radius:8px;background:#fbfbfc}
.floor-calibration>span{font-size:9px;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:#7a7d83;margin-right:2px}
.floor-calibration label{display:flex;align-items:center;gap:4px;font-size:9px;color:#666;white-space:nowrap}
.floor-calibration input{width:66px;height:28px;border:1px solid #dfe1e4;border-radius:6px;background:#fff;padding:0 6px;font-size:10px}
.floor-calibration button{height:28px;padding:0 8px;font-size:9px}
@media(max-width:700px){.floor-calibration{align-items:flex-start}.floor-calibration>span{width:100%}}

/* =========================================================
   V0.13.0 — autenticação da administração
   ========================================================= */
.auth-gate{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;padding:24px;background:linear-gradient(135deg,#f3f3f4,#e7e8ea)}
.auth-gate.hidden{display:none!important}.auth-card{width:min(430px,calc(100vw - 32px));background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 24px 80px rgba(0,0,0,.14)}
.auth-card h1{margin:4px 0 8px;font-size:28px}.auth-form{display:grid;gap:13px;margin-top:22px}.auth-form label{display:grid;gap:6px;font-size:12px;font-weight:750;color:#4b4e54}.auth-form input{height:42px;border:1px solid #d9dadd;border-radius:9px;padding:0 11px;background:#fff;outline:none}.auth-form input:focus{border-color:#b9bbc0;box-shadow:0 0 0 3px rgba(0,0,0,.035)}.auth-form button{height:42px;border:0;border-radius:9px;cursor:pointer;margin-top:2px}.auth-error{margin-top:13px;padding:10px 12px;border-radius:9px;background:#fff0f0;color:#a12d33;font-size:12px;line-height:1.4;border:1px solid #f1c9cb}


/* =========================================================
   V0.13.4 — informação / disclaimer por tour
   ========================================================= */
.tour-info-editor{min-height:0!important;display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:22px;align-items:start;padding:20px!important}
.tour-info-fields{display:grid;gap:16px;width:100%}
.tour-info-field{display:grid;gap:7px;font-size:12px;font-weight:750;color:#4b4e54}
.tour-info-field input,.tour-info-field textarea{width:100%;border:1px solid #d9dadd;border-radius:9px;background:#fff;color:var(--text);padding:10px 11px;outline:none;resize:vertical;line-height:1.5}
.tour-info-field input{height:42px}
.tour-info-field input:focus,.tour-info-field textarea:focus{border-color:#b9bbc0;box-shadow:0 0 0 3px rgba(0,0,0,.035)}
.tour-info-auto{display:flex;align-items:flex-start;gap:11px;padding:14px;border:1px solid #e2e3e5;border-radius:10px;background:#fafafa;cursor:pointer}
.tour-info-auto input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--red);flex:0 0 auto}
.tour-info-auto span{display:grid;gap:4px;font-size:12px}
.tour-info-auto small{font-weight:400;color:var(--muted);line-height:1.45}
.tour-info-preview{width:100%;border-radius:12px;background:#1b1b1d;color:#f5f5f5;padding:20px;min-height:220px}
.tour-info-preview .eyebrow{margin-bottom:8px}
.tour-info-preview h3{margin:0 0 14px;font-size:20px}
.tour-info-preview-text{white-space:pre-wrap;font-size:12px;line-height:1.65;color:#dedee1;border-top:1px solid #37383b;padding-top:14px}
.tour-info-preview-text.empty{color:#8f9298;font-style:italic}
@media(max-width:780px){.tour-info-editor{grid-template-columns:1fr}.tour-info-preview{min-height:160px}}
