/* Vistructor Outdoor v83 — Guest / Client / Partner / Owner access, security and EN/IT shell */
:root{
  --vapp-green:#235b39;
  --vapp-green-dark:#153c27;
  --vapp-green-soft:#edf5ee;
  --vapp-ink:#203129;
  --vapp-muted:#68746d;
  --vapp-line:#d6ded7;
  --vapp-paper:#fffefa;
  --vapp-cream:#f6f5f0;
  --vapp-amber:#8b6429;
  --vapp-amber-soft:#fff6e8;
  --vapp-blue:#345a71;
  --vapp-blue-soft:#edf5f8;
  --vapp-shadow:0 22px 70px rgba(25,45,33,.23);
}
html[data-vapp-role="guest"] .vos-open-button,
html[data-vapp-role="client"] .vos-open-button,
html[data-vapp-role="guest"] #vme-open-estimate,
html[data-vapp-role="client"] #vme-open-estimate,
html[data-vapp-role="guest"] .vme-modal,
html[data-vapp-role="client"] .vme-modal{display:none!important}

.vapp-dock{
  position:fixed;z-index:2147483000;top:10px;right:12px;height:42px;
  display:flex;align-items:center;gap:7px;padding:5px 6px;
  border:1px solid rgba(49,76,59,.20);border-radius:11px;
  background:rgba(255,254,250,.94);backdrop-filter:blur(14px);
  box-shadow:0 10px 34px rgba(25,45,33,.12);color:var(--vapp-ink);
  font:600 11px/1.2 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
.vapp-lang{display:flex;align-items:center;border:1px solid #d3dbd4;border-radius:8px;overflow:hidden;background:#f8faf7}
.vapp-lang button{width:34px;height:30px;border:0;background:transparent;color:#637068;font-size:10px;font-weight:800;letter-spacing:.08em;cursor:pointer}
.vapp-lang button.active{background:var(--vapp-green);color:#fff}
.vapp-projects,.vapp-account,.vapp-security{
  height:30px;border:1px solid #d3dbd4;border-radius:8px;background:#fff;color:#31473a;
  padding:0 10px;font-size:10px;font-weight:800;cursor:pointer;white-space:nowrap
}
.vapp-projects:hover,.vapp-account:hover,.vapp-security:hover{background:#f0f5ef;border-color:#99ad9d}
.vapp-account{display:flex;align-items:center;gap:7px;max-width:190px}
.vapp-account-dot{width:8px;height:8px;border-radius:50%;background:#9aa49e;box-shadow:0 0 0 3px rgba(154,164,158,.12)}
html[data-vapp-role="client"] .vapp-account-dot{background:#4b7d94;box-shadow:0 0 0 3px rgba(75,125,148,.12)}
html[data-vapp-role="partner"] .vapp-account-dot{background:#2d7047;box-shadow:0 0 0 3px rgba(45,112,71,.14)}
html[data-vapp-role="owner"] .vapp-account-dot{background:#b08b2e;box-shadow:0 0 0 3px rgba(176,139,46,.18)}
.vapp-account span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.vapp-backdrop{position:fixed;z-index:2147483200;inset:0;background:rgba(24,35,29,.48);backdrop-filter:blur(5px);display:grid;place-items:center;padding:24px}
.vapp-backdrop[hidden]{display:none!important}
.vapp-modal{width:min(920px,96vw);max-height:min(820px,92vh);overflow:auto;background:var(--vapp-paper);border:1px solid rgba(44,76,55,.20);border-radius:18px;box-shadow:var(--vapp-shadow);color:var(--vapp-ink);font:400 13px/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}
.vapp-modal.compact{width:min(610px,94vw)}
.vapp-modal.wide{width:min(1080px,97vw)}
.vapp-modal header{position:sticky;top:0;z-index:3;display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding:20px 22px 16px;border-bottom:1px solid var(--vapp-line);background:rgba(255,254,250,.96);backdrop-filter:blur(12px)}
.vapp-kicker{display:block;color:#4a6e58;text-transform:uppercase;letter-spacing:.14em;font-size:9px;font-weight:900}
.vapp-modal h2{margin:4px 0 0;font:700 clamp(22px,3vw,31px)/1.08 Georgia,"Times New Roman",serif;color:#20332a}
.vapp-modal header p{max-width:700px;margin:7px 0 0;color:#69766e}
.vapp-close{flex:0 0 34px;width:34px;height:34px;border:1px solid #d6ddd7;border-radius:9px;background:#fff;font-size:20px;line-height:1;cursor:pointer}
.vapp-close:hover{background:#eef4ee}
.vapp-modal-body{padding:20px 22px 24px}
.vapp-actions{display:flex;justify-content:flex-end;align-items:center;gap:9px;flex-wrap:wrap;margin-top:18px}
.vapp-button{min-height:39px;border:1px solid #cfd8d0;border-radius:9px;background:#fff;color:#2b4435;padding:0 14px;font-weight:800;font-size:11px;cursor:pointer}
.vapp-button:hover{background:#f0f5ef}
.vapp-button.primary{border-color:var(--vapp-green);background:var(--vapp-green);color:#fff}
.vapp-button.primary:hover{background:var(--vapp-green-dark)}
.vapp-button.danger{border-color:#dbc7c2;color:#8a4338;background:#fff9f7}
.vapp-button.link{border-color:transparent;background:transparent;color:var(--vapp-green);padding-inline:6px}
.vapp-button:disabled{opacity:.48;cursor:not-allowed}

.vapp-access-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}
.vapp-access-card{position:relative;border:1px solid var(--vapp-line);border-radius:14px;background:#fff;padding:16px;min-height:205px}
.vapp-access-card.current{border-color:#6e9679;box-shadow:inset 0 0 0 1px #6e9679;background:#fbfdf9}
.vapp-access-card.client{background:linear-gradient(180deg,#f7fbfd,#fff)}
.vapp-access-card.partner{background:linear-gradient(180deg,#f3f8f3,#fff)}
.vapp-access-card.owner,.vapp-login-card.owner{background:linear-gradient(180deg,#fff9e8,#fff);border-color:#dfcf9d}.vapp-access-card.owner.current{border-color:#b08b2e;box-shadow:inset 0 0 0 1px #b08b2e}
.vapp-access-card h3{margin:5px 0 5px;font-size:15px;font-weight:850}.vapp-access-card p{margin:0;color:#69756e;font-size:11px;line-height:1.55}
.vapp-access-card ul{margin:11px 0 0;padding:0;list-style:none;display:grid;gap:6px;color:#405047;font-size:10.5px}
.vapp-access-card li:before{content:"✓";color:#32714a;font-weight:900;margin-right:6px}
.vapp-access-card .vapp-button{width:100%;margin-top:14px}
.vapp-current-pill{position:absolute;right:10px;top:10px;border-radius:999px;padding:4px 7px;background:#e9f3e9;color:#316244;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.vapp-login-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:18px}.vapp-login-grid-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.vapp-login-card{border:1px solid var(--vapp-line);border-radius:13px;background:#fff;padding:15px}
.vapp-login-card h3{margin:0 0 4px;font-size:14px}.vapp-login-card>p{margin:0 0 12px;color:var(--vapp-muted);font-size:10.5px}
.vapp-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.vapp-form label{display:grid;gap:4px;color:#42534a;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.055em}
.vapp-form label.wide{grid-column:1/-1}
.vapp-form input,.vapp-form select,.vapp-form textarea{width:100%;border:1px solid #d5ddd6;border-radius:8px;background:#fff;padding:9px 10px;color:#24362d;font:500 12px/1.35 Inter,ui-sans-serif,system-ui}
.vapp-form textarea{resize:vertical;min-height:75px}.vapp-form input:focus,.vapp-form select:focus,.vapp-form textarea:focus{outline:3px solid rgba(42,93,57,.13);border-color:#7e9d86}
.vapp-prototype-note{margin:15px 0 0;padding:10px 12px;border:1px solid #e0d7bd;border-radius:9px;background:#fff9eb;color:#735f31;font-size:10px;line-height:1.45}

.vapp-workflow-card{margin:17px 0 0;border:1px solid #d5ded6;border-radius:14px;background:rgba(255,255,255,.78);padding:13px 14px}
.vapp-workflow-card strong{display:block;color:#2d4636;font-size:10px;text-transform:uppercase;letter-spacing:.09em}
.vapp-flow{margin-top:9px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.vapp-flow span{border:1px solid #d6ded7;border-radius:999px;background:#fff;padding:5px 8px;font-size:9px;font-weight:800;color:#3c5044}.vapp-flow i{font-style:normal;color:#789080;font-weight:900}
.vapp-entry-note{margin:14px 0 0;padding:10px 12px;border-left:3px solid #548064;background:#f1f6ef;color:#465a4d;font-size:11px;line-height:1.45}

.vapp-preliminary-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 14px;border-block:1px solid #e2d7b9;background:var(--vapp-amber-soft);color:#67532b;font:700 10px/1.35 Inter,ui-sans-serif,system-ui}
.vapp-preliminary-banner strong{font-size:10px}.vapp-preliminary-banner span{font-weight:500;color:#7a6843}.vapp-preliminary-banner button{border:1px solid #cbb77d;border-radius:7px;background:#fffdf7;padding:5px 9px;color:#725b28;font-size:9px;font-weight:850;cursor:pointer}
.vapp-preliminary-banner.partner{border-color:#cddcd0;background:#eff6ef;color:#335940}.vapp-preliminary-banner.partner span{color:#55705d}

[data-vapp-restricted="true"]{display:none!important}
.vapp-locked-inline{margin:8px 0;padding:10px 12px;border:1px solid #e2d6bb;border-radius:9px;background:#fff8e9;color:#6b572d;font-size:10px;line-height:1.45}
.vapp-locked-inline button{margin-left:8px;border:0;background:transparent;color:#356047;text-decoration:underline;font-weight:800;cursor:pointer}

.vapp-project-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.vapp-project-toolbar p{margin:0;color:var(--vapp-muted);font-size:11px}
.vapp-project-list{display:grid;gap:10px}
.vapp-project-empty{border:1px dashed #cbd7cd;border-radius:13px;padding:28px;text-align:center;color:#718078;background:#fbfcfa}
.vapp-project-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;border:1px solid #d7dfd8;border-radius:13px;background:#fff;padding:14px}
.vapp-project-card h3{margin:0;font-size:14px}.vapp-project-card .meta{margin-top:4px;color:#6b7870;font-size:10px}.vapp-project-card .summary{margin-top:8px;color:#405148;font-size:11px}.vapp-project-card .status{display:inline-flex;margin-top:8px;border-radius:999px;padding:4px 8px;background:#edf4ec;color:#3b6648;font-size:8px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}
.vapp-project-card .status.submitted{background:#edf4f8;color:#41697d}.vapp-project-card .status.quoted{background:#f7f1e7;color:#7b6032}
.vapp-storage-state{display:inline-flex;margin-left:5px;border-radius:999px;padding:4px 8px;font-size:8px;font-weight:900;letter-spacing:.04em;vertical-align:middle}.vapp-storage-state.synced{background:#e6f3e8;color:#27633b}.vapp-storage-state.local{background:#fff1d7;color:#76591f}
.vapp-project-card .controls{display:flex;align-items:flex-start;gap:6px;flex-wrap:wrap;justify-content:flex-end}.vapp-project-card .controls button{border:1px solid #d4ddd5;border-radius:7px;background:#fff;padding:6px 8px;font-size:9px;font-weight:800;cursor:pointer}.vapp-project-card .controls button:hover{background:#f1f6f0}

.vapp-summary-sheet{border:1px solid #d5ddd6;border-radius:14px;background:linear-gradient(180deg,#fff,#fbfcfa);padding:16px}.vapp-summary-sheet header{position:static;padding:0 0 11px;background:transparent;border-bottom:1px solid #dfe5df}.vapp-summary-sheet h3{margin:0;font:700 23px/1.05 Georgia,serif}.vapp-summary-sheet .ref{color:#3e6b4d;font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.vapp-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:12px}.vapp-summary-grid div{border:1px solid #e0e5df;border-radius:8px;background:#fff;padding:8px 9px}.vapp-summary-grid span,.vapp-summary-grid strong{display:block}.vapp-summary-grid span{color:#748078;font-size:8px;text-transform:uppercase;letter-spacing:.07em;font-weight:800}.vapp-summary-grid strong{margin-top:2px;font-size:11px;color:#293b31}.vapp-summary-note{margin-top:10px;padding:9px 10px;border-radius:8px;background:#f1f6ef;color:#506257;font-size:9.5px;line-height:1.45}
.vapp-quote-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:17px}.vapp-quote-layout .vapp-form{align-content:start}
.vapp-file-note{font-size:9px;color:#77837b;font-weight:500;text-transform:none;letter-spacing:0}

.vapp-toast{position:fixed;z-index:2147483500;left:50%;bottom:22px;transform:translateX(-50%);max-width:min(560px,90vw);border:1px solid rgba(42,83,54,.3);border-radius:10px;background:#203e2b;color:#fff;padding:10px 14px;box-shadow:0 14px 42px rgba(20,42,27,.25);font:750 11px/1.4 Inter,ui-sans-serif,system-ui;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}.vapp-toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}

@media (max-width:980px){
 .vapp-dock{top:7px;right:7px}.vapp-projects{display:none}.vapp-account{max-width:120px;padding-inline:8px}
 .vapp-access-grid,.vapp-login-grid,.vapp-quote-layout{grid-template-columns:1fr}.vapp-access-card{min-height:0}
}
@media (max-width:620px){
 .vapp-dock{height:38px}.vapp-lang button{width:30px;height:27px}.vapp-account{height:27px}
 .vapp-backdrop{padding:8px}.vapp-modal{max-height:96vh;border-radius:13px}.vapp-modal header{padding:15px}.vapp-modal-body{padding:15px}.vapp-form,.vapp-summary-grid{grid-template-columns:1fr}.vapp-form label.wide{grid-column:auto}.vapp-project-card{grid-template-columns:1fr}.vapp-project-card .controls{justify-content:flex-start}
}
.vapp-form > .wide{grid-column:1/-1}


/* v83 platform layout and customer presentation fixes */
/* Reserve a safe area for the fixed language/account dock in every module top bar. */
html[data-vapp-role] body .topbar{padding-right:445px!important;min-width:0}
html[data-vapp-role] body .topbar .topbar-actions{min-width:0;flex-wrap:nowrap}
html[data-vapp-role] body .topbar .manufacturer{min-width:0}
html[data-vapp-role] body .topbar .manufacturer select{max-width:190px}

/* The platform banner consumes vertical space in every module; reduce the common configurator floor so it does not force controls underneath the viewport. */
main.app-shell.vapp-has-platform-banner:not(.vok-module-shell)>.configurator{min-height:calc(100vh - 256px)!important}

/* The platform banner is a real grid row in the fixed Outdoor Bar / Kitchen shell. */
.vok-module-shell.vapp-has-platform-banner{grid-template-rows:64px auto auto minmax(0,1fr)!important}
.vok-module-shell.vapp-has-platform-banner>.vapp-preliminary-banner{grid-row:2;min-width:0}
.vok-module-shell.vapp-has-platform-banner>.vok-workflow-header{grid-row:3;min-width:0}
.vok-module-shell.vapp-has-platform-banner>.vok-configurator{grid-row:4;min-height:0;overflow:hidden}

/* Engine diagnostics are intentionally not exposed in the configurator UI. */
[data-vapp-technical-badge="true"],
.vok-view-status,.vok-model-badge,.product-brep-status,.cad-status,.tent-cad-status{display:none!important}

/* Client/guest views contain no detailed estimate/CME summary rows. */
html[data-vapp-role="guest"] .vme-estimate-step,html[data-vapp-role="client"] .vme-estimate-step,
html[data-vapp-role="guest"] [data-vme-estimate-step],html[data-vapp-role="client"] [data-vme-estimate-step]{display:none!important}

/* Prevent long bilingual step labels and controls from colliding. */
.steps,.vok-steps{min-width:0;max-width:100%!important;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
.steps button,.vok-steps button{min-width:max-content}
.steps b,.vok-steps button{white-space:nowrap}
.vapp-preliminary-banner{min-height:36px;flex-wrap:wrap}
.vapp-preliminary-banner>div{min-width:0;flex:1 1 520px}

@media (max-width:1250px){
  html[data-vapp-role] body .topbar{padding-right:310px!important}
  html[data-vapp-role] body .topbar .manufacturer{display:none!important}
}
@media (max-width:860px){
  .vok-module-shell.vapp-has-platform-banner{grid-template-rows:58px auto auto minmax(0,1fr)!important}
  html[data-vapp-role] body .topbar{padding-right:235px!important}
  .vapp-preliminary-banner span{display:none}
}
@media (max-width:620px){
  html[data-vapp-role] body .topbar{padding-right:190px!important;padding-left:10px!important}
  html[data-vapp-role] body .topbar .brand span:last-child{display:none}
  .vapp-preliminary-banner{padding:6px 9px}
}


/* v83 protected-session presentation */
.vapp-security{width:30px;min-width:30px;padding:0;display:grid;place-items:center;color:#235b39}
.vapp-security span{display:block;font-size:11px;line-height:1;transform:rotate(45deg);color:#2a6b43}

.vsec-watermark-layer{
  position:fixed;z-index:9000;inset:-42vh -32vw;pointer-events:none;overflow:hidden;
  display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));grid-auto-rows:175px;
  gap:32px 70px;align-content:center;justify-content:center;transform:translate(var(--vsec-shift-x,0),var(--vsec-shift-y,0)) rotate(-18deg);transform-origin:center;
  contain:layout style paint;user-select:none;-webkit-user-select:none;
}
.vsec-watermark-layer[hidden]{display:none!important}
.vsec-watermark-tile{display:grid;place-items:center;min-width:330px;min-height:175px;text-align:center}
.vsec-watermark-tile::before{
  content:attr(data-line1) "\A" attr(data-line2) "\A" attr(data-line3) "\A" attr(data-line4);white-space:pre;
  color:rgba(30,76,46,.082);font:800 10px/1.75 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  letter-spacing:.115em;text-transform:uppercase;text-shadow:0 0 1px rgba(255,255,255,.55);
}
.vsec-watermark-layer[data-role="guest"] .vsec-watermark-tile::before{color:rgba(93,72,33,.095)}
.vsec-watermark-layer[data-role="client"] .vsec-watermark-tile::before{color:rgba(36,82,112,.095)}
.vsec-watermark-layer[data-role="partner"] .vsec-watermark-tile::before,.vsec-watermark-layer[data-role="owner"] .vsec-watermark-tile::before{color:rgba(30,76,46,.062)}

/* Verified registered sessions (Client or Owner): no visual watermark/privacy/print protection layer. */
html[data-vsec-protected="false"] .vsec-watermark-layer,
html[data-vsec-protected="false"] .vsec-privacy-cover,
html[data-vsec-protected="false"] .vsec-print-notice{display:none!important}

.vsec-privacy-cover{
  position:fixed;z-index:2147483645;inset:0;display:grid;place-items:center;padding:24px;
  background:radial-gradient(circle at 50% 32%,rgba(48,86,61,.96),rgba(14,28,20,.995) 62%);
  color:#fff;backdrop-filter:blur(22px);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
}
.vsec-privacy-cover[hidden]{display:none!important}
.vsec-privacy-card{width:min(560px,94vw);text-align:center;border:1px solid rgba(255,255,255,.19);border-radius:22px;background:rgba(255,255,255,.075);padding:34px 32px;box-shadow:0 35px 110px rgba(0,0,0,.38)}
.vsec-shield{width:66px;height:66px;margin:0 auto 18px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.34);border-radius:20px;background:rgba(255,255,255,.12);font:800 34px/1 Georgia,serif}
.vsec-kicker{display:block;color:#dcebdd;font-size:9px;font-weight:900;letter-spacing:.18em;text-transform:uppercase}
.vsec-privacy-card h2{margin:7px 0 9px;font:700 clamp(27px,5vw,38px)/1.08 Georgia,"Times New Roman",serif}
.vsec-privacy-card p{max-width:470px;margin:0 auto;color:#e0e9e1;font-size:13px;line-height:1.6}
.vsec-privacy-card button{margin-top:21px;min-height:43px;border:1px solid #fff;border-radius:10px;background:#fff;color:#1f5134;padding:0 18px;font-weight:850;cursor:pointer}
.vsec-privacy-card small{display:block;margin-top:14px;color:#c7d6ca;font-size:9px;line-height:1.5}
body.vsec-locked{overflow:hidden!important}

.vsec-security-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.vsec-security-grid article{border:1px solid #d8e1da;border-radius:12px;background:linear-gradient(180deg,#fbfdfb,#fff);padding:14px}
.vsec-security-grid article>span{display:inline-grid;place-items:center;width:27px;height:27px;border-radius:8px;background:#eaf3eb;color:#2e6742;font-size:9px;font-weight:900}
.vsec-security-grid h3{margin:9px 0 4px;color:#263c2f;font-size:13px}.vsec-security-grid p{margin:0;color:#69766e;font-size:10.5px;line-height:1.55}
.vsec-security-status{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:13px;border:1px solid #bcd2c1;border-radius:11px;background:#edf6ee;padding:11px 13px;color:#315a3e;font-size:10px}
.vsec-security-status strong{font-size:11px}.vsec-security-status span{text-align:right;overflow-wrap:anywhere}
.vsec-security-limit{margin-top:11px;border-left:3px solid #a77a35;background:#fff8e9;padding:10px 12px;color:#6a572e;font-size:10px;line-height:1.55}
.vsec-audit{margin-top:14px}.vsec-audit h3{margin:0 0 7px;font-size:11px;color:#344a3d}.vsec-audit ul{margin:0;padding:0;list-style:none;display:grid;gap:5px;max-height:170px;overflow:auto}
.vsec-audit li{display:flex;justify-content:space-between;gap:10px;border:1px solid #e0e6e1;border-radius:8px;background:#fff;padding:7px 9px;font-size:9px}.vsec-audit li span{color:#748078;text-align:right}

.vsec-print-notice{display:none}
@media print{
  html[data-vsec-protected="true"],html[data-vsec-protected="true"] body{width:100%!important;height:100%!important;background:#fff!important}
  html[data-vsec-protected="true"] body>*:not(#vsec-print-notice){display:none!important}
  html[data-vsec-protected="true"] #vsec-print-notice{display:flex!important;position:fixed!important;inset:0!important;flex-direction:column;align-items:center;justify-content:center;padding:22mm;text-align:center;background:#fff;color:#24372c;font-family:Arial,sans-serif}
  html[data-vsec-protected="true"] #vsec-print-notice .vsec-print-mark{display:grid;place-items:center;width:26mm;height:26mm;border:1.2mm solid #2d6441;border-radius:7mm;color:#2d6441;font:700 18mm/1 Georgia,serif}
  html[data-vsec-protected="true"] #vsec-print-notice h1{margin:9mm 0 3mm;font-size:20pt}
  html[data-vsec-protected="true"] #vsec-print-notice p{max-width:150mm;margin:0;color:#59675f;font-size:11pt;line-height:1.5}
  html[data-vsec-protected="true"] #vsec-print-notice dl{width:min(150mm,100%);margin:10mm 0 0;border-top:1px solid #cad4cc}
  html[data-vsec-protected="true"] #vsec-print-notice dl div{display:grid;grid-template-columns:35mm 1fr;gap:6mm;border-bottom:1px solid #dfe5e0;padding:3mm 0;text-align:left;font-size:9pt}
  html[data-vsec-protected="true"] #vsec-print-notice dt{font-weight:700;text-transform:uppercase;letter-spacing:.08em}
  html[data-vsec-protected="true"] #vsec-print-notice dd{margin:0;overflow-wrap:anywhere}
  html[data-vsec-protected="false"] #vsec-print-notice{display:none!important}
}

html[data-vapp-role="guest"] main.app-shell img,
html[data-vapp-role="guest"] main.app-shell canvas,
html[data-vapp-role="guest"] main.app-shell svg,
html[data-vapp-role="guest"] #vok-module img,
html[data-vapp-role="guest"] #vok-module canvas,
html[data-vapp-role="guest"] #vok-module svg{
  -webkit-user-drag:none;user-drag:none;-webkit-user-select:none;user-select:none
}

@media (max-width:980px){
  .vsec-security-grid{grid-template-columns:1fr}
  .vsec-watermark-layer{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-auto-rows:150px}
  .vsec-watermark-tile{min-width:280px;min-height:150px}
}
@media (max-width:620px){
  .vapp-security{width:27px;min-width:27px;height:27px}
  .vsec-privacy-card{padding:27px 20px}.vsec-security-status{align-items:flex-start;flex-direction:column}.vsec-security-status span{text-align:left}
  .vsec-watermark-tile::before{font-size:8px}
}

/* v83 Owner direct-development / Partner administration */
.vapp-owner-admin{border:1px solid #d7c47f;background:#fff7dc;color:#624c11;border-radius:9px;padding:7px 10px;font-size:10.5px;font-weight:850;cursor:pointer}
.vapp-owner-admin:hover{background:#f8edc5}
.vapp-button.owner{background:#7b611c!important;border-color:#7b611c!important;color:#fff!important}
.vapp-owner-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.vapp-owner-status{margin-top:15px;padding:12px 14px;border:1px solid #dfcf9d;border-radius:11px;background:#fff9e8;display:grid;gap:4px;color:#574819}
.vapp-owner-status strong{font-size:11px}.vapp-owner-status span{font-size:10.5px;line-height:1.5}
.vapp-owner-disable{margin-top:10px;width:100%}
.vapp-check{display:flex!important;align-items:flex-start!important;gap:9px!important;border:1px solid #e2e5df;border-radius:9px;padding:10px;background:#fbfcfa}
.vapp-check input{width:auto!important;margin-top:3px}.vapp-check span{display:grid;gap:3px}.vapp-check small{color:#6c756f;line-height:1.4}
@media(max-width:1280px){.vapp-access-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vapp-login-grid-three{grid-template-columns:1fr 1fr}.vapp-login-card.owner{grid-column:1/-1}}
@media(max-width:820px){.vapp-access-grid,.vapp-login-grid-three,.vapp-owner-grid{grid-template-columns:1fr}.vapp-login-card.owner{grid-column:auto}.vapp-owner-admin{padding:6px 8px}}


/* ==========================================================================
   v83 · COMPACT HEADER SYSTEM + TYPOGRAPHY CONSISTENCY
   One visual scale across all product modules.
   ========================================================================== */
:root{
  --v83-ui-font:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --v83-text:12px;
  --v83-small:10.5px;
  --v83-label:11px;
  --v83-control:12px;
}
html[data-vapp-role] body,
html[data-vapp-role] button,
html[data-vapp-role] input,
html[data-vapp-role] select,
html[data-vapp-role] textarea,
.vapp-dock,.vapp-modal,.vsec-privacy-cover{font-family:var(--v83-ui-font)!important}

/* Compact top application bar. */
html[data-vapp-role] body .topbar{
  height:44px!important;min-height:44px!important;padding-block:0!important;padding-left:14px!important;
}
html[data-vapp-role] body .topbar .brand{gap:7px!important;font-size:14px!important;font-weight:700!important;line-height:1!important}
html[data-vapp-role] body .topbar .brand-mark{width:25px!important;height:30px!important;font-size:24px!important;line-height:1!important}
html[data-vapp-role] body .topbar .topbar-actions{gap:7px!important;height:44px!important}
html[data-vapp-role] body .change-product-button,
html[data-vapp-role] body .module-back-button,
html[data-vapp-role] body .vok-use-pergola-button{
  height:30px!important;min-height:30px!important;padding:0 10px!important;border-radius:7px!important;font-size:11px!important;line-height:1.1!important
}
html[data-vapp-role] body .manufacturer{gap:6px!important;font-size:11px!important}
html[data-vapp-role] body .manufacturer>span{font-size:11px!important}
html[data-vapp-role] body .manufacturer select{height:30px!important;min-height:30px!important;padding:4px 28px 4px 9px!important;font-size:11px!important}

/* Compact access dock so it belongs to the same top ribbon. */
.vapp-dock{top:5px!important;right:9px!important;height:34px!important;gap:5px!important;padding:3px 4px!important;border-radius:9px!important;font-size:11px!important}
.vapp-lang button{width:30px!important;height:26px!important;font-size:10px!important}
.vapp-projects,.vapp-account,.vapp-security,.vapp-owner-admin{height:26px!important;min-height:26px!important;border-radius:7px!important;padding:0 8px!important;font-size:10.5px!important}
.vapp-security{width:27px!important;min-width:27px!important;padding:0!important}
.vapp-account{max-width:175px!important;gap:6px!important}
.vapp-account-dot{width:7px!important;height:7px!important}
html[data-vapp-role] body .topbar{padding-right:410px!important}

/* The status banner is information, not a second full toolbar. */
.vapp-preliminary-banner{
  min-height:28px!important;height:28px!important;padding:3px 10px!important;gap:8px!important;flex-wrap:nowrap!important;
  font-size:10.5px!important;line-height:1.2!important;overflow:hidden!important
}
.vapp-preliminary-banner>div{min-width:0!important;flex:1 1 auto!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.vapp-preliminary-banner strong{font-size:10.5px!important;white-space:nowrap!important}
.vapp-preliminary-banner span{font-size:10px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.vapp-preliminary-banner button{height:22px!important;min-height:22px!important;padding:0 8px!important;font-size:10px!important;white-space:nowrap!important}

/* Desktop modules: exactly four rows = app bar / status / workflow / workspace. */
@media (min-width:761px){
  main.app-shell.vapp-has-platform-banner:not(.product-entry-shell){
    grid-template-rows:44px 28px 58px minmax(0,1fr)!important;height:100svh!important;min-height:0!important;overflow:hidden!important
  }
  main.app-shell.vapp-has-platform-banner:not(.product-entry-shell)>.topbar{grid-row:1!important}
  main.app-shell.vapp-has-platform-banner:not(.product-entry-shell)>.vapp-preliminary-banner{grid-row:2!important}
  main.app-shell.vapp-has-platform-banner:not(.product-entry-shell)>.workflow-header{grid-row:3!important}
  main.app-shell.vapp-has-platform-banner:not(.product-entry-shell)>.configurator{grid-row:4!important;height:100%!important;min-height:0!important}
}

/* v42: recognizable Scene-catalog icons for fitted partitions and bed variants. */
.furniture-icon-internal-partition:before{
  width:27px;height:23px;left:5px;top:7px;border:2px solid #667067;
  background:linear-gradient(135deg,#ded9cd 0 74%,#b7ad99 75% 100%);
  clip-path:polygon(0 26%,50% 0,100% 26%,100% 100%,0 100%);
}
.furniture-icon-single-bed:before{
  width:25px;height:27px;left:6px;top:4px;border:2px solid #706451;border-radius:3px;
  background:linear-gradient(#f4f0e5 0 28%,#d8c7a3 29% 100%);
}
.furniture-icon-single-bed:after{
  width:17px;height:6px;left:10px;top:8px;border-radius:2px;background:#fffdf7;
}
.furniture-icon-bunk-bed:before{
  width:25px;height:29px;left:6px;top:3px;border:2px solid #706451;
  background:linear-gradient(#f4f0e5 0 20%,#d8c7a3 21% 42%,transparent 43% 57%,#f4f0e5 58% 76%,#d8c7a3 77% 100%);
}
.furniture-icon-bunk-bed:after{
  width:2px;height:25px;right:8px;top:6px;background:#706451;
  box-shadow:-5px 3px 0 -1px #706451,-5px 8px 0 -1px #706451,-5px 13px 0 -1px #706451,-5px 18px 0 -1px #706451;
}

/* v43: selected Glamping objects are solid unless transparency is requested. */
.glamp-object-appearance{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:6px;
  margin:0 0 10px;
}
.glamp-object-appearance button{
  min-height:34px;
  border:1px solid #c9c5bb;
  border-radius:7px;
  background:#fff;
  color:#344038;
  font-weight:800;
}
.glamp-object-appearance button.selected{
  border-color:#315f3e;
  background:#315f3e;
  color:#fff;
}

/* Pergola / Shadesail / Glamp / Carport workflow ribbon. */
.workflow-header,.tent-workflow-header,.pool-workflow-header{
  height:58px!important;min-height:58px!important;padding:5px 14px!important;
  grid-template-columns:minmax(175px,220px) minmax(0,1fr)!important;column-gap:12px!important
}
.workflow-header .eyebrow,.tent-workflow-header .eyebrow,.pool-workflow-header .eyebrow{
  margin:0 0 1px!important;letter-spacing:.09em!important;font-size:9px!important;line-height:1.1!important
}
.workflow-header h1,.tent-workflow-header h1,.pool-workflow-header h1{
  margin:0!important;font-family:var(--v83-ui-font)!important;font-size:19px!important;font-weight:720!important;line-height:1.05!important;letter-spacing:-.025em!important
}
.workflow-header .steps,.tent-workflow-header .steps,.pool-workflow-header .steps{
  margin:0!important;max-width:none!important;width:100%!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:thin!important
}
.workflow-header .steps button,.tent-workflow-header .steps button,.pool-workflow-header .steps button{
  flex:0 0 auto!important;min-width:92px!important;gap:5px!important;padding-right:7px!important;font-size:10.5px!important
}
.workflow-header .steps span,.tent-workflow-header .steps span,.pool-workflow-header .steps span{
  flex:0 0 22px!important;width:22px!important;height:22px!important;font-size:9.5px!important
}
.workflow-header .steps b,.tent-workflow-header .steps b,.pool-workflow-header .steps b{
  max-width:100px!important;font-size:10.5px!important;font-weight:650!important;line-height:1.15!important;white-space:nowrap!important;text-overflow:ellipsis!important;overflow:hidden!important
}
.workflow-header .steps button:not(:last-child):after,.tent-workflow-header .steps button:not(:last-child):after,.pool-workflow-header .steps button:not(:last-child):after{top:10.5px!important;left:27px!important}

/* Common side-panel hierarchy. */
.control-panel,.tent-control-panel,.pool-control-panel{font-family:var(--v83-ui-font)!important;font-size:var(--v83-text)!important}
.control-panel .panel-heading,.tent-control-panel .panel-heading,.pool-control-panel .panel-heading{height:52px!important;min-height:52px!important;padding:7px 14px!important}
.control-panel .panel-heading span,.tent-control-panel .panel-heading span,.pool-control-panel .panel-heading span{font-size:10px!important;letter-spacing:.09em!important}
.control-panel .panel-heading h2,.tent-control-panel .panel-heading h2,.pool-control-panel .panel-heading h2{font-size:17px!important;line-height:1.1!important}
.control-panel .panel-heading>b,.tent-control-panel .panel-heading>b,.pool-control-panel .panel-heading>b{font-size:11px!important}
.control-panel .panel-fields,.tent-control-panel .panel-fields,.pool-control-panel .panel-fields{padding-top:11px!important;padding-bottom:13px!important}
.control-panel .panel-navigation,.tent-control-panel .panel-navigation,.pool-control-panel .panel-navigation{padding:7px 14px!important}
.control-panel .panel-navigation button,.tent-control-panel .panel-navigation button,.pool-control-panel .panel-navigation button{height:36px!important;min-height:36px!important;font-size:12px!important}

/* Generic Pergola component text scale. */
.field-label,.section-label,.info-card span{font-size:11px!important;line-height:1.25!important}
.field select,.field input,.field textarea,.dimension-field input{font-size:12.5px!important}
.info-card p,.choice-grid small,.photo-settings-dialog p,.photo-settings-dialog label{font-size:11px!important}
.info-card strong,.choice-grid strong{font-size:13px!important}
.control-panel button,.control-panel select,.control-panel input,.control-panel textarea{font-size:12px!important}
.summary-card{font-family:var(--v83-ui-font)!important;font-size:11px!important}
.summary-card .summary-eyebrow,.summary-card>span{font-size:10px!important}
.summary-card h3{font-size:14px!important}
.summary-card dt{font-size:10.5px!important}.summary-card dd{font-size:11px!important}
.summary-card button{font-size:11.5px!important}

/* Shadesail / Glamp / Carport: eliminate 7–9 px UI text while preserving data emphasis. */
.tent-control-panel p,.tent-control-panel label,.tent-control-panel small{font-size:10.5px!important;line-height:1.4!important}
.tent-control-panel button,.tent-control-panel input,.tent-control-panel select,.tent-control-panel textarea{font-size:11.5px!important}
.tent-panel-intro span,.tent-reference-card span,.tent-solver-card span,.tent-height-result span,.tent-support-schedule>span,.tent-material-data span,
.tent-select>span,.tent-panelization-results>span,.tent-load-breakdown>span,.tent-design-status span{font-size:10px!important}
.tent-panel-intro p,.tent-reference-card p,.tent-solver-card p,.tent-material-data p{font-size:10.5px!important}
.tent-form-grid strong,.tent-dimension-field>div:first-child span,.tent-toggle strong,.tent-convergence strong,.tent-support-schedule strong{font-size:11.5px!important}
.tent-form-grid small,.tent-dimension-field>div:first-child small,.tent-toggle small,.tent-convergence small,.tent-support-schedule small,
.tent-panelization-results small,.tent-load-breakdown small{font-size:10px!important}
.tent-number-control input{font-size:12px!important}.tent-number-control b{font-size:10px!important}
.tent-panel-intro strong{font-size:15px!important}.tent-height-result strong{font-size:20px!important}
.tent-summary-card,.pool-summary-card{font-family:var(--v83-ui-font)!important}
.tent-summary-card dt,.pool-summary-card dt{font-size:10.5px!important}.tent-summary-card dd,.pool-summary-card dd{font-size:11px!important}
.tent-summary-card h3,.pool-summary-card h3{font-size:14px!important}

/* Pool/residual module styles kept consistent if re-enabled. */
.pool-control-panel p,.pool-control-panel label,.pool-control-panel small{font-size:10.5px!important;line-height:1.4!important}
.pool-control-panel button,.pool-control-panel input,.pool-control-panel select,.pool-control-panel textarea{font-size:11.5px!important}
.pool-panel-intro span{font-size:10px!important}.pool-panel-intro p{font-size:10.5px!important}.pool-panel-intro strong{font-size:14px!important}

/* Viewer UI belongs to the same scale, without affecting canvas annotations. */
.view-switch button,.viewer-display-toggle,.camera-tools button,.viewer-actions button,.view-instructions,
.tent-viewer-actions button,.tent-view-instructions,.pool-viewer-actions button{font-family:var(--v83-ui-font)!important;font-size:10.5px!important}

/* Platform dialogs and project/account interface. */
.vapp-modal{font-size:12px!important;line-height:1.45!important}
.vapp-modal h2{font-family:var(--v83-ui-font)!important;font-size:24px!important;font-weight:720!important}
.vapp-kicker,.vapp-form label{font-size:10px!important}.vapp-modal p,.vapp-access-card p,.vapp-login-card>p{font-size:11px!important}
.vapp-access-card ul,.vapp-form input,.vapp-form select,.vapp-form textarea{font-size:11.5px!important}
.vapp-button{font-size:11.5px!important}
.vapp-project-card .meta,.vapp-project-card .summary,.vapp-summary-note{font-size:10.5px!important}

@media (max-width:1250px){
  html[data-vapp-role] body .topbar{padding-right:365px!important}
  .vapp-account{max-width:145px!important}
  .workflow-header,.tent-workflow-header,.pool-workflow-header{grid-template-columns:minmax(150px,190px) minmax(0,1fr)!important}
  .workflow-header .steps button,.tent-workflow-header .steps button,.pool-workflow-header .steps button{min-width:86px!important}
}
@media (max-width:860px){
  .vapp-dock{top:4px!important;height:32px!important}
  html[data-vapp-role] body .topbar{height:40px!important;min-height:40px!important;padding-right:255px!important}
  .vapp-projects{display:none!important}
  .vapp-account{max-width:120px!important}
  .vapp-preliminary-banner{height:auto!important;min-height:26px!important}
  .workflow-header,.tent-workflow-header,.pool-workflow-header{height:auto!important;min-height:54px!important;padding:5px 10px!important}
}

/* v83 · guest subscription gates for image / CAD / BIM exports */
.vapp-login-card.subscription-target{
  border-color:rgba(35,91,57,.62)!important;
  box-shadow:0 0 0 3px rgba(35,91,57,.09),0 12px 28px rgba(25,45,33,.08)!important;
}
[data-vapp-subscription-gated="true"]{cursor:pointer!important}


/* v83 Pergola cleanup */
main.app-shell:not(.product-entry-shell) > .workflow-header { grid-template-columns:minmax(145px,190px) minmax(0,1fr)!important; }
main.app-shell:not(.product-entry-shell) > .workflow-header > h1 { display:none!important; }
main.app-shell:not(.product-entry-shell) > .workflow-header > .eyebrow { grid-row:1 / 3!important; align-self:center!important; margin:0!important; }
main.app-shell:not(.product-entry-shell) > .workflow-header > .steps { grid-row:1 / 3!important; grid-column:2!important; }
main.app-shell .camera-tools { display:none!important; }
main.app-shell .manufacturer select { min-width:100px!important; max-width:125px!important; }


/* v83 · Carport visual language shared across all Outdoor modules */
:root{
  --v83-studio-bg:#f1eee7;
  --v83-studio-ground:#dfdfd8;
  --v83-panel:#fffefa;
  --v83-panel-soft:#f8f6f1;
  --v83-line:#d7d3ca;
  --v83-graphite:#27322f;
  --v83-edge:#8a948f;
  --v83-timber:#6b4c32;
  --v83-accent:#285b37;
  --v83-accent-dark:#173f28;
}
.visualizer,
.tent-viewer,
.pool-viewer{
  background:var(--v83-studio-bg)!important;
}
.viewer-stage,
.pergola-viewer-workspace,
.viewer-model-card{
  background:radial-gradient(circle at 52% 14%,#faf8f1 0,var(--v83-studio-bg) 58%,var(--v83-studio-ground) 100%)!important;
}
.view-switch,
.viewer-display-toggle,
.viewer-actions,
.tent-viewer-actions,
.tent-view-heading,
.tent-photo-tools{
  border-color:var(--v83-line)!important;
  background:rgba(250,248,241,.94)!important;
  color:var(--v83-graphite)!important;
  box-shadow:0 7px 20px rgba(39,50,47,.08)!important;
}
.view-switch button,
.viewer-actions button,
.tent-viewer-actions button,
.tent-undeformed-toggle{
  color:#4d5a54!important;
}
.view-switch button:hover,
.viewer-actions button:hover,
.tent-viewer-actions button:hover{background:#f0ede5!important}
.view-switch button.active,
.viewer-actions button.active,
.tent-viewer-actions button.active{
  background:var(--v83-accent)!important;
  color:#fff!important;
}
.viewer-display-toggle input,
.tent-undeformed-toggle input{accent-color:var(--v83-accent)!important}
.summary-card,
.tent-summary-card,
.pool-summary-card{
  background:rgba(255,254,250,.94)!important;
  border-color:var(--v83-line)!important;
  box-shadow:0 12px 32px rgba(39,50,47,.11)!important;
}
.control-panel,
.tent-control-panel,
.pool-control-panel{
  background:var(--v83-panel)!important;
}
.tent-dimension-overlay line{stroke:#314c3b!important}
.tent-dimension-overlay marker path{fill:#314c3b!important}
.tent-dimension-overlay text{fill:#263c30!important;stroke:#faf8f1!important}
.product-family-visual,
.product-brep-glamp,
.product-brep-tent,
.product-brep-carport{
  background:radial-gradient(circle at 56% 25%,rgba(255,255,255,.82),transparent 35%),linear-gradient(155deg,#f1eee7,#d8d4cb)!important;
}
/* Keep product-specific materials; only the studio and edge language is shared. */

/* v83 · restore visible product-family 3D previews after v81 visual-style pass */
.product-entry-shell .product-family-card > .product-family-visual,
.product-entry-shell .product-family-card .product-brep-preview,
.product-entry-shell .vok-product-card .vok-card-brep{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  flex:0 0 136px!important;
  min-height:136px!important;
  height:136px!important;
  position:relative!important;
  overflow:hidden!important;
}
.product-entry-shell .product-brep-preview canvas,
.product-entry-shell .vok-card-brep canvas,
.product-entry-shell .vok-card-brep-canvas,
.product-entry-shell .vok-card-brep-overlay{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
}
.product-entry-shell .product-brep-preview canvas,
.product-entry-shell .vok-card-brep-canvas{
  z-index:1!important;
}
.product-entry-shell .product-family-visual::after,
.product-entry-shell .vok-card-brep::after{
  z-index:2!important;
}

/* v83 · viewer canvas visibility guard (do not change layout/display state). */
.visualizer canvas,
.tent-viewer canvas,
.pool-viewer canvas,
.carport-viewer canvas,
#vok-module .vok-viewer canvas{
  visibility:visible!important;
  opacity:1!important;
}

/* Public website build: Owner workspace is deliberately not exposed. */
[data-vapp-owner-direct],[data-vapp-owner-direct-modal],[data-vapp-open-owner],.vapp-access-card.owner,.vapp-login-card.owner,.vapp-owner-admin{display:none!important}

/* Web v9 · approved Client identity and secure password-request form */
.vapp-account.client-active{
  max-width:220px!important;
  font-weight:750!important;
  background:#f0f6f2!important;
  border-color:#a9bdaf!important;
}
.vapp-account.pending-active{
  max-width:220px!important;
  font-weight:700!important;
  background:#fff8e8!important;
  border-color:#d7bd7a!important;
}
.vapp-account.pending-active .vapp-account-dot{
  background:#b88819!important;
  box-shadow:0 0 0 3px rgba(184,136,25,.15)!important;
}
.vapp-form .vapp-field-note{
  grid-column:1/-1;
  margin:0;
  padding:9px 11px;
  border:1px solid #d7e1d8;
  border-radius:8px;
  background:#f2f7f2;
  color:#526158;
  font-size:10.5px;
  line-height:1.48;
  letter-spacing:0;
  text-transform:none;
}
.vapp-honeypot{
  position:absolute!important;
  left:-10000px!important;
  width:1px!important;
  height:1px!important;
  overflow:hidden!important;
  pointer-events:none!important;
}
@media (max-width:900px){
  .vapp-account.client-active{max-width:150px!important}
}


/* Web v13 · native Netlify form POST + explicit Registered Client path */
.vapp-public-access-grid{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.vapp-public-access-grid .vapp-access-card{min-height:250px;display:flex;flex-direction:column}
.vapp-public-access-grid .vapp-access-card .vapp-button{margin-top:auto!important}
.vapp-access-card.registered-client{border-color:#a9bdaf;background:linear-gradient(180deg,#f3f8f4,#fff)}
.vapp-access-card.registered-client.current{border-color:#285b37;box-shadow:inset 0 0 0 1px #285b37}
.vapp-access-card.request-client{border-color:#d8c58e;background:linear-gradient(180deg,#fffaf0,#fff)}
.vapp-login-grid{grid-template-columns:1fr!important}
.vapp-registration-form{position:relative;padding-bottom:74px}
.vapp-registration-heading{display:grid;gap:3px;padding:10px 12px;border:1px solid #ccdacf;border-radius:10px;background:#f2f7f2;color:#2d4938}
.vapp-registration-heading strong{font-size:12px;letter-spacing:.01em}
.vapp-registration-heading span{font-size:10.5px;color:#5a675f}
.vapp-privacy-row{padding:8px 10px;border:1px solid #e1ddd4;border-radius:8px;background:#fffdf8}
.vapp-registration-submitbar{position:sticky;bottom:-1px;z-index:4;display:flex;justify-content:stretch;padding:10px 0 2px;background:linear-gradient(180deg,rgba(255,254,250,0),#fffefa 28%,#fffefa 100%)}
.vapp-registration-submit{display:block!important;visibility:visible!important;opacity:1!important;width:100%!important;min-height:48px!important;font-size:12px!important;letter-spacing:.025em!important;box-shadow:0 8px 20px rgba(34,74,47,.16)!important}
@media(max-width:1280px){.vapp-public-access-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media(max-width:900px){.vapp-public-access-grid{grid-template-columns:1fr!important}.vapp-registration-submitbar{position:static}.vapp-registration-form{padding-bottom:0}}

/* v21 — Owner launches the private Admin workspace from the normal registered-user Access panel. */
.vapp-access-card.owner-session-card{border-color:rgba(31,95,59,.5);box-shadow:0 0 0 2px rgba(31,95,59,.08) inset}
.vapp-admin-platform-button{width:100%;margin-top:8px;justify-content:center;font-weight:800;letter-spacing:.02em}
/* v39: engineering solvers are an Administrator/Owner workspace only. */
html:not([data-vapp-role="owner"]) .glamp-admin-solver {
  display: none !important;
}

/* v39.1: user-controlled Glamping Scene visibility and object selection. */
.glamp-scene-visibility{
  display:grid;
  gap:9px;
  padding:10px;
  border:1px solid #d6ddd4;
  border-radius:9px;
  background:#f7faf5;
}
.glamp-scene-visibility-heading,
.glamp-scene-object-list-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}
.glamp-scene-visibility-heading span,
.glamp-scene-visibility-heading strong,
.glamp-scene-object-list-heading strong,
.glamp-scene-object-list-heading small{display:block}
.glamp-scene-visibility-heading span{
  color:#6c766d;
  text-transform:uppercase;
  letter-spacing:.08em;
  font-size:7px;
  font-weight:850;
}
.glamp-scene-visibility-heading strong{color:#2f4f39;font-size:10px}
.glamp-scene-visibility-actions{display:flex;gap:5px}
.glamp-scene-visibility-actions button,
.glamp-scene-object-row button{
  min-height:26px;
  padding:4px 8px;
  border:1px solid #bdcabe;
  border-radius:6px;
  background:#fff;
  color:#31543a;
  font-size:7px;
  font-weight:800;
}
.glamp-scene-visibility-actions button:hover,
.glamp-scene-object-row button:hover{background:#eaf2e8}
.glamp-scene-layer-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:5px;
}
.glamp-scene-layer-grid label,
.glamp-scene-object-row label{
  display:flex;
  align-items:center;
  gap:7px;
  min-height:29px;
  padding:5px 7px;
  border:1px solid #d7dfd5;
  border-radius:6px;
  background:#fff;
  color:#435247;
  font-size:8px;
  font-weight:720;
  cursor:pointer;
}
.glamp-scene-layer-grid input,
.glamp-scene-object-row input{accent-color:#285b37}
.glamp-scene-object-list{
  display:grid;
  gap:4px;
  max-height:190px;
  overflow:auto;
  padding-top:3px;
  border-top:1px solid #dbe2d9;
}
.glamp-scene-object-list-heading{position:sticky;top:0;z-index:1;padding:4px 1px;background:#f7faf5}
.glamp-scene-object-list-heading strong{color:#435247;font-size:8px}
.glamp-scene-object-list-heading small{color:#748077;font-size:7px}
.glamp-scene-object-list-actions{display:flex;align-items:center;gap:5px}
.glamp-scene-object-list-actions button{
  min-height:23px;
  padding:3px 6px;
  border:1px solid #bdcabe;
  border-radius:6px;
  background:#fff;
  color:#31543a;
  font-size:7px;
  font-weight:800;
}
.glamp-scene-object-row{display:grid;grid-template-columns:minmax(0,1fr) repeat(2,auto);gap:5px}
.glamp-scene-object-row.selected label{border-color:#4b7656;background:#edf5eb}
.glamp-scene-object-row button{min-width:43px}
@media(max-width:900px){
  .glamp-scene-layer-grid{grid-template-columns:1fr}
  .glamp-scene-visibility-heading{align-items:flex-start;flex-direction:column}
}

/* v39.2: viewport-locked Glamping studio and Bar/Kitchen-style direct manipulation. */
html:has(.glamp-module-shell),
body:has(.glamp-module-shell),
body:has(.glamp-module-shell) #root{
  width:100%;
  height:100%;
  min-height:0!important;
  overflow:hidden!important;
  overscroll-behavior:none;
}
.glamp-module-shell{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  min-height:0!important;
  overflow:hidden!important;
}
.glamp-module-shell>.tent-configurator{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
.glamp-module-shell .tent-control-panel{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
.glamp-module-shell .tent-panel-fields{
  min-height:0!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
}
.glamp-module-shell .tent-visualizer,
.glamp-module-shell .viewer-stage,
.glamp-module-shell .glamp-viewer,
.glamp-module-shell .tent-cad-canvas{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
.glamp-module-shell .tent-cad-canvas canvas{
  contain:strict;
  backface-visibility:hidden;
  transform:translateZ(0);
  cursor:grab!important;
}
.glamp-module-shell .tent-cad-canvas canvas.glamp-object-hover{cursor:pointer!important}
.glamp-module-shell .tent-cad-canvas canvas.glamp-object-selected,
.glamp-module-shell .tent-cad-canvas canvas.glamp-object-dragging{cursor:move!important}
.glamp-module-shell .tent-cad-canvas canvas.glamp-object-dragging{filter:saturate(1.03)}

/* v39.3: realistic occluded view is the default; technical edges are opt-in. */
.glamp-view-style{
  display:flex;
  align-items:stretch;
  border-left:1px solid #d7d3ca;
  border-right:1px solid #d7d3ca;
}
.glamp-view-style button{border-radius:0!important}
.glamp-view-style button+button{border-left:1px solid #d7d3ca!important}

/* v46: one object per row with editable W/D/H dimensions. */
.glamp-object-catalog-list{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:6px;
}
.glamp-object-catalog-row{
  display:grid;
  grid-template-columns:30px minmax(70px,1fr) auto 27px;
  align-items:center;
  gap:6px;
  min-height:43px;
  padding:5px 6px;
  border:1px solid #d9ddd5;
  border-radius:7px;
  background:#fffefa;
}
.glamp-object-catalog-row>.furniture-icon{
  width:28px;
  height:28px;
  margin:0;
}
.glamp-object-catalog-name{
  min-width:0;
  display:grid;
  gap:1px;
}
.glamp-object-catalog-name strong,
.glamp-object-catalog-name small{
  display:block;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.glamp-object-catalog-name strong{font-size:8px;color:#2f3f34}
.glamp-object-catalog-name small{font-size:6.5px;color:#778078}
.glamp-object-catalog-dimensions{
  display:grid;
  grid-template-columns:repeat(3,40px);
  gap:3px;
}
.glamp-object-catalog-dimensions label{
  display:grid;
  grid-template-columns:9px minmax(0,1fr);
  align-items:center;
  gap:1px;
  color:#657068;
  font-size:6.5px;
  font-weight:400;
}
.glamp-object-catalog-dimensions input{
  width:30px;
  height:25px;
  padding:0 2px;
  border:1px solid #cfd6cf;
  border-radius:4px;
  background:#fff;
  color:#26352b;
  text-align:center;
  font-size:6.5px;
  font-weight:400;
  line-height:1;
  letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;
  appearance:textfield;
}
.glamp-object-catalog-dimensions input::-webkit-inner-spin-button,
.glamp-object-catalog-dimensions input::-webkit-outer-spin-button{appearance:none;margin:0}
.glamp-object-catalog-add{
  width:27px;
  height:27px;
  padding:0;
  border:1px solid #9eb1a1;
  border-radius:6px;
  background:#eef5ec;
  color:#285b37;
  font-size:15px;
  font-weight:800;
}
.glamp-object-catalog-add:hover{background:#dfeadd;border-color:#597d61}
.glamp-object-size-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px;
}
.glamp-object-size-grid label{
  display:grid;
  gap:3px;
  color:#657068;
  font-size:7px;
  font-weight:400;
}
.glamp-object-size-grid label>span:last-child{
  display:grid;
  grid-template-columns:minmax(0,1fr) 12px;
  align-items:center;
  border:1px solid #cfd6cf;
  border-radius:5px;
  background:#fff;
  overflow:hidden;
}
.glamp-object-size-grid input{
  min-width:0;
  width:100%;
  height:28px;
  padding:0 3px;
  border:0;
  background:#fff;
  text-align:right;
  font-size:7.5px;
  font-weight:400;
  line-height:1;
  font-variant-numeric:tabular-nums;
  appearance:textfield;
}
.glamp-object-size-grid b{font-size:6.5px;font-weight:750;color:#788078}
.glamp-object-size-grid input::-webkit-inner-spin-button,
.glamp-object-size-grid input::-webkit-outer-spin-button{appearance:none;margin:0}

@media (min-width:761px){
  .glamp-module-shell.vapp-has-platform-banner{
    grid-template-rows:44px 28px 58px minmax(0,1fr)!important;
  }
}
