/* SOURCE: styles.css */
    :root{--bg:#050712;--panel:#0a1020;--panel2:#0e162a;--text:#f4f7ff;--muted:#8894aa;--cyan:#35f3ff;--violet:#a65cff;--lime:#b7ff4a;--amber:#ffbd36;--red:#ff5474;--line:rgba(255,255,255,.09);--shadow:0 0 24px rgba(53,243,255,.15)}
    *{box-sizing:border-box} body{margin:0;background:radial-gradient(circle at 50% -20%,#142248 0,#070b16 38%,#04060c 75%);color:var(--text);font:14px/1.45 Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial;min-height:100vh}
    button,input,select,textarea{font:inherit}.app{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:24px 18px;border-right:1px solid var(--line);background:rgba(4,7,15,.84);backdrop-filter:blur(18px)}
    .brand{display:flex;align-items:center;gap:12px;margin:0 6px 24px}.logo{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,var(--cyan),var(--violet));box-shadow:0 0 28px rgba(53,243,255,.35);color:#06101b;font-weight:900;font-size:22px}.brand h1{font-size:18px;margin:0}.brand small{color:var(--muted)}
    nav{display:grid;gap:8px}.nav-btn{width:100%;border:0;color:#aab5c8;background:transparent;padding:12px 14px;border-radius:13px;text-align:left;cursor:pointer;display:flex;gap:10px;align-items:center}.nav-btn:hover,.nav-btn.active{color:#fff;background:linear-gradient(90deg,rgba(53,243,255,.13),rgba(166,92,255,.11));box-shadow:inset 0 0 0 1px rgba(53,243,255,.22)}
    .side-bottom{position:absolute;left:18px;right:18px;bottom:20px}.sync{padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.03);color:var(--muted)}
    main{padding:24px 28px 48px;overflow:hidden}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:14px}.title h2{margin:0;font-size:24px}.title p{margin:4px 0 0;color:var(--muted)}.actions{display:flex;gap:10px}.btn{border:1px solid var(--line);color:#fff;background:#0c1426;padding:10px 14px;border-radius:12px;cursor:pointer}.btn.primary{border:0;background:linear-gradient(135deg,var(--cyan),#5ea6ff 50%,var(--violet));color:#03101a;font-weight:800;box-shadow:0 0 22px rgba(53,243,255,.22)}
    .grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.card{position:relative;background:linear-gradient(180deg,rgba(15,23,43,.94),rgba(7,12,25,.94));border:1px solid var(--line);border-radius:20px;padding:18px;overflow:hidden;box-shadow:0 14px 40px rgba(0,0,0,.28)}.card::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:20px;box-shadow:inset 0 0 22px rgba(255,255,255,.015)}.glow-cyan{border-color:rgba(53,243,255,.35);box-shadow:0 0 24px rgba(53,243,255,.12)}.glow-violet{border-color:rgba(166,92,255,.38);box-shadow:0 0 24px rgba(166,92,255,.12)}.glow-lime{border-color:rgba(183,255,74,.35);box-shadow:0 0 24px rgba(183,255,74,.1)}.glow-amber{border-color:rgba(255,189,54,.38);box-shadow:0 0 24px rgba(255,189,54,.11)}.glow-red{border-color:rgba(255,84,116,.38);box-shadow:0 0 24px rgba(255,84,116,.11)}
    .span-3{grid-column:span 3}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.card-head h3{margin:0;font-size:14px;text-transform:uppercase;letter-spacing:.08em}.pill{font-size:12px;padding:5px 8px;border-radius:999px;background:rgba(255,255,255,.06);color:var(--muted)}
    .metric{font-size:28px;font-weight:850;letter-spacing:-.03em}.delta{font-size:12px;color:#74f7ad}.muted{color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini{padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.mini b{display:block;font-size:18px;margin:4px 0}.mini small{color:var(--muted)}
    .chart{width:100%;height:180px;display:block}.progress{height:8px;border-radius:999px;background:#171e31;overflow:hidden}.progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--cyan),var(--violet))}.list{display:grid;gap:10px}.row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025)}.row-main{min-width:0}.row-main b,.row-main span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.status{padding:5px 9px;border-radius:999px;font-size:12px;white-space:nowrap}.s-new{background:rgba(53,243,255,.12);color:var(--cyan)}.s-work{background:rgba(255,189,54,.14);color:var(--amber)}.s-win{background:rgba(183,255,74,.13);color:var(--lime)}.s-lost{background:rgba(255,84,116,.12);color:var(--red)}
    .table-wrap{overflow:auto;border:1px solid var(--line);border-radius:16px}.data-table{width:100%;border-collapse:collapse;min-width:850px;background:rgba(7,11,23,.66)}.data-table th,.data-table td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left}.data-table th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:#0d1528;position:sticky;top:0}.data-table tr:hover td{background:rgba(255,255,255,.02)}
    .page{display:none}.page.active{display:block}.toolbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}.search{min-width:260px;background:#0b1324;border:1px solid var(--line);border-radius:12px;color:#fff;padding:10px 12px}.funnel{display:flex;align-items:center;flex-direction:column;gap:7px}.funnel div{height:26px;display:grid;place-items:center;border-radius:6px;color:#08111c;font-weight:800}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.field{display:grid;gap:6px}.field label{color:var(--muted);font-size:12px}.field input,.field select,.field textarea{width:100%;background:#0a1222;color:#fff;border:1px solid var(--line);border-radius:11px;padding:10px}.modal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.68);z-index:20;place-items:center;padding:20px}.modal.open{display:grid}.modal-box{width:min(720px,100%);max-height:90vh;overflow:auto;background:#080e1b;border:1px solid rgba(53,243,255,.28);border-radius:22px;padding:20px;box-shadow:0 0 50px rgba(53,243,255,.16)}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.icon-btn{border:0;background:transparent;color:#fff;font-size:22px;cursor:pointer}.empty{padding:44px;text-align:center;color:var(--muted)}
    .mobile-nav{display:none}.hamb{display:none}
    .record-actions{display:flex;gap:7px;justify-content:flex-end}.small-btn{border:1px solid var(--line);background:#101a2f;color:#fff;border-radius:9px;padding:6px 9px;cursor:pointer}.small-btn:hover{border-color:rgba(53,243,255,.5)}.small-btn.danger:hover{border-color:rgba(255,84,116,.7);color:var(--red)}

    .subtabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.subtab{border:1px solid var(--line);background:#0a1427;color:#aeb9cc;border-radius:11px;padding:9px 12px;cursor:pointer}.subtab.active{background:linear-gradient(135deg,var(--cyan),var(--violet));color:#06101b;font-weight:800}
    .price-toolbar{display:grid;grid-template-columns:1fr 210px auto auto;gap:10px;margin-bottom:14px}.price-table input,.price-table select{width:100%;min-width:75px;background:#091222;color:#fff;border:1px solid var(--line);border-radius:8px;padding:7px}
    .equip-layout{display:grid;grid-template-columns:minmax(370px,.85fr) 1.3fr;gap:16px}.equipment-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.equipment-form .field-wide{grid-column:1/-1}.board{display:grid;grid-template-columns:repeat(18,1fr);gap:4px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#060b16;min-height:126px}.board-slot{min-height:82px;border:1px dashed rgba(255,255,255,.12);border-radius:7px;display:grid;place-items:center;color:#556078;font-size:10px}.board-device{min-height:82px;border:1px solid rgba(53,243,255,.35);border-radius:8px;padding:6px;background:linear-gradient(180deg,#172238,#0d1526);font-size:10px;overflow:hidden;cursor:pointer}.board-device b{display:block;font-size:11px;color:#fff}.board-device small{display:block;color:var(--muted)}
    .equipment-list{display:grid;gap:8px;max-height:370px;overflow:auto}.equipment-row{display:grid;grid-template-columns:1fr 70px 90px auto;gap:8px;align-items:center;padding:9px;border:1px solid var(--line);border-radius:11px}.equipment-row small{display:block;color:var(--muted)}
    .chart-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.chart-card canvas{height:240px;width:100%}.kpi-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
    .file-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.file-tab{border:1px solid var(--line);background:#0b1426;color:#aeb9cc;border-radius:9px;padding:7px 9px;cursor:pointer}.file-tab.active{color:#06101b;background:var(--cyan);font-weight:800}.journal-list{display:grid;gap:8px;max-height:280px;overflow:auto}.journal-entry{border-left:3px solid var(--violet);background:rgba(166,92,255,.06);padding:10px;border-radius:0 10px 10px 0}.journal-entry small{color:var(--muted);display:block;margin-top:4px}
    @media(max-width:1050px){.equip-layout,.chart-grid{grid-template-columns:1fr}.price-toolbar{grid-template-columns:1fr 1fr}.kpi-strip{grid-template-columns:1fr 1fr}}

    .login-screen{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:radial-gradient(circle at 50% 10%,#172956 0,#080d1d 38%,#03050b 80%);padding:20px}.login-screen.hidden{display:none}.login-card{width:min(430px,100%);padding:34px;border:1px solid rgba(53,243,255,.25);border-radius:26px;background:linear-gradient(180deg,rgba(15,24,46,.98),rgba(5,10,22,.98));box-shadow:0 25px 80px rgba(0,0,0,.55),0 0 38px rgba(53,243,255,.12)}.login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px}.login-brand .logo{width:54px;height:54px}.login-card h2{margin:0;font-size:25px}.login-card p{color:var(--muted);margin:5px 0 0}.login-field{display:grid;gap:7px;margin:14px 0}.login-field label{color:#b9c4d7}.login-field input{width:100%;border:1px solid var(--line);background:#080f20;color:#fff;border-radius:13px;padding:12px 14px;outline:none}.login-field input:focus{border-color:rgba(53,243,255,.6);box-shadow:0 0 0 3px rgba(53,243,255,.08)}.login-error{min-height:22px;color:#ff7890;margin:8px 0}.user-box{display:flex;gap:8px;align-items:center}.user-chip{color:#bdc8dc;font-size:13px;padding:8px 10px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.03)}

    .calc-layout{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.75fr);gap:16px}.calc-catalog{max-height:67vh;overflow:auto}.calc-filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.calc-filters select,.calc-filters input,.estimate-meta input,.estimate-meta textarea,.qty-input,.price-input,.discount-input{background:#090f20;border:1px solid var(--line);color:#fff;border-radius:10px;padding:9px 10px}.calc-filters input{flex:1;min-width:220px}.catalog-row{display:grid;grid-template-columns:1fr 70px 82px 105px 42px;gap:9px;align-items:center;padding:10px 4px;border-bottom:1px solid rgba(255,255,255,.06)}.catalog-row small{display:block;color:var(--muted);margin-top:3px}.estimate-meta{display:grid;gap:9px;margin-bottom:13px}.estimate-meta textarea{min-height:65px;resize:vertical}.estimate-lines{max-height:42vh;overflow:auto}.estimate-row{display:grid;grid-template-columns:1fr 62px 90px 30px;gap:7px;align-items:center;padding:9px 0;border-bottom:1px solid rgba(255,255,255,.06)}.estimate-row .line-name{font-size:12px}.qty-input,.price-input{width:100%;padding:7px}.estimate-total{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:7px}.total-line{display:flex;justify-content:space-between;gap:12px}.total-line.grand{font-size:20px;font-weight:800;color:#fff}.estimate-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.source-note{font-size:11px;color:var(--muted);margin-top:12px}.empty-calc{padding:28px 10px;text-align:center;color:var(--muted)}

    .calc-tabs{display:flex;gap:8px;margin-bottom:12px}.calc-tab{border:1px solid var(--line);background:#0b1427;color:#aeb9cc;border-radius:10px;padding:8px 11px;cursor:pointer}.calc-tab.active{color:#06101b;background:linear-gradient(135deg,var(--cyan),var(--violet));font-weight:800}.catalog-section{display:none}.catalog-section.active{display:block}.estimate-section-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:13px 0 4px}.discount-controls{display:flex;gap:7px;align-items:center}.discount-controls select{background:#090f20;border:1px solid var(--line);color:#fff;border-radius:9px;padding:7px}.project-detail-modal{z-index:30}.project-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.project-notes{min-height:135px;resize:vertical}.file-drop{border:1px dashed rgba(53,243,255,.42);border-radius:14px;padding:15px;text-align:center;background:rgba(53,243,255,.035)}.file-list{display:grid;gap:8px;margin-top:12px}.file-item{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;border:1px solid var(--line);padding:9px;border-radius:12px;background:rgba(255,255,255,.025)}.file-thumb{width:42px;height:42px;object-fit:cover;border-radius:8px;background:#111a2d;display:grid;place-items:center;font-size:20px}.file-item b,.file-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-note-preview{margin-top:10px;padding:10px;border-left:3px solid var(--cyan);background:rgba(53,243,255,.04);border-radius:0 10px 10px 0;white-space:pre-wrap;max-height:76px;overflow:hidden}.material-badge{color:var(--amber)}
    @media(max-width:760px){.project-detail-grid{grid-template-columns:1fr}}
    @media(max-width:1000px){.calc-layout{grid-template-columns:1fr}.calc-catalog{max-height:none}.estimate-lines{max-height:none}}
    @media print{body{background:#fff!important;color:#111!important}.app{display:block}.sidebar,.mobile-nav,.topbar,.no-print{display:none!important}main{padding:0!important}.page{display:none!important}.page.active{display:block!important}.card,.table-wrap{box-shadow:none!important;border:1px solid #bbb!important;background:#fff!important;color:#111!important;break-inside:avoid}.muted,.data-table th{color:#555!important}.data-table{background:#fff!important;color:#111!important}.data-table th{background:#eee!important}.status{border:1px solid #aaa!important;color:#111!important;background:#eee!important}canvas{max-width:100%!important}.record-actions{display:none!important}}

    @media(max-width:1050px){.app{grid-template-columns:90px 1fr}.sidebar{padding:20px 12px}.brand h1,.brand small,.nav-btn span,.side-bottom{display:none}.brand{justify-content:center}.nav-btn{justify-content:center}.span-3{grid-column:span 6}.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 12}}
    @media(max-width:720px){.app{display:block}.sidebar{display:none}main{padding:18px 14px 92px}.topbar{align-items:flex-start}.title h2{font-size:21px}.actions .btn:not(.primary){display:none}.grid{gap:12px}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8,.span-12{grid-column:span 12}.stats{grid-template-columns:1fr}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;z-index:15;left:10px;right:10px;bottom:10px;padding:8px;background:rgba(7,11,23,.94);border:1px solid var(--line);border-radius:20px;backdrop-filter:blur(16px)}.mobile-nav button{border:0;background:transparent;color:var(--muted);padding:8px 2px;border-radius:12px;font-size:11px}.mobile-nav button.active{color:#fff;background:rgba(53,243,255,.1)}.form-grid{grid-template-columns:1fr}.metric{font-size:24px}}
  
    .sheet-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.sheet-tab{border:1px solid var(--line);background:#0b1427;color:#aeb9cc;border-radius:10px;padding:9px 12px;cursor:pointer}.sheet-tab.active{background:linear-gradient(135deg,var(--cyan),var(--violet));color:#06101b;font-weight:800}.sheet-pane{display:none}.sheet-pane.active{display:block}.clean-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.history-toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}.history-toolbar input,.history-toolbar select{background:#090f20;border:1px solid var(--line);color:#fff;border-radius:10px;padding:10px}.history-toolbar input{flex:1;min-width:240px}.click-row{cursor:pointer}.click-row:hover{background:rgba(53,243,255,.06)}
    @media(max-width:760px){.clean-grid{grid-template-columns:1fr}}

    /* VoltHome OS 1.6.4 — фирменный слой без изменения рабочей логики 1.6.3 */
    :root{--brand-orange:#ffae00;--brand-blue:#0d6fa6;--brand-navy:#172b45}
    .brand .logo{background:#fff url("assets/volthome-logo.png") center/contain no-repeat;color:transparent;width:58px;height:48px;border-radius:10px;box-shadow:0 0 22px rgba(255,174,0,.28)}
    .brand h1{color:#fff}.brand h1::first-letter{color:var(--brand-orange)}
    .nav-btn span:first-child{font-size:18px}.nav-btn.active{border-left:3px solid var(--brand-orange);background:linear-gradient(90deg,rgba(255,174,0,.18),rgba(13,111,166,.14))}
    .btn.primary{background:linear-gradient(135deg,var(--brand-orange),#ffd25a);color:#172b45;box-shadow:0 0 22px rgba(255,174,0,.22)}
    .project-folder{cursor:pointer;border-top:4px solid var(--brand-orange)}.project-folder:hover{transform:translateY(-2px);transition:.18s;box-shadow:0 16px 38px rgba(13,111,166,.22)}
    .project-folder-icon{font-size:34px}.project-badges{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.doc-badge{padding:6px 9px;border-radius:999px;font-size:12px;font-weight:700}.doc-badge.est{background:rgba(37,122,214,.18);color:#79b7ff}.doc-badge.mat{background:rgba(45,185,96,.18);color:#78e89c}.doc-badge.file{background:rgba(255,174,0,.16);color:#ffd05b}
    .program-docs-title{display:flex;align-items:center;justify-content:space-between;margin:18px 0 10px}.program-doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.program-doc{border:1px solid var(--line);border-radius:16px;padding:14px;cursor:pointer;min-height:132px;background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));position:relative}.program-doc:hover{border-color:var(--brand-orange);transform:translateY(-2px)}.program-doc .doc-icon{font-size:34px}.program-doc h4{margin:8px 0 4px}.program-doc small{display:block;color:var(--muted)}.program-doc .doc-status{position:absolute;right:10px;top:10px;font-size:10px;padding:4px 7px;border-radius:99px;background:rgba(255,255,255,.08)}
    .file-list{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}.file-item{display:block!important;border:1px solid var(--line);border-radius:15px;padding:12px;background:rgba(255,255,255,.025)}.file-item .file-thumb{font-size:32px;margin-bottom:7px}.file-item>div:last-child{margin-top:10px}.file-item b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .login-card::before{content:"";display:block;height:112px;background:#fff url("assets/volthome-logo.png") center/contain no-repeat;border-radius:14px;margin-bottom:16px}.login-card .login-logo{display:none}

  
.scheduler-form-grid{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:14px;
}
.scheduler-form-grid .field{min-width:0}
.scheduler-form-grid .wide-4{grid-column:span 4}
.scheduler-form-grid .wide-6{grid-column:span 6}
.scheduler-form-grid .wide-12{grid-column:span 12}
.scheduler-form-grid input,
.scheduler-form-grid select,
.scheduler-form-grid textarea{
  min-height:46px;
  font-size:15px;
  padding:11px 13px;
}
.scheduler-form-grid textarea{
  min-height:90px;
  resize:vertical;
}
.weekday-row{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.weekday-chip{
  position:relative;
}
.weekday-chip input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.weekday-chip span{
  display:flex;
  align-items:center;
  justify-content:center;
  min-width:42px;
  height:38px;
  border:1px solid var(--line);
  border-radius:10px;
  cursor:pointer;
  user-select:none;
}
.weekday-chip input:checked + span{
  background:var(--accent);
  color:#111;
  border-color:var(--accent);
  font-weight:800;
}
.source-accordion{
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
}
.source-accordion summary{
  cursor:pointer;
  padding:13px 15px;
  font-weight:800;
  list-style:none;
}
.source-accordion summary::-webkit-details-marker{display:none}
.source-accordion-body{
  padding:0 14px 14px;
  border-top:1px solid var(--line);
}
.source-check-list{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:8px;
  margin:12px 0;
}
.source-check{
  display:flex;
  align-items:center;
  gap:8px;
  padding:10px 11px;
  border:1px solid var(--line);
  border-radius:10px;
}
.video-preview{
  width:220px;
  max-height:390px;
  aspect-ratio:9/16;
  border-radius:14px;
  background:#000;
  object-fit:cover;
}
.queue-preview{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:16px;
  align-items:start;
}
.time-control{
  display:grid;
  grid-template-columns:1fr 22px 1fr;
  align-items:center;
  gap:6px;
}
@media(max-width:1100px){
  .scheduler-form-grid .wide-4,
  .scheduler-form-grid .wide-6{grid-column:span 12}
  .queue-preview{grid-template-columns:1fr}
}

.source-compact{display:flex;align-items:center;gap:12px}.modal-backdrop{position:fixed;inset:0;background:#000b;display:none;align-items:center;justify-content:center;z-index:9999}.modal-backdrop.open{display:flex}.modal-panel{width:min(820px,94vw);max-height:88vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px}.modal-source-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:9px;margin:14px 0}.ai-option-box{min-height:46px;display:flex;align-items:center;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.ai-option-box label{display:flex;align-items:center;gap:8px;margin:0}

:root{
  --bg:#eef3f8;--panel:#ffffff;--panel2:#f7f9fc;--text:#162b43;--muted:#6e7f91;
  --cyan:#167caf;--violet:#245176;--lime:#35a867;--amber:#f59b23;--red:#df4b55;
  --line:rgba(20,51,76,.12);--shadow:0 14px 36px rgba(23,61,91,.12);
  --brand-orange:#f7941d;--brand-orange-2:#ffb343;--brand-blue:#1479aa;--brand-blue-2:#24577b;--brand-navy:#122b43;
}
body{background:#eef3f8;color:var(--text)}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.42;background:
 linear-gradient(90deg,transparent 0 93%,rgba(20,121,170,.04) 93% 94%,transparent 94%) 0 0/92px 92px,
 linear-gradient(transparent 0 93%,rgba(247,148,29,.045) 93% 94%,transparent 94%) 0 0/92px 92px,
 radial-gradient(circle at 78% 8%,rgba(20,121,170,.13),transparent 27%),radial-gradient(circle at 18% 92%,rgba(247,148,29,.10),transparent 28%)}
.app{grid-template-columns:272px 1fr}
.sidebar{padding:22px 16px;border-right:0;background:linear-gradient(180deg,#102b43 0%,#173d5b 60%,#102a42 100%);box-shadow:12px 0 36px rgba(13,46,72,.18);position:sticky;top:0}
.sidebar::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.16;background-image:url("assets/volthome-logo.png");background-repeat:no-repeat;background-position:center center;background-size:cover;mix-blend-mode:soft-light}
.sidebar .brand,.sidebar .vh-sidebar-brand,.sidebar nav,.sidebar .side-bottom{position:relative;z-index:1}
.brand{position:relative;z-index:1;margin:0 6px 25px;padding:10px;border-radius:18px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12)}
.brand .logo{width:66px;height:56px;border-radius:14px;background:#fff url("assets/volthome-logo.png") center/contain no-repeat;box-shadow:0 8px 24px rgba(0,0,0,.25)}
.brand h1{font-size:20px;letter-spacing:-.02em}.brand small{color:#c5d4df}
nav{position:relative;z-index:1;gap:7px}.nav-btn{color:#d7e4ed;padding:13px 14px;border-radius:13px;font-weight:650;transition:.18s ease}
.nav-btn:hover{background:rgba(255,255,255,.09);transform:translateX(2px)}
.nav-btn.active{color:#fff;border-left:4px solid var(--brand-orange);background:linear-gradient(90deg,rgba(247,148,29,.28),rgba(255,255,255,.08));box-shadow:none}
.nav-btn span:first-child{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:rgba(255,255,255,.09)}
.side-bottom{z-index:1}.sync{color:#d0dce6;background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.12)}
main{padding:26px 30px 50px}.topbar{background:rgba(255,255,255,.88);padding:14px 16px;border:1px solid rgba(20,51,76,.10);border-radius:20px;box-shadow:0 9px 28px rgba(24,61,89,.08);backdrop-filter:blur(14px)}
.title h2{color:var(--brand-navy);font-size:26px}.title p{color:var(--muted)}
.btn{color:var(--brand-navy);background:#fff;border:1px solid rgba(20,51,76,.15);box-shadow:0 4px 12px rgba(27,62,90,.06);font-weight:650}
.btn:hover{border-color:rgba(20,121,170,.42);transform:translateY(-1px)}
.btn.primary{color:#fff;background:linear-gradient(135deg,var(--brand-orange),var(--brand-orange-2));box-shadow:0 9px 22px rgba(247,148,29,.25)}
.card{background:linear-gradient(180deg,#fff,#fbfcfe);border-color:rgba(24,64,94,.11);box-shadow:0 12px 34px rgba(24,61,89,.09);color:var(--text)}
.card::before{content:"";position:absolute;left:0;top:0;width:100%;height:4px;background:linear-gradient(90deg,var(--brand-orange),var(--brand-blue));opacity:.82}
.card-head h3{color:var(--brand-navy)}.pill{background:#edf3f7;color:#587187}.mini,.row{background:#f7f9fc;border-color:rgba(24,64,94,.10)}
.metric{color:var(--brand-navy)}.muted,.mini small{color:var(--muted)}
.glow-cyan,.glow-violet,.glow-lime,.glow-amber,.glow-red{box-shadow:0 12px 34px rgba(24,61,89,.09);border-color:rgba(24,64,94,.11)}
.progress{background:#e4ebf0}.progress span{background:linear-gradient(90deg,var(--brand-blue),var(--brand-orange))}
.table-wrap{border-color:rgba(24,64,94,.12);background:#fff;box-shadow:0 8px 26px rgba(24,61,89,.07)}
.data-table{background:#fff;color:var(--text)}.data-table th{color:#fff;background:linear-gradient(90deg,#173e5d,#1c587e)}.data-table td{border-bottom-color:rgba(24,64,94,.09)}.data-table tr:hover td{background:#f5f9fc}
.search,.field input,.field select,.field textarea,.price-table input,.price-table select,.history-toolbar input,.history-toolbar select{background:#fff;color:var(--text);border-color:rgba(24,64,94,.16)}
.subtab,.calc-tab,.sheet-tab,.file-tab{background:#fff;color:#536d82;border-color:rgba(24,64,94,.15)}
.subtab.active,.calc-tab.active,.sheet-tab.active,.file-tab.active{color:#fff;background:linear-gradient(135deg,var(--brand-blue),#2e91bc);box-shadow:0 6px 16px rgba(20,121,170,.22)}
.modal{background:rgba(12,33,51,.62);backdrop-filter:blur(8px)}.modal-box{background:#fff;color:var(--text);border-color:rgba(247,148,29,.4);box-shadow:0 25px 80px rgba(8,35,56,.25)}.icon-btn{color:var(--brand-navy)}
.project-folder{border-top:0;padding-top:22px;transition:.18s}.project-folder::before{height:6px;background:linear-gradient(90deg,var(--brand-orange),var(--brand-orange-2),var(--brand-blue))}.project-folder:hover{box-shadow:0 18px 42px rgba(20,79,115,.17);transform:translateY(-3px)}
.project-folder-icon{width:54px;height:54px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#fff0dc,#ffe1b7);box-shadow:inset 0 0 0 1px rgba(247,148,29,.18)}
.doc-badge.est{background:#e5f2fb;color:#176a98}.doc-badge.mat{background:#e4f5ea;color:#277b49}.doc-badge.file{background:#fff0dc;color:#a55b08}
.program-doc{background:#fff;border-color:rgba(24,64,94,.12);box-shadow:0 8px 22px rgba(24,61,89,.07)}.program-doc:hover{border-color:var(--brand-orange);box-shadow:0 12px 28px rgba(247,148,29,.13)}
.program-doc .doc-icon{width:50px;height:50px;border-radius:15px;display:grid;place-items:center;background:#eef5fa}
.file-item{background:#fff;border-color:rgba(24,64,94,.11)}.file-drop{background:#f4f9fc;border-color:rgba(20,121,170,.36)}
.board{background:#eef3f7;border-color:rgba(24,64,94,.12)}.board-slot{border-color:rgba(24,64,94,.16);color:#8fa1af}.board-device{background:linear-gradient(180deg,#fff,#eaf3f8);color:var(--text);border-color:rgba(20,121,170,.35)}.board-device b{color:var(--brand-navy)}
.login-screen{background:linear-gradient(120deg,rgba(9,36,57,.95),rgba(19,78,112,.91)),url("assets/volthome-banner.jpg") center/cover no-repeat}
.login-screen::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 82% 16%,rgba(247,148,29,.34),transparent 24%),linear-gradient(90deg,transparent,rgba(255,255,255,.04),transparent)}
.login-card{position:relative;width:min(460px,100%);padding:30px;border-radius:28px;background:rgba(255,255,255,.96);border:1px solid rgba(255,255,255,.55);box-shadow:0 30px 90px rgba(0,0,0,.36);color:var(--text)}
.login-card::before{height:126px;background:#fff url("assets/volthome-logo.png") center/contain no-repeat;border-radius:18px;margin-bottom:18px;box-shadow:0 8px 25px rgba(22,73,105,.10)}
.login-brand{justify-content:center;text-align:center}.login-brand .logo{display:none}.login-card h2{color:var(--brand-navy);font-size:28px}.login-card p{color:var(--muted)}
.login-field label{color:#536b7d;font-weight:650}.login-field input{background:#f7fafc;color:var(--text);border-color:rgba(24,64,94,.16)}.login-field input:focus{border-color:var(--brand-orange);box-shadow:0 0 0 4px rgba(247,148,29,.12)}
.login-error{color:var(--red)}.user-chip{color:#526b7f;background:#f6f9fb;border-color:rgba(24,64,94,.12)}
.status{font-weight:700}.s-new{background:#e4f2fa;color:#19709c}.s-work{background:#fff0d8;color:#a66008}.s-win{background:#e1f4e8;color:#287949}.s-lost{background:#fae6e8;color:#a8333d}
.small-btn{background:#fff;color:var(--brand-navy);border-color:rgba(24,64,94,.14)}
@media(max-width:1050px){.app{grid-template-columns:96px 1fr}.brand{padding:7px}.brand .logo{width:58px}}
@media(max-width:720px){.mobile-nav{background:rgba(16,43,67,.96);border-color:rgba(255,255,255,.10)}.mobile-nav button.active{background:rgba(247,148,29,.25)}.topbar{padding:12px}.title h2{font-size:22px}}

:root{
  --vh-bg:#edf3f7;--vh-surface:#ffffff;--vh-surface-2:#f7fafc;--vh-text:#18334a;--vh-muted:#6c8191;
  --vh-line:rgba(24,64,94,.14);--vh-shadow:0 10px 28px rgba(20,63,94,.10);--vh-input:#ffffff;
}
html[data-theme="dark"]{
  --vh-bg:#081521;--vh-surface:#102538;--vh-surface-2:#152d42;--vh-text:#eef7fc;--vh-muted:#9db2c2;
  --vh-line:rgba(141,190,221,.18);--vh-shadow:0 12px 32px rgba(0,0,0,.32);--vh-input:#0c2031;
  color-scheme:dark;
}
body{background:var(--vh-bg)!important;color:var(--vh-text)!important;transition:background .22s ease,color .22s ease}
main{background:var(--vh-bg)!important}
.card,.table-wrap,.modal-box,.login-card{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:var(--vh-shadow)!important}
.mini,.row,.program-doc,.file-drop,.journal-item,.board,.source-note{background:var(--vh-surface-2)!important;border-color:var(--vh-line)!important;color:var(--vh-text)!important}
.title h2,.card-head h3,.metric,.modal-box h3,.login-card h2{color:var(--vh-text)!important}
.muted,.field label,.mini small,.data-table th,.program-doc small{color:var(--vh-muted)!important}
.search,.field input,.field select,.field textarea,.estimate-meta input,.calc-filters input,.calc-filters select,.login-field input{background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
.data-table{background:var(--vh-surface)!important;color:var(--vh-text)!important}.data-table th{background:var(--vh-surface-2)!important}.data-table td{border-color:var(--vh-line)!important}
.btn,.small-btn{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}.btn.primary{background:linear-gradient(135deg,var(--brand-orange),#ffb343)!important;color:#102b43!important;border-color:transparent!important}
html[data-theme="dark"] .sidebar{background:linear-gradient(180deg,#061725 0%,#0b2940 60%,#061725 100%)}
html[data-theme="dark"] .topbar{background:rgba(8,21,33,.82);border-color:var(--vh-line)}
html:not([data-theme="dark"]) .topbar{background:rgba(237,243,247,.82)}
.theme-toggle{display:flex;align-items:center;gap:7px;padding:5px;border-radius:14px;background:var(--vh-surface);border:1px solid var(--vh-line);box-shadow:0 4px 14px rgba(20,63,94,.08)}
.theme-toggle button{border:0;background:transparent;color:var(--vh-muted);padding:7px 10px;border-radius:10px;cursor:pointer;font-weight:700;white-space:nowrap}.theme-toggle button.active{background:linear-gradient(135deg,var(--brand-orange),#ffb343);color:#102b43}
.nav-btn b{display:grid;place-items:center;width:31px;height:31px;border-radius:10px;font-size:18px;background:rgba(255,255,255,.10)}
.nav-btn[data-page="dashboard"] b{background:rgba(255,181,67,.22)}.nav-btn[data-page="crm"] b{background:rgba(71,176,255,.20)}.nav-btn[data-page="projects"] b{background:rgba(255,174,0,.22)}.nav-btn[data-page="history"] b{background:rgba(168,111,255,.22)}.nav-btn[data-page="calculator"] b{background:rgba(50,186,255,.20)}.nav-btn[data-page="price"] b{background:rgba(69,205,115,.20)}.nav-btn[data-page="electric"] b{background:rgba(255,195,44,.24)}.nav-btn[data-page="finance"] b{background:rgba(55,205,132,.20)}.nav-btn[data-page="plan"] b{background:rgba(108,151,255,.20)}
.icon-label{display:inline-flex;align-items:center;gap:7px}.action-icon{font-size:16px}
html[data-theme="dark"] canvas{filter:saturate(1.08) brightness(1.08)}
@media(max-width:720px){.theme-toggle{width:100%;justify-content:center}.theme-toggle button{flex:1}.actions{gap:7px}.actions .theme-toggle{order:-1}}

/* VoltHome OS 1.8 — AI Content Studio */
.ai-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:18px}.ai-stack{display:grid;gap:18px}.ai-provider-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ai-status{display:flex;align-items:center;gap:9px;padding:11px 13px;border-radius:12px;background:var(--vh-input);border:1px solid var(--vh-line);font-size:13px}.ai-dot{width:10px;height:10px;border-radius:50%;background:#8998a8;box-shadow:0 0 0 4px rgba(137,152,168,.12)}.ai-dot.ok{background:#20b66a;box-shadow:0 0 0 4px rgba(32,182,106,.13)}.ai-dot.busy{background:#f7941d;animation:aiPulse 1s infinite}.ai-dot.bad{background:#ef526f}.ai-pipeline{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.ai-step{padding:10px 7px;text-align:center;border:1px solid var(--vh-line);border-radius:12px;background:var(--vh-input);font-size:12px}.ai-step.active{border-color:#f7941d;box-shadow:0 0 0 3px rgba(247,148,29,.12)}.ai-step.done{border-color:#20b66a}.ai-editor{min-height:210px}.ai-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.ai-history-item{padding:12px;border:1px solid var(--vh-line);border-radius:12px;background:var(--vh-input);cursor:pointer}.ai-history-item:hover{transform:translateY(-1px)}.ai-history-item small{display:block;color:var(--vh-muted);margin-top:5px}.ai-model-list{max-height:170px;overflow:auto;padding:8px;border:1px solid var(--vh-line);border-radius:12px;background:var(--vh-input)}.ai-model-item{display:flex;gap:8px;align-items:center;padding:6px}.ai-log{white-space:pre-wrap;max-height:190px;overflow:auto;font:12px/1.45 Consolas,monospace;background:#081521;color:#d9edf6;padding:12px;border-radius:12px}.ai-key-note{font-size:12px;color:var(--vh-muted)}
@keyframes aiPulse{50%{opacity:.45;transform:scale(.8)}}
@media(max-width:1000px){.ai-layout{grid-template-columns:1fr}.ai-pipeline{grid-template-columns:repeat(2,1fr)}.ai-provider-row,.ai-result-grid{grid-template-columns:1fr}}

.project-detail-modal{
  background:rgba(4,10,20,.78)!important;
}
.project-detail-box{
  width:min(1040px,100%)!important;
  max-height:92vh;
  overflow:auto;
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  border:1px solid var(--vh-line)!important;
}
html[data-theme="dark"] .project-detail-box{
  background:#102538!important;
  color:#eef7fc!important;
  border:1px solid rgba(141,190,221,.18)!important;
}
#projectDetailModal .modal-head{
  position:sticky;
  top:0;
  z-index:8;
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  padding:12px 0;
  border-bottom:1px solid var(--vh-line);
}
html[data-theme="dark"] #projectDetailModal .modal-head{
  background:#102538!important;
  color:#eef7fc!important;
  border-bottom:1px solid rgba(141,190,221,.18);
}
#projectDetailModal .modal-head h3,
#projectDetailModal .modal-head .muted{
  color:var(--vh-text)!important;
}
html[data-theme="dark"] #projectDetailModal .modal-head h3,
html[data-theme="dark"] #projectDetailModal .modal-head .muted{
  color:#eef7fc!important;
}
.project-close-light,
.modal-head .icon-btn{
  width:36px!important;
  height:36px!important;
  border-radius:10px!important;
  border:1px solid rgba(255,189,54,.45)!important;
  background:#ffbd36!important;
  color:#102538!important;
  font-size:22px!important;
  font-weight:800!important;
  box-shadow:0 8px 20px rgba(255,189,54,.22)!important;
  opacity:1!important;
  visibility:visible!important;
}
.project-close-light:hover,
.modal-head .icon-btn:hover{
  filter:brightness(1.06);
}
.project-detail-grid{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:16px;
  align-items:start!important;
}
.project-notes-column,
.project-files-column{
  min-width:0;
  align-self:start!important;
}
.project-notes-field,
.project-files-column > .file-drop{
  margin:0!important;
}
.project-notes-field{
  display:flex;
  flex-direction:column;
}
.project-notes-field .project-notes,
.compact-file-drop{
  box-sizing:border-box!important;
  height:134px!important;
  min-height:134px!important;
  margin:0!important;
}
.project-notes-actions{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin:8px 0 18px;
}
.project-notes-actions .compact-action{
  min-width:0!important;
  width:100%;
  padding:10px 8px!important;
  font-size:13px!important;
  line-height:1.15!important;
  white-space:normal!important;
  text-align:center;
}
.project-journal-block{
  padding-top:16px;
  border-top:1px solid rgba(141,190,221,.18);
}
.project-journal-block .field{
  margin-bottom:10px!important;
}
.project-journal-block > .btn{
  margin-top:4px!important;
  background:#ffbd36!important;
  color:#102538!important;
  border-color:#ffbd36!important;
  font-weight:800!important;
}
.project-journal-block .journal-list{
  margin-top:12px;
}
.compact-file-drop{
  padding:16px!important;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:8px;
  background:#152d42!important;
  color:#eef7fc!important;
  border:1px dashed rgba(141,190,221,.28)!important;
}

.compact-file-drop p{margin:0 0 4px}
.compact-file-drop input[type=file]{width:100%}
.compact-program-wrap{margin:16px 0}
.compact-section-title{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  margin-bottom:8px;
}
.compact-program-list,.compact-file-list{
  display:flex;
  flex-direction:column;
  gap:6px;
}
.compact-doc-row,.compact-file-row{
  width:100%;
  display:grid;
  align-items:center;
  gap:10px;
  grid-template-columns:32px minmax(0,1fr) auto;
  padding:9px 10px;
  border:1px solid rgba(141,190,221,.18);
  border-radius:10px;
  background:#152d42;
  color:#eef7fc;
  text-align:left;
}
.compact-doc-row{cursor:pointer}
.compact-doc-row:hover,.compact-file-row:hover{background:#1a354d}
.compact-doc-icon,.compact-file-icon{font-size:20px;text-align:center}
.compact-doc-main,.compact-file-main{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.compact-doc-main b,.compact-file-main b{
  color:#eef7fc!important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.compact-doc-main small,.compact-file-main small{color:#9db2c2!important}
.compact-doc-open{font-size:12px;font-weight:700;color:#ffbd36}
.compact-file-actions{display:flex;gap:6px;align-items:center}
.compact-file-actions .small-btn{padding:6px 9px}
.compact-delete{width:30px}
.compact-empty{
  text-align:center;
  padding:12px;
  border:1px dashed rgba(141,190,221,.18);
  border-radius:10px;
  color:#9db2c2!important;
}
@media(max-width:860px){
  .project-detail-grid{grid-template-columns:1fr!important}
}
@media(max-width:620px){
  .project-notes-actions{grid-template-columns:1fr}
  .compact-doc-row,.compact-file-row{grid-template-columns:28px minmax(0,1fr)}
  .compact-doc-open,.compact-file-actions{grid-column:2}
}

.action-saved{
  background:#22c55e!important;
  border-color:#22c55e!important;
  color:#07140b!important;
  box-shadow:0 0 0 3px rgba(34,197,94,.22),0 8px 22px rgba(34,197,94,.25)!important;
  transform:translateY(-1px);
}
.compact-file-drop{
  transition:border-color .18s ease,box-shadow .18s ease,background .18s ease;
}
.compact-file-drop.is-uploading{
  border-color:#ffbd36!important;
  box-shadow:0 0 0 3px rgba(255,189,54,.16)!important;
}
.compact-file-drop.upload-success{
  border-color:#22c55e!important;
  box-shadow:0 0 0 3px rgba(34,197,94,.18)!important;
}

html[data-theme="dark"] #crm .data-table tbody tr:hover td,
html[data-theme="dark"] #crmBody tr:hover td{
  background:#152d42!important;
  color:#eef7fc!important;
}
html[data-theme="dark"] #crm .data-table tbody tr:hover td *,
html[data-theme="dark"] #crmBody tr:hover td *{
  color:#eef7fc!important;
}
html[data-theme="dark"] #crm .data-table tbody tr:hover .muted,
html[data-theme="dark"] #crmBody tr:hover .muted{
  color:#9db2c2!important;
}

.price-toolbar .btn{white-space:nowrap}
@media(max-width:720px){
  .price-toolbar{align-items:stretch!important}
  .price-toolbar .btn{width:100%}
}

.price-position-modal{
  z-index:12000;
}
.price-position-box{
  width:min(760px,calc(100vw - 32px))!important;
  max-height:90vh;
  overflow:auto;
}
.price-position-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}
.price-position-grid .field-wide{
  grid-column:1/-1;
}
.price-position-grid textarea{
  resize:vertical;
}
.form-error{
  margin-top:14px;
  padding:10px 12px;
  border-radius:10px;
  background:rgba(239,68,68,.14);
  border:1px solid rgba(239,68,68,.35);
  color:#fecaca;
}
.modal-actions{
  display:flex;
  justify-content:flex-end;
  gap:10px;
  margin-top:18px;
}
.catalog-row.is-hidden{
  opacity:.58;
}
.catalog-row .price-status{
  display:inline-flex;
  margin-left:6px;
  padding:2px 7px;
  border-radius:999px;
  font-size:11px;
  background:rgba(148,163,184,.14);
  color:var(--muted);
}
@media(max-width:680px){
  .price-position-grid{
    grid-template-columns:1fr;
  }
  .price-position-grid .field-wide{
    grid-column:auto;
  }
  .modal-actions{
    flex-direction:column-reverse;
  }
  .modal-actions .btn{
    width:100%;
  }
}

.vh-message-modal{z-index:20000!important}
.vh-message-box{width:min(440px,calc(100vw - 32px))!important;text-align:center;background:var(--vh-surface)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important}
html[data-theme="dark"] .vh-message-box{background:#102538!important;color:#eef7fc!important;border:1px solid rgba(255,189,54,.35)!important}
.vh-message-icon{width:54px;height:54px;margin:0 auto 12px;border-radius:16px;display:grid;place-items:center;background:#ffbd36;color:#102538;font-size:26px;font-weight:900}
.vh-message-text{white-space:pre-line;line-height:1.5;color:var(--vh-text);margin:12px 0 18px}
html[data-theme="dark"] .vh-message-text{color:#c8d7e2}
.material-toolbar{display:flex;gap:8px;flex-wrap:wrap}
.material-toolbar .btn{padding:9px 12px;font-size:12px}
.material-editor-box{width:min(720px,calc(100vw - 32px))!important}
.material-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.material-editor-grid .field-wide{grid-column:1/-1}
.material-catalog-row.is-hidden{opacity:.55}
@media(max-width:720px){.material-editor-grid{grid-template-columns:1fr}.material-editor-grid .field-wide{grid-column:auto}.material-toolbar .btn{width:100%}}

.sidebar{overflow:hidden!important}
.sidebar nav#desktopNav{
  flex:1 1 auto;
  min-height:0;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,189,54,.5) transparent;
}
.sidebar nav#desktopNav::-webkit-scrollbar{width:6px}
.sidebar nav#desktopNav::-webkit-scrollbar-track{background:transparent}
.sidebar nav#desktopNav::-webkit-scrollbar-thumb{
  background:rgba(255,189,54,.5);
  border-radius:999px;
}
.material-db-actions{display:flex;gap:8px;flex-wrap:wrap}
.material-db-filters{margin:14px 0}
.material-db-list{max-height:none!important}
@media(max-width:760px){.material-db-actions .btn{width:100%}}

#materialBrandTabs[hidden]{display:none!important}

.clean-material-filters,
.material-db-filters{
  grid-template-columns:minmax(220px,2fr) minmax(160px,1fr) minmax(150px,1fr)!important;
}
.material-color-badge{
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin-left:6px;
  padding:2px 7px;
  border-radius:999px;
  background:rgba(255,255,255,.08);
  color:var(--muted);
  font-size:11px;
}
#materialDbColor[hidden]{display:none!important}
@media(max-width:800px){
  .clean-material-filters,
  .material-db-filters{grid-template-columns:1fr!important}
}

.material-price-controls{
  display:grid;
  grid-template-columns:minmax(240px,1fr) auto minmax(190px,.6fr);
  gap:12px;
  align-items:end;
  margin:14px 0;
  padding:12px;
  border:1px solid var(--line);
  border-radius:14px;
  background:rgba(255,255,255,.025);
}
.material-price-controls .field{margin:0}
.material-total-box{
  min-height:44px;
  padding:8px 12px;
  border-radius:12px;
  background:rgba(255,189,54,.11);
  border:1px solid rgba(255,189,54,.28);
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.material-total-box span{font-size:11px;color:var(--muted)}
.material-total-box b{font-size:18px;color:#ffbd36}
.material-line-total{font-weight:800;white-space:nowrap}
.material-price-input{width:112px!important}
@media(max-width:850px){
  .material-price-controls{grid-template-columns:1fr}
  .material-price-controls .btn{width:100%}
}

/* v11.2.8 — компактная адаптивная смета материалов */
#price .calc-layout{
  grid-template-columns:minmax(0,1.25fr) minmax(360px,.75fr)!important;
}
#price .card{min-width:0}
#sheetLines{
  max-height:48vh;
  overflow-y:auto;
  overflow-x:hidden;
  padding-right:4px;
}
.material-sheet-line{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 58px 96px 100px 34px!important;
  grid-template-areas:
    "name name name name remove"
    "qty price total comment comment";
  gap:8px!important;
  align-items:center;
  padding:12px 0!important;
}
.material-sheet-line .line-name{
  grid-area:name;
  min-width:0;
}
.material-sheet-line .line-name b{
  display:block;
  overflow-wrap:anywhere;
  line-height:1.35;
}
.material-sheet-line .material-qty{grid-area:qty}
.material-sheet-line .material-price-input{grid-area:price}
.material-sheet-line .material-line-total{
  grid-area:total;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  text-align:right;
  font-size:12px;
}
.material-sheet-line .material-comment{
  grid-area:comment;
  min-width:0;
}
.material-sheet-line .material-remove{
  grid-area:remove;
  align-self:start;
}
.material-sheet-line input{
  min-width:0;
  max-width:100%;
}
.material-price-controls{
  grid-template-columns:minmax(0,1fr)!important;
  align-items:stretch!important;
  gap:10px!important;
}
.material-price-controls .btn{
  width:100%;
  white-space:normal;
  line-height:1.25;
}
.material-total-box{
  width:100%;
  min-width:0;
}
.material-total-box b{
  overflow-wrap:anywhere;
  font-size:20px!important;
}
#price .material-calculation-actions{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(120px,1fr))!important;
  gap:8px!important;
  align-items:stretch!important;
}
#price .material-calculation-actions .btn{
  width:100%!important;
  min-height:42px!important;
  white-space:normal!important;
}
.material-total-box-standalone{margin-top:12px!important;width:100%!important}
@media(max-width:1180px){#price .material-calculation-actions{grid-template-columns:repeat(3,minmax(120px,1fr))!important}}
@media(max-width:760px){#price .material-calculation-actions{grid-template-columns:1fr 1fr!important}}
@media(max-width:1180px){
  #price .calc-layout{grid-template-columns:minmax(0,1fr)!important}
  #sheetLines{max-height:none}
}
@media(max-width:620px){
  .material-sheet-line{
    grid-template-columns:56px minmax(82px,1fr) minmax(82px,1fr) 34px!important;
    grid-template-areas:
      "name name name remove"
      "qty price total total"
      "comment comment comment comment";
  }
}

/* v11.2.9 — окончательная адаптивная строка сметы материалов */
.material-sheet-line{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 36px!important;
  grid-template-areas:
    "name remove"
    "numbers numbers"
    "comment comment"!important;
  gap:10px!important;
  padding:13px 0!important;
  align-items:start!important;
}
.material-sheet-line .line-name{
  grid-area:name;
  min-width:0;
}
.material-sheet-line .line-name b{
  display:block;
  overflow-wrap:anywhere;
  word-break:break-word;
  line-height:1.35;
}
.material-sheet-line .material-remove{
  grid-area:remove;
  justify-self:end;
}
.material-line-numbers{
  grid-area:numbers;
  display:grid;
  grid-template-columns:minmax(80px,.65fr) minmax(110px,1fr) minmax(120px,1fr);
  gap:9px;
  min-width:0;
}
.material-line-field{
  display:grid;
  gap:5px;
  min-width:0;
}
.material-line-field label{
  font-size:10px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.material-line-field input{
  width:100%!important;
  min-width:0!important;
}
.material-line-total-box{
  min-width:0;
  min-height:38px;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:10px;
  background:rgba(255,255,255,.025);
  display:flex;
  align-items:center;
  justify-content:flex-end;
  overflow:hidden;
}
.material-line-total{
  display:block;
  max-width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-weight:800;
  font-size:13px;
}
.material-sheet-line .material-comment-wrap{
  grid-area:comment;
  display:grid;
  gap:5px;
  min-width:0;
}
.material-sheet-line .material-comment-wrap label{
  font-size:10px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.04em;
}
.material-sheet-line .material-comment{
  width:100%!important;
  min-width:0!important;
}
@media(max-width:520px){
  .material-line-numbers{
    grid-template-columns:1fr 1fr;
  }
  .material-line-total-field{
    grid-column:1/-1;
  }
}

/* v11.3.0 — список материалов занимает всю доступную высоту карточки */
#price .calc-layout{
  align-items:stretch!important;
}
#price .calc-layout > .card{
  display:flex;
  flex-direction:column;
  min-height:calc(100vh - 150px);
}
#price .material-catalog-head,
#price .sheet-tabs,
#price .calc-filters{
  flex:0 0 auto;
}
#price .sheet-pane{
  min-height:0;
}
#price .sheet-pane.active{
  display:flex!important;
  flex-direction:column;
  flex:1 1 auto;
  min-height:0;
}
#price #sheetPaneRough .calc-catalog,
#price #sheetPaneClean .calc-catalog{
  flex:1 1 auto;
  min-height:420px;
  max-height:none!important;
  height:auto!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  width:100%;
}
@media(max-width:1180px){
  #price .calc-layout > .card{
    min-height:auto;
  }
  #price #sheetPaneRough .calc-catalog,
  #price #sheetPaneClean .calc-catalog{
    min-height:55vh;
  }
}
@media(max-width:620px){
  #price #sheetPaneRough .calc-catalog,
  #price #sheetPaneClean .calc-catalog{
    min-height:48vh;
  }
}

.user-list-head,.user-row{
  display:grid;
  grid-template-columns:minmax(210px,1.4fr) minmax(130px,.8fr) 110px minmax(145px,.8fr) minmax(170px,.8fr);
  gap:12px;
  align-items:center;
}
.user-list-head{
  padding:10px 12px;
  color:var(--muted);
  font-size:11px;
  text-transform:uppercase;
  border-bottom:1px solid var(--line);
}
.user-row{
  padding:12px;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.user-row:last-child{border-bottom:0}
.user-row small{display:block;color:var(--muted);margin-top:3px}
.user-actions{display:flex;gap:7px;flex-wrap:wrap}
.user-status-active{color:#6de6bd}
.user-status-blocked{color:#ff7890}
.user-editor-box{width:min(680px,calc(100vw - 32px))!important}
.user-editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.check-row{display:flex;align-items:center;gap:9px;padding:10px;border:1px solid var(--line);border-radius:10px}
@media(max-width:900px){
  .user-list-head{display:none}
  .user-row{grid-template-columns:1fr;gap:8px}
}
@media(max-width:650px){.user-editor-grid{grid-template-columns:1fr}}

.top-user-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid var(--line);display:none}
.profile-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:16px}
.profile-card{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}
.profile-avatar-wrap{position:relative;width:150px;height:150px}
.profile-avatar{width:150px;height:150px;border-radius:50%;object-fit:cover;border:2px solid rgba(255,189,54,.45);background:#0b1427}
.profile-avatar-fallback{display:grid;place-items:center;font-size:38px;font-weight:900;color:#ffbd36}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:320px;overflow:auto;padding:8px;border:1px solid var(--line);border-radius:12px}
.permission-item{display:flex;gap:8px;align-items:center;padding:8px;border-radius:9px;background:rgba(255,255,255,.025)}
.permission-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.permission-summary{display:flex;gap:6px;flex-wrap:wrap}
.permission-chip{padding:4px 8px;border-radius:999px;background:rgba(53,243,255,.08);border:1px solid rgba(53,243,255,.18);font-size:11px}
.user-editor-grid .field-wide{grid-column:1/-1}
@media(max-width:760px){.profile-grid{grid-template-columns:1fr}.permission-grid{grid-template-columns:1fr}}

.topbar-clean-actions{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
}
.top-profile-button{
  min-width:250px;
  max-width:360px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.035);
  color:var(--text);
  border-radius:14px;
  padding:8px 12px;
  display:grid;
  grid-template-columns:42px minmax(0,1fr) 18px;
  gap:10px;
  align-items:center;
  text-align:left;
  cursor:pointer;
  transition:.18s ease;
}
.top-profile-button:hover{
  border-color:rgba(255,189,54,.55);
  background:rgba(255,189,54,.08);
  transform:translateY(-1px);
}
.top-profile-avatar-wrap{
  width:42px;
  height:42px;
  position:relative;
  flex:0 0 auto;
}
.top-profile-avatar-wrap .top-user-avatar,
.top-user-avatar-fallback{
  width:42px!important;
  height:42px!important;
  border-radius:50%;
  border:1px solid rgba(255,189,54,.45);
}
.top-profile-avatar-wrap .top-user-avatar{
  object-fit:cover;
  display:none;
}
.top-user-avatar-fallback{
  display:grid;
  place-items:center;
  background:#101d31;
  color:#ffbd36;
  font-size:13px;
  font-weight:900;
}
.top-profile-text{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:2px;
}
.top-profile-text b,
.top-profile-text small{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.top-profile-text b{font-size:13px}
.top-profile-text small{font-size:11px;color:var(--muted)}
.top-profile-arrow{font-size:24px;color:var(--muted);line-height:1}
.profile-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
@media(max-width:900px){
  .topbar{align-items:flex-start}
  .topbar-clean-actions{width:100%;justify-content:space-between;flex-wrap:wrap}
  .top-profile-button{min-width:220px;max-width:100%;flex:1}
}
@media(max-width:620px){
  .top-profile-button{min-width:100%;width:100%}
  .profile-actions{grid-template-columns:1fr!important}
}

/* v11.5.2 — читаемый профиль и полноценная прокрутка левого меню */

/* Профиль пользователя в верхней панели */
.top-profile-button,
.top-profile-button:hover,
.top-profile-button:focus{
  color:#ffffff!important;
}
.top-profile-text b,
#currentUser{
  color:#ffffff!important;
  opacity:1!important;
  font-weight:800!important;
  text-shadow:0 1px 2px rgba(0,0,0,.5);
}
.top-profile-text small,
#currentUserRole{
  color:#c7d3df!important;
  opacity:1!important;
  font-weight:600!important;
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
.top-profile-arrow{
  color:#ffbd36!important;
  opacity:1!important;
  font-weight:900!important;
}
.top-profile-button{
  background:rgba(15,31,49,.94)!important;
  border-color:rgba(255,255,255,.12)!important;
}
.top-profile-button:hover{
  background:rgba(25,47,69,.98)!important;
  border-color:rgba(255,189,54,.58)!important;
}
[data-theme="light"] .top-profile-button{
  background:#ffffff!important;
  border-color:rgba(16,37,56,.18)!important;
}
[data-theme="light"] .top-profile-text b,
[data-theme="light"] #currentUser{
  color:#102538!important;
  text-shadow:none!important;
}
[data-theme="light"] .top-profile-text small,
[data-theme="light"] #currentUserRole{
  color:#536779!important;
  text-shadow:none!important;
}

/* Левая панель: логотип и нижний статус закреплены, прокручивается только меню */
.sidebar{
  height:100vh!important;
  max-height:100vh!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
.sidebar .brand{
  flex:0 0 auto!important;
}
.sidebar nav#desktopNav{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scroll-behavior:smooth;
  padding-right:5px!important;
  scrollbar-width:thin;
  scrollbar-color:rgba(255,189,54,.65) rgba(255,255,255,.04);
}
.sidebar .side-bottom{
  flex:0 0 auto!important;
  position:relative!important;
  bottom:auto!important;
  margin-top:8px!important;
}
.sidebar nav#desktopNav::-webkit-scrollbar{
  width:7px;
}
.sidebar nav#desktopNav::-webkit-scrollbar-track{
  background:rgba(255,255,255,.04);
  border-radius:999px;
}
.sidebar nav#desktopNav::-webkit-scrollbar-thumb{
  background:rgba(255,189,54,.65);
  border-radius:999px;
  border:1px solid rgba(16,37,56,.7);
}
.sidebar nav#desktopNav::-webkit-scrollbar-thumb:hover{
  background:rgba(255,189,54,.9);
}

/* Пункты меню не сжимаются по высоте */
.sidebar nav#desktopNav .nav-btn{
  flex:0 0 auto!important;
}

/* v11.5.3 — полноценный и удобный список разрешений */
.user-editor-box{
  width:min(980px,calc(100vw - 30px))!important;
  max-height:calc(100vh - 30px);
  overflow-y:auto;
}
.user-permissions-field{
  margin-top:4px;
}
.permission-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:8px;
}
.permission-title-row label{
  margin:0!important;
}
.permission-count{
  color:#ffbd36;
  font-size:12px;
  font-weight:800;
  white-space:nowrap;
}
.permission-actions-top{
  margin:0 0 12px!important;
}
.permission-groups{
  display:grid;
  gap:14px;
  max-height:none!important;
  overflow:visible!important;
}
.permission-group{
  border:1px solid var(--line);
  border-radius:14px;
  padding:12px;
  background:rgba(255,255,255,.02);
}
.permission-group-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}
.permission-group-head small{
  display:block;
  color:var(--muted);
  margin-top:3px;
}
.permission-group-buttons{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
.permission-grid-full{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
}
.permission-card{
  position:relative;
  display:grid;
  grid-template-columns:28px minmax(0,1fr);
  gap:9px;
  align-items:center;
  min-height:68px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:11px;
  background:rgba(255,255,255,.025);
  cursor:pointer;
  transition:.16s ease;
}
.permission-card:hover{
  border-color:rgba(255,189,54,.5);
  background:rgba(255,189,54,.05);
}
.permission-card.is-selected{
  border-color:rgba(255,189,54,.72);
  background:rgba(255,189,54,.11);
}
.permission-card input{
  position:absolute;
  opacity:0;
  pointer-events:none;
}
.permission-check{
  width:26px;
  height:26px;
  border:1px solid var(--line);
  border-radius:7px;
  display:grid;
  place-items:center;
  color:transparent;
  font-weight:900;
  background:rgba(0,0,0,.12);
}
.permission-card.is-selected .permission-check{
  background:#ffbd36;
  border-color:#ffbd36;
  color:#102538;
}
.permission-card-text{
  min-width:0;
}
.permission-card-text b{
  display:block;
  line-height:1.25;
}
.permission-card-text small{
  display:block;
  color:var(--muted);
  font-size:10px;
  line-height:1.3;
  margin-top:3px;
}
.permission-card:has(input:disabled){
  cursor:default;
  opacity:.86;
}
@media(max-width:900px){
  .permission-grid-full{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .permission-grid-full{grid-template-columns:1fr}
  .permission-group-head{align-items:flex-start;flex-direction:column}
  .permission-group-buttons{justify-content:flex-start}
  .permission-title-row{align-items:flex-start;flex-direction:column}
}

.project-files-toolbar{
  display:grid;
  grid-template-columns:minmax(180px,1fr) 150px auto;
  gap:8px;
  margin-bottom:10px;
}
.project-files-toolbar input,.project-files-toolbar select{
  min-width:0;
  background:var(--input-bg,#091426);
  border:1px solid var(--line);
  color:var(--text);
  border-radius:10px;
  padding:9px 10px;
}
.document-version{
  display:inline-flex;
  padding:2px 6px;
  margin-left:6px;
  border-radius:999px;
  font-size:10px;
  background:rgba(255,189,54,.12);
  color:#ffbd36;
}
.favorite-star{cursor:pointer;font-size:17px;opacity:.45}
.favorite-star.active{opacity:1;color:#ffbd36}
@media(max-width:760px){
  .project-files-toolbar{grid-template-columns:1fr}
}

/* v11.6.1 — единый интерфейс ядра приложения */
.project-files-toolbar.compact-toolbar{
  grid-template-columns:minmax(110px,160px) 120px minmax(130px,165px)!important;
  justify-content:end;
  align-items:center;
  gap:7px!important;
}
.project-files-toolbar.compact-toolbar input,
.project-files-toolbar.compact-toolbar select{
  height:38px;
  padding:7px 9px!important;
  font-size:12px;
}
.compact-toolbar-btn{
  height:38px;
  min-height:38px;
  padding:7px 11px!important;
  font-size:12px!important;
}
.project-section-title{
  margin-bottom:10px;
  color:var(--muted);
  font-size:12px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.04em;
}
.project-journal-block{
  margin-top:14px;
}
.project-files-column .compact-file-list{
  display:flex!important;
  flex-direction:column!important;
  gap:6px!important;
}
.project-files-column .compact-file-row{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr) auto!important;
  gap:9px!important;
  align-items:center!important;
  min-height:52px!important;
  padding:8px 10px!important;
  border:1px solid var(--line)!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.025)!important;
}
.compact-file-main{
  min-width:0!important;
}
.compact-file-main b,
.compact-file-main small{
  display:block!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.compact-file-actions{
  display:flex!important;
  gap:5px!important;
  align-items:center!important;
}
.compact-file-actions .small-btn{
  min-width:auto!important;
  padding:6px 8px!important;
  font-size:11px!important;
}
#projectProgramDocuments .compact-doc-row{
  display:grid!important;
  grid-template-columns:34px minmax(0,1fr) auto!important;
  gap:9px!important;
  align-items:center!important;
  width:100%!important;
  padding:8px 10px!important;
  min-height:52px!important;
  border:1px solid var(--line)!important;
  border-radius:10px!important;
  background:rgba(255,255,255,.025)!important;
  text-align:left!important;
}
.compact-doc-main{
  min-width:0!important;
}
.compact-doc-main b,
.compact-doc-main small{
  display:block!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.unified-card-head{
  align-items:center!important;
  margin-bottom:10px;
}
.module-action-bar{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  padding:10px;
  margin-bottom:12px;
  border:1px solid var(--line);
  border-radius:13px;
  background:rgba(255,255,255,.02);
}
.action-group{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  align-items:flex-end;
  padding-right:10px;
  border-right:1px solid var(--line);
}
.action-group:last-child{
  border-right:0;
  padding-right:0;
}
.action-group-label{
  width:100%;
  color:var(--muted);
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.05em;
}
.action-group .btn,
.action-group select{
  height:38px;
  min-height:38px;
  padding:7px 11px!important;
  font-size:12px!important;
}
.action-group select{
  min-width:160px;
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--input-bg,#091426);
  color:var(--text);
}
#worksCatalogSection .calc-filters{
  grid-template-columns:minmax(180px,1fr) 190px!important;
  margin-bottom:10px!important;
}
#worksCatalogSection .calc-filters input,
#worksCatalogSection .calc-filters select{
  height:38px!important;
  padding:7px 10px!important;
  font-size:12px!important;
}
.material-action-panel{
  display:grid;
  gap:10px;
  margin-top:12px;
}
.material-action-group{
  padding:11px;
  border:1px solid var(--line);
  border-radius:13px;
  background:rgba(255,255,255,.025);
}
.material-action-row{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:8px;
  margin-top:7px;
}
.material-variant-row{
  grid-template-columns:minmax(150px,.8fr) minmax(180px,1.2fr);
}
.material-action-group .btn,
.material-action-group select{
  width:100%;
  min-height:40px;
}
.material-action-group select{
  border:1px solid var(--line);
  border-radius:10px;
  background:var(--input-bg,#091426);
  color:var(--text);
  padding:8px 10px;
}
.material-save-project-btn{
  margin-top:7px;
}
@media(max-width:900px){
  .project-files-toolbar.compact-toolbar{
    grid-template-columns:1fr 120px!important;
  }
  .project-files-toolbar.compact-toolbar .compact-toolbar-btn{
    grid-column:1/-1;
  }
  .module-action-bar{
    display:grid;
    grid-template-columns:1fr;
  }
  .action-group{
    border-right:0;
    padding-right:0;
    padding-bottom:9px;
    border-bottom:1px solid var(--line);
  }
  .action-group:last-child{
    border-bottom:0;
    padding-bottom:0;
  }
}
@media(max-width:620px){
  .project-files-toolbar.compact-toolbar{
    grid-template-columns:1fr!important;
  }
  .material-action-row,
  .material-variant-row{
    grid-template-columns:1fr!important;
  }
  #worksCatalogSection .calc-filters{
    grid-template-columns:1fr!important;
  }
}

/* v11.6.2 — единые действия и избранное */
#calcCatalog .catalog-row,
#sheetCatalog .catalog-row,
#cleanMaterialCatalog .catalog-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 70px 82px 90px 38px 38px!important;
  gap:9px!important;
  align-items:center!important;
}
.catalog-row .catalog-main{
  min-width:0;
}
.catalog-row .catalog-main b,
.catalog-row .catalog-main small{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.catalog-unit{
  text-align:center;
  color:var(--muted);
  font-size:12px;
}
.catalog-price{
  text-align:right;
  font-weight:800;
  white-space:nowrap;
}
.catalog-favorite-btn,
.catalog-add-btn{
  width:36px!important;
  height:36px!important;
  min-width:36px!important;
  padding:0!important;
  border-radius:10px!important;
  display:grid!important;
  place-items:center!important;
}
.catalog-favorite-btn{
  color:#74879a;
  font-size:18px!important;
}
.catalog-favorite-btn.active{
  color:#ffbd36!important;
  border-color:rgba(255,189,54,.6)!important;
  background:rgba(255,189,54,.09)!important;
}
.catalog-add-btn{
  font-size:18px!important;
  font-weight:900!important;
}
.material-filters-with-favorite{
  grid-template-columns:minmax(180px,1fr) minmax(150px,210px) 130px!important;
}
.clean-material-filters{
  grid-template-columns:minmax(180px,1fr) minmax(140px,190px) minmax(130px,170px) 130px!important;
}
.favorite-filter-btn{
  min-height:38px!important;
  height:38px!important;
  padding:7px 10px!important;
  font-size:12px!important;
}
.favorite-filter-btn.active{
  color:#102538!important;
  background:#ffbd36!important;
  border-color:#ffbd36!important;
}
@media(max-width:900px){
  #calcCatalog .catalog-row,
  #sheetCatalog .catalog-row,
  #cleanMaterialCatalog .catalog-row{
    grid-template-columns:minmax(0,1fr) 60px 76px 82px 36px 36px!important;
  }
}
@media(max-width:700px){
  #calcCatalog .catalog-row,
  #sheetCatalog .catalog-row,
  #cleanMaterialCatalog .catalog-row{
    grid-template-columns:minmax(0,1fr) 70px 38px 38px!important;
    grid-template-areas:
      "main main fav add"
      "unit qty price price";
  }
  .catalog-main{grid-area:main}
  .catalog-unit{grid-area:unit}
  .catalog-qty{grid-area:qty}
  .catalog-price{grid-area:price}
  .catalog-favorite-btn{grid-area:fav}
  .catalog-add-btn{grid-area:add}
  .material-filters-with-favorite,
  .clean-material-filters{
    grid-template-columns:1fr!important;
  }
}

/* v11.7.0 — Клиенты 100% */
.client-toolbar{align-items:flex-end}
.client-toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.client-toolbar-actions .search{min-width:300px}
.client-toolbar-actions select{
  min-height:42px;padding:8px 10px;border-radius:10px;border:1px solid var(--line);
  background:var(--input-bg,#091426);color:var(--text)
}
.client-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.client-table-wrap tbody tr{cursor:pointer}
.client-table-wrap tbody tr:hover{background:rgba(53,243,255,.05)}
.client-contact-lines{display:grid;gap:3px}
.client-contact-lines small{color:var(--muted)}
.client-address-preview{max-width:260px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.client-detail-box{width:min(1180px,calc(100vw - 28px))!important;max-height:calc(100vh - 28px);overflow-y:auto}
.client-detail-layout{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:14px}
.client-detail-main,.client-detail-side{display:grid;gap:12px;align-content:start}
.client-info-card,.client-section-card{
  border:1px solid var(--line);border-radius:14px;padding:13px;background:rgba(255,255,255,.025)
}
.client-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.client-info-grid div{padding:10px;border-radius:10px;background:rgba(255,255,255,.025)}
.client-info-grid small{display:block;color:var(--muted);margin-bottom:4px}
.client-info-grid b{overflow-wrap:anywhere}
.client-detail-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.client-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.client-section-head h4{margin:0}
.client-compact-list{display:grid;gap:7px}
.client-compact-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:center;
  padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02)
}
.client-compact-row b,.client-compact-row small{display:block}
.client-compact-row small{color:var(--muted);margin-top:2px}
.client-row-actions{display:flex;gap:5px}
.client-interactions-list{display:grid;gap:8px;max-height:520px;overflow-y:auto;padding-right:4px}
.client-interaction{
  padding:10px;border-left:3px solid #ffbd36;border-radius:8px;background:rgba(255,255,255,.025)
}
.client-interaction-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px}
.client-interaction small{display:block;color:var(--muted);margin-top:5px}
@media(max-width:900px){
  .client-detail-layout{grid-template-columns:1fr}
  .client-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:650px){
  .client-toolbar-actions{width:100%;display:grid;grid-template-columns:1fr}
  .client-toolbar-actions .search{min-width:0;width:100%}
  .client-info-grid{grid-template-columns:1fr}
}

.admin-profile-box{width:min(920px,calc(100vw - 28px))!important;max-height:calc(100vh - 28px);overflow-y:auto}
.admin-profile-body{display:grid;gap:14px;padding:4px 2px 10px}
.admin-profile-hero{
  display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;
  padding:14px 16px;border:1px solid var(--line);border-radius:14px;
  background:linear-gradient(135deg,rgba(247,148,29,.12),rgba(255,255,255,.03) 42%,rgba(8,32,49,.45))
}
.admin-profile-avatar{
  width:58px;height:58px;border-radius:16px;display:grid;place-items:center;
  font-weight:800;font-size:18px;letter-spacing:.02em;color:#08111c;
  background:linear-gradient(145deg,#ffbd36,#f7941d);border:1px solid rgba(255,255,255,.18)
}
.admin-profile-hero-main{min-width:0}
.admin-profile-hero-main b{display:block;font-size:18px;line-height:1.2;overflow-wrap:anywhere}
.admin-profile-hero-main small{display:block;color:var(--muted);margin-top:4px;overflow-wrap:anywhere}
.admin-profile-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.admin-profile-badge{
  display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;
  font-size:11px;font-weight:700;border:1px solid rgba(132,178,210,.24);background:rgba(8,32,49,.55);color:#e8f3fa
}
.admin-profile-badge.is-ok{border-color:rgba(72,199,116,.45);color:#b9f0cb;background:rgba(34,120,68,.22)}
.admin-profile-badge.is-warn{border-color:rgba(247,148,29,.5);color:#ffd7a8;background:rgba(247,148,29,.16)}
.admin-profile-badge.is-bad{border-color:rgba(220,80,80,.45);color:#ffc2c2;background:rgba(140,40,40,.25)}
.admin-profile-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,.8fr);gap:12px;align-items:start}
.admin-profile-card{
  border:1px solid var(--line);border-radius:14px;padding:13px;background:rgba(255,255,255,.025)
}
.admin-profile-card h4{margin:0 0 10px;font-size:14px}
.admin-profile-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.admin-profile-stat{
  padding:10px 11px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(132,178,210,.12)
}
.admin-profile-stat small{display:block;color:var(--muted);margin-bottom:4px;font-size:11px}
.admin-profile-stat b{display:block;overflow-wrap:anywhere;font-size:13px}
.admin-profile-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.admin-profile-form .field{margin:0}
.admin-profile-kpi{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.admin-profile-kpi .admin-profile-stat{min-height:68px}
.admin-profile-list{display:grid;gap:7px}
.admin-profile-row{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;
  padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02)
}
.admin-profile-row b,.admin-profile-row small{display:block}
.admin-profile-row small{color:var(--muted);margin-top:2px}
.admin-profile-empty{padding:12px;border-radius:10px;border:1px dashed rgba(132,178,210,.28);color:var(--muted);font-size:13px}
.admin-profile-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding-top:2px}
.admin-profile-actions .btn.primary{min-width:160px}
@media(max-width:820px){
  .admin-profile-layout{grid-template-columns:1fr}
  .admin-profile-hero{grid-template-columns:auto minmax(0,1fr)}
}
@media(max-width:650px){
  .admin-profile-grid,.admin-profile-form,.admin-profile-kpi{grid-template-columns:1fr}
  .admin-profile-actions{justify-content:stretch}
  .admin-profile-actions .btn{width:100%}
}

.client-editor-box,.project-editor-box{width:min(900px,calc(100vw - 30px))!important}
.client-editor-grid,.project-editor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.field-wide{grid-column:1/-1}
.inline-add{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:7px}
.project-filter-bar{
  display:grid;grid-template-columns:minmax(220px,1.5fr) 160px 160px minmax(190px,1fr) auto;
  gap:8px;margin-bottom:14px
}
.project-filter-bar input,.project-filter-bar select{
  min-height:40px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--input-bg,#091426);color:var(--text)
}
.project-kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(290px,1fr);gap:12px;overflow-x:auto;padding-bottom:10px}
.kanban-column{min-width:290px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.018);padding:10px}
.kanban-column-head{display:flex;justify-content:space-between;align-items:center;padding:4px 4px 10px}
.kanban-column-head h3{margin:0;font-size:14px}
.kanban-count{padding:3px 8px;border-radius:999px;background:rgba(255,189,54,.12);color:#ffbd36;font-size:11px}
.kanban-cards{display:grid;gap:9px}
.kanban-card{border:1px solid var(--line);border-radius:12px;padding:11px;background:var(--vh-surface,#102538);cursor:pointer}
.kanban-card:hover{border-color:rgba(255,189,54,.55)}
.kanban-card-head{display:flex;justify-content:space-between;gap:8px}
.kanban-card h4{margin:0 0 4px;font-size:14px}
.kanban-meta{display:grid;gap:5px;margin-top:9px;font-size:12px;color:var(--muted)}
.kanban-deadline.overdue{color:#ff7890;font-weight:800}
.kanban-deadline.today{color:#ffbd36;font-weight:800}
.kanban-task{padding:7px 8px;border-radius:8px;background:rgba(255,255,255,.03)}
.kanban-actions{display:flex;gap:6px;margin-top:10px}
@media(max-width:900px){.project-filter-bar{grid-template-columns:1fr 1fr}.project-filter-bar button{grid-column:1/-1}}
@media(max-width:650px){.client-editor-grid,.project-editor-grid{grid-template-columns:1fr}.field-wide{grid-column:auto}.project-filter-bar{grid-template-columns:1fr}}

/* v11.7.3 — единая цветовая схема раздела «Объекты» */
#projects .project-filter-bar,
#projects .kanban-column,
#projects .kanban-card{
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
  box-shadow:var(--vh-shadow)!important;
}

#projects .project-filter-bar{
  padding:12px;
  border:1px solid var(--vh-line)!important;
  border-radius:14px;
}

#projects .project-filter-bar input,
#projects .project-filter-bar select{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

#projects .kanban-column{
  background:var(--vh-surface)!important;
}

#projects .kanban-card{
  background:var(--vh-surface-2)!important;
}

#projects .kanban-card:hover{
  background:var(--vh-surface)!important;
  border-color:rgba(255,189,54,.55)!important;
}

#projects .kanban-column-head h3,
#projects .kanban-card h4,
#projects .kanban-card b{
  color:var(--vh-text)!important;
}

#projects .kanban-meta,
#projects .kanban-card .muted,
#projects .kanban-column .muted{
  color:var(--vh-muted)!important;
}

#projects .kanban-task{
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  border:1px solid var(--vh-line)!important;
}

#projects .progress{
  background:rgba(141,190,221,.15)!important;
}

html[data-theme="light"] #projects .kanban-card,
html[data-theme="light"] #projects .kanban-column,
html[data-theme="light"] #projects .project-filter-bar{
  background:#ffffff!important;
}

html[data-theme="light"] #projects .kanban-card{
  background:#f7fafc!important;
}

html[data-theme="dark"] #projects .kanban-card{
  background:#152d42!important;
}

html[data-theme="dark"] #projects .kanban-column,
html[data-theme="dark"] #projects .project-filter-bar{
  background:#102538!important;
}

/* v11.7.4 — единая цветовая тема форм, фильтров и статусов */

/* Общий стандарт полей внутри рабочих разделов */
#crm input,
#crm select,
#projects input,
#projects select,
#calculator input,
#calculator select,
#calculator textarea,
#price input,
#price select,
#price textarea,
#projectDetailModal input,
#projectDetailModal select,
#projectDetailModal textarea,
#clientEditorModal input,
#clientEditorModal select,
#clientEditorModal textarea,
#projectEditorModal input,
#projectEditorModal select,
#projectEditorModal textarea{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border:1px solid var(--vh-line)!important;
  box-shadow:none!important;
  opacity:1!important;
  color-scheme:light;
}
html[data-theme="dark"] #crm input,
html[data-theme="dark"] #crm select,
html[data-theme="dark"] #projects input,
html[data-theme="dark"] #projects select,
html[data-theme="dark"] #calculator input,
html[data-theme="dark"] #calculator select,
html[data-theme="dark"] #calculator textarea,
html[data-theme="dark"] #price input,
html[data-theme="dark"] #price select,
html[data-theme="dark"] #price textarea,
html[data-theme="dark"] #projectDetailModal input,
html[data-theme="dark"] #projectDetailModal select,
html[data-theme="dark"] #projectDetailModal textarea,
html[data-theme="dark"] #clientEditorModal input,
html[data-theme="dark"] #clientEditorModal select,
html[data-theme="dark"] #clientEditorModal textarea,
html[data-theme="dark"] #projectEditorModal input,
html[data-theme="dark"] #projectEditorModal select,
html[data-theme="dark"] #projectEditorModal textarea{
  color-scheme:dark;
}

html[data-theme="light"] #crm input,
html[data-theme="light"] #crm select,
html[data-theme="light"] #projects input,
html[data-theme="light"] #projects select,
html[data-theme="light"] #calculator input,
html[data-theme="light"] #calculator select,
html[data-theme="light"] #calculator textarea,
html[data-theme="light"] #price input,
html[data-theme="light"] #price select,
html[data-theme="light"] #price textarea,
html[data-theme="light"] #projectDetailModal input,
html[data-theme="light"] #projectDetailModal select,
html[data-theme="light"] #projectDetailModal textarea,
html[data-theme="light"] #clientEditorModal input,
html[data-theme="light"] #clientEditorModal select,
html[data-theme="light"] #clientEditorModal textarea,
html[data-theme="light"] #projectEditorModal input,
html[data-theme="light"] #projectEditorModal select,
html[data-theme="light"] #projectEditorModal textarea{
  color-scheme:light;
}

/* Placeholder */
#crm input::placeholder,
#projects input::placeholder,
#calculator input::placeholder,
#calculator textarea::placeholder,
#price input::placeholder,
#price textarea::placeholder,
#projectDetailModal input::placeholder,
#projectDetailModal textarea::placeholder{
  color:var(--vh-muted)!important;
  opacity:.82!important;
}

/* Выпадающие списки: явный фон и читаемый текст */
#crm select option,
#projects select option,
#calculator select option,
#price select option,
#projectDetailModal select option,
#clientEditorModal select option,
#projectEditorModal select option{
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
}

/* Фильтр статуса клиентов */
#clientStatusFilter{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

/* Канбан объектов: статус больше не выглядит белым кругом */
#projects .kanban-card .status{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-width:auto!important;
  width:auto!important;
  height:auto!important;
  padding:5px 9px!important;
  border-radius:999px!important;
  font-size:11px!important;
  line-height:1.2!important;
  white-space:nowrap!important;
  background:rgba(255,189,54,.12)!important;
  color:#ffbd36!important;
  border:1px solid rgba(255,189,54,.32)!important;
  box-shadow:none!important;
}

#projects .kanban-card .status.s-win{
  background:rgba(109,230,189,.12)!important;
  color:#6de6bd!important;
  border-color:rgba(109,230,189,.32)!important;
}
#projects .kanban-card .status.s-lost{
  background:rgba(255,120,144,.12)!important;
  color:#ff7890!important;
  border-color:rgba(255,120,144,.32)!important;
}
#projects .kanban-card .status.s-new{
  background:rgba(53,243,255,.10)!important;
  color:#7cecf4!important;
  border-color:rgba(53,243,255,.25)!important;
}

/* Карточка объекта: поиск и сортировка */
#projectFileSearch,
#projectFileSort{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

/* Расчёт работ: шаблон, комментарии, проценты и все метаданные */
#estimateTemplateSelect,
#estimateProjectSelect,
#estimateNumber,
#estimateClient,
#estimatePhone,
#estimateObject,
#estimateNote,
#estimateDiscountType,
#estimateDiscount,
#calculator .qty-input,
#calculator .price-input,
#calculator .discount-input{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

#calculator .estimate-total,
#calculator .total-line,
#calculator .discount-controls{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

/* Смета материалов: комментарии, доставка, помещения, особенности, варианты */
#sheetProjectSelect,
#sheetNumber,
#sheetClient,
#sheetPhone,
#sheetObject,
#sheetNote,
#materialDocumentMode,
#materialVariantSelect,
#price .material-comment,
#price .material-price-input,
#price .material-qty,
#price .qty-input,
#price .price-input{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

#price .material-action-group,
#price .material-price-controls,
#price .material-total-box,
#price .estimate-total,
#price .total-line,
#price .material-comment-wrap,
#price .material-line-field{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

/* Фильтры черновых и чистовых материалов */
#sheetSearch,
#sheetCategory,
#cleanMaterialSearch,
#cleanMaterialCategory,
#cleanMaterialColor,
#roughFavoriteFilterBtn,
#finishFavoriteFilterBtn{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

#roughFavoriteFilterBtn.active,
#finishFavoriteFilterBtn.active{
  background:#ffbd36!important;
  color:#102538!important;
  border-color:#ffbd36!important;
}

/* Состояния фокуса */
#crm input:focus,
#crm select:focus,
#projects input:focus,
#projects select:focus,
#calculator input:focus,
#calculator select:focus,
#calculator textarea:focus,
#price input:focus,
#price select:focus,
#price textarea:focus,
#projectDetailModal input:focus,
#projectDetailModal select:focus,
#projectDetailModal textarea:focus{
  outline:none!important;
  border-color:rgba(255,189,54,.72)!important;
  box-shadow:0 0 0 3px rgba(255,189,54,.10)!important;
}

/* Светлая тема */
html[data-theme="light"] #projects .kanban-card .status.s-new{
  color:#0c7280!important;
}
html[data-theme="light"] #projects .kanban-card .status{
  color:#8a5a00!important;
}

/* v11.8.0 — завершение модуля «Объекты» */
.project-toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.project-alert-btn.has-alert{
  color:#ff7890!important;
  border-color:rgba(255,120,144,.45)!important;
  background:rgba(255,120,144,.08)!important;
}
.project-drag-hint{
  margin:-4px 0 10px;
  color:var(--vh-muted);
  font-size:11px;
}
.kanban-column{
  transition:border-color .15s ease,background .15s ease,transform .15s ease;
}
.kanban-column.drag-over{
  border-color:#ffbd36!important;
  background:rgba(255,189,54,.07)!important;
  transform:translateY(-2px);
}
.kanban-card[draggable="true"]{
  user-select:none;
}
.kanban-card.dragging{
  opacity:.45;
  transform:rotate(1deg) scale(.98);
}
.kanban-card .drag-handle{
  cursor:grab;
  color:var(--vh-muted);
  font-size:16px;
  line-height:1;
}
.kanban-card .drag-handle:active{cursor:grabbing}
.project-deadline-badge{
  display:inline-flex;
  align-items:center;
  gap:5px;
  width:max-content;
  padding:4px 7px;
  border-radius:8px;
  border:1px solid var(--vh-line);
  background:var(--vh-surface);
}
.project-deadline-badge.overdue{
  color:#ff7890!important;
  border-color:rgba(255,120,144,.35)!important;
  background:rgba(255,120,144,.07)!important;
}
.project-deadline-badge.today{
  color:#ffbd36!important;
  border-color:rgba(255,189,54,.35)!important;
  background:rgba(255,189,54,.07)!important;
}
.project-history-modal .modal-box{
  width:min(820px,calc(100vw - 30px))!important;
  max-height:calc(100vh - 30px);
  overflow-y:auto;
}
.project-history-list{display:grid;gap:8px}
.project-history-row{
  padding:10px 12px;
  border-left:3px solid #ffbd36;
  border-radius:9px;
  background:var(--vh-surface-2);
}
.project-history-row small{
  display:block;
  margin-top:4px;
  color:var(--vh-muted);
}
@media(max-width:650px){
  .project-toolbar-actions{width:100%;display:grid;grid-template-columns:1fr}
}

/* v11.9.0 — релизная доводка расчётов */
.estimate-save-state{
  margin-top:8px;
  padding:6px 9px;
  border-radius:9px;
  font-size:11px;
  color:#6de6bd;
  border:1px solid rgba(109,230,189,.24);
  background:rgba(109,230,189,.06);
}
.estimate-save-state.saving{color:#ffbd36;border-color:rgba(255,189,54,.28);background:rgba(255,189,54,.07)}
.estimate-save-state.error{color:#ff7890;border-color:rgba(255,120,144,.28);background:rgba(255,120,144,.07)}
.estimate-row.invalid-row{border-color:rgba(255,120,144,.58)!important;background:rgba(255,120,144,.05)!important}
.estimate-validation-note{font-size:11px;color:#ff7890;margin-top:5px}

/* v11.10.0 — смета материалов: релизная доводка */
.material-sheet-line.invalid-row{
  border-color:rgba(255,120,144,.58)!important;
  background:rgba(255,120,144,.05)!important;
}
.material-validation-note{
  margin-top:5px;
  color:#ff7890;
  font-size:11px;
}
.material-variant-row{
  grid-template-columns:minmax(150px,.75fr) minmax(180px,1fr) minmax(150px,.75fr)!important;
}
.material-comparison{
  display:grid;
  gap:8px;
  margin-top:10px;
}
.material-comparison-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 110px 130px;
  gap:8px;
  padding:9px 10px;
  border:1px solid var(--vh-line);
  border-radius:10px;
  background:var(--vh-surface-2);
}
@media(max-width:700px){
  .material-variant-row,
  .material-comparison-row{
    grid-template-columns:1fr!important;
  }
}

/* v11.11.0 — производительность, фоновые операции и восстановление */
.global-operation-indicator{
  display:flex;
  align-items:center;
  gap:7px;
  min-height:36px;
  padding:7px 10px;
  border:1px solid rgba(255,189,54,.30);
  border-radius:10px;
  background:rgba(255,189,54,.07);
  color:#ffbd36;
  font-size:11px;
  font-weight:700;
}
.global-operation-spinner{
  width:14px;height:14px;border-radius:50%;
  border:2px solid rgba(255,189,54,.25);
  border-top-color:#ffbd36;
  animation:vhSpin .75s linear infinite;
}
@keyframes vhSpin{to{transform:rotate(360deg)}}
.error-log-box{width:min(900px,calc(100vw - 30px))!important;max-height:calc(100vh - 30px);overflow:auto}
.error-log-actions{display:flex;gap:8px;margin-bottom:12px}
.error-log-list{display:grid;gap:8px}
.error-log-row{
  padding:10px 12px;
  border-left:3px solid #ff7890;
  border-radius:9px;
  background:var(--vh-surface-2);
}
.error-log-row b,.error-log-row small{display:block}
.error-log-row small{margin-top:5px;color:var(--vh-muted)}
.performance-hidden{content-visibility:auto;contain-intrinsic-size:120px}

/* v11.12.0 — читаемые расчёты, материалы и конструктор щита */
#calculator .estimate-row,
#price .material-sheet-line,
#calculator .estimate-total,
#price .material-action-group,
#price .material-total-box{
  border:1px solid var(--vh-line)!important;
  border-radius:14px!important;
  background:var(--vh-surface-2)!important;
}
#calculator .estimate-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 82px 110px 38px!important;
  gap:10px!important;
  align-items:center!important;
  padding:11px 12px!important;
  margin-bottom:7px!important;
}
#calculator .estimate-row input,
#price .material-sheet-line input{
  min-height:40px!important;
  border-radius:10px!important;
}
#calculator .estimate-total,
#price .material-summary,
#price .material-action-panel{
  overflow:hidden;
  border-radius:14px!important;
}
#price .material-sheet-line{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 38px!important;
  gap:10px!important;
  padding:12px!important;
  margin-bottom:9px!important;
}
#price .material-line-numbers{
  grid-column:1/-1!important;
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:9px!important;
}
#price .material-comment-wrap{display:none!important}
#price .material-sheet-line .material-remove{
  grid-column:2!important;
  grid-row:1!important;
}
#price .material-line-field{
  border-radius:10px!important;
  overflow:hidden!important;
}
#price .material-line-total-box{
  min-height:40px;
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding:8px 10px;
}
.electric-page-head{
  display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:14px
}
.electric-head-actions{display:flex;gap:8px;flex-wrap:wrap}
.panel-designer-layout{
  display:grid;
  grid-template-columns:minmax(310px,.75fr) minmax(520px,1.35fr);
  gap:14px;
  align-items:start;
}
.panel-left-column{display:grid;gap:14px}
.panel-settings-card,.equipment-catalog-card,.panel-workspace-card,.panel-equipment-list-card{
  border-radius:16px!important;
  overflow:hidden;
}
.panel-settings-grid,.compact-equipment-form{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px
}
.panel-settings-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.panel-workspace-card{grid-row:span 2}
.panel-equipment-list-card{grid-column:1/-1}
.panel-measure-width{
  margin:4px 36px 8px;
  border-top:1px solid rgba(255,189,54,.65);
  text-align:center;
  height:18px;
}
.panel-measure-width span{
  position:relative;top:-10px;padding:0 9px;background:var(--vh-surface);color:#ffbd36;font-weight:800
}
.panel-workspace-wrap{display:grid;grid-template-columns:32px minmax(0,1fr);gap:8px;align-items:stretch}
.panel-measure-height{
  border-left:1px solid rgba(255,189,54,.65);
  display:flex;align-items:center;justify-content:center;
  margin:14px 0;
}
.panel-measure-height span{
  writing-mode:vertical-rl;transform:rotate(180deg);
  padding:8px 0;background:var(--vh-surface);color:#ffbd36;font-weight:800
}
.panel-canvas{
  position:relative;
  width:100%;
  min-height:520px;
  max-height:72vh;
  overflow:auto;
  padding:18px;
  border:1px solid var(--vh-line);
  border-radius:15px;
  background:
    linear-gradient(rgba(141,190,221,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(141,190,221,.06) 1px,transparent 1px),
    var(--vh-input);
  background-size:18px 18px;
}
.panel-board{
  position:relative!important;
  display:block!important;
  margin:auto!important;
  min-width:260px;
  min-height:360px;
  border:10px solid #6f7d88!important;
  border-radius:18px!important;
  background:
    linear-gradient(rgba(0,0,0,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,0,0,.08) 1px,transparent 1px),
    #cbd1d5!important;
  background-size:18px 18px!important;
  box-shadow:inset 0 0 0 3px #303b43,0 14px 30px rgba(0,0,0,.35)!important;
  overflow:hidden;
}
.panel-device{
  position:absolute;
  min-width:40px;
  min-height:58px;
  padding:6px 5px;
  border:1px solid #57636d;
  border-radius:7px;
  background:linear-gradient(180deg,#f5f6f6,#c7ced2);
  color:#111c23;
  box-shadow:0 3px 8px rgba(0,0,0,.30);
  cursor:grab;
  user-select:none;
  overflow:hidden;
}
.panel-device:active{cursor:grabbing}
.panel-device b,.panel-device small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.panel-device b{font-size:10px}
.panel-device small{font-size:8px;color:#3a4750}
.panel-device-selected{outline:3px solid #ffbd36;outline-offset:1px}
.panel-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:12px}
.panel-equipment-row{
  display:grid;grid-template-columns:minmax(0,1fr) 90px 110px auto;gap:9px;align-items:center;
  padding:10px 11px;margin-bottom:7px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface-2)
}
@media(max-width:1050px){
  .panel-designer-layout{grid-template-columns:1fr}
  .panel-workspace-card{grid-row:auto}
  .panel-equipment-list-card{grid-column:auto}
}
@media(max-width:700px){
  .electric-page-head{align-items:flex-start;flex-direction:column}
  .panel-settings-grid,.compact-equipment-form{grid-template-columns:1fr}
  .panel-line-numbers,#price .material-line-numbers{grid-template-columns:1fr!important}
  #calculator .estimate-row{grid-template-columns:minmax(0,1fr) 70px 90px 36px!important}
  .panel-stats{grid-template-columns:1fr}
  .panel-equipment-row{grid-template-columns:minmax(0,1fr) auto}
}

/* v11.12.1 — фиксы выбора оборудования, DIN-рейки и компактные расчёты */
#price .material-sheet-line{
  padding:10px 11px!important;
  margin-bottom:7px!important;
  border-radius:12px!important;
}
#price .material-sheet-line .line-name b{
  font-size:13px!important;
  line-height:1.25!important;
}
#price .material-sheet-line .line-name .muted{
  font-size:11px!important;
  margin-top:2px!important;
}
#price .material-line-numbers{
  gap:7px!important;
  margin-top:2px!important;
}
#price .material-line-field label{
  font-size:9px!important;
  margin-bottom:3px!important;
}
#price .material-line-field input,
#price .material-line-total-box{
  min-height:36px!important;
  height:36px!important;
}
#price .material-summary,
#price .sheet-summary,
#price .material-totals{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:8px!important;
  padding:12px!important;
  border:1px solid var(--vh-line)!important;
  border-radius:14px!important;
  background:var(--vh-surface-2)!important;
  overflow:hidden!important;
}
#price .material-summary > div,
#price .sheet-summary > div{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(56px,auto)!important;
  gap:12px!important;
  align-items:center!important;
  min-width:0!important;
}
#price .material-summary b,
#price .sheet-summary b,
#sheetCount,#sheetQtyTotal,#sheetPriceTotal{
  min-width:0!important;
  max-width:100%!important;
  text-align:right!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
#calculator .estimate-total{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:8px!important;
  padding:12px!important;
  overflow:hidden!important;
}
#calculator .estimate-total > div,
#calculator .total-line{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(90px,auto)!important;
  gap:10px!important;
  align-items:center!important;
}
#calculator .discount-controls{
  display:grid!important;
  grid-template-columns:minmax(70px,100px) minmax(90px,140px)!important;
  gap:7px!important;
  justify-content:end!important;
  min-width:0!important;
}
#calculator .discount-controls select,
#calculator .discount-controls input{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
}
#calculator #estimateSubtotal,
#calculator #estimateDiscountValue,
#calculator #estimateGrand{
  min-width:0!important;
  max-width:100%!important;
  text-align:right!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
}
.panel-rails{
  position:absolute;
  inset:0;
  pointer-events:none;
  z-index:1;
}
.panel-rail{
  position:absolute;
  left:5%;
  width:90%;
  height:8px;
  border-radius:3px;
  background:linear-gradient(180deg,#d5dce0 0%,#7e8a92 45%,#c4ccd1 55%,#6d7981 100%);
  border:1px solid #59656d;
  box-shadow:0 2px 4px rgba(0,0,0,.25);
}
.panel-rail::before{
  content:"";
  position:absolute;
  inset:2px 5px;
  background:repeating-linear-gradient(90deg,transparent 0 12px,rgba(20,30,36,.45) 12px 18px);
}
.panel-device{z-index:2}
@media(max-width:700px){
  #price .material-line-numbers{grid-template-columns:1fr 1fr!important}
  #price .material-line-total-field{grid-column:1/-1!important}
  #calculator .estimate-total > div,
  #calculator .total-line{grid-template-columns:1fr!important}
  #calculator .discount-controls{justify-content:stretch!important}
}

/* v11.12.2 — компактные материалы и привязка оборудования к DIN-рейкам */
#price .material-sheet-line{
  display:grid!important;
  grid-template-columns:minmax(220px,1fr) 86px 120px 120px 38px!important;
  gap:8px!important;
  align-items:center!important;
  padding:9px 10px!important;
  min-height:62px!important;
}
#price .material-sheet-line .line-name{
  min-width:0!important;
}
#price .material-sheet-line .line-name b,
#price .material-sheet-line .line-name .muted{
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
#price .material-sheet-line .material-remove{
  grid-column:5!important;
  grid-row:1!important;
}
#price .material-line-numbers{
  display:contents!important;
}
#price .material-line-field{
  min-width:0!important;
}
#price .material-line-field label{
  display:none!important;
}
#price .material-line-field input,
#price .material-line-total-box{
  width:100%!important;
  height:38px!important;
  min-height:38px!important;
  border-radius:9px!important;
}
#price .material-line-total-box{
  justify-content:flex-end!important;
}
#price .material-summary,
#price .sheet-summary,
#price .material-totals{
  border-radius:14px!important;
  padding:11px 12px!important;
  overflow:hidden!important;
}
#price .material-summary > div,
#price .sheet-summary > div,
#price .material-totals > div{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(60px,auto)!important;
  gap:12px!important;
  align-items:center!important;
}
#price .material-summary b,
#price .sheet-summary b,
#price .material-totals b{
  text-align:right!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.panel-rail{
  z-index:1!important;
}
.panel-device{
  z-index:2!important;
  transition:left .08s ease,top .08s ease,width .08s ease!important;
}
.panel-device.snap-preview{
  outline:3px solid #6de6bd!important;
  outline-offset:1px!important;
}
.panel-device .module-poles{
  display:flex;
  gap:2px;
  margin-top:4px;
}
.panel-device .module-pole{
  flex:1;
  min-width:8px;
  height:18px;
  border-radius:2px;
  background:linear-gradient(180deg,#707b82,#2c363c);
  border:1px solid #222b30;
}
@media(max-width:900px){
  #price .material-sheet-line{
    grid-template-columns:minmax(180px,1fr) 74px 100px 100px 36px!important;
  }
}
@media(max-width:680px){
  #price .material-sheet-line{
    grid-template-columns:minmax(0,1fr) 36px!important;
  }
  #price .material-line-numbers{
    display:grid!important;
    grid-column:1/-1!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  #price .material-sheet-line .material-remove{
    grid-column:2!important;
  }
}

/* v11.12.3 — защита от наложений и реалистичная визуализация оборудования */
.panel-rail-slot-map{
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
}
.panel-slot{
  position:absolute;
  top:-3px;
  height:14px;
  border-left:1px solid rgba(35,45,51,.32);
}
.panel-slot.occupied{
  background:rgba(255,120,144,.10);
}
.panel-slot.drop-available{
  background:rgba(109,230,189,.22);
}
.panel-slot.drop-blocked{
  background:rgba(255,120,144,.30);
}
.panel-device{
  overflow:hidden!important;
  background:#f2f3f4!important;
  color:#162028!important;
  border:1px solid #79858d!important;
}
.panel-device .device-face{
  position:absolute;
  inset:0;
  display:grid;
  grid-template-rows:15px 1fr 16px;
  background:linear-gradient(180deg,#f8f8f8 0%,#e0e3e5 58%,#c6ccd0 100%);
}
.panel-device .device-brand{
  display:flex;
  align-items:center;
  padding:0 5px;
  font-size:8px;
  font-weight:900;
  letter-spacing:.02em;
  border-bottom:1px solid rgba(0,0,0,.12);
}
.panel-device .device-body{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:0;
}
.panel-device .device-label{
  position:absolute;
  left:4px;
  top:3px;
  max-width:calc(100% - 8px);
  font-size:7px;
  font-weight:800;
  line-height:1.1;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.panel-device .device-toggle{
  width:12px;
  height:27px;
  margin-top:8px;
  border-radius:2px;
  background:linear-gradient(90deg,#c7c7c7,#f8f8f8,#aeb2b5);
  border:1px solid #555f65;
  box-shadow:0 2px 2px rgba(0,0,0,.25);
}
.panel-device .device-toggle::after{
  content:"";
  display:block;
  width:8px;
  height:7px;
  margin:2px auto 0;
  border-radius:1px;
  background:#292f33;
}
.panel-device .device-terminals{
  display:flex;
  justify-content:space-around;
  align-items:center;
  padding:0 3px;
  border-top:1px solid rgba(0,0,0,.12);
}
.panel-device .device-terminal{
  width:6px;
  height:6px;
  border-radius:50%;
  background:radial-gradient(circle at 35% 35%,#dfe3e5 0 25%,#636d73 35% 70%,#22292d 75%);
}
.panel-device.type-uzo .device-toggle,
.panel-device.type-dif .device-toggle{
  background:linear-gradient(90deg,#d7d7d7,#fff,#adb3b7);
}
.panel-device.type-uzo .device-test,
.panel-device.type-dif .device-test{
  position:absolute;
  right:5px;
  top:19px;
  width:9px;
  height:9px;
  border-radius:50%;
  background:#5ea7d8;
  border:1px solid #326887;
}
.panel-device.type-contactor .device-body{
  background:linear-gradient(180deg,rgba(255,255,255,.3),rgba(120,130,138,.08));
}
.panel-device.type-contactor .device-toggle{
  width:22px;
  height:18px;
  border-radius:3px;
  background:#5e6970;
}
.panel-device.type-power .device-body{
  background:linear-gradient(180deg,#f5f5f5,#d8dee1);
}
.panel-device.type-power .device-toggle{
  width:9px;
  height:9px;
  border-radius:50%;
  background:#44a86a;
  border:1px solid #287b48;
}
.panel-device.brand-abb .device-brand{color:#d71920}
.panel-device.brand-schneider .device-brand{color:#2b9b43}
.panel-device.brand-legrand .device-brand{color:#e46e1b}
.panel-device.brand-iek .device-brand{color:#e9b500}
.panel-device.brand-ekf .device-brand{color:#d8232a}
.panel-device.brand-meanwell .device-brand{color:#1366a8}
.panel-device.brand-default .device-brand{color:#253b4a}
.panel-device.drag-invalid{
  outline:3px solid #ff7890!important;
  outline-offset:1px!important;
}
.panel-device.drag-valid{
  outline:3px solid #6de6bd!important;
  outline-offset:1px!important;
}

/* v11.12.4 — точная модульная геометрия и финальный визуал щита */
.panel-device{
  min-width:0!important;
  min-height:0!important;
  box-sizing:border-box!important;
  touch-action:none!important;
}
.panel-device .device-face{
  border-radius:3px;
  overflow:hidden;
}
.panel-device .device-brand{
  height:13px;
  font-size:7px!important;
  padding:0 3px!important;
}
.panel-device .device-label{
  font-size:6px!important;
  left:2px!important;
  right:2px!important;
  max-width:none!important;
}
.panel-device .device-toggle{
  width:min(10px,55%)!important;
  height:23px!important;
}
.panel-device .device-terminals{
  min-height:12px;
  padding:0 1px!important;
}
.panel-device .device-terminal{
  width:4px!important;
  height:4px!important;
}
.panel-device.type-power .device-toggle{
  width:8px!important;
  height:8px!important;
}
.panel-device.type-contactor .device-toggle{
  width:70%!important;
  height:16px!important;
}
.panel-device[data-modules="1"] .device-brand{
  font-size:5px!important;
}
.panel-device[data-modules="1"] .device-label{
  display:none;
}
.panel-device[data-modules="1"] .device-terminal:nth-child(n+3){
  display:none;
}
.panel-device[data-modules="2"] .device-terminal:nth-child(n+5){
  display:none;
}

/* v11.12.5 — улучшенный визуал оборудования и стабильное перетаскивание */
.panel-device{
  border-radius:4px!important;
  background:#eceff1!important;
  border:1px solid #6c7880!important;
  box-shadow:0 2px 5px rgba(0,0,0,.28)!important;
  will-change:left,top;
}
.panel-device .device-face{
  grid-template-rows:14px 1fr 13px!important;
  background:
    linear-gradient(90deg,rgba(255,255,255,.35),transparent 18%,transparent 82%,rgba(0,0,0,.08)),
    linear-gradient(180deg,#fafafa 0%,#e7eaec 48%,#cbd1d5 100%)!important;
}
.panel-device .device-brand{
  background:rgba(255,255,255,.55);
  border-bottom:1px solid rgba(0,0,0,.10)!important;
  text-transform:none;
}
.panel-device .device-body{
  border-left:1px solid rgba(255,255,255,.55);
  border-right:1px solid rgba(0,0,0,.08);
}
.panel-device .device-toggle{
  position:relative;
  margin-top:5px!important;
  width:11px!important;
  height:26px!important;
  border-radius:2px!important;
  background:linear-gradient(90deg,#9ba4aa,#f7f8f8 45%,#b4bcc1)!important;
  border:1px solid #4e585e!important;
}
.panel-device .device-toggle::before{
  content:"I";
  position:absolute;
  top:-11px;
  left:50%;
  transform:translateX(-50%);
  font-size:6px;
  font-weight:900;
  color:#1d262b;
}
.panel-device .device-toggle::after{
  width:7px!important;
  height:6px!important;
  margin:3px auto 0!important;
  background:#20272b!important;
}
.panel-device .device-label{
  top:1px!important;
  font-size:6px!important;
  color:#172126!important;
}
.panel-device .device-terminals{
  background:rgba(255,255,255,.22);
}
.panel-device.type-uzo .device-face,
.panel-device.type-dif .device-face{
  background:
    linear-gradient(90deg,rgba(255,255,255,.35),transparent 18%,transparent 82%,rgba(0,0,0,.08)),
    linear-gradient(180deg,#fbfbfb 0%,#e2e6e9 55%,#c4ccd1 100%)!important;
}
.panel-device.type-contactor .device-face{
  background:linear-gradient(180deg,#f4f5f5,#c7cdd1)!important;
}
.panel-device.type-power .device-face{
  background:
    repeating-linear-gradient(90deg,rgba(0,0,0,.05) 0 2px,transparent 2px 7px),
    linear-gradient(180deg,#e9edf0,#c4cbd0)!important;
}
.panel-device.drag-active{
  opacity:.86!important;
  z-index:20!important;
  box-shadow:0 10px 22px rgba(0,0,0,.38)!important;
}
.panel-device.drag-valid{
  outline:3px solid #36d99a!important;
}
.panel-device.drag-invalid{
  outline:3px solid #ff5d7a!important;
}

/* v11.12.6 — реалистичный визуал модульного оборудования */
.panel-board{
  background:
    linear-gradient(rgba(32,45,52,.07) 1px,transparent 1px),
    linear-gradient(90deg,rgba(32,45,52,.07) 1px,transparent 1px),
    linear-gradient(180deg,#eef1f2,#d5dadd)!important;
  background-size:18px 18px!important;
}

.panel-device{
  border-radius:3px!important;
  border:1px solid #7e898f!important;
  background:#f2f4f5!important;
  box-shadow:
    0 2px 4px rgba(0,0,0,.30),
    inset 0 1px 0 rgba(255,255,255,.85)!important;
}

.panel-device .device-face{
  position:absolute;
  inset:0;
  display:grid!important;
  grid-template-rows:15px 1fr 14px!important;
  overflow:hidden;
  border-radius:2px;
  background:
    linear-gradient(90deg,rgba(255,255,255,.55),transparent 18%,transparent 82%,rgba(0,0,0,.08)),
    linear-gradient(180deg,#fcfcfc 0%,#edf0f1 55%,#d0d5d8 100%)!important;
}

.panel-device .device-brand{
  display:flex!important;
  align-items:center!important;
  min-width:0;
  height:15px;
  padding:0 4px!important;
  border-bottom:1px solid rgba(0,0,0,.12)!important;
  background:rgba(255,255,255,.55);
  font-size:7px!important;
  line-height:1!important;
  font-weight:900!important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.panel-device .device-body{
  position:relative;
  display:grid!important;
  grid-template-columns:1fr;
  place-items:center;
  min-height:0;
  border-left:1px solid rgba(255,255,255,.6);
  border-right:1px solid rgba(0,0,0,.08);
}

.panel-device .device-label{
  position:absolute;
  left:3px!important;
  right:3px!important;
  top:2px!important;
  max-width:none!important;
  font-size:6px!important;
  line-height:1.05!important;
  font-weight:800!important;
  color:#202b31!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

.panel-device .device-subline{
  position:absolute;
  left:3px;
  right:3px;
  bottom:3px;
  font-size:5px;
  line-height:1;
  color:#536168;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

.panel-device .device-toggle{
  position:relative;
  width:12px!important;
  height:28px!important;
  margin-top:7px!important;
  border-radius:2px!important;
  border:1px solid #505b61!important;
  background:linear-gradient(90deg,#9da6ab 0%,#f9fafb 45%,#b9c0c4 100%)!important;
  box-shadow:
    0 2px 2px rgba(0,0,0,.26),
    inset 0 1px 0 rgba(255,255,255,.85)!important;
}

.panel-device .device-toggle::before{
  content:"I";
  position:absolute;
  top:-11px;
  left:50%;
  transform:translateX(-50%);
  font-size:6px;
  font-weight:900;
  color:#202a2f;
}

.panel-device .device-toggle::after{
  content:"";
  display:block;
  width:8px!important;
  height:7px!important;
  margin:3px auto 0!important;
  border-radius:1px;
  background:#20272b!important;
}

.panel-device .device-test{
  position:absolute;
  right:4px!important;
  top:20px!important;
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  border:1px solid #2f6481!important;
  background:radial-gradient(circle at 35% 35%,#8ed1ff 0 25%,#4c9fce 35% 70%,#326887 75%)!important;
}

.panel-device .device-terminals{
  display:flex!important;
  justify-content:space-around!important;
  align-items:center!important;
  gap:2px;
  min-height:14px;
  padding:0 2px!important;
  border-top:1px solid rgba(0,0,0,.13)!important;
  background:rgba(255,255,255,.22);
}

.panel-device .device-terminal{
  width:5px!important;
  height:5px!important;
  border-radius:50%;
  background:
    radial-gradient(circle at 35% 35%,#eef1f2 0 25%,#7b858b 35% 68%,#22292d 74%)!important;
}

/* Производители */
.panel-device.brand-schneider .device-brand{
  color:#259647!important;
  border-top:3px solid #2e9f50!important;
}
.panel-device.brand-abb .device-brand{
  color:#d71920!important;
  border-top:3px solid #e3222a!important;
}
.panel-device.brand-legrand .device-brand{
  color:#d9681b!important;
  border-top:3px solid #e77a21!important;
}
.panel-device.brand-iek .device-brand{
  color:#8f7300!important;
  border-top:3px solid #f0c316!important;
}
.panel-device.brand-ekf .device-brand{
  color:#cc2027!important;
  border-top:3px solid #d8232a!important;
}
.panel-device.brand-meanwell .device-brand{
  color:#1366a8!important;
  border-top:3px solid #d8291f!important;
}
.panel-device.brand-default .device-brand{
  color:#2f414c!important;
  border-top:3px solid #70838f!important;
}

/* Типы оборудования */
.panel-device.type-breaker .device-body{
  background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(90,105,115,.04));
}
.panel-device.type-uzo .device-body,
.panel-device.type-dif .device-body{
  background:linear-gradient(180deg,rgba(255,255,255,.15),rgba(72,111,135,.05));
}
.panel-device.type-contactor .device-face{
  background:
    linear-gradient(90deg,rgba(255,255,255,.45),transparent 20%,transparent 80%,rgba(0,0,0,.10)),
    linear-gradient(180deg,#f4f5f5,#c4cbd0)!important;
}
.panel-device.type-contactor .device-toggle{
  width:68%!important;
  height:16px!important;
  border-radius:3px!important;
  background:linear-gradient(180deg,#707b82,#424c52)!important;
}
.panel-device.type-contactor .device-toggle::before,
.panel-device.type-contactor .device-toggle::after{
  display:none!important;
}
.panel-device.type-power .device-face{
  background:
    repeating-linear-gradient(90deg,rgba(0,0,0,.05) 0 2px,transparent 2px 7px),
    linear-gradient(180deg,#edf1f3,#c1c9ce)!important;
}
.panel-device.type-power .device-toggle{
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  background:#41a868!important;
  border:1px solid #237142!important;
}
.panel-device.type-power .device-toggle::before,
.panel-device.type-power .device-toggle::after{
  display:none!important;
}

/* Модульные разделители */
.panel-device .device-module-grid{
  position:absolute;
  inset:0;
  display:grid;
  pointer-events:none;
}
.panel-device .device-module-separator{
  border-right:1px solid rgba(64,76,84,.18);
}
.panel-device .device-module-separator:last-child{
  border-right:0;
}

/* Узкие аппараты */
.panel-device[data-modules="1"] .device-brand{
  font-size:5px!important;
  padding:0 2px!important;
}
.panel-device[data-modules="1"] .device-label{
  font-size:5px!important;
  left:2px!important;
  right:2px!important;
}
.panel-device[data-modules="1"] .device-subline{
  display:none;
}
.panel-device[data-modules="1"] .device-test{
  right:2px!important;
  width:7px!important;
  height:7px!important;
}
.panel-device[data-modules="1"] .device-terminal:nth-child(n+3){
  display:none;
}
.panel-device[data-modules="2"] .device-terminal:nth-child(n+5){
  display:none;
}

/* v11.13.0 — библиотека проектов электрощитов */
.panel-library-box{
  width:min(980px,calc(100vw - 30px))!important;
  max-height:calc(100vh - 30px);
  overflow:auto;
}
.panel-library-toolbar{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:9px;
  margin-bottom:12px;
}
.panel-library-toolbar input{
  min-height:42px;
  padding:9px 11px;
  border-radius:10px;
  border:1px solid var(--vh-line);
  background:var(--vh-input);
  color:var(--vh-text);
}
.panel-library-list{
  display:grid;
  gap:9px;
}
.panel-library-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 110px 120px auto;
  gap:10px;
  align-items:center;
  padding:11px 12px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface-2);
}
.panel-library-row h4{margin:0 0 4px}
.panel-library-row small{display:block;color:var(--vh-muted)}
.panel-library-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
#currentPanelProjectStatus.panel-saved{color:#6de6bd}
#currentPanelProjectStatus.panel-unsaved{color:#ffbd36}
@media(max-width:760px){
  .panel-library-toolbar{grid-template-columns:1fr}
  .panel-library-row{grid-template-columns:1fr}
  .panel-library-actions{justify-content:flex-start}
}

/* v11.14.0 — история версий и перенос проектов щитов */
.panel-versions-box{
  width:min(900px,calc(100vw - 30px))!important;
  max-height:calc(100vh - 30px);
  overflow:auto;
}
.panel-versions-list{
  display:grid;
  gap:9px;
}
.panel-version-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 100px 110px auto;
  gap:10px;
  align-items:center;
  padding:11px 12px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface-2);
}
.panel-version-row small{
  display:block;
  color:var(--vh-muted);
  margin-top:3px;
}
.panel-version-actions{
  display:flex;
  gap:6px;
  flex-wrap:wrap;
  justify-content:flex-end;
}
@media(max-width:720px){
  .panel-version-row{grid-template-columns:1fr}
  .panel-version-actions{justify-content:flex-start}
}

.project-panel-links{margin-top:14px;padding-top:12px;border-top:1px solid var(--vh-line)}
.project-panel-list{display:grid;gap:8px}
.project-panel-row{display:grid;grid-template-columns:minmax(0,1fr) 110px 110px auto;gap:9px;align-items:center;padding:10px 11px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface-2)}
.project-panel-row small{display:block;color:var(--vh-muted);margin-top:3px}
.project-panel-actions{display:flex;gap:6px;justify-content:flex-end}
@media(max-width:760px){.project-panel-row{grid-template-columns:1fr}.project-panel-actions{justify-content:flex-start}}

/* v11.16.0 — сохранение щита в объект и варианты PDF */
.panel-pdf-box{
  width:min(680px,calc(100vw - 30px))!important;
}
.panel-pdf-options{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.panel-pdf-option{
  min-height:145px;
  padding:16px;
  border:1px solid var(--vh-line);
  border-radius:14px;
  background:var(--vh-surface-2);
  color:var(--vh-text);
  text-align:left;
  cursor:pointer;
}
.panel-pdf-option:hover{
  border-color:rgba(255,189,54,.65);
  background:var(--vh-surface);
}
.panel-pdf-option b,
.panel-pdf-option span{
  display:block;
}
.panel-pdf-option b{
  margin-bottom:8px;
  font-size:15px;
}
.panel-pdf-option span{
  color:var(--vh-muted);
  line-height:1.45;
}
.panel-print-board{
  margin:18px 0;
  padding:18px;
  border:1px solid #aab2b7;
  border-radius:10px;
  background:#e4e8ea;
}
.panel-print-rail{
  position:relative;
  height:78px;
  margin:16px 0;
  border-top:7px solid #737f86;
}
.panel-print-device{
  position:absolute;
  top:-58px;
  height:58px;
  box-sizing:border-box;
  border:1px solid #7b858b;
  border-radius:3px;
  overflow:hidden;
  background:linear-gradient(180deg,#fafafa,#d3d8db);
  font-size:7px;
  color:#172126;
}
.panel-print-device b,
.panel-print-device small{
  display:block;
  padding:2px 3px;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
@media(max-width:650px){
  .panel-pdf-options{grid-template-columns:1fr}
}

/* v11.16.1 — заметный выбор объекта в разделе «Электрика» */
.panel-object-save-bar{
  margin-bottom:14px;
  border:1px solid rgba(255,189,54,.34)!important;
  background:linear-gradient(180deg,rgba(255,189,54,.075),var(--vh-surface-2))!important;
}
.panel-object-save-main{
  display:grid;
  grid-template-columns:minmax(210px,1fr) minmax(260px,420px) auto;
  gap:12px;
  align-items:center;
}
.panel-object-save-main h3{
  margin:0 0 4px;
}
#panelObjectSelectTop{
  width:100%;
  min-height:44px;
  padding:9px 12px;
  border:1px solid var(--vh-line);
  border-radius:11px;
  background:var(--vh-input);
  color:var(--vh-text);
}
.panel-object-save-hint{
  margin-top:9px;
  font-size:11px;
  color:var(--vh-muted);
}
.panel-object-save-hint.selected{
  color:#6de6bd;
}
@media(max-width:850px){
  .panel-object-save-main{grid-template-columns:1fr}
}

/* v11.16.2 — читаемый блок электрощитов в карточке объекта */
.project-panel-links{
  margin-top:16px!important;
  padding-top:16px!important;
}
.project-panel-links .project-section-head{
  margin-bottom:10px!important;
}
.project-panel-links .project-section-head h4{
  margin:0!important;
  font-size:15px!important;
}
.project-panel-list{
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(280px,1fr))!important;
  gap:10px!important;
}
.project-panel-row{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:10px!important;
  align-items:stretch!important;
  padding:13px!important;
  border:1px solid var(--vh-line)!important;
  border-radius:14px!important;
  background:var(--vh-surface-2)!important;
  min-width:0!important;
}
.project-panel-row > div:first-child{
  min-width:0!important;
}
.project-panel-row > div:first-child b{
  display:block!important;
  margin-bottom:5px!important;
  font-size:14px!important;
  line-height:1.25!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
}
.project-panel-row > div:first-child small{
  display:block!important;
  line-height:1.35!important;
}
.project-panel-row > div:nth-child(2),
.project-panel-row > div:nth-child(3){
  display:flex!important;
  justify-content:space-between!important;
  align-items:center!important;
  min-width:0!important;
  padding:8px 10px!important;
  border:1px solid var(--vh-line)!important;
  border-radius:10px!important;
  background:var(--vh-input)!important;
}
.project-panel-row > div:nth-child(2) small,
.project-panel-row > div:nth-child(3) small{
  margin:0!important;
}
.project-panel-row > div:nth-child(2) b,
.project-panel-row > div:nth-child(3) b{
  white-space:nowrap!important;
}
.project-panel-actions{
  display:grid!important;
  grid-template-columns:1fr auto!important;
  gap:8px!important;
  justify-content:stretch!important;
}
.project-panel-actions .small-btn{
  min-height:38px!important;
  border-radius:10px!important;
}
.project-panel-actions .small-btn:first-child{
  width:100%!important;
}
.panel-object-save-bar{
  margin-top:0!important;
}
@media(max-width:600px){
  .project-panel-list{grid-template-columns:1fr!important}
  .project-panel-actions{grid-template-columns:1fr!important}
}

/* v11.16.3 — корректный PDF электрощита без схемы размещения */
.panel-pdf-cabinet{
  display:grid;
  grid-template-columns:180px minmax(0,1fr);
  gap:20px;
  align-items:center;
  margin:18px 0;
  padding:18px;
  border:1px solid #b6c0c6;
  border-radius:12px;
  background:#f3f6f7;
}
.panel-pdf-cabinet-shape{
  position:relative;
  width:150px;
  height:210px;
  margin:auto;
  border:10px solid #65737b;
  border-radius:14px;
  background:linear-gradient(180deg,#edf1f3,#d2d9dd);
  box-shadow:inset 0 0 0 3px #313b41;
}
.panel-pdf-cabinet-shape::before{
  content:"Электрощит";
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:15px;
  font-weight:800;
  color:#33434c;
}
.panel-pdf-cabinet-data{
  display:grid;
  gap:9px;
}
.panel-pdf-cabinet-data div{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:12px;
  padding:8px 10px;
  border-bottom:1px solid #d6dde1;
}
.panel-pdf-cabinet-data small{
  color:#62727c;
}
@media(max-width:650px){
  .panel-pdf-cabinet{grid-template-columns:1fr}
}

/* v11.18.0 — завершение карточки объекта */
.project-detail-summary{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}
.project-summary-item{
  min-width:0;
  padding:10px 11px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface-2);
}
.project-summary-item small,
.project-summary-item b{
  display:block;
}
.project-summary-item small{
  margin-bottom:4px;
  color:var(--vh-muted);
  font-size:10px;
}
.project-summary-item b{
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-size:13px;
}
.project-summary-item .status{
  display:inline-flex;
  max-width:100%;
}
.project-journal-title-row{
  display:flex!important;
  align-items:center;
  justify-content:space-between;
  gap:8px;
}
#projectJournalFilter{
  min-height:34px;
  padding:6px 9px;
  border:1px solid var(--vh-line);
  border-radius:9px;
  background:var(--vh-input);
  color:var(--vh-text);
}
.project-files-toolbar{
  display:grid!important;
  grid-template-columns:minmax(150px,1fr) minmax(120px,160px) minmax(100px,130px) auto!important;
  gap:8px!important;
}
.compact-file-row{
  grid-template-columns:34px minmax(0,1fr) auto!important;
  align-items:center!important;
}
.compact-file-main{
  min-width:0!important;
}
.compact-file-main b,
.compact-file-main small{
  display:block!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.journal-entry{
  border-radius:11px!important;
}
.journal-entry.journal-files{border-left:3px solid #5ea6ff!important}
.journal-entry.journal-documents{border-left:3px solid #a66cff!important}
.journal-entry.journal-panels{border-left:3px solid #ffbd36!important}
.journal-entry.journal-notes{border-left:3px solid #6de6bd!important}
.project-program-documents{
  margin-top:14px!important;
}
@media(max-width:1100px){
  .project-detail-summary{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .project-detail-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .project-files-toolbar{grid-template-columns:1fr 1fr!important}
  .project-files-toolbar input{grid-column:1/-1}
}
@media(max-width:520px){
  .project-detail-summary{grid-template-columns:1fr}
  .project-files-toolbar{grid-template-columns:1fr!important}
  .project-journal-title-row{align-items:stretch;flex-direction:column}
}

/* v11.18.1 — единое отображение статуса в карточке объекта */
.project-detail-summary .project-summary-item{
  display:flex!important;
  flex-direction:column!important;
  justify-content:center!important;
  min-height:66px!important;
}
.project-detail-summary .project-summary-status .project-summary-value{
  display:block!important;
  width:100%!important;
  min-width:0!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  color:var(--vh-text)!important;
  box-shadow:none!important;
  font-size:13px!important;
  font-weight:800!important;
  line-height:1.3!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

/* v11.18.2 — новая раскладка карточки объекта по утверждённому макету */
.project-workspace-toolbar{
  display:grid;
  grid-template-columns:minmax(280px,1.5fr) auto auto auto minmax(180px,1fr) 140px 120px auto;
  gap:10px;
  align-items:stretch;
  margin:0 0 14px;
  padding:12px;
  border:1px solid var(--vh-line);
  border-radius:14px;
  background:var(--vh-surface-2);
}
.project-toolbar-notes,
.project-toolbar-search{
  min-width:0;
}
.project-toolbar-textarea{
  width:100%!important;
  height:72px!important;
  min-height:72px!important;
  resize:none!important;
  padding:12px!important;
  border-radius:11px!important;
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border:1px solid var(--vh-line)!important;
}
.project-workspace-toolbar input,
.project-workspace-toolbar select{
  width:100%;
  min-height:44px;
  align-self:center;
  padding:9px 11px;
  border-radius:10px;
  border:1px solid var(--vh-line);
  background:var(--vh-input);
  color:var(--vh-text);
}
.project-toolbar-search{
  display:flex;
  align-items:center;
}
.project-toolbar-action{
  min-height:44px!important;
  align-self:center;
  white-space:normal!important;
  line-height:1.25!important;
}
.project-workspace-grid{
  display:grid;
  grid-template-columns:minmax(0,.92fr) minmax(0,1.18fr);
  gap:12px;
  align-items:stretch;
}
.project-workspace-card{
  min-width:0;
  padding:14px;
  border:1px solid var(--vh-line);
  border-radius:14px;
  background:var(--vh-surface-2);
}
.project-workspace-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:12px;
}
.project-workspace-head h4{
  margin:0;
  font-size:15px;
}
.project-workspace-head select{
  min-height:34px;
  padding:6px 9px;
  border:1px solid var(--vh-line);
  border-radius:9px;
  background:var(--vh-input);
  color:var(--vh-text);
}
.project-journal-list{
  min-height:410px;
  max-height:560px;
  overflow:auto;
  padding:4px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-input);
}
.project-file-drop{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(220px,1fr)!important;
  gap:12px!important;
  align-items:center!important;
  margin-bottom:12px!important;
  padding:14px!important;
  border:1px dashed rgba(94,166,255,.55)!important;
  border-radius:12px!important;
  background:rgba(94,166,255,.04)!important;
}
.project-file-drop-copy b,
.project-file-drop-copy p{
  display:block;
  margin:0;
}
.project-file-drop-copy p{
  margin-top:4px;
}
.project-file-drop input[type="file"]{
  width:100%;
  min-width:0;
  padding:7px;
  border:1px solid var(--vh-line);
  border-radius:9px;
  background:var(--vh-input);
  color:var(--vh-text);
}
.project-files-table-head{
  display:grid;
  grid-template-columns:minmax(180px,1fr) 110px 90px 130px 120px;
  gap:10px;
  align-items:center;
  padding:9px 10px;
  border:1px solid var(--vh-line);
  border-radius:10px 10px 0 0;
  background:var(--vh-surface);
  color:var(--vh-muted);
  font-size:10px;
  font-weight:800;
  text-transform:uppercase;
}
.project-files-table{
  display:grid!important;
  gap:0!important;
  border:1px solid var(--vh-line);
  border-top:0;
  border-radius:0 0 10px 10px;
  overflow:hidden;
}
.project-files-table .compact-file-row{
  display:grid!important;
  grid-template-columns:minmax(180px,1fr) 110px 90px 130px 120px!important;
  gap:10px!important;
  align-items:center!important;
  padding:9px 10px!important;
  border:0!important;
  border-bottom:1px solid var(--vh-line)!important;
  border-radius:0!important;
  background:var(--vh-input)!important;
}
.project-files-table .compact-file-row:last-child{
  border-bottom:0!important;
}
.project-file-name-cell{
  display:grid;
  grid-template-columns:30px minmax(0,1fr);
  gap:8px;
  align-items:center;
  min-width:0;
}
.project-file-type-icon{
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:8px;
  font-size:15px;
  background:rgba(94,166,255,.14);
}
.project-file-type-icon.pdf{background:rgba(255,84,116,.16)}
.project-file-type-icon.excel{background:rgba(55,205,132,.16)}
.project-file-type-icon.image{background:rgba(166,92,255,.16)}
.project-file-type-icon.drawing{background:rgba(94,166,255,.16)}
.project-file-name{
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-weight:700;
}
.project-file-actions{
  display:flex;
  gap:6px;
  justify-content:flex-end;
}
.project-file-actions .small-btn{
  min-height:34px;
  padding:6px 9px;
}
.project-program-documents,
.project-panel-links{
  margin-top:14px!important;
  padding-top:12px!important;
  border-top:1px solid var(--vh-line)!important;
}
@media(max-width:1500px){
  .project-workspace-toolbar{
    grid-template-columns:minmax(260px,1.2fr) auto auto auto minmax(170px,1fr) 130px 110px auto;
  }
}
@media(max-width:1250px){
  .project-workspace-toolbar{
    grid-template-columns:minmax(260px,1fr) repeat(3,auto);
  }
  .project-toolbar-search,
  #projectFileCategory,
  #projectFileSort,
  .project-workspace-toolbar > button:last-child{
    grid-row:2;
  }
  .project-toolbar-search{grid-column:1/2}
}
@media(max-width:980px){
  .project-workspace-grid{grid-template-columns:1fr}
  .project-workspace-toolbar{grid-template-columns:1fr 1fr}
  .project-toolbar-notes{grid-column:1/-1}
  .project-toolbar-search{grid-column:1/-1}
}
@media(max-width:760px){
  .project-workspace-toolbar{grid-template-columns:1fr}
  .project-toolbar-notes,
  .project-toolbar-search{grid-column:auto}
  .project-file-drop{grid-template-columns:1fr!important}
  .project-files-table-head{display:none}
  .project-files-table .compact-file-row{
    grid-template-columns:1fr!important;
  }
  .project-file-actions{justify-content:flex-start}
}

/* v11.18.3 — компактная карточка объекта без переполнения */

/* Модальное окно шире и без лишнего горизонтального переполнения */
#projectDetailModal .project-detail-box{
  width:min(1180px,calc(100vw - 28px))!important;
  max-width:1180px!important;
  max-height:calc(100vh - 28px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:18px!important;
}

/* Сводка */
.project-detail-summary{
  grid-template-columns:repeat(6,minmax(0,1fr))!important;
  gap:7px!important;
}
.project-summary-item{
  min-height:58px!important;
  padding:8px 10px!important;
}
.project-summary-item small{
  font-size:9px!important;
}
.project-summary-item b,
.project-summary-item .project-summary-value{
  font-size:12px!important;
}

/* Верхняя панель — компактнее и гарантированно помещается */
.project-workspace-toolbar{
  grid-template-columns:minmax(240px,1.35fr) 108px 94px 112px minmax(145px,.9fr) 118px 104px 118px!important;
  gap:7px!important;
  padding:10px!important;
  align-items:center!important;
  overflow:hidden!important;
}
.project-toolbar-textarea{
  height:58px!important;
  min-height:58px!important;
  padding:9px 10px!important;
  font-size:11px!important;
}
.project-workspace-toolbar input,
.project-workspace-toolbar select{
  min-height:38px!important;
  height:38px!important;
  padding:7px 9px!important;
  font-size:11px!important;
}
.project-toolbar-action{
  min-height:38px!important;
  height:auto!important;
  padding:7px 9px!important;
  font-size:11px!important;
  line-height:1.15!important;
  border-radius:9px!important;
}
.project-workspace-toolbar .btn.primary{
  box-shadow:none!important;
}

/* Основные два блока */
.project-workspace-grid{
  grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr)!important;
  gap:10px!important;
}
.project-workspace-card{
  padding:12px!important;
}
.project-workspace-head{
  margin-bottom:9px!important;
}
.project-workspace-head h4{
  font-size:14px!important;
}
.project-workspace-head select{
  min-height:32px!important;
  height:32px!important;
  padding:5px 8px!important;
  font-size:10px!important;
}

/* Журнал — меньше высота, чтобы карточка не растягивалась */
.project-journal-list{
  min-height:300px!important;
  max-height:500px!important;
  padding:3px!important;
}
.journal-entry{
  padding:9px 10px!important;
  font-size:11px!important;
  line-height:1.35!important;
}
.journal-entry small{
  margin-top:4px!important;
  font-size:9px!important;
}

/* Загрузка файлов компактнее */
.project-file-drop{
  grid-template-columns:minmax(0,1fr) minmax(190px,.9fr)!important;
  gap:8px!important;
  padding:10px!important;
  margin-bottom:10px!important;
}
.project-file-drop-copy b{
  font-size:12px!important;
}
.project-file-drop-copy p{
  font-size:10px!important;
}
.project-file-drop input[type="file"]{
  padding:5px!important;
  font-size:10px!important;
}

/* Таблица файлов — колонки не выходят за пределы */
.project-files-table-head{
  grid-template-columns:minmax(150px,1fr) 72px 70px 105px 96px!important;
  gap:7px!important;
  padding:7px 8px!important;
  font-size:9px!important;
}
.project-files-table .compact-file-row{
  grid-template-columns:minmax(150px,1fr) 72px 70px 105px 96px!important;
  gap:7px!important;
  padding:7px 8px!important;
  font-size:10px!important;
}
.project-file-name-cell{
  grid-template-columns:24px minmax(0,1fr)!important;
  gap:6px!important;
}
.project-file-type-icon{
  width:23px!important;
  height:23px!important;
  border-radius:6px!important;
  font-size:12px!important;
}
.project-file-actions{
  gap:4px!important;
}
.project-file-actions .small-btn{
  min-height:29px!important;
  padding:4px 7px!important;
  font-size:9px!important;
}

/* Электрощиты — компактные карточки, без огромных кнопок */
.project-panel-list{
  grid-template-columns:1fr!important;
  gap:8px!important;
}
.project-panel-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 88px 88px 170px!important;
  gap:8px!important;
  align-items:center!important;
  padding:10px!important;
}
.project-panel-row > div:nth-child(2),
.project-panel-row > div:nth-child(3){
  display:block!important;
  padding:6px 8px!important;
  min-height:auto!important;
}
.project-panel-row > div:nth-child(2) small,
.project-panel-row > div:nth-child(3) small{
  font-size:9px!important;
}
.project-panel-row > div:nth-child(2) b,
.project-panel-row > div:nth-child(3) b{
  font-size:11px!important;
}
.project-panel-actions{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 42px!important;
  gap:5px!important;
}
.project-panel-actions .small-btn{
  min-height:32px!important;
  padding:5px 7px!important;
  font-size:9px!important;
}
.project-panel-actions .small-btn:first-child{
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}

/* Убираем лишнюю высоту пустых областей */
.project-program-documents,
.project-panel-links{
  margin-top:11px!important;
  padding-top:10px!important;
}

/* Адаптив */
@media(max-width:1100px){
  .project-workspace-toolbar{
    grid-template-columns:minmax(220px,1fr) repeat(3,100px)!important;
  }
  .project-toolbar-search,
  #projectFileCategory,
  #projectFileSort,
  .project-workspace-toolbar > button:last-child{
    grid-row:2!important;
  }
  .project-toolbar-search{grid-column:1/2!important}
  .project-workspace-grid{
    grid-template-columns:1fr!important;
  }
  .project-panel-row{
    grid-template-columns:minmax(0,1fr) 80px 80px 150px!important;
  }
}
@media(max-width:760px){
  #projectDetailModal .project-detail-box{
    width:calc(100vw - 14px)!important;
    max-height:calc(100vh - 14px)!important;
    padding:12px!important;
  }
  .project-detail-summary{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  .project-workspace-toolbar{
    grid-template-columns:1fr!important;
  }
  .project-toolbar-notes,
  .project-toolbar-search{
    grid-column:auto!important;
    grid-row:auto!important;
  }
  .project-panel-row{
    grid-template-columns:1fr!important;
  }
  .project-panel-actions{
    grid-template-columns:1fr auto!important;
  }
}

/* v11.18.4 — только пометки и обычный список файлов */
.project-notes-toolbar{
  grid-template-columns:minmax(360px,1fr) 160px 155px 175px!important;
  gap:10px!important;align-items:stretch!important
}
.project-notes-toolbar .project-toolbar-textarea{
  height:78px!important;min-height:78px!important;font-size:12px!important;padding:11px 12px!important
}
.project-notes-toolbar .project-toolbar-action{
  height:78px!important;min-height:78px!important;padding:10px 12px!important;font-size:12px!important;line-height:1.25!important
}
.project-save-note-btn{font-weight:800!important}
.project-workspace-grid{grid-template-columns:minmax(0,.72fr) minmax(0,1.28fr)!important}
.project-journal-list{min-height:350px!important;max-height:560px!important}
.project-file-drop{
  min-height:70px!important;grid-template-columns:minmax(0,1fr) minmax(220px,.85fr)!important;
  padding:9px 11px!important;margin-bottom:10px!important
}
.project-file-drop-copy p{margin-top:2px!important;font-size:9px!important}
.project-files-list-head{
  display:grid;grid-template-columns:minmax(220px,1fr) 90px 140px 120px;
  gap:9px;align-items:center;padding:8px 10px;border:1px solid var(--vh-line);
  border-radius:10px 10px 0 0;background:var(--vh-surface);
  color:var(--vh-muted);font-size:9px;font-weight:800;text-transform:uppercase
}
.project-files-table{display:block!important;border:1px solid var(--vh-line)!important;border-top:0!important;border-radius:0 0 10px 10px!important;overflow:hidden!important}
.project-files-table .compact-file-row{
  display:grid!important;grid-template-columns:minmax(220px,1fr) 90px 140px 120px!important;
  gap:9px!important;align-items:center!important;width:100%!important;box-sizing:border-box!important;
  padding:9px 10px!important;border:0!important;border-bottom:1px solid var(--vh-line)!important;
  border-radius:0!important;background:var(--vh-input)!important
}
.project-files-table .compact-file-row:last-child{border-bottom:0!important}
.project-file-name{min-width:0!important;overflow:hidden!important;white-space:nowrap!important;text-overflow:ellipsis!important}
.project-file-meta{color:var(--vh-muted);font-size:10px}
.project-file-actions{display:flex!important;gap:5px!important;justify-content:flex-end!important}
.project-program-documents{display:none!important}
@media(max-width:1050px){
  .project-notes-toolbar{grid-template-columns:1fr 1fr 1fr!important}
  .project-toolbar-notes{grid-column:1/-1!important}
  .project-notes-toolbar .project-toolbar-action{height:50px!important;min-height:50px!important}
  .project-workspace-grid{grid-template-columns:1fr!important}
}
@media(max-width:760px){
  .project-notes-toolbar{grid-template-columns:1fr!important}
  .project-toolbar-notes{grid-column:auto!important}
  .project-file-drop{grid-template-columns:1fr!important}
  .project-files-list-head{display:none!important}
  .project-files-table .compact-file-row{grid-template-columns:1fr!important}
  .project-file-actions{justify-content:flex-start!important}
}

/* v11.18.5 — компактная загрузка и документы объекта */
.project-file-drop{
  min-height:48px!important;
  height:auto!important;
  padding:6px 9px!important;
  grid-template-columns:minmax(0,1fr) minmax(210px,.8fr)!important;
  gap:8px!important;
  align-items:center!important;
}
.project-file-drop-copy b{font-size:11px!important}
.project-file-drop-copy p{display:none!important}
.project-file-drop input[type="file"]{
  min-height:32px!important;
  height:32px!important;
  padding:3px 5px!important;
  font-size:9px!important;
}
.project-documents-links{
  margin-top:12px;
  padding-top:10px;
  border-top:1px solid var(--vh-line);
}
.project-linked-documents{
  display:grid;
  gap:7px;
}
.project-linked-document-row{
  display:grid;
  grid-template-columns:34px minmax(0,1fr) 105px 105px;
  gap:8px;
  align-items:center;
  padding:9px 10px;
  border:1px solid var(--vh-line);
  border-radius:10px;
  background:var(--vh-input);
}
.project-linked-document-icon{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border-radius:8px;
  background:rgba(94,166,255,.14);
}
.project-linked-document-main{
  min-width:0;
}
.project-linked-document-main b,
.project-linked-document-main small{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
}
.project-linked-document-main small{
  color:var(--vh-muted);
  margin-top:3px;
  font-size:9px;
}
.project-linked-document-row .small-btn{
  min-height:32px;
  padding:5px 8px;
  font-size:9px;
}
.material-project-link-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 150px;
  gap:8px;
  align-items:center;
}
#materialProjectSaveTopBtn{
  min-height:42px!important;
}
@media(max-width:760px){
  .project-file-drop{grid-template-columns:1fr!important}
  .project-linked-document-row{grid-template-columns:30px minmax(0,1fr)}
  .project-linked-document-row .small-btn{grid-column:2}
  .material-project-link-row{grid-template-columns:1fr}
}

/* v11.18.6 — единый компактный вид файлов, документов и электрощитов объекта */

/* Блок выбора файлов */
.project-file-drop{
  min-height:44px!important;
  padding:6px 10px!important;
  grid-template-columns:160px minmax(0,1fr)!important;
  align-items:center!important;
}
.project-file-drop-copy{
  display:flex!important;
  align-items:center!important;
  min-width:0!important;
}
.project-file-drop-copy b{
  font-size:11px!important;
  white-space:nowrap!important;
}
.project-file-drop input[type="file"]{
  width:100%!important;
  min-width:0!important;
  height:30px!important;
  min-height:30px!important;
  padding:2px 5px!important;
  font-size:9px!important;
}

/* Общий вид строк */
.project-linked-documents,
.project-panel-list{
  display:grid!important;
  gap:7px!important;
}
.project-linked-document-row,
.project-panel-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 88px 42px 34px!important;
  gap:7px!important;
  align-items:center!important;
  min-height:48px!important;
  padding:8px 9px!important;
  border:1px solid var(--vh-line)!important;
  border-radius:10px!important;
  background:var(--vh-input)!important;
}
.project-linked-document-icon{
  display:none!important;
}
.project-linked-document-main,
.project-panel-row > div:first-child{
  min-width:0!important;
}
.project-linked-document-main b,
.project-linked-document-main small,
.project-panel-row > div:first-child b,
.project-panel-row > div:first-child small{
  display:block!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.project-linked-document-main b,
.project-panel-row > div:first-child b{
  font-size:11px!important;
  line-height:1.25!important;
}
.project-linked-document-main small,
.project-panel-row > div:first-child small{
  margin-top:2px!important;
  color:var(--vh-muted)!important;
  font-size:9px!important;
}

/* Кнопки документов */
.project-linked-document-row .small-btn,
.project-panel-actions .small-btn{
  min-height:30px!important;
  height:30px!important;
  padding:4px 7px!important;
  font-size:9px!important;
  border-radius:8px!important;
}
.project-linked-document-row .small-btn:nth-of-type(1){
  grid-column:2!important;
}
.project-linked-document-row .small-btn:nth-of-type(2){
  grid-column:3!important;
  padding-inline:5px!important;
}
.project-linked-document-row .small-btn.danger{
  grid-column:4!important;
  width:30px!important;
  padding:0!important;
}

/* Электрощиты: устройства и модули в одной строке */
.project-panel-row{
  grid-template-columns:minmax(0,1fr) 170px 120px 34px!important;
}
.project-panel-row > div:nth-child(2),
.project-panel-row > div:nth-child(3){
  display:none!important;
}
.project-panel-meta-inline{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-width:0!important;
  color:var(--vh-muted)!important;
  font-size:9px!important;
  white-space:nowrap!important;
}
.project-panel-meta-inline b{
  color:var(--vh-text)!important;
  font-size:10px!important;
}
.project-panel-actions{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 38px!important;
  gap:5px!important;
  min-width:0!important;
}
.project-panel-actions .small-btn:first-child{
  min-width:0!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.project-panel-remove{
  width:30px!important;
  min-width:30px!important;
  padding:0!important;
}

@media(max-width:760px){
  .project-file-drop{
    grid-template-columns:1fr!important;
  }
  .project-linked-document-row,
  .project-panel-row{
    grid-template-columns:1fr!important;
  }
  .project-linked-document-row .small-btn,
  .project-linked-document-row .small-btn.danger{
    grid-column:auto!important;
    width:auto!important;
  }
  .project-panel-meta-inline{
    white-space:normal!important;
  }
  .project-panel-actions{
    grid-template-columns:1fr auto!important;
  }
}

/* v11.18.7 — выравнивание загрузки файлов и возврат действий электрощита */
.project-file-drop{
  display:grid!important;
  grid-template-columns:160px minmax(0,1fr)!important;
  align-items:center!important;
  gap:10px!important;
  min-height:46px!important;
  padding:7px 10px!important;
}
.project-file-drop-copy{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  height:100%!important;
}
.project-file-drop-copy b{
  display:flex!important;
  align-items:center!important;
  height:30px!important;
  margin:0!important;
  line-height:1!important;
}
.project-file-drop input[type="file"]{
  display:block!important;
  width:100%!important;
  height:30px!important;
  min-height:30px!important;
  margin:0!important;
  padding:3px 5px!important;
  line-height:22px!important;
  box-sizing:border-box!important;
}
.project-file-drop input[type="file"]::file-selector-button{
  height:24px!important;
  margin:0 8px 0 0!important;
  padding:2px 8px!important;
  vertical-align:middle!important;
}

/* Электрощиты: название, статистика, открыть, PDF и крестик — в одной строке */
.project-panel-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 165px 118px 38px 34px!important;
  gap:7px!important;
  align-items:center!important;
}
.project-panel-meta-inline{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:12px!important;
  min-width:0!important;
  white-space:nowrap!important;
}
.project-panel-open-btn,
.project-panel-pdf-btn,
.project-panel-remove{
  min-height:30px!important;
  height:30px!important;
  padding:4px 7px!important;
  font-size:9px!important;
  border-radius:8px!important;
}
.project-panel-open-btn{
  min-width:0!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:ellipsis!important;
}
.project-panel-pdf-btn{
  width:38px!important;
  padding-inline:4px!important;
}
.project-panel-remove{
  width:30px!important;
  min-width:30px!important;
  padding:0!important;
}
@media(max-width:760px){
  .project-file-drop{
    grid-template-columns:1fr!important;
  }
  .project-panel-row{
    grid-template-columns:1fr!important;
  }
  .project-panel-meta-inline{
    white-space:normal!important;
  }
  .project-panel-open-btn,
  .project-panel-pdf-btn,
  .project-panel-remove{
    width:auto!important;
  }
}

/* v11.18.8 — действия электрощита справа и скруглённый выбор файлов */
.project-panel-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 165px auto!important;
  gap:10px!important;
  align-items:center!important;
}
.project-panel-meta-inline{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-width:0!important;
  white-space:nowrap!important;
}
.project-panel-actions-right{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:6px!important;
  min-width:0!important;
}
.project-panel-actions-right .small-btn{
  min-height:30px!important;
  height:30px!important;
  padding:4px 9px!important;
  border-radius:8px!important;
  font-size:9px!important;
  white-space:nowrap!important;
}
.project-panel-actions-right .project-panel-open-btn{
  min-width:130px!important;
}
.project-panel-actions-right .project-panel-pdf-btn{
  width:42px!important;
  min-width:42px!important;
  padding-inline:4px!important;
}
.project-panel-actions-right .project-panel-remove{
  width:30px!important;
  min-width:30px!important;
  padding:0!important;
}

/* Кнопка выбора файлов похожа на остальные кнопки приложения */
.project-file-drop input[type="file"]{
  border-radius:10px!important;
  overflow:hidden!important;
}
.project-file-drop input[type="file"]::file-selector-button{
  height:25px!important;
  margin:0 8px 0 0!important;
  padding:3px 10px!important;
  border:1px solid var(--vh-line)!important;
  border-radius:8px!important;
  background:var(--vh-surface)!important;
  color:var(--vh-text)!important;
  font-weight:700!important;
  cursor:pointer!important;
}
.project-file-drop input[type="file"]::file-selector-button:hover{
  border-color:rgba(255,189,54,.65)!important;
  background:var(--vh-surface-2)!important;
}

@media(max-width:760px){
  .project-panel-row{
    grid-template-columns:1fr!important;
  }
  .project-panel-meta-inline{
    white-space:normal!important;
  }
  .project-panel-actions-right{
    justify-content:flex-start!important;
    flex-wrap:wrap!important;
  }
}

/* v11.18.9 — гарантированное отображение действий электрощита */
#projectPanelProjects .project-panel-row{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 165px auto!important;
  gap:10px!important;
  align-items:center!important;
}

#projectPanelProjects .project-panel-row > div{
  display:block!important;
}

#projectPanelProjects .project-panel-row > .project-panel-meta-inline{
  display:flex!important;
  align-items:center!important;
  gap:12px!important;
  min-width:0!important;
  white-space:nowrap!important;
}

#projectPanelProjects .project-panel-row > .project-panel-actions-right{
  display:flex!important;
  align-items:center!important;
  justify-content:flex-end!important;
  gap:6px!important;
  min-width:0!important;
  visibility:visible!important;
  opacity:1!important;
}

#projectPanelProjects .project-panel-actions-right .small-btn{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  visibility:visible!important;
  opacity:1!important;
  min-height:30px!important;
  height:30px!important;
  padding:4px 9px!important;
  border-radius:8px!important;
  font-size:9px!important;
  white-space:nowrap!important;
}

#projectPanelProjects .project-panel-open-btn{
  min-width:130px!important;
}

#projectPanelProjects .project-panel-pdf-btn{
  width:42px!important;
  min-width:42px!important;
}

#projectPanelProjects .project-panel-remove{
  width:30px!important;
  min-width:30px!important;
  padding:0!important;
}

@media(max-width:760px){
  #projectPanelProjects .project-panel-row{
    grid-template-columns:1fr!important;
  }
  #projectPanelProjects .project-panel-meta-inline{
    white-space:normal!important;
  }
  #projectPanelProjects .project-panel-actions-right{
    justify-content:flex-start!important;
    flex-wrap:wrap!important;
  }
}

/* v11.19.2 — кнопка удаления объекта справа от истории */
#projectsGrid .record-actions{
  display:flex!important;
  align-items:center!important;
  gap:7px!important;
  flex-wrap:wrap!important;
}
#projectsGrid .project-card-delete-btn{
  margin-left:0!important;
  min-height:34px!important;
  padding:6px 11px!important;
  border-radius:9px!important;
}

/* v11.20.0 — история удалений, восстановление и рабочие действия сметы */
.history-recovery-table td:last-child,
.history-recovery-table th:last-child{
  width:130px;
  text-align:right;
}
.history-deleted-row{
  background:rgba(255,93,115,.055);
}
.history-deleted-badge{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:4px 8px;
  border:1px solid rgba(255,93,115,.35);
  border-radius:8px;
  color:#ff9cac;
  background:rgba(255,93,115,.08);
  font-size:10px;
  font-weight:800;
}
.history-restore-btn{
  min-height:32px!important;
  border-radius:8px!important;
}
.material-calculation-actions{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(110px,150px)) minmax(190px,1fr)!important;
  gap:8px!important;
}
.material-calculation-actions .btn{
  min-height:42px!important;
}
@media(max-width:800px){
  .material-calculation-actions{grid-template-columns:1fr 1fr!important}
}
@media(max-width:520px){
  .material-calculation-actions{grid-template-columns:1fr!important}
}

#projects .kanban-board,#projects .kanban-column,#projects .kanban-card{min-width:0!important}
#projects .kanban-card{width:100%!important;max-width:100%!important;box-sizing:border-box!important;overflow:hidden!important}
#projects .kanban-card *{min-width:0!important;box-sizing:border-box!important}
#projects .kanban-card h4,#projects .kanban-task,#projects .kanban-card .muted{overflow-wrap:anywhere!important;word-break:break-word!important}
#projects .kanban-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
#projects .kanban-actions .small-btn{width:100%!important;min-width:0!important;padding:6px 7px!important;white-space:normal!important;line-height:1.15!important}

#sheetLines .material-sheet-line{
  display:grid!important;grid-template-columns:minmax(0,1fr) 80px 120px 105px 32px!important;
  gap:8px!important;align-items:center!important;width:100%!important;max-width:100%!important;
  box-sizing:border-box!important;overflow:hidden!important
}
#sheetLines .material-sheet-line>*{min-width:0!important;box-sizing:border-box!important}
#sheetLines .line-name b{display:block!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
#sheetLines .material-line-field input,#sheetLines .material-line-total-box{width:100%!important;min-width:0!important;max-width:100%!important}
#sheetLines .material-comment-wrap{display:none!important}
#sheetLines .material-remove{position:static!important;grid-column:5!important;width:30px!important;min-width:30px!important}
@media(max-width:760px){
  #sheetLines .material-sheet-line{grid-template-columns:1fr 1fr!important}
  #sheetLines .material-remove{grid-column:auto!important}
}

.project-linked-document-row.is-deleting{
  opacity:.45!important;
  pointer-events:none!important;
}


/* VoltHome OS v11.23.0 RC — system status and notifications */
.vh-system-status{
  position:fixed;
  top:10px;
  right:14px;
  z-index:10050;
  display:flex;
  align-items:center;
  gap:7px;
  max-width:min(560px,calc(100vw - 28px));
  min-height:34px;
  padding:7px 11px;
  border:1px solid var(--vh-line,rgba(120,140,160,.3));
  border-radius:11px;
  background:color-mix(in srgb,var(--vh-surface,#fff) 92%,transparent);
  box-shadow:0 8px 28px rgba(0,0,0,.14);
  backdrop-filter:blur(10px);
  font-size:10px;
  font-weight:700;
  color:var(--vh-muted,#667);
}
.vh-status-dot{
  width:8px;height:8px;border-radius:50%;
  background:#d6a62d;
  box-shadow:0 0 0 3px rgba(214,166,45,.14);
  flex:0 0 auto;
}
.vh-system-status.is-ok .vh-status-dot{
  background:#28b779;
  box-shadow:0 0 0 3px rgba(40,183,121,.14);
}
.vh-system-status.is-error .vh-status-dot{
  background:#e35469;
  box-shadow:0 0 0 3px rgba(227,84,105,.14);
}
#vhLastSaveText{font-weight:500;opacity:.78}
.vh-toast-area{
  position:fixed;
  right:14px;
  top:58px;
  z-index:10060;
  display:grid;
  width:min(380px,calc(100vw - 28px));
  gap:8px;
  pointer-events:none;
}
.vh-toast{
  transform:translateX(24px);
  opacity:0;
  padding:11px 13px;
  border:1px solid var(--vh-line,rgba(120,140,160,.3));
  border-radius:11px;
  background:var(--vh-surface,#fff);
  box-shadow:0 12px 32px rgba(0,0,0,.18);
  transition:opacity .2s ease,transform .2s ease;
  pointer-events:auto;
}
.vh-toast.is-visible{transform:translateX(0);opacity:1}
.vh-toast-title{font-size:10px;font-weight:900;margin-bottom:4px}
.vh-toast-message{font-size:10px;line-height:1.4;overflow-wrap:anywhere}
.vh-toast-error{border-color:rgba(227,84,105,.5)}
.vh-toast-success{border-color:rgba(40,183,121,.5)}
@media(max-width:760px){
  .vh-system-status{position:sticky;top:0;right:auto;margin:7px;max-width:none}
  .vh-toast-area{top:54px}
}

/* VoltHome OS v11.23.1 — расширенная карточка объекта */
.project-object-profile{
  margin:12px 0 14px;
  padding:13px;
  border:1px solid var(--vh-line,rgba(120,140,160,.25));
  border-radius:14px;
  background:var(--vh-surface,#fff);
}
.project-object-profile-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
}
.project-object-profile-grid>div{
  min-width:0;
  padding:10px 11px;
  border:1px solid var(--vh-line,rgba(120,140,160,.18));
  border-radius:11px;
  background:var(--vh-surface-2,rgba(130,150,170,.06));
}
.project-object-profile-grid small,
.project-object-profile-grid span{display:block;color:var(--vh-muted,#667);font-size:10px;line-height:1.35;overflow-wrap:anywhere}
.project-object-profile-grid b{display:block;margin:3px 0;font-size:12px;overflow-wrap:anywhere}
.project-editor-grid .field-wide{grid-column:1/-1}
.project-object-meta{overflow-wrap:anywhere}
@media(max-width:900px){.project-object-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.project-object-profile-grid{grid-template-columns:1fr}}


/* VoltHome OS v11.23.2 — помещения и потребители */


/* VoltHome OS v11.23.3 — инженерный блок в единой палитре приложения */
.project-engineering-card{
  margin:14px 0;
  padding:14px;
  border:1px solid var(--vh-line);
  border-radius:14px;
  background:var(--vh-surface-2);
  color:var(--vh-text);
  box-shadow:var(--vh-shadow);
}
.project-engineering-card .project-section-head h4{color:var(--vh-text)}
.project-rooms-head{align-items:flex-start;gap:14px}
.project-rooms-head>div:first-child{min-width:0}
.project-rooms-head .muted{margin-top:4px;max-width:760px;color:var(--vh-muted)!important}

.project-rooms-summary,
.project-load-summary{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin:10px 0 12px;
}
.project-rooms-summary span,
.project-load-summary .load-pill{
  padding:7px 10px;
  border-radius:999px;
  border:1px solid var(--vh-line);
  background:var(--vh-surface);
  font-size:11px;
  color:var(--vh-muted);
  box-shadow:0 3px 10px rgba(20,63,94,.05);
}
.project-load-summary .load-pill strong{color:var(--vh-text)}
.project-load-summary .load-pill.accent{
  border-color:rgba(247,148,29,.38);
  background:color-mix(in srgb,var(--brand-orange) 9%,var(--vh-surface));
}
.project-load-summary .load-pill.blue{
  border-color:rgba(20,121,170,.30);
  background:color-mix(in srgb,var(--brand-blue) 8%,var(--vh-surface));
}

.project-rooms-list{display:grid;gap:10px}
.project-room-card{
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface);
  padding:12px;
  min-width:0;
  box-shadow:0 5px 16px rgba(20,63,94,.06);
}
.project-room-header{display:flex;justify-content:space-between;align-items:center;gap:10px}
.project-room-title-fields{
  display:grid;
  grid-template-columns:minmax(180px,1fr) 150px;
  gap:8px;
  flex:1;
  min-width:0;
}
.project-room-title-fields input,
.project-consumer-add select,
.project-consumer-row input,
.project-consumer-row select,
.project-group-row input,
.project-group-row select,
.project-load-settings input,
.project-load-settings select{
  width:100%;
  min-width:0;
  background:var(--vh-input);
  border:1px solid var(--vh-line);
  color:var(--vh-text);
  border-radius:9px;
  padding:8px 9px;
  box-sizing:border-box;
  outline:none;
}
.project-room-title-fields input:focus,
.project-consumer-add select:focus,
.project-consumer-row input:focus,
.project-consumer-row select:focus,
.project-group-row input:focus,
.project-group-row select:focus,
.project-load-settings input:focus,
.project-load-settings select:focus{
  border-color:rgba(247,148,29,.58);
  box-shadow:0 0 0 3px rgba(247,148,29,.10);
}
.project-room-name{font-weight:800}
.project-room-area{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:6px;
  align-items:center;
  font-size:10px;
  color:var(--vh-muted);
}
.project-room-area input{padding:7px}
.project-room-area b{font-size:10px;color:var(--vh-muted)}

.project-consumer-add{
  display:grid;
  grid-template-columns:minmax(200px,1fr) auto auto;
  gap:7px;
  margin-top:10px;
}
.project-consumer-list{display:grid;gap:6px;margin-top:9px}
.project-consumer-row{
  display:grid;
  grid-template-columns:minmax(180px,1.5fr) 76px 112px 72px 150px 32px;
  gap:7px;
  align-items:end;
  padding:8px;
  border-radius:10px;
  background:var(--vh-surface-2);
  border:1px solid var(--vh-line);
  min-width:0;
}
.project-consumer-main{min-width:0}
.project-consumer-main span,
.project-consumer-row label span,
.project-group-row label span{
  display:block;
  font-size:9px;
  color:var(--vh-muted);
  margin:0 0 4px;
}
.project-consumer-name{font-weight:700}
.project-consumer-row .danger{width:30px;min-width:30px;margin-bottom:1px}
.project-consumers-empty,.project-rooms-empty,.project-groups-empty{
  padding:13px;
  border:1px dashed var(--vh-line);
  border-radius:10px;
  color:var(--vh-muted);
  font-size:11px;
  background:var(--vh-surface-2);
}
.project-rooms-empty{display:grid;gap:4px;text-align:center}
.project-rooms-empty b{color:var(--vh-text)}

.project-load-settings{
  display:grid;
  grid-template-columns:repeat(4,minmax(130px,1fr)) auto auto;
  gap:8px;
  align-items:end;
  margin:10px 0 12px;
  padding:10px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface);
}
.project-load-settings label span{
  display:block;
  margin-bottom:4px;
  font-size:9px;
  color:var(--vh-muted);
}
.project-load-note{
  margin:8px 0 0;
  padding:9px 10px;
  border-left:3px solid var(--brand-orange);
  border-radius:0 9px 9px 0;
  background:color-mix(in srgb,var(--brand-orange) 7%,var(--vh-surface));
  color:var(--vh-muted);
  font-size:10px;
  line-height:1.45;
}

.project-room-load-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:7px;
  margin-top:8px;
}
.project-room-load-card{
  padding:9px 10px;
  border:1px solid var(--vh-line);
  border-radius:10px;
  background:var(--vh-surface);
}
.project-room-load-card b{display:block;color:var(--vh-text);font-size:11px}
.project-room-load-card span{display:block;color:var(--vh-muted);font-size:10px;margin-top:3px}

.project-groups-list{display:grid;gap:7px;margin-top:10px}
.project-group-row{
  display:grid;
  grid-template-columns:minmax(180px,1.2fr) 90px 90px 110px minmax(180px,1.2fr) 32px;
  gap:7px;
  align-items:end;
  padding:9px;
  border:1px solid var(--vh-line);
  border-radius:10px;
  background:var(--vh-surface);
}
.project-group-consumers{
  min-width:0;
  padding:7px 9px;
  border-radius:9px;
  background:var(--vh-surface-2);
  color:var(--vh-muted);
  font-size:10px;
  line-height:1.35;
  overflow-wrap:anywhere;
}
.project-group-consumers b{color:var(--vh-text)}

html[data-theme="dark"] .project-engineering-card,
html[data-theme="dark"] .project-room-card,
html[data-theme="dark"] .project-load-settings,
html[data-theme="dark"] .project-group-row,
html[data-theme="dark"] .project-room-load-card{
  box-shadow:none;
}
html[data-theme="dark"] .project-load-summary .load-pill.accent{
  background:rgba(247,148,29,.10);
}
html[data-theme="dark"] .project-load-summary .load-pill.blue{
  background:rgba(20,121,170,.11);
}

@media(max-width:1050px){
  .project-consumer-row{grid-template-columns:minmax(180px,1fr) repeat(3,86px) 135px 32px}
  .project-load-settings{grid-template-columns:repeat(2,1fr)}
  .project-group-row{grid-template-columns:1fr 90px 90px 110px 32px}
  .project-group-consumers{grid-column:1/-1}
}
@media(max-width:760px){
  .project-room-title-fields{grid-template-columns:1fr}
  .project-consumer-add{grid-template-columns:1fr 1fr}
  .project-consumer-add select{grid-column:1/-1}
  .project-consumer-row{grid-template-columns:1fr 1fr}
  .project-consumer-main{grid-column:1/-1}
  .project-consumer-row .danger{grid-column:2;justify-self:end}
  .project-load-settings{grid-template-columns:1fr 1fr}
  .project-group-row{grid-template-columns:1fr 1fr}
  .project-group-consumers{grid-column:1/-1}
  .project-group-row .danger{justify-self:end}
}
@media(max-width:520px){
  .project-consumer-add,.project-load-settings,.project-group-row{grid-template-columns:1fr}
  .project-consumer-add select,.project-group-consumers{grid-column:auto}
}


/* VoltHome OS v11.23.4 — кабель, защита и приоритет брендов */
.project-protection-settings{
  display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(140px,.7fr)) auto;
  gap:8px;align-items:end;margin:12px 0;padding:10px;border:1px solid var(--vh-line);
  border-radius:12px;background:var(--vh-surface)
}
.project-protection-settings>div:first-child{align-self:center}
.project-protection-settings b{display:block;color:var(--vh-text);font-size:11px}
.project-protection-settings>div:first-child span{display:block;color:var(--vh-muted);font-size:9px;margin-top:3px;line-height:1.35}
.project-protection-settings label span,.project-protection-grid label span{display:block;margin:0 0 4px;font-size:9px;color:var(--vh-muted)}
.project-protection-settings select,.project-protection-grid select{
  width:100%;min-width:0;box-sizing:border-box;background:var(--vh-input);border:1px solid var(--vh-line);
  color:var(--vh-text);border-radius:9px;padding:8px 9px;outline:none
}
.project-protection-settings select:focus,.project-protection-grid select:focus{
  border-color:rgba(247,148,29,.58);box-shadow:0 0 0 3px rgba(247,148,29,.10)
}
.project-group-with-protection{grid-template-columns:minmax(180px,1.2fr) 90px 90px 110px minmax(180px,1.2fr) 32px}
.project-protection-editor{grid-column:1/-1;margin-top:2px;padding:10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2)}
.project-protection-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.project-protection-head b{display:block;color:var(--vh-text);font-size:11px}
.project-protection-head span{display:block;color:var(--vh-muted);font-size:9px;margin-top:2px}
.project-protection-grid{display:grid;grid-template-columns:repeat(9,minmax(90px,1fr));gap:7px;align-items:end}
.project-protection-result{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;padding:8px 9px;border-radius:9px;
  border:1px solid rgba(20,121,170,.22);background:color-mix(in srgb,var(--brand-blue) 6%,var(--vh-surface))
}
.project-protection-result b{font-size:10px;color:var(--vh-text)}
.project-protection-result>span{font-size:9px;color:var(--vh-muted)}
.project-protection-check{margin-left:auto;display:flex!important;align-items:center;gap:5px;font-size:9px!important;color:var(--vh-muted)!important;white-space:nowrap}
.project-protection-check input{width:auto!important}
html[data-theme="dark"] .project-protection-result{background:rgba(20,121,170,.10)}
@media(max-width:1200px){
  .project-protection-settings{grid-template-columns:1fr 1fr 1fr}
  .project-protection-settings>div:first-child{grid-column:1/-1}
  .project-protection-grid{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:760px){
  .project-protection-settings{grid-template-columns:1fr}
  .project-protection-grid{grid-template-columns:1fr 1fr}
  .project-protection-check{margin-left:0}
}
@media(max-width:520px){.project-protection-grid{grid-template-columns:1fr}}


/* VoltHome OS v11.23.5 — состав и автоматическое формирование щита */
.project-panel-composition{
  margin-top:12px;
  padding:10px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface-2);
}
.project-panel-composition-list{display:grid;gap:7px;margin-top:8px}
.project-panel-composition-row{
  display:grid;
  grid-template-columns:minmax(170px,.9fr) minmax(260px,1.7fr) 70px;
  gap:9px;
  align-items:center;
  padding:9px 10px;
  border:1px solid var(--vh-line);
  border-radius:10px;
  background:var(--vh-surface);
}
.project-panel-composition-row>div:first-child{min-width:0}
.project-panel-composition-row b{display:block;color:var(--vh-text);font-size:10px}
.project-panel-composition-row small{display:block;color:var(--vh-muted);font-size:9px;margin-top:3px}
.project-panel-composition-row>strong{
  justify-self:end;
  white-space:nowrap;
  font-size:10px;
  color:var(--vh-text)
}
.project-panel-composition-devices{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  min-width:0;
}
.project-panel-composition-devices span{
  display:inline-flex;
  padding:5px 7px;
  border-radius:8px;
  border:1px solid rgba(20,121,170,.20);
  background:color-mix(in srgb,var(--brand-blue) 6%,var(--vh-surface));
  color:var(--vh-muted);
  font-size:9px;
  overflow-wrap:anywhere;
}
html[data-theme="dark"] .project-panel-composition-devices span{
  background:rgba(20,121,170,.10)
}
@media(max-width:760px){
  .project-panel-composition-row{grid-template-columns:1fr}
  .project-panel-composition-row>strong{justify-self:start}
}


/* VoltHome OS v11.23.6 — вкладки карточки объекта */
#projectDetailModal .project-detail-box{
  overflow:hidden!important;
  display:flex;
  flex-direction:column;
  max-height:calc(100vh - 28px)!important;
}
#projectDetailModal .modal-head{flex:0 0 auto}
.project-detail-tabs{
  flex:0 0 auto;
  display:flex;
  gap:5px;
  padding:8px 10px;
  overflow-x:auto;
  scrollbar-width:thin;
  border-bottom:1px solid var(--vh-line);
  background:var(--vh-surface);
  position:sticky;
  top:0;
  z-index:9;
}
.project-detail-tab{
  flex:0 0 auto;
  min-height:32px;
  padding:7px 11px;
  border:1px solid var(--vh-line);
  border-radius:9px;
  background:var(--vh-surface-2);
  color:var(--vh-muted);
  font:inherit;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
  white-space:nowrap;
}
.project-detail-tab:hover{
  border-color:rgba(20,121,170,.38);
  color:var(--vh-text);
}
.project-detail-tab.active{
  border-color:rgba(247,148,29,.45);
  background:color-mix(in srgb,var(--brand-orange) 9%,var(--vh-surface));
  color:var(--vh-text);
  box-shadow:inset 0 -2px 0 var(--brand-orange);
}
.project-detail-tab-panes{
  flex:1 1 auto;
  min-height:0;
  overflow:hidden;
}
.project-detail-pane{
  display:none;
  height:100%;
  min-height:0;
  overflow:auto;
  padding:10px;
  box-sizing:border-box;
}
.project-detail-pane.active{display:block}
.project-detail-pane .project-engineering-card,
.project-detail-pane .project-object-profile{
  margin-top:0;
}
.project-docs-actions{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:10px;
  padding:10px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface-2);
}
.project-docs-actions .project-main-action{margin:0!important}
#projectTab-files .project-workspace-toolbar{margin-top:0}
#projectTab-files .project-workspace-grid{margin-bottom:0}
#projectTab-panel .project-panel-composition{margin-top:0}
#projectTab-panel .project-panel-links{
  margin-top:10px;
  padding:10px;
  border:1px solid var(--vh-line);
  border-radius:12px;
  background:var(--vh-surface);
}
@media(max-width:760px){
  .project-detail-tabs{padding:7px}
  .project-detail-pane{padding:7px}
}

/* Рабочая отметка проверки специалистом */
.project-protection-check{
  cursor:pointer;
  user-select:none;
  padding:5px 8px;
  border:1px solid var(--vh-line);
  border-radius:8px;
  background:var(--vh-surface);
  transition:.16s ease;
}
.project-protection-check:hover{border-color:rgba(20,121,170,.4)}
.project-protection-check input{
  appearance:auto!important;
  width:14px!important;
  height:14px!important;
  accent-color:#238b57;
  cursor:pointer;
}
.project-protection-check.is-verified{
  color:#187647!important;
  border-color:rgba(35,139,87,.38);
  background:rgba(35,139,87,.08);
}
.project-protection-check.is-verified span{color:#187647!important;font-weight:800}

/* Реалистичный фронт модульного оборудования.
   Геометрия остаётся модульной: 1 модуль = 18 мм в логике существующего конструктора. */
.panel-device{
  overflow:visible!important;
  border-radius:2px!important;
  border:1px solid #788187!important;
  background:#e7eaec!important;
  box-shadow:0 2px 5px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,255,255,.9)!important;
}
.panel-device .device-face-real{
  position:absolute;
  inset:0;
  display:grid!important;
  grid-template-rows:13px 18px minmax(0,1fr) 13px!important;
  overflow:hidden;
  border-radius:2px;
  background:
    linear-gradient(90deg,rgba(255,255,255,.55),transparent 16%,transparent 84%,rgba(45,52,56,.10)),
    linear-gradient(180deg,#fafafa,#eef0f1 55%,#d7dbdd)!important;
}
.panel-device .device-brandline{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:3px;
  min-width:0;
  padding:0 3px;
  border-top:1px solid rgba(255,255,255,.8);
  border-bottom:1px solid rgba(75,82,86,.16);
  background:#f7f8f8;
}
.panel-device .device-brand{
  height:auto!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  font-size:6.5px!important;
  font-weight:950!important;
  line-height:1!important;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .device-series{
  min-width:0;
  max-width:55%;
  color:#586168;
  font-size:4.8px;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .device-body{
  position:relative;
  min-height:0;
  display:block!important;
  background:
    linear-gradient(90deg,rgba(250,250,250,.4),rgba(219,223,225,.15)),
    linear-gradient(180deg,#f4f5f5,#e4e7e8)!important;
}
.panel-device .device-electrical-mark{
  position:absolute;
  top:3px;
  left:4px;
  z-index:3;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  color:#121719;
  line-height:1;
}
.panel-device .device-electrical-mark strong{
  font-size:9px;
  font-weight:950;
  letter-spacing:-.3px;
}
.panel-device .device-electrical-mark span{
  margin-top:2px;
  padding:1px 2px;
  border:1px solid #333;
  border-radius:1px;
  font-size:4px;
  font-weight:800;
}
.panel-device .device-toggle{
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-42%)!important;
  width:14px!important;
  height:27px!important;
  margin:0!important;
  border:1px solid #525a5e!important;
  border-radius:2px!important;
  background:linear-gradient(90deg,#9ba1a4,#f7f8f8 45%,#aeb4b7)!important;
  box-shadow:0 2px 2px rgba(0,0,0,.28),inset 0 1px 0 #fff!important;
}
.panel-device .device-toggle span{
  display:block;
  width:9px;
  height:8px;
  margin:3px auto 0;
  border-radius:1px;
  background:#202426;
}
.panel-device .device-toggle::before{
  content:"I";
  top:-10px;
  font-size:5px;
}
.panel-device .device-toggle::after{
  content:"O";
  position:absolute;
  left:50%;
  bottom:-10px;
  transform:translateX(-50%);
  width:auto!important;
  height:auto!important;
  margin:0!important;
  background:none!important;
  color:#202426;
  font-size:5px;
  font-weight:900;
}
.panel-device .device-test{
  position:absolute!important;
  right:4px!important;
  top:4px!important;
  display:grid;
  place-items:center;
  width:10px!important;
  height:10px!important;
  padding:0!important;
  border-radius:2px!important;
  border:1px solid #305c76!important;
  background:#72b4d8!important;
  color:#fff!important;
  font-size:5px!important;
  font-weight:950!important;
  line-height:1!important;
  pointer-events:none;
}
.panel-device .device-symbol{
  position:absolute;
  right:4px;
  top:18px;
  color:#4d565b;
  font-size:7px;
  font-weight:900;
}
.panel-device .device-type-name{
  position:absolute;
  left:3px;
  right:3px;
  bottom:12px;
  overflow:hidden;
  color:#323a3e;
  font-size:4.7px;
  font-weight:800;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .device-subline{
  left:3px!important;
  right:3px!important;
  bottom:3px!important;
  font-size:4.5px!important;
  color:#5b6469!important;
}
.panel-device .device-terminals{
  min-height:13px!important;
  padding:0 2px!important;
  display:flex!important;
  align-items:center!important;
  justify-content:space-around!important;
  gap:1px!important;
  background:linear-gradient(180deg,#e2e5e6,#c9ced0)!important;
}
.panel-device .device-terminals-top{border-bottom:1px solid rgba(40,46,49,.20)!important}
.panel-device .device-terminals-bottom{border-top:1px solid rgba(40,46,49,.22)!important}
.panel-device .device-terminal-wrap{
  position:relative;
  display:grid;
  place-items:center;
  min-width:0;
}
.panel-device .device-terminal{
  display:block!important;
  width:6px!important;
  height:6px!important;
  border-radius:50%!important;
  border:1px solid #454c50!important;
  background:
    linear-gradient(45deg,transparent 43%,#4a5054 44% 56%,transparent 57%),
    linear-gradient(-45deg,transparent 43%,#4a5054 44% 56%,transparent 57%),
    radial-gradient(circle,#cfd3d5 0 35%,#848b8f 38% 68%,#3d4346 72%)!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)!important;
}
.panel-device .device-terminal-wrap em{
  position:absolute;
  right:-2px;
  bottom:-3px;
  color:#50585d;
  font-style:normal;
  font-size:3.5px;
  font-weight:800;
}
.panel-device .device-module-grid{z-index:0}
.panel-device .device-module-separator{border-right:1px solid rgba(67,75,80,.16)!important}

/* Цветовая идентификация брендов — без использования внешних изображений/логотипов. */
.panel-device.brand-schneider .device-brand{color:#259b4b!important}
.panel-device.brand-schneider .device-brandline{box-shadow:inset 0 3px 0 #2fa653}
.panel-device.brand-abb .device-brand{color:#d71920!important}
.panel-device.brand-abb .device-brandline{box-shadow:inset 0 3px 0 #e12228}
.panel-device.brand-legrand .device-brand{color:#df6a16!important}
.panel-device.brand-legrand .device-brandline{box-shadow:inset 0 3px 0 #eb7a1f}
.panel-device.brand-hager .device-brand{color:#15699b!important}
.panel-device.brand-hager .device-brandline{box-shadow:inset 0 3px 0 #1c76ad}
.panel-device.brand-eaton .device-brand{color:#245aa8!important}
.panel-device.brand-eaton .device-brandline{box-shadow:inset 0 3px 0 #2d65b7}
.panel-device.brand-iek .device-brand{color:#806800!important}
.panel-device.brand-iek .device-brandline{box-shadow:inset 0 3px 0 #f1c600}
.panel-device.brand-ekf .device-brand{color:#c9212a!important}
.panel-device.brand-ekf .device-brandline{box-shadow:inset 0 3px 0 #d72730}
.panel-device.brand-chint .device-brand{color:#1470a9!important}
.panel-device.brand-chint .device-brandline{box-shadow:inset 0 3px 0 #1683c4}
.panel-device.brand-meanwell .device-brand{color:#1669a8!important}
.panel-device.brand-meanwell .device-brandline{box-shadow:inset 0 3px 0 #d92a20}

/* Отличия типов */
.panel-device.type-uzo .device-body,
.panel-device.type-dif .device-body{
  background:linear-gradient(180deg,#f8fafb,#e1e6e8)!important;
}
.panel-device.type-dif .device-toggle span{background:#2b2f31}
.panel-device.type-contactor .device-toggle{
  width:65%!important;
  height:15px!important;
  background:linear-gradient(#69747a,#3f494e)!important;
}
.panel-device.type-contactor .device-toggle span,
.panel-device.type-contactor .device-toggle::before,
.panel-device.type-contactor .device-toggle::after{display:none!important}

/* На 1 модуле маркировка остаётся читаемой и не выползает наружу */
.panel-device[data-modules="1"] .device-series{display:none}
.panel-device[data-modules="1"] .device-brand{font-size:5.2px!important}
.panel-device[data-modules="1"] .device-electrical-mark strong{font-size:7px}
.panel-device[data-modules="1"] .device-type-name{display:none}
.panel-device[data-modules="1"] .device-terminal-wrap:nth-child(n+2){display:none}
.panel-device[data-modules="2"] .device-terminal-wrap:nth-child(n+3){display:none}


/* v11.23.7 — гарантированный вертикальный скролл вкладок объекта */
#projectDetailModal{
  overflow:hidden!important;
}
#projectDetailModal .project-detail-box{
  height:min(94vh,920px)!important;
  max-height:94vh!important;
  min-height:520px;
  overflow:hidden!important;
}
#projectDetailModal .project-detail-tab-panes{
  flex:1 1 0!important;
  min-height:0!important;
  height:0!important;
  overflow:hidden!important;
}
#projectDetailModal .project-detail-pane{
  height:100%!important;
  max-height:100%!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain;
  scrollbar-gutter:stable;
  -webkit-overflow-scrolling:touch;
}
#projectDetailModal .project-detail-pane::-webkit-scrollbar{width:10px}
#projectDetailModal .project-detail-pane::-webkit-scrollbar-track{
  background:var(--vh-surface-2);
  border-radius:10px;
}
#projectDetailModal .project-detail-pane::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,var(--brand-blue) 35%,var(--vh-line));
  border:2px solid var(--vh-surface-2);
  border-radius:10px;
}
@media(max-height:650px){
  #projectDetailModal .project-detail-box{
    height:96vh!important;
    min-height:0!important;
  }
}


/* v11.23.7 — более качественный векторный визуал модульного оборудования */
.panel-device.vh-centered-on-din{
  height:78px!important;
  transform-origin:center center!important;
  z-index:5!important;
}
.panel-device .vh-product-device{
  position:absolute;
  inset:0;
  display:grid;
  grid-template-rows:12px 15px 1fr 12px;
  overflow:visible;
  border-radius:2px;
  border:1px solid rgba(42,49,53,.55);
  background:linear-gradient(90deg,#d5d9db 0,#f9faf9 9%,#eef0ef 88%,#c4c9cb 100%);
  box-shadow:
    0 4px 7px rgba(0,0,0,.26),
    inset 1px 0 0 rgba(255,255,255,.95),
    inset -1px 0 0 rgba(60,66,70,.16);
}
.panel-device .vh-product-header{
  position:relative;
  z-index:3;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:2px;
  min-width:0;
  padding:0 3px;
  border-top:1px solid rgba(255,255,255,.9);
  border-bottom:1px solid rgba(70,76,80,.18);
  background:linear-gradient(#fbfbfa,#eceeed);
}
.panel-device .vh-product-header strong{
  overflow:hidden;
  color:#222;
  font-size:6.2px;
  font-weight:950;
  line-height:1;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .vh-product-header span{
  overflow:hidden;
  max-width:48%;
  color:#626a6e;
  font-size:4.4px;
  font-weight:750;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .vh-product-main{
  position:relative;
  min-height:0;
  overflow:hidden;
  background:
    linear-gradient(90deg,rgba(255,255,255,.42),transparent 13%,transparent 86%,rgba(55,61,64,.08)),
    linear-gradient(#f7f8f7,#e6e9e9);
}
.panel-device .vh-top-terminals,
.panel-device .vh-bottom-terminals{
  position:relative;
  z-index:4;
  display:flex;
  align-items:center;
  justify-content:space-around;
  padding:0 2px;
  background:linear-gradient(#dfe3e4,#bfc5c8);
}
.panel-device .vh-top-terminals{border-bottom:1px solid #a8afb2}
.panel-device .vh-bottom-terminals{border-top:1px solid #9ea6a9}
.panel-device .vh-terminal-cell{
  position:relative;
  display:grid;
  place-items:center;
  width:12px;
  height:10px;
}
.panel-device .vh-terminal-cell b{
  position:absolute;
  right:-1px;
  bottom:-1px;
  color:#4e565a;
  font-size:3.4px;
  font-weight:900;
}
.panel-device .vh-terminal-screw{
  width:7px;
  height:7px;
  border:1px solid #3e4548;
  border-radius:50%;
  background:
    linear-gradient(45deg,transparent 44%,#3e4447 45% 55%,transparent 56%),
    linear-gradient(-45deg,transparent 44%,#3e4447 45% 55%,transparent 56%),
    radial-gradient(circle at 35% 30%,#e7e9ea 0 18%,#a7adb0 20% 58%,#656c70 61% 76%,#303538 78%);
  box-shadow:inset 0 0 1px #fff,0 1px 1px rgba(0,0,0,.22);
}
.panel-device .vh-markings{
  position:absolute;
  z-index:4;
  left:3px;
  top:3px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:1px;
  color:#171b1d;
  line-height:1;
}
.panel-device .vh-markings>strong{
  font-size:8.5px;
  font-weight:950;
  letter-spacing:-.35px;
}
.panel-device .vh-breaking{
  padding:1px 2px;
  border:1px solid #303537;
  border-radius:1px;
  font-size:3.5px;
  font-weight:900;
}
.panel-device .vh-leakage{
  margin-top:1px;
  font-size:3.6px;
  font-weight:850;
}
.panel-device .vh-switch{
  position:absolute;
  z-index:5;
  left:50%;
  top:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  transform:translate(-50%,-50%);
}
.panel-device .vh-switch span{
  width:12px;
  height:20px;
  border:1px solid #4d5559;
  border-radius:1px;
  background:
    linear-gradient(90deg,#737b7f,#f1f2f2 36%,#b8bdc0 68%,#646c70);
  box-shadow:0 2px 2px rgba(0,0,0,.3),inset 0 1px 0 #fff;
}
.panel-device .vh-switch small{
  color:#33393c;
  font-size:3.6px;
  font-weight:950;
  line-height:1;
}
.panel-device .vh-test-button{
  position:absolute;
  z-index:5;
  right:3px;
  top:4px;
  display:grid;
  place-items:center;
  width:10px;
  height:9px;
  border:1px solid #3e6a83;
  border-radius:2px;
  background:linear-gradient(#83c6e8,#4e9fc9);
  color:#fff;
  font-size:4px;
  font-weight:950;
  box-shadow:0 1px 1px rgba(0,0,0,.2);
}
.panel-device .vh-diagram{
  position:absolute;
  z-index:4;
  right:4px;
  top:18px;
  color:#42494d;
  font-size:6px;
  font-weight:900;
}
.panel-device .vh-product-type{
  position:absolute;
  z-index:4;
  left:3px;
  right:3px;
  bottom:8px;
  overflow:hidden;
  color:#303639;
  font-size:4px;
  font-weight:850;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .vh-product-meta{
  position:absolute;
  z-index:4;
  left:3px;
  right:3px;
  bottom:2px;
  overflow:hidden;
  color:#596165;
  font-size:3.5px;
  font-weight:700;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.panel-device .vh-module-divisions{
  position:absolute;
  inset:0;
  z-index:1;
  display:grid;
  grid-template-columns:repeat(var(--vh-device-modules,1),1fr);
  pointer-events:none;
}
.panel-device .vh-module-divisions i{
  border-right:1px solid rgba(58,65,69,.12);
}
.panel-device .vh-din-clip{
  position:absolute;
  z-index:-1;
  left:7%;
  right:7%;
  top:50%;
  height:9px;
  transform:translateY(-50%);
  border:1px solid #656d71;
  background:linear-gradient(#aeb4b7,#747d81);
  box-shadow:0 1px 2px rgba(0,0,0,.3);
}

/* Брендовая полоса и типографика — узнаваемость без копирования фотографий */
.panel-device.brand-schneider .vh-product-header{box-shadow:inset 0 3px 0 #28a64f}
.panel-device.brand-schneider .vh-product-header strong{color:#238d45}
.panel-device.brand-abb .vh-product-header{box-shadow:inset 0 3px 0 #e32228}
.panel-device.brand-abb .vh-product-header strong{color:#d71920}
.panel-device.brand-legrand .vh-product-header{box-shadow:inset 0 3px 0 #ef791d}
.panel-device.brand-legrand .vh-product-header strong{color:#d96617}
.panel-device.brand-hager .vh-product-header{box-shadow:inset 0 3px 0 #1879b2}
.panel-device.brand-hager .vh-product-header strong{color:#176d9e}
.panel-device.brand-eaton .vh-product-header{box-shadow:inset 0 3px 0 #2d65b7}
.panel-device.brand-eaton .vh-product-header strong{color:#245aa8}
.panel-device.brand-iek .vh-product-header{box-shadow:inset 0 3px 0 #f1c500}
.panel-device.brand-ekf .vh-product-header{box-shadow:inset 0 3px 0 #d52630}
.panel-device.brand-chint .vh-product-header{box-shadow:inset 0 3px 0 #1683c4}

/* Одномодульные аппараты не перегружаем микротекстом */
.panel-device[data-modules="1"] .vh-product-header span,
.panel-device[data-modules="1"] .vh-product-type{display:none}
.panel-device[data-modules="1"] .vh-product-header strong{font-size:5px}
.panel-device[data-modules="1"] .vh-markings>strong{font-size:7px}

/* DIN rail must visually pass behind the device's middle, not touch its bottom edge. */
.panel-board .din-rail,
.panel-board .panel-rail,
.panel-board [class*="din-rail"]{
  z-index:2!important;
}
.panel-board .panel-device{z-index:5!important}

/* v11.23.8 — Кабельный журнал */
.cable-journal-card{border:1px solid var(--vh-line);border-radius:14px;background:var(--vh-surface);overflow:hidden}
.cable-journal-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding:14px;border-bottom:1px solid var(--vh-line)}
.cable-journal-head h3{margin:0 0 4px;font-size:14px}.cable-journal-head p{margin:0;color:var(--vh-muted);font-size:10px}
.cable-journal-actions{display:flex;gap:7px;flex-wrap:wrap}
.cable-journal-stats{display:flex;gap:8px;padding:10px 14px;background:var(--vh-surface-2);border-bottom:1px solid var(--vh-line)}
.cable-journal-stats span{display:flex;align-items:baseline;gap:5px;padding:6px 9px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface)}
.cable-journal-stats b{font-size:11px}.cable-journal-stats small{font-size:8px;color:var(--vh-muted)}
.cable-journal-table-wrap{overflow:auto;max-width:100%;padding-bottom:4px}
.cable-journal-table{width:100%;min-width:1280px;border-collapse:collapse;font-size:9px}
.cable-journal-table th{position:sticky;top:0;z-index:2;padding:7px 6px;text-align:left;white-space:nowrap;background:var(--vh-surface-2);border-bottom:1px solid var(--vh-line);color:var(--vh-muted)}
.cable-journal-table td{padding:6px;vertical-align:top;border-bottom:1px solid var(--vh-line)}
.cable-journal-table input,.cable-journal-table select{width:100%;min-width:0;height:28px;padding:4px 6px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-surface);color:var(--vh-text);font:inherit;box-sizing:border-box}
.cable-journal-table td:nth-child(1){min-width:145px}.cable-journal-table td:nth-child(2){min-width:225px}.cable-journal-table td:nth-child(3){min-width:160px}.cable-journal-table td:nth-child(4){min-width:190px}
.cable-route-pair{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:4px}.cable-spec{display:grid;grid-template-columns:1fr 38px auto 48px;align-items:center;gap:3px}.cable-reserve{display:grid;grid-template-columns:52px auto;align-items:center;gap:3px}
.cable-auto{display:inline-block;margin-top:3px;padding:2px 5px;border-radius:5px;background:rgba(20,121,170,.08);color:var(--brand-blue);font-size:7px;font-weight:800}
.cable-journal-table tr.is-warning td:first-child{box-shadow:inset 3px 0 0 #d69a25}
.cable-journal-bottom{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:12px;padding:12px 14px;background:var(--vh-surface-2)}
.cable-journal-bottom h4{margin:0 0 7px;font-size:11px}.cable-total-row{display:flex;justify-content:space-between;gap:10px;padding:5px 0;border-bottom:1px dashed var(--vh-line);font-size:9px}
.cable-journal-note{display:flex;flex-direction:column;gap:5px;padding:10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface);font-size:9px;color:var(--vh-muted)}.cable-journal-note b{color:var(--vh-text)}
@media(max-width:760px){.cable-journal-head{flex-direction:column}.cable-journal-bottom{grid-template-columns:1fr}}

.project-room-route-settings{display:grid;grid-template-columns:repeat(7,minmax(100px,1fr));gap:7px;margin-top:9px;padding:9px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2)}
.project-room-route-settings label span{display:block;margin:0 0 4px;color:var(--vh-muted);font-size:8px}
.project-room-route-settings input,.project-room-route-settings select{width:100%;height:30px;box-sizing:border-box;padding:5px 7px;border:1px solid var(--vh-line);border-radius:8px;background:var(--vh-input);color:var(--vh-text);font:inherit}
.project-room-route-hint{margin-top:5px;padding:5px 8px;border-left:3px solid var(--brand-blue);background:color-mix(in srgb,var(--brand-blue) 5%,var(--vh-surface));color:var(--vh-muted);border-radius:0 7px 7px 0;font-size:8px}
.cable-journal-bottom-extended{grid-template-columns:minmax(220px,.8fr) minmax(300px,1.2fr) minmax(220px,.8fr)}
.auto-material-category{margin-bottom:8px;padding:7px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface)}
.auto-material-category>b{display:block;margin-bottom:4px;font-size:9px}.auto-material-row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px dashed var(--vh-line);font-size:8.5px}.auto-material-row:last-child{border-bottom:0}.auto-material-row span{color:var(--vh-muted)}.auto-material-row strong{white-space:nowrap}
@media(max-width:1150px){.project-room-route-settings{grid-template-columns:repeat(4,1fr)}.cable-journal-bottom-extended{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.project-room-route-settings{grid-template-columns:1fr 1fr}.cable-journal-bottom-extended{grid-template-columns:1fr}}

/* v11.23.10 — горизонтальный скролл кабельного журнала */
#projectTab-cables{
  overflow-x:auto!important;
  overflow-y:auto!important;
}
#projectTab-cables .cable-journal-card{
  min-width:0;
  width:100%;
}
#projectTab-cables .cable-journal-table-wrap{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  overflow-x:scroll!important;
  overflow-y:visible!important;
  scrollbar-gutter:stable both-edges;
  padding-bottom:12px!important;
}
#projectTab-cables .cable-journal-table-wrap::-webkit-scrollbar{height:12px}
#projectTab-cables .cable-journal-table-wrap::-webkit-scrollbar-track{
  background:var(--vh-surface-2);border-radius:10px
}
#projectTab-cables .cable-journal-table-wrap::-webkit-scrollbar-thumb{
  background:color-mix(in srgb,var(--brand-blue) 42%,var(--vh-line));
  border:2px solid var(--vh-surface-2);border-radius:10px
}
#projectTab-cables .cable-journal-table{
  width:max-content!important;
  min-width:1550px!important;
  table-layout:auto!important;
}
#projectTab-cables .cable-journal-table th,
#projectTab-cables .cable-journal-table td{
  white-space:normal;
}
#projectTab-cables .cable-journal-table td:nth-child(3){min-width:150px}
#projectTab-cables .cable-journal-table td:nth-child(4){min-width:170px}
#projectTab-cables .cable-journal-table td:nth-child(5){min-width:240px}
.cable-route-text{display:flex;align-items:center;gap:5px;white-space:nowrap}
.cable-route-text b{font-size:8.5px}
.cable-derived-cell{
  min-width:0;
  padding:6px 7px;
  border:1px solid var(--vh-line);
  border-radius:7px;
  background:var(--vh-surface-2);
  color:var(--vh-text);
  font-size:8.5px;
  line-height:1.35;
}
.cable-derived-cell small{
  display:block;
  margin-top:4px;
  color:var(--vh-muted);
  font-size:7px;
  line-height:1.25;
}

/* v11.23.11 — читаемые поля помещений */
.project-room-route-settings{
  grid-template-columns:90px 90px 90px 130px 135px minmax(220px,1.5fr) 90px!important;
  align-items:end;
}
.project-room-route-settings label:nth-child(6) select{
  min-width:220px!important;
  text-align:left!important;
  text-align-last:left!important;
  padding-left:10px!important;
  padding-right:30px!important;
}
.project-consumer-row{
  grid-template-columns:minmax(190px,1.45fr) 92px 112px 72px minmax(230px,1.25fr) 150px 32px!important;
}
.project-consumer-row label:nth-of-type(4) select{
  min-width:220px!important;
  text-align:left!important;
  text-align-last:left!important;
}
@media(max-width:1150px){
  .project-room-route-settings{grid-template-columns:repeat(3,minmax(150px,1fr))!important}
  .project-consumer-row{grid-template-columns:1fr 1fr 1fr!important}
  .project-consumer-main{grid-column:1/-1!important}
}
@media(max-width:700px){
  .project-room-route-settings,.project-consumer-row{grid-template-columns:1fr!important}
}

/* v11.23.11 — упрощённый кабельный журнал */
#projectTab-cables .cable-journal-table{min-width:1420px!important}
#projectTab-cables .cable-journal-table td:nth-child(3){min-width:250px!important}
#projectTab-cables .cable-journal-table td:nth-child(4){min-width:190px!important}
.project-protection-check input:checked{
  outline:2px solid rgba(35,139,87,.16);
  outline-offset:1px;
}

/* v11.23.13 — compact object UI */
#projectObjectProfile .project-section-head{gap:18px!important;margin-bottom:12px!important}
#projectObjectProfile .project-section-head button{margin-left:10px!important}
.project-room-card{padding:14px!important}
.project-room-header{margin-bottom:10px!important}
.project-room-title-fields{grid-template-columns:minmax(170px,260px) 135px!important;gap:14px!important}
.project-room-name{width:auto!important;min-width:170px;max-width:320px}
.project-room-route-settings{
  grid-template-columns:82px 82px 82px 122px 130px minmax(170px,210px) 78px!important;
  gap:8px!important;justify-content:start!important
}
.project-room-route-settings label:nth-child(6) select{min-width:170px!important;max-width:210px!important;text-align:left!important;text-align-last:left!important}
.project-consumer-add{grid-template-columns:minmax(170px,260px) auto auto!important;justify-content:start!important}
.project-consumer-add select{max-width:260px!important}
.project-protection-settings{grid-template-columns:minmax(210px,1.15fr) repeat(3,minmax(155px,1fr)) auto auto!important}
.project-protection-settings select{min-width:150px!important}
.project-protection-grid{grid-template-columns:repeat(5,minmax(125px,1fr))!important}
.project-protection-grid label:nth-last-child(-n+2) select{min-width:160px!important}

.project-panel-head{align-items:center!important}
.project-panel-head>div:first-child{display:flex;align-items:baseline;gap:10px}
.project-panel-actions{display:flex;gap:7px;flex-wrap:wrap}
.panel-choice-row{grid-template-columns:minmax(180px,.8fr) minmax(360px,1.2fr) minmax(260px,1.2fr) 65px!important}
.panel-choice-controls{display:grid;grid-template-columns:150px 170px minmax(190px,1fr);gap:6px}
.panel-choice-controls select{width:100%;min-width:0;padding:7px;border:1px solid var(--vh-line);border-radius:8px;background:var(--vh-input);color:var(--vh-text)}
.panel-infrastructure-row{display:flex;gap:12px;align-items:center;padding:9px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface);margin-bottom:8px}
.panel-infrastructure-row b{white-space:nowrap}.panel-infrastructure-row span{font-size:9px;color:var(--vh-muted)}
.panel-materials-block{margin-top:10px;padding:10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface)}
.panel-materials-block h4{margin:0 0 7px}.panel-materials-block>div{display:flex;justify-content:space-between;gap:12px;padding:5px 0;border-bottom:1px dashed var(--vh-line);font-size:9px}
.panel-materials-block>div:last-child{border-bottom:0}

.vh-panel-wiring{position:absolute;inset:0;pointer-events:none;z-index:4;overflow:visible}
.vh-panel-wiring path{fill:none;stroke-width:2;opacity:.72}
.vh-panel-wiring .wire-phase{stroke:#7b5136}.vh-panel-wiring .wire-neutral{stroke:#2878c7}.vh-panel-wiring .wire-earth{stroke:#3a9a59;stroke-dasharray:4 2}
#board{position:relative!important}

/* Cable journal compact numeric columns and styled total */
#projectTab-cables .cable-journal-table{min-width:1280px!important}
#projectTab-cables .cable-journal-table th:nth-child(5),
#projectTab-cables .cable-journal-table td:nth-child(5),
#projectTab-cables .cable-journal-table th:nth-child(6),
#projectTab-cables .cable-journal-table td:nth-child(6),
#projectTab-cables .cable-journal-table th:nth-child(8),
#projectTab-cables .cable-journal-table td:nth-child(8),
#projectTab-cables .cable-journal-table th:nth-child(9),
#projectTab-cables .cable-journal-table td:nth-child(9){width:78px!important;min-width:78px!important;max-width:78px!important}
#projectTab-cables .cable-journal-table td:nth-child(9)>b{display:block;padding:7px 6px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-surface-2);text-align:center;white-space:nowrap}
@media(max-width:1050px){
  .project-room-route-settings{grid-template-columns:repeat(3,minmax(120px,1fr))!important}
  .project-protection-settings{grid-template-columns:1fr 1fr!important}
  .project-protection-grid{grid-template-columns:1fr 1fr!important}
  .panel-choice-row{grid-template-columns:1fr!important}.panel-choice-controls{grid-template-columns:1fr 1fr!important}
}

/* v11.23.14 — cable choice + controls */
.project-protection-settings{grid-template-columns:minmax(210px,1.1fr) repeat(3,minmax(145px,.8fr)) minmax(210px,1.1fr) auto auto!important}
.project-default-cable select{min-width:210px!important}
.project-protection-settings .small-btn{transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease}
.project-protection-settings .small-btn:active{transform:translateY(1px) scale(.985)}
.project-protection-settings .small-btn.is-working{opacity:.7}
.project-protection-settings .small-btn.is-done{box-shadow:0 0 0 3px rgba(35,139,87,.15);border-color:rgba(35,139,87,.45)}
.cable-spec{grid-template-columns:minmax(180px,1fr) 38px auto 48px!important}
.cable-spec select{min-width:180px!important}
.panel-device .vh-product-type,
.panel-device .device-type-name,
.panel-device .device-label{display:none!important}
@media(max-width:1200px){
  .project-protection-settings{grid-template-columns:repeat(3,1fr)!important}
  .project-protection-settings>div:first-child{grid-column:1/-1}
}
@media(max-width:760px){.project-protection-settings{grid-template-columns:1fr!important}}


/* v11.23.15 — компактные кнопки блока защиты */
.project-protection-settings{
  grid-template-columns:minmax(210px,1.2fr) repeat(3,minmax(145px,.72fr)) minmax(210px,1.05fr)!important;
  align-items:end!important;
}
.project-protection-actions{
  grid-column:1/-1;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:8px;
  flex-wrap:wrap;
  padding-top:2px;
}
.project-protection-actions .project-compact-action{
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  min-height:32px!important;
  height:32px!important;
  padding:6px 12px!important;
  line-height:1!important;
  white-space:nowrap!important;
  flex:0 0 auto!important;
  font-size:9.5px!important;
}
.project-default-cable select{width:100%!important;min-width:0!important}

/* Номер электрогруппы вводится вручную и всегда виден. */
.project-consumer-row{
  grid-template-columns:minmax(180px,1.35fr) 92px 112px 72px 110px 150px 32px!important;
}
.consumer-group-number{min-width:100px}
.consumer-group-number input{
  width:100%!important;
  min-width:88px!important;
  text-align:center;
  font-weight:800;
}

/* Универсальная визуальная обратная связь на нажатие кнопок во всём приложении. */
button,
.btn,
.small-btn,
.icon-btn,
.project-detail-tab,
.sheet-tab,
[role="button"]{
  cursor:pointer;
  transition:
    transform .09s ease,
    box-shadow .09s ease,
    filter .09s ease,
    opacity .09s ease,
    border-color .09s ease!important;
  transform:translateY(0) scale(1);
  transform-origin:center;
}
button:hover:not(:disabled),
.btn:hover:not(.disabled),
.small-btn:hover:not(:disabled),
.icon-btn:hover:not(:disabled),
.project-detail-tab:hover,
.sheet-tab:hover,
[role="button"]:hover{
  filter:brightness(.985);
}
button:active:not(:disabled),
.btn:active:not(.disabled),
.small-btn:active:not(:disabled),
.icon-btn:active:not(:disabled),
.project-detail-tab:active,
.sheet-tab:active,
[role="button"]:active{
  transform:translateY(1px) scale(.975)!important;
  box-shadow:
    inset 0 2px 5px rgba(12,35,52,.20),
    0 1px 2px rgba(12,35,52,.08)!important;
  filter:brightness(.95)!important;
}
button:focus-visible,
.btn:focus-visible,
.small-btn:focus-visible,
.icon-btn:focus-visible,
.project-detail-tab:focus-visible,
.sheet-tab:focus-visible,
[role="button"]:focus-visible{
  outline:2px solid color-mix(in srgb,var(--brand-blue) 58%,transparent)!important;
  outline-offset:2px!important;
}
button:disabled,
.small-btn:disabled,
.icon-btn:disabled{
  cursor:not-allowed!important;
  opacity:.55!important;
}

/* Очень узкие экраны — кнопки остаются компактными, но переносятся. */
@media(max-width:900px){
  .project-protection-settings{
    grid-template-columns:1fr 1fr!important;
  }
  .project-protection-actions{
    justify-content:flex-start;
  }
}
@media(max-width:620px){
  .project-protection-settings{grid-template-columns:1fr!important}
  .project-protection-actions{
    display:grid;
    grid-template-columns:1fr;
  }
  .project-protection-actions .project-compact-action{
    width:100%!important;
  }
  .project-consumer-row{grid-template-columns:1fr!important}
}


/* v11.23.16 — ключевые действия объекта */
#projectDetailModal .vh-primary-action,
#projectDetailModal button.primary,
#projectDetailModal .btn.primary{
  background:linear-gradient(180deg,#ff9f2e,#f5820b)!important;
  border-color:#df7306!important;
  color:#fff!important;
  box-shadow:0 3px 8px rgba(245,130,11,.22)!important;
}
#projectDetailModal .vh-primary-action:hover,
#projectDetailModal button.primary:hover,
#projectDetailModal .btn.primary:hover{
  background:linear-gradient(180deg,#ffa83d,#ee7900)!important;
  box-shadow:0 4px 10px rgba(245,130,11,.28)!important;
}
#projectDetailModal .vh-primary-action:active,
#projectDetailModal button.primary:active,
#projectDetailModal .btn.primary:active{
  transform:translateY(1px) scale(.975)!important;
  box-shadow:inset 0 2px 5px rgba(111,55,0,.26)!important;
}
.vh-clicked{
  transform:translateY(1px) scale(.965)!important;
  filter:brightness(.92)!important;
}
.vh-button-broken{
  outline:2px dashed #cf3f3f!important;
  outline-offset:2px!important;
}

/* Кабельная карта */
.cable-map-card{
  border:1px solid var(--vh-line);
  border-radius:14px;
  background:var(--vh-surface);
  overflow:hidden;
}
.cable-map-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:14px;
  padding:14px;
  border-bottom:1px solid var(--vh-line);
}
.cable-map-head h3{margin:0 0 4px;font-size:14px}
.cable-map-head p{margin:0;color:var(--vh-muted);font-size:10px}
.cable-map-actions{display:flex;gap:7px;flex-wrap:wrap}
.cable-map-summary{
  display:flex;
  gap:8px;
  padding:10px 14px;
  background:var(--vh-surface-2);
  border-bottom:1px solid var(--vh-line);
}
.cable-map-summary span{
  display:flex;
  align-items:baseline;
  gap:5px;
  padding:6px 9px;
  border:1px solid var(--vh-line);
  border-radius:9px;
  background:var(--vh-surface);
}
.cable-map-summary b{font-size:11px}
.cable-map-summary small{font-size:8px;color:var(--vh-muted)}
.cable-map-tree{display:grid;gap:10px;padding:12px}
.cable-map-group{
  border:1px solid var(--vh-line);
  border-radius:11px;
  background:var(--vh-surface-2);
  overflow:hidden;
}
.cable-map-group-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  padding:9px 10px;
  background:var(--vh-surface);
  border-bottom:1px solid var(--vh-line);
}
.cable-map-group-head b{display:block;font-size:10px}
.cable-map-group-head small{display:block;margin-top:2px;font-size:8px;color:var(--vh-muted)}
.cable-map-cable{
  padding:5px 8px;
  border:1px solid rgba(20,121,170,.22);
  border-radius:8px;
  background:color-mix(in srgb,var(--brand-blue) 6%,var(--vh-surface));
  color:var(--vh-muted);
  font-size:8.5px;
  white-space:nowrap;
}
.cable-map-root{
  display:flex;
  align-items:flex-start;
  gap:8px;
  padding:10px;
  overflow-x:auto;
}
.cable-map-root>span:first-child{
  flex:0 0 auto;
  padding:7px 9px;
  border:1px solid var(--vh-line);
  border-radius:8px;
  background:var(--vh-surface);
  font-size:9px;
  font-weight:800;
}
.cable-map-arrow{padding-top:8px;color:var(--brand-orange)}
.cable-map-node{position:relative;min-width:180px}
.cable-map-node-line{
  display:flex;
  align-items:center;
  gap:7px;
  min-height:32px;
  padding:6px 7px;
  border:1px solid var(--vh-line);
  border-radius:8px;
  background:var(--vh-surface);
}
.cable-map-icon{
  display:grid;
  place-items:center;
  width:22px;height:22px;
  flex:0 0 22px;
  border-radius:7px;
  background:color-mix(in srgb,var(--brand-orange) 10%,var(--vh-surface));
  color:var(--brand-orange);
  font-weight:900;
}
.cable-map-node-copy{min-width:0;flex:1}
.cable-map-node-copy b{display:block;font-size:8.5px;overflow-wrap:anywhere}
.cable-map-node-copy small{display:block;margin-top:2px;color:var(--vh-muted);font-size:7px}
.cable-map-length{
  flex:0 0 auto;
  padding:3px 5px;
  border-radius:6px;
  background:var(--vh-surface-2);
  color:var(--vh-text);
  font-size:8px;
  font-weight:800;
}
.cable-map-children{
  display:grid;
  gap:5px;
  margin:5px 0 0 20px;
  padding-left:12px;
  border-left:2px solid color-mix(in srgb,var(--brand-blue) 24%,var(--vh-line));
}
.cable-map-node.depth-1 .cable-map-icon{color:var(--brand-blue);background:color-mix(in srgb,var(--brand-blue) 8%,var(--vh-surface))}
@media(max-width:760px){
  .cable-map-head{flex-direction:column}
  .cable-map-group-head{align-items:flex-start;flex-direction:column}
  .cable-map-root{display:block}
  .cable-map-arrow{display:none}
  .cable-map-node{margin-top:7px}
}

/* v11.23.17 — автоматические сметы */
.auto-estimate-card{margin-bottom:12px;padding:12px;border:1px solid var(--vh-line);border-radius:13px;background:var(--vh-surface-2)}
.auto-estimate-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.auto-estimate-head h3{margin:0 0 4px;font-size:13px}.auto-estimate-head p{margin:0;color:var(--vh-muted);font-size:9px}
.auto-estimate-kpis{display:flex;gap:7px;flex-wrap:wrap;margin-top:10px}
.auto-estimate-kpis span{display:flex;align-items:baseline;gap:5px;padding:6px 8px;border:1px solid var(--vh-line);border-radius:8px;background:var(--vh-surface)}
.auto-estimate-kpis b{font-size:10px}.auto-estimate-kpis small{font-size:8px;color:var(--vh-muted)}.auto-estimate-kpis .warn{border-color:rgba(211,139,30,.45);background:rgba(211,139,30,.07)}
.auto-estimate-settings{display:flex;gap:8px;margin-top:10px}.auto-estimate-settings label{display:grid;gap:3px}.auto-estimate-settings span{font-size:8px;color:var(--vh-muted)}.auto-estimate-settings input{width:90px;padding:6px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-input);color:var(--vh-text)}
.auto-estimate-views{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.auto-estimate-views article{display:flex;flex-direction:column;gap:5px;padding:10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface)}
.auto-estimate-views h4{margin:0;font-size:10px}.auto-estimate-views article>b{font-size:13px;color:var(--vh-text)}.auto-estimate-views article>small{font-size:8px;color:var(--vh-muted);margin-bottom:3px}
.auto-estimate-views button{align-self:flex-start}
@media(max-width:850px){.auto-estimate-views{grid-template-columns:1fr}.auto-estimate-head{flex-direction:column}}

/* v11.23.18 — поставщики и закупки */
.nav-btn[data-page="suppliers"] b{background:rgba(255,151,44,.22)}
.supplier-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:12px}
.supplier-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}
.supplier-kpis{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:8px;margin-bottom:12px}
.supplier-kpis .mini{padding:10px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface)}
.supplier-kpis small{display:block;color:var(--vh-muted);font-size:9px}.supplier-kpis b{display:block;margin-top:4px;font-size:17px}
.supplier-page-grid{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(600px,1.6fr);gap:12px}
.supplier-list-card,.supplier-catalog-card{min-width:0}.supplier-cards{display:grid;gap:8px}
.supplier-card{padding:10px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface-2)}
.supplier-card.is-disabled{opacity:.6}
.supplier-card-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.supplier-card h4{margin:0;font-size:11px}.supplier-card-head>div>span{display:block;margin-top:3px;color:var(--vh-muted);font-size:8px}
.supplier-connection-state{padding:4px 6px;border-radius:7px;background:color-mix(in srgb,var(--brand-orange) 8%,var(--vh-surface));font-size:8px;color:var(--vh-muted)}
.supplier-card-meta{display:flex;gap:7px;margin-top:8px}.supplier-card-meta span{display:flex;align-items:baseline;gap:4px;padding:5px 7px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-surface)}
.supplier-card-meta b{font-size:9px}.supplier-card-meta small{font-size:7px;color:var(--vh-muted)}
.supplier-card-url{margin-top:7px;padding:6px 7px;border-radius:7px;background:var(--vh-surface);color:var(--vh-muted);font-size:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.supplier-card-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}
.supplier-empty{padding:28px 12px;text-align:center;border:1px dashed var(--vh-line);border-radius:10px;color:var(--vh-muted)}
.supplier-empty b,.supplier-empty span{display:block}.supplier-empty b{color:var(--vh-text);margin-bottom:4px}
.supplier-catalog-filters{display:grid;grid-template-columns:200px 1fr 150px;gap:7px;margin-bottom:8px}
.supplier-catalog-filters input,.supplier-catalog-filters select,.procurement-head select,.procurement-table select,.procurement-table input,.supplier-orders-card select{width:100%;box-sizing:border-box;padding:7px;border:1px solid var(--vh-line);border-radius:8px;background:var(--vh-input);color:var(--vh-text)}
.supplier-catalog-table{min-width:900px}.supplier-catalog-wrap{overflow-x:auto}
.procurement-planner-card,.supplier-orders-card{margin-top:12px}.procurement-head{align-items:center}
.procurement-head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.procurement-head select{min-width:230px}
.procurement-plan-summary{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:8px}
.procurement-plan-summary span{display:flex;gap:5px;align-items:baseline;padding:6px 8px;border:1px solid var(--vh-line);border-radius:8px;background:var(--vh-surface-2)}
.procurement-plan-summary b{font-size:10px}.procurement-plan-summary small{font-size:8px;color:var(--vh-muted)}
.procurement-table{min-width:1680px;table-layout:auto}.procurement-table-wrap{overflow-x:auto}.procurement-table td:nth-child(1){min-width:220px}.procurement-table td:nth-child(4),.procurement-table td:nth-child(5){min-width:110px;white-space:nowrap;vertical-align:middle}.procurement-plan-qty{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;flex-wrap:nowrap}.procurement-plan-qty input{width:76px;flex:0 0 auto}.procurement-plan-qty small{flex:0 0 auto;line-height:1;white-space:nowrap;opacity:.9}.procurement-table td:nth-child(6),.procurement-table td:nth-child(7){min-width:280px;white-space:nowrap;vertical-align:middle}.procurement-table td:nth-child(11){min-width:88px}.procurement-table td:nth-child(6) select,.procurement-table td:nth-child(7) select{min-width:280px;max-width:420px;white-space:nowrap;text-overflow:ellipsis}
.procurement-footer{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:10px}
.supplier-modal-box{width:min(920px,94vw);max-height:92vh;overflow:auto}
.supplier-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.supplier-form-grid .field-wide{grid-column:1/-1}
.supplier-editor-section{margin-top:12px;padding:10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2)}
.supplier-editor-section-head{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:8px}
.supplier-account-rows{display:grid;gap:6px}.supplier-account-row{display:grid;grid-template-columns:1fr 1fr 1fr 1.2fr 32px;gap:6px;align-items:center}
.supplier-account-row input,.supplier-login-grid input{width:100%;box-sizing:border-box;padding:7px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-input);color:var(--vh-text)}
.supplier-login-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.supplier-login-grid label span{display:block;margin-bottom:4px;color:var(--vh-muted);font-size:8px}
.supplier-empty-note{padding:8px}
@media(max-width:1050px){.supplier-page-grid{grid-template-columns:1fr}.supplier-kpis{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.supplier-toolbar{align-items:flex-start;flex-direction:column}.supplier-kpis{grid-template-columns:1fr}.supplier-catalog-filters,.supplier-form-grid,.supplier-login-grid,.supplier-account-row{grid-template-columns:1fr}.supplier-form-grid .field-wide{grid-column:auto}}

/* v11.23.19 — авторизация поставщика */
.supplier-auth-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}
.supplier-auth-grid select{
  width:100%;box-sizing:border-box;padding:7px;border:1px solid var(--vh-line);
  border-radius:7px;background:var(--vh-input);color:var(--vh-text)
}
.supplier-auth-state{
  grid-column:1/-1;
  padding:7px 9px;
  border:1px solid var(--vh-line);
  border-radius:8px;
  background:var(--vh-surface);
  color:var(--vh-muted);
  font-size:8.5px;
}
@media(max-width:700px){.supplier-auth-grid{grid-template-columns:1fr}}

/* v11.23.20 — Mag1c connector */
.supplier-sync-actions{display:flex;gap:6px;align-items:center}
.supplier-card-actions .primary{white-space:nowrap}
.supplier-sync-actions{display:flex;gap:5px;flex-wrap:wrap}.supplier-product-modal-box{width:min(820px,94vw)}.supplier-matching-modal-box{width:min(1180px,96vw);max-height:92vh;overflow:auto}.supplier-match-toolbar{display:grid;grid-template-columns:1fr 180px;gap:8px;margin-bottom:10px}.supplier-matching-list{display:grid;gap:8px}.supplier-match-card{padding:10px;border:1px solid var(--vh-line);border-radius:11px}.supplier-match-material{display:flex;justify-content:space-between}.supplier-match-material small{display:block;color:var(--vh-muted)}.supplier-match-row{display:grid;grid-template-columns:180px 1fr 100px;gap:8px;padding:6px}.supplier-match-row select{width:100%}.supplier-offers{display:flex;gap:5px;flex-wrap:wrap}.supplier-offers span{padding:5px;border:1px solid var(--vh-line);border-radius:7px}.supplier-offers .preferred{border-color:var(--brand-orange)}
/* v11.23.22 procurement carts */
.procurement-table{min-width:1280px}.procurement-table input{width:76px}.proc-alt{display:block;color:var(--vh-muted);margin-top:3px}.proc-order-actions{display:flex;gap:4px;flex-wrap:wrap;min-width:310px}.supplier-orders-card .table-wrap{overflow-x:auto}

/* v11.23.26 catalog persisted status */
.supplier-catalog-sync-status{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 8px}
.supplier-catalog-sync-status span{padding:5px 7px;border:1px solid var(--vh-line);border-radius:7px;background:var(--vh-surface-2);font-size:8px;color:var(--vh-muted)}
.supplier-catalog-sync-status b{color:var(--vh-text)}


/* ===== VoltHome OS v11.23.29 — internal supplier product card ===== */
.supplier-catalog-filters-simple{grid-template-columns:minmax(260px,420px)!important}
.supplier-product-view-box{width:min(960px,calc(100vw - 40px));max-height:calc(100vh - 54px);overflow:auto}
.supplier-product-view-content{display:grid;grid-template-columns:minmax(280px,42%) minmax(0,1fr);gap:22px;align-items:start;padding:4px 0 8px}
.supplier-product-view-image{position:relative;min-height:330px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.035);display:flex;align-items:center;justify-content:center;overflow:hidden}
.supplier-product-view-image img{display:block;width:100%;height:100%;max-height:430px;object-fit:contain;padding:18px;background:#fff}
.supplier-product-view-image .supplier-product-image-placeholder{display:none;text-align:center;color:var(--muted);line-height:1.5;padding:30px}
.supplier-product-view-image.no-image img{display:none}
.supplier-product-view-image.no-image .supplier-product-image-placeholder{display:block}
.supplier-product-view-info{display:flex;flex-direction:column;gap:16px}
.supplier-product-view-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.supplier-product-view-facts>div,.supplier-product-view-description,.supplier-product-view-internal{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:rgba(255,255,255,.025)}
.supplier-product-view-facts small,.supplier-product-view-description small,.supplier-product-view-internal small{display:block;color:var(--muted);margin-bottom:6px}
.supplier-product-view-description p{margin:0;white-space:pre-wrap;line-height:1.55;max-height:250px;overflow:auto}
.supplier-product-view-internal{display:flex;align-items:center;justify-content:space-between;gap:12px}
.supplier-product-view-internal small{margin:0}
@media(max-width:760px){.supplier-product-view-content{grid-template-columns:1fr}.supplier-product-view-image{min-height:250px}.supplier-product-view-facts{grid-template-columns:1fr}}


/* ===== VoltHome OS v11.23.30 — supplier readability + safe hover ===== */
#suppliers .supplier-catalog-table tbody tr:hover td{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
}
#suppliers .supplier-catalog-table tbody tr:hover td b{
  color:var(--vh-text)!important;
}
#suppliers .supplier-card h4{font-size:13px;line-height:1.35}
#suppliers .supplier-card-head>div>span{font-size:10.5px;line-height:1.4;color:var(--vh-muted)}
#suppliers .supplier-connection-state{font-size:10px;line-height:1.35;padding:5px 8px}
#suppliers .supplier-card-meta b{font-size:11px}
#suppliers .supplier-card-meta small{font-size:9.5px;line-height:1.3}
#suppliers .supplier-card-url{font-size:10.5px;line-height:1.4;padding:7px 8px}
#suppliers .supplier-kpis small{font-size:10.5px;line-height:1.35}
#suppliers .supplier-kpis b{font-size:18px}
#suppliers .supplier-catalog-sync-status span{font-size:10px;line-height:1.35;padding:6px 8px}
#suppliers .supplier-list-card .card-head .muted,
#suppliers .supplier-catalog-card .card-head .muted{font-size:11px;line-height:1.45}
#suppliers .supplier-empty{font-size:11px;line-height:1.45}
#suppliers .supplier-auth-state{font-size:10.5px;line-height:1.45}
#suppliers .supplier-toolbar>.muted,
#suppliers .supplier-toolbar>div>.muted{font-size:12px;line-height:1.5}
#suppliers .supplier-card-meta small{font-size:10px}


/* ===== VoltHome OS v11.23.31 — supplier file source ===== */
#suppliers .supplier-sync-actions{justify-content:flex-end}
.supplier-file-source{padding:11px 12px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2)}
.supplier-file-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.supplier-file-picker>span{font-size:11px;line-height:1.4;color:var(--vh-text);overflow-wrap:anywhere}
.supplier-file-help{margin-top:7px;font-size:10.5px!important;line-height:1.45!important;color:var(--vh-muted)!important}
#supplierModal .field>label{font-size:11px;line-height:1.35;color:var(--vh-text)}
#supplierModal .field input,#supplierModal .field select{font-size:12px}
#supplierModal .supplier-editor-section-head>b{font-size:12px}
#supplierModal .supplier-editor-section-head .muted{font-size:10.5px;line-height:1.4}
#supplierModal [hidden]{display:none!important}


/* ===== VoltHome OS v11.23.37 — live supplier sync + responsive catalog ===== */
#suppliers .supplier-page-grid{grid-template-columns:minmax(300px,.72fr) minmax(0,1.65fr)}
#suppliers .supplier-catalog-card{overflow:hidden}
#suppliers .supplier-catalog-wrap{width:100%;max-width:100%;overflow-x:auto}
#suppliers .supplier-catalog-table{width:100%;min-width:760px;table-layout:fixed}
#suppliers .supplier-catalog-table th,#suppliers .supplier-catalog-table td{box-sizing:border-box;overflow-wrap:anywhere}
#suppliers .supplier-catalog-table th:nth-child(1),#suppliers .supplier-catalog-table td:nth-child(1){width:12%}
#suppliers .supplier-catalog-table th:nth-child(2),#suppliers .supplier-catalog-table td:nth-child(2){width:14%}
#suppliers .supplier-catalog-table th:nth-child(3),#suppliers .supplier-catalog-table td:nth-child(3){width:27%}
#suppliers .supplier-catalog-table th:nth-child(4),#suppliers .supplier-catalog-table td:nth-child(4){width:10%}
#suppliers .supplier-catalog-table th:nth-child(5),#suppliers .supplier-catalog-table td:nth-child(5){width:9%}
#suppliers .supplier-catalog-table th:nth-child(6),#suppliers .supplier-catalog-table td:nth-child(6){width:13%}
#suppliers .supplier-catalog-table th:nth-child(7),#suppliers .supplier-catalog-table td:nth-child(7){width:10%}
#suppliers .supplier-catalog-table th:nth-child(8),#suppliers .supplier-catalog-table td:nth-child(8){width:86px;min-width:86px;text-align:right}
#suppliers .supplier-catalog-table td:nth-child(8) .small-btn{max-width:100%;padding-left:8px;padding-right:8px;white-space:nowrap}
#suppliers .supplier-live-sync{width:100%;border:1px solid var(--vh-line);border-radius:12px;background:var(--vh-surface-2);padding:12px;box-sizing:border-box}
#suppliers .supplier-live-sync-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}
#suppliers .supplier-live-sync-head>div{min-width:0;display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center}
#suppliers .supplier-live-sync-head b{font-size:12px;color:var(--vh-text)}
#suppliers .supplier-live-sync-head small{grid-column:2;display:block;margin-top:3px;font-size:10.5px;line-height:1.4;color:var(--vh-muted)}
#suppliers .supplier-live-sync-head strong{font-size:12px;color:var(--brand-orange);white-space:nowrap}
#suppliers .supplier-live-pulse{width:9px;height:9px;border-radius:50%;background:var(--brand-orange);box-shadow:0 0 0 0 rgba(255,166,52,.45);animation:supplierSyncPulse 1.25s infinite}
#suppliers .supplier-live-sync.is-stopping .supplier-live-pulse{animation:none;background:#ff7890}
@keyframes supplierSyncPulse{0%{box-shadow:0 0 0 0 rgba(255,166,52,.45)}70%{box-shadow:0 0 0 7px rgba(255,166,52,0)}100%{box-shadow:0 0 0 0 rgba(255,166,52,0)}}
#suppliers .supplier-live-grid{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:7px}
#suppliers .supplier-live-grid>span{display:flex;flex-direction:column;gap:2px;padding:8px 9px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface)}
#suppliers .supplier-live-grid small{font-size:9.5px;line-height:1.25;color:var(--vh-muted)}
#suppliers .supplier-live-grid b{font-size:15px;color:var(--vh-text)}
#suppliers .supplier-live-url{margin-top:8px;padding:7px 8px;border-radius:8px;background:var(--vh-surface);font-size:9.5px;color:var(--vh-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#suppliers #supplierCatalogStopBtn:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1500px){#suppliers .supplier-page-grid{grid-template-columns:1fr}.supplier-list-card,.supplier-catalog-card{width:100%}}
@media(max-width:1050px){#suppliers .supplier-live-grid{grid-template-columns:repeat(2,minmax(110px,1fr))}#suppliers .supplier-catalog-table{min-width:0;font-size:10px}#suppliers .supplier-catalog-table th:nth-child(4),#suppliers .supplier-catalog-table td:nth-child(4){display:none}#suppliers .supplier-catalog-table th:nth-child(1),#suppliers .supplier-catalog-table td:nth-child(1){width:13%}#suppliers .supplier-catalog-table th:nth-child(2),#suppliers .supplier-catalog-table td:nth-child(2){width:15%}#suppliers .supplier-catalog-table th:nth-child(3),#suppliers .supplier-catalog-table td:nth-child(3){width:30%}#suppliers .supplier-catalog-table th:nth-child(5),#suppliers .supplier-catalog-table td:nth-child(5){width:10%}#suppliers .supplier-catalog-table th:nth-child(6),#suppliers .supplier-catalog-table td:nth-child(6){width:15%}#suppliers .supplier-catalog-table th:nth-child(7),#suppliers .supplier-catalog-table td:nth-child(7){width:12%}}
@media(max-width:760px){#suppliers .supplier-catalog-wrap{overflow:visible}#suppliers .supplier-catalog-table{display:block;min-width:0}#suppliers .supplier-catalog-table thead{display:none}#suppliers .supplier-catalog-table tbody{display:grid;gap:9px}#suppliers .supplier-catalog-table tr{display:grid!important;grid-template-columns:1fr auto;gap:6px 10px;padding:10px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface-2)}#suppliers .supplier-catalog-table td{display:block!important;width:auto!important;padding:2px 0!important;border:0!important;min-width:0}#suppliers .supplier-catalog-table td:nth-child(1),#suppliers .supplier-catalog-table td:nth-child(2),#suppliers .supplier-catalog-table td:nth-child(4),#suppliers .supplier-catalog-table td:nth-child(7){font-size:9.5px;color:var(--vh-muted)}#suppliers .supplier-catalog-table td:nth-child(3){grid-column:1/-1;font-size:11px;line-height:1.4}#suppliers .supplier-catalog-table td:nth-child(6){grid-column:1}#suppliers .supplier-catalog-table td:nth-child(8){grid-column:2;grid-row:1/span 3;align-self:center}#suppliers .supplier-live-grid{grid-template-columns:1fr 1fr}}


/* ===== VoltHome OS v11.23.39 — supplier action column + safe partial stop ===== */
#suppliers .supplier-catalog-table th:nth-child(8),
#suppliers .supplier-catalog-table td:nth-child(8){
  width:104px!important;min-width:104px!important;max-width:104px!important;
  text-align:center!important;white-space:nowrap!important;overflow:visible!important;
  overflow-wrap:normal!important;word-break:normal!important;
}
#suppliers .supplier-catalog-table th:nth-child(8){font-size:9px!important;letter-spacing:.02em;white-space:nowrap!important}
#suppliers .supplier-catalog-action{padding-left:7px!important;padding-right:7px!important}
#suppliers .supplier-product-open-btn{display:inline-flex!important;align-items:center;justify-content:center;box-sizing:border-box;width:88px;min-width:88px;max-width:88px;white-space:nowrap!important;overflow:visible!important}
#suppliers .supplier-live-save-note{margin-top:8px;padding:7px 8px;border:1px dashed var(--vh-line);border-radius:8px;background:var(--vh-surface);font-size:9.5px;line-height:1.35;color:var(--vh-muted)}
@media(max-width:1180px) and (min-width:761px){
  #suppliers .supplier-catalog-table{min-width:860px!important}
  #suppliers .supplier-catalog-wrap{overflow-x:auto!important;scrollbar-gutter:stable}
  #suppliers .supplier-catalog-table th:nth-child(3),#suppliers .supplier-catalog-table td:nth-child(3){width:28%!important}
  #suppliers .supplier-catalog-table th:nth-child(7),#suppliers .supplier-catalog-table td:nth-child(7){width:12%!important}
}
@media(max-width:760px){
  #suppliers .supplier-catalog-table td.supplier-catalog-action{grid-column:2!important;grid-row:1/span 4!important;align-self:center!important;justify-self:end!important;width:96px!important;min-width:96px!important;max-width:96px!important;text-align:right!important}
  #suppliers .supplier-product-open-btn{width:88px!important;min-width:88px!important;max-width:88px!important}
}


/* SOURCE: v112343.css */
/* VoltHome OS v11.23.43 — compact supplier estimate visual redesign */
.material-supplier-estimate-panel{margin:16px 0;padding:16px;border:1px solid var(--vh-line);border-radius:16px;background:var(--vh-surface);color:var(--vh-text);box-shadow:var(--vh-shadow)}
.supplier-estimate-title-row,.supplier-estimate-footer{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.supplier-estimate-title-row h3{margin:0 0 4px;color:var(--vh-text)}.supplier-estimate-status{white-space:nowrap;border:1px solid rgba(247,148,29,.42);color:#f5b45e;background:rgba(247,148,29,.10);border-radius:999px;padding:6px 11px;font-size:12px;font-weight:800}
.supplier-estimate-controls{display:grid;grid-template-columns:minmax(250px,1fr) auto auto;gap:10px;align-items:end;margin:14px 0}.supplier-estimate-controls label{display:grid;gap:6px}.supplier-estimate-controls label span{font-size:12px;color:var(--vh-muted)}
.supplier-estimate-supplier-select{width:100%;min-width:0;height:44px;padding:0 40px 0 13px!important;border:1px solid var(--vh-line)!important;border-radius:12px!important;background:var(--vh-input)!important;color:var(--vh-text)!important;font:inherit!important;box-shadow:none!important}
.supplier-estimate-controls .btn,.supplier-estimate-actions .btn{min-height:44px;border-radius:12px!important;padding:9px 15px!important;white-space:normal;line-height:1.25}
.material-supplier-estimate-panel button:disabled,.material-supplier-estimate-panel .btn:disabled{cursor:default!important;opacity:.62!important;filter:none!important}
.supplier-estimate-kpis{display:grid;grid-template-columns:repeat(5,minmax(90px,1fr));gap:8px;margin:10px 0 14px}.supplier-estimate-kpis span{background:var(--vh-surface-2);border:1px solid var(--vh-line);border-radius:12px;padding:10px}.supplier-estimate-kpis b,.supplier-estimate-kpis small{display:block}.supplier-estimate-kpis b{font-size:16px;color:var(--vh-text)}.supplier-estimate-kpis small{font-size:11px;color:var(--vh-muted);margin-top:2px}.supplier-estimate-kpis .warn b{color:#f5b45e}
.supplier-estimate-table-wrap{max-height:480px;overflow:auto;border:1px solid var(--vh-line);border-radius:14px;background:var(--vh-surface)}.supplier-estimate-table{width:100%;min-width:900px;table-layout:fixed;background:var(--vh-surface)!important}.supplier-estimate-table th:nth-child(1){width:22%}.supplier-estimate-table th:nth-child(2){width:10%}.supplier-estimate-table th:nth-child(3){width:31%}.supplier-estimate-table th:nth-child(4){width:10%}.supplier-estimate-table th:nth-child(5){width:12%}.supplier-estimate-table th:nth-child(6){width:10%}.supplier-estimate-table th:nth-child(7){width:46px}.supplier-estimate-table td{vertical-align:middle;color:var(--vh-text)!important;background:var(--vh-surface)!important}.supplier-estimate-table tbody tr:hover td{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}.supplier-estimate-table td small{display:block;margin-top:4px;color:var(--vh-muted)}.supplier-estimate-table input[type=number]{width:72px;min-width:64px;height:34px;border-radius:9px!important;background:var(--vh-input)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important}.supplier-estimate-qty{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;flex-wrap:nowrap}.supplier-estimate-qty input{flex:0 0 auto}.supplier-estimate-qty span{flex:0 0 auto;line-height:1;white-space:nowrap}.supplier-estimate-need-name{display:block;overflow-wrap:anywhere;word-break:normal;line-height:1.35}.supplier-estimate-money{font-weight:750;color:var(--vh-text);white-space:nowrap}.supplier-estimate-match{font-size:10px!important}
.supplier-estimate-product-button{width:100%;min-width:0;display:block;text-align:left;padding:8px 10px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-input);color:var(--vh-text);box-shadow:none;overflow:hidden}.supplier-estimate-product-button:hover{background:var(--vh-surface-2)!important;border-color:rgba(71,176,255,.35)!important;color:var(--vh-text)!important}.supplier-estimate-product-button span,.supplier-estimate-product-button small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.supplier-estimate-product-button span{font-weight:700}.supplier-estimate-product-button small{margin-top:3px!important;font-size:10px!important;color:var(--vh-muted)!important}.supplier-estimate-remove{width:32px;height:32px;border-radius:9px!important}
.supplier-estimate-footer{align-items:center;margin-top:12px}.supplier-estimate-note{font-size:12px;color:var(--vh-muted)}.supplier-estimate-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
/* Lightweight product picker: replaces hundreds of SELECT options per row. */
.supplier-estimate-picker-backdrop{position:fixed;inset:0;z-index:10050;background:rgba(3,11,18,.72);display:grid;place-items:center;padding:20px}.supplier-estimate-picker{width:min(760px,calc(100vw - 32px));max-height:min(760px,calc(100vh - 40px));display:flex;flex-direction:column;background:var(--vh-surface);border:1px solid var(--vh-line);border-radius:18px;box-shadow:0 24px 70px rgba(0,0,0,.48);padding:16px}.supplier-estimate-picker-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:12px}.supplier-estimate-picker-head h3{margin:0;color:var(--vh-text)}.supplier-estimate-picker-head small{display:block;color:var(--vh-muted);margin-top:4px}.supplier-estimate-picker-search{width:100%;height:42px;border-radius:11px!important;background:var(--vh-input)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;padding:0 12px!important;margin-bottom:10px}.supplier-estimate-picker-list{min-height:120px;overflow:auto;display:grid;gap:6px}.supplier-estimate-picker-item{width:100%;display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:12px;align-items:center;text-align:left;padding:10px 12px;border:1px solid var(--vh-line);border-radius:12px;background:var(--vh-surface-2);color:var(--vh-text)}.supplier-estimate-picker-item:hover{background:#18384f!important;color:var(--vh-text)!important;border-color:rgba(71,176,255,.38)!important}.supplier-estimate-picker-item b,.supplier-estimate-picker-item small{display:block}.supplier-estimate-picker-item b{overflow-wrap:anywhere}.supplier-estimate-picker-item small{color:var(--vh-muted);margin-top:3px}.supplier-estimate-picker-price{text-align:right;font-weight:800;white-space:nowrap}.supplier-estimate-picker-price small{font-size:10px;font-weight:500}
@media(max-width:1100px){.supplier-estimate-controls{grid-template-columns:1fr 1fr}.supplier-estimate-controls label{grid-column:1/-1}.supplier-estimate-kpis{grid-template-columns:repeat(3,1fr)}.supplier-estimate-footer{display:block}.supplier-estimate-actions{justify-content:flex-start;margin-top:10px}}
/* At compact resolutions use cards instead of a clipped horizontal table. */
@media(max-width:900px){.supplier-estimate-table-wrap{max-height:520px;overflow-y:auto;overflow-x:hidden}.supplier-estimate-table{min-width:0!important;display:block}.supplier-estimate-table thead{display:none}.supplier-estimate-table tbody{display:grid;gap:10px;padding:10px}.supplier-estimate-table tbody tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(120px,.65fr);gap:9px 14px;padding:12px;border:1px solid var(--vh-line);border-radius:13px;background:var(--vh-surface-2)}.supplier-estimate-table tbody tr:hover{background:var(--vh-surface-2)!important}.supplier-estimate-table tbody td{display:block!important;width:auto!important;padding:0!important;border:0!important;background:transparent!important;min-width:0}.supplier-estimate-table tbody tr:hover td{background:transparent!important}.supplier-estimate-table tbody td::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--vh-muted);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.04em}.supplier-estimate-table tbody td:nth-child(1),.supplier-estimate-table tbody td:nth-child(3){grid-column:1/-1}.supplier-estimate-table tbody td:nth-child(7){align-self:end;justify-self:end}.supplier-estimate-product-button span,.supplier-estimate-product-button small{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.supplier-estimate-product-button small{-webkit-line-clamp:1}.supplier-estimate-actions .btn{flex:1 1 210px}}
@media(max-width:650px){.material-supplier-estimate-panel{padding:12px}.supplier-estimate-title-row{display:block}.supplier-estimate-status{display:inline-block;margin-top:8px}.supplier-estimate-controls{grid-template-columns:1fr}.supplier-estimate-controls label{grid-column:auto}.supplier-estimate-controls .btn{width:100%}.supplier-estimate-kpis{grid-template-columns:repeat(2,1fr)}.supplier-estimate-table tbody tr{grid-template-columns:1fr}.supplier-estimate-table tbody td:nth-child(n){grid-column:1}.supplier-estimate-picker-item{grid-template-columns:1fr}.supplier-estimate-picker-price{text-align:left}.supplier-estimate-actions{display:grid;grid-template-columns:1fr}.supplier-estimate-actions .btn{width:100%}}


/* v11.23.42 — stable estimate UI: no hover movement, container-responsive layout. */
.material-supplier-estimate-panel{container-type:inline-size;}
.material-supplier-estimate-panel .btn,
.material-supplier-estimate-panel .small-btn,
.material-supplier-estimate-panel button,
.material-supplier-estimate-panel [role="button"]{
  transform:none!important;
  filter:none!important;
  transition:background-color .12s ease,border-color .12s ease,color .12s ease,opacity .12s ease!important;
}
.material-supplier-estimate-panel .btn:hover:not(:disabled),
.material-supplier-estimate-panel .small-btn:hover:not(:disabled),
.material-supplier-estimate-panel button:hover:not(:disabled){
  transform:none!important;
  filter:none!important;
}
.supplier-estimate-supplier-select:hover,
.supplier-estimate-supplier-select:focus{border-color:rgba(71,176,255,.48)!important;outline:none!important;box-shadow:0 0 0 2px rgba(71,176,255,.08)!important;}
.supplier-estimate-table-wrap{overscroll-behavior:contain;scrollbar-gutter:stable both-edges;}
.supplier-estimate-need-name{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere!important;}
.supplier-estimate-product-button{height:auto!important;min-height:48px;}
.supplier-estimate-product-button span,
.supplier-estimate-product-button small{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere!important;display:block!important;-webkit-line-clamp:unset!important;}
.supplier-estimate-controls .btn{align-self:end;}

@container (max-width: 820px){
  .supplier-estimate-controls{grid-template-columns:1fr 1fr!important;}
  .supplier-estimate-controls label{grid-column:1/-1!important;}
  .supplier-estimate-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important;}
  .supplier-estimate-footer{display:block!important;}
  .supplier-estimate-actions{justify-content:flex-start!important;margin-top:10px!important;}
  .supplier-estimate-table-wrap{max-height:520px!important;overflow-y:auto!important;overflow-x:hidden!important;}
  .supplier-estimate-table{min-width:0!important;display:block!important;}
  .supplier-estimate-table thead{display:none!important;}
  .supplier-estimate-table tbody{display:grid!important;gap:10px!important;padding:10px!important;}
  .supplier-estimate-table tbody tr{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(120px,.65fr)!important;gap:9px 14px!important;padding:12px!important;border:1px solid var(--vh-line)!important;border-radius:13px!important;background:var(--vh-surface-2)!important;}
  .supplier-estimate-table tbody td{display:block!important;width:auto!important;padding:0!important;border:0!important;background:transparent!important;min-width:0!important;}
  .supplier-estimate-table tbody td::before{content:attr(data-label);display:block;margin-bottom:4px;color:var(--vh-muted);font-size:10px;font-weight:750;text-transform:uppercase;letter-spacing:.04em;}
  .supplier-estimate-table tbody td:nth-child(1),.supplier-estimate-table tbody td:nth-child(3){grid-column:1/-1!important;}
  .supplier-estimate-table tbody td:nth-child(7){align-self:end!important;justify-self:end!important;}
  .supplier-estimate-actions .btn{flex:1 1 210px!important;}
}
@container (max-width: 560px){
  .supplier-estimate-title-row{display:block!important;}
  .supplier-estimate-status{display:inline-block!important;margin-top:8px!important;}
  .supplier-estimate-controls{grid-template-columns:1fr!important;}
  .supplier-estimate-controls label{grid-column:auto!important;}
  .supplier-estimate-controls .btn{width:100%!important;}
  .supplier-estimate-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important;}
  .supplier-estimate-table tbody tr{grid-template-columns:1fr!important;}
  .supplier-estimate-table tbody td:nth-child(n){grid-column:1!important;}
  .supplier-estimate-actions{display:grid!important;grid-template-columns:1fr!important;}
  .supplier-estimate-actions .btn{width:100%!important;}
}


/* v11.23.43 — compact supplier estimate list + fixed VoltHome button hierarchy */
.material-supplier-estimate-panel{
  --vh-est-cyan:#2fa9c7;
  --vh-est-cyan-dark:#12364a;
  --vh-est-cyan-hover:#17455d;
  --vh-est-orange:#f7941d;
  --vh-est-orange-2:#ffb343;
  --vh-est-danger:#c95b5b;
  --vh-est-danger-bg:rgba(201,91,91,.12);
}
.material-supplier-estimate-panel .supplier-estimate-controls .btn,
.material-supplier-estimate-panel .supplier-estimate-actions .btn{
  min-height:42px!important;
  border-radius:12px!important;
  border:1px solid rgba(68,171,207,.28)!important;
  background:linear-gradient(180deg,#17384d,#112e40)!important;
  color:var(--vh-text)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025),0 5px 14px rgba(0,0,0,.12)!important;
  font-weight:750!important;
}
.material-supplier-estimate-panel .supplier-estimate-controls .btn:hover:not(:disabled),
.material-supplier-estimate-panel .supplier-estimate-actions .btn:hover:not(:disabled){
  background:linear-gradient(180deg,#1a435a,#15374b)!important;
  border-color:rgba(68,171,207,.48)!important;
  color:#fff!important;
}
.material-supplier-estimate-panel .supplier-estimate-auto-btn,
.material-supplier-estimate-panel .supplier-estimate-order-btn{
  background:linear-gradient(135deg,var(--vh-est-orange),var(--vh-est-orange-2))!important;
  border-color:transparent!important;
  color:#102b43!important;
  box-shadow:0 7px 18px rgba(247,148,29,.20)!important;
}
.material-supplier-estimate-panel .supplier-estimate-auto-btn:hover:not(:disabled),
.material-supplier-estimate-panel .supplier-estimate-order-btn:hover:not(:disabled){
  background:linear-gradient(135deg,#ffa126,#ffc15d)!important;
  color:#102b43!important;
  border-color:transparent!important;
}
.material-supplier-estimate-panel .supplier-estimate-save-btn,
.material-supplier-estimate-panel .supplier-estimate-add-btn{
  background:linear-gradient(180deg,#163d52,#123246)!important;
  border-color:rgba(47,169,199,.38)!important;
}
.material-supplier-estimate-panel .supplier-estimate-supplier-select{
  border-radius:12px!important;
  background:#102d40!important;
  border-color:rgba(69,151,184,.32)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.02)!important;
}
.supplier-estimate-table-wrap{
  border-radius:14px!important;
  background:#0d2638!important;
  border-color:rgba(73,137,168,.28)!important;
}
.supplier-estimate-table tbody tr{border-color:rgba(73,137,168,.22)!important;}
.supplier-estimate-product-button{
  border-radius:11px!important;
  border:1px solid rgba(56,143,178,.30)!important;
  background:linear-gradient(180deg,#102f43,#0e293b)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.018)!important;
}
.supplier-estimate-product-button:hover{
  background:linear-gradient(180deg,#153b52,#123347)!important;
  border-color:rgba(47,169,199,.55)!important;
}
.supplier-estimate-remove{
  width:34px!important;height:34px!important;min-width:34px!important;
  border-radius:10px!important;
  border:1px solid rgba(201,91,91,.36)!important;
  background:var(--vh-est-danger-bg)!important;
  color:#efaaaa!important;
  font-size:18px!important;font-weight:800!important;
  padding:0!important;
}
.supplier-estimate-remove:hover:not(:disabled){
  background:rgba(201,91,91,.20)!important;
  border-color:rgba(224,112,112,.60)!important;
  color:#ffd1d1!important;
}

/* Compact list when the actual workspace is narrow. */
@container (max-width: 820px){
  .supplier-estimate-table-wrap{max-height:560px!important;overflow-y:auto!important;overflow-x:hidden!important;padding:0!important;}
  .supplier-estimate-table tbody{gap:7px!important;padding:8px!important;}
  .supplier-estimate-table tbody tr{
    position:relative!important;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 104px!important;
    gap:7px 12px!important;
    padding:10px 48px 10px 11px!important;
    border:1px solid rgba(73,137,168,.25)!important;
    border-radius:12px!important;
    background:#102c3f!important;
    min-height:0!important;
  }
  .supplier-estimate-table tbody tr:hover{background:#123247!important;border-color:rgba(47,169,199,.34)!important;}
  .supplier-estimate-table tbody td{min-height:0!important;}
  .supplier-estimate-table tbody td::before{
    margin-bottom:3px!important;font-size:9px!important;letter-spacing:.055em!important;line-height:1.1!important;
    color:#88a8bc!important;
  }
  .supplier-estimate-table tbody td:nth-child(1){grid-column:1!important;grid-row:1!important;}
  .supplier-estimate-table tbody td:nth-child(2){grid-column:2!important;grid-row:1!important;align-self:start!important;}
  .supplier-estimate-table tbody td:nth-child(3){grid-column:1/-1!important;grid-row:2!important;}
  .supplier-estimate-table tbody td:nth-child(4),
  .supplier-estimate-table tbody td:nth-child(5),
  .supplier-estimate-table tbody td:nth-child(6){
    grid-row:3!important;display:flex!important;align-items:center!important;gap:7px!important;
    padding-top:2px!important;border-top:1px solid rgba(74,137,167,.13)!important;
  }
  .supplier-estimate-table tbody td:nth-child(4){grid-column:1!important;justify-self:start!important;}
  .supplier-estimate-table tbody td:nth-child(5){grid-column:1!important;justify-self:center!important;margin-left:120px!important;}
  .supplier-estimate-table tbody td:nth-child(6){grid-column:2!important;justify-self:end!important;}
  .supplier-estimate-table tbody td:nth-child(4)::before,
  .supplier-estimate-table tbody td:nth-child(5)::before,
  .supplier-estimate-table tbody td:nth-child(6)::before{display:inline!important;margin:0!important;}
  .supplier-estimate-table tbody td:nth-child(7){position:absolute!important;right:9px!important;top:9px!important;display:block!important;}
  .supplier-estimate-table tbody td:nth-child(7)::before{display:none!important;}
  .supplier-estimate-need-name{font-size:13px!important;line-height:1.28!important;padding-right:2px!important;}
  .supplier-estimate-table td small{margin-top:3px!important;font-size:10px!important;line-height:1.2!important;}
  .supplier-estimate-qty{gap:5px!important;}
  .supplier-estimate-table input[type=number]{width:62px!important;min-width:62px!important;height:32px!important;padding:4px 7px!important;}
  .supplier-estimate-product-button{min-height:42px!important;padding:7px 9px!important;}
  .supplier-estimate-product-button span{font-size:12.5px!important;line-height:1.25!important;}
  .supplier-estimate-product-button small{font-size:9.5px!important;line-height:1.2!important;}
  .supplier-estimate-match{margin-top:3px!important;font-size:9px!important;}
  .supplier-estimate-money{font-size:12px!important;}
  .supplier-estimate-table .status{padding:4px 8px!important;font-size:10px!important;border-radius:999px!important;white-space:nowrap!important;}
}
@container (max-width: 590px){
  .supplier-estimate-table tbody tr{grid-template-columns:minmax(0,1fr) 92px!important;padding-right:45px!important;}
  .supplier-estimate-table tbody td:nth-child(4),
  .supplier-estimate-table tbody td:nth-child(5),
  .supplier-estimate-table tbody td:nth-child(6){grid-row:auto!important;justify-self:start!important;margin-left:0!important;}
  .supplier-estimate-table tbody td:nth-child(4){grid-column:1!important;grid-row:3!important;}
  .supplier-estimate-table tbody td:nth-child(5){grid-column:2!important;grid-row:3!important;}
  .supplier-estimate-table tbody td:nth-child(6){grid-column:1/-1!important;grid-row:4!important;justify-self:start!important;}
  .supplier-estimate-table tbody td:nth-child(6){border-top:0!important;padding-top:0!important;}
}


/* SOURCE: v112344.css */
/* VoltHome OS v11.23.44 — fixed procurement palette, rounded clipping, dense working tables */
.procurement-planner-card,.supplier-orders-card{
  position:relative!important;
  overflow:hidden!important;
  border-radius:18px!important;
  background:var(--vh-surface)!important;
  border:1px solid var(--vh-line)!important;
  box-shadow:var(--vh-shadow)!important;
}
.procurement-planner-card::before,.supplier-orders-card::before{
  left:0!important;right:0!important;width:auto!important;height:3px!important;
  border-radius:18px 18px 0 0!important;
  background:linear-gradient(90deg,var(--brand-orange),var(--brand-blue))!important;
  opacity:.78!important;
}
.procurement-planner-card .card-head,.supplier-orders-card .card-head{padding-top:2px}
.procurement-head-actions select,
.supplier-orders-card select,
.procurement-table select,
.procurement-table input{
  min-height:40px!important;
  border-radius:11px!important;
  border:1px solid var(--vh-line)!important;
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  box-shadow:none!important;
}
.procurement-planner-card .btn,.supplier-orders-card .btn,
.procurement-planner-card .small-btn,.supplier-orders-card .small-btn{
  min-height:40px!important;
  border-radius:11px!important;
  padding:9px 14px!important;
  font-weight:750!important;
  transform:none!important;
  filter:none!important;
  transition:background-color .12s ease,border-color .12s ease,color .12s ease,box-shadow .12s ease!important;
}
.procurement-planner-card .btn.primary,
.supplier-orders-card .btn.primary,
.procurement-planner-card .small-btn.primary,
.supplier-orders-card .small-btn.primary{
  background:linear-gradient(135deg,var(--brand-orange),#ffb343)!important;
  color:#102b43!important;
  border-color:transparent!important;
  box-shadow:0 7px 18px rgba(247,148,29,.18)!important;
}
.procurement-planner-card .btn:hover,.supplier-orders-card .btn:hover,
.procurement-planner-card .small-btn:hover,.supplier-orders-card .small-btn:hover{transform:none!important;filter:none!important}
.procurement-planner-card .table-wrap,.supplier-orders-card .table-wrap{
  overflow:auto!important;
  border-radius:14px!important;
  background:#0d2638!important;
  border:1px solid rgba(105,167,200,.19)!important;
  box-shadow:none!important;
}
.procurement-planner-card .data-table,.supplier-orders-card .data-table{
  background:#0d2638!important;
  color:var(--vh-text)!important;
}
.procurement-planner-card .data-table th,.supplier-orders-card .data-table th{
  background:#173349!important;
  color:#9fb6c7!important;
  border-color:rgba(116,174,204,.16)!important;
}
.procurement-planner-card .data-table td,.supplier-orders-card .data-table td{
  background:#102b3e!important;
  color:var(--vh-text)!important;
  border-color:rgba(116,174,204,.14)!important;
}
.procurement-planner-card .data-table tbody tr:nth-child(even) td,.supplier-orders-card .data-table tbody tr:nth-child(even) td{background:#0f293b!important}
.procurement-planner-card .data-table tbody tr:hover td,.supplier-orders-card .data-table tbody tr:hover td{
  background:#14364b!important;color:var(--vh-text)!important;
}
.procurement-planner-card .data-table .empty,.supplier-orders-card .data-table .empty{
  background:#102b3e!important;color:#9db2c2!important;padding:18px!important;
}
.procurement-plan-summary span{
  border-radius:11px!important;background:#132f43!important;border-color:rgba(105,167,200,.18)!important;color:var(--vh-text)!important;
}
.procurement-footer{padding-top:2px}
.proc-order-actions{min-width:0!important;display:flex!important;gap:7px!important;align-items:center!important;flex-wrap:wrap!important}
.proc-order-actions .small-btn{white-space:nowrap!important}
.supplier-orders-card .data-table{min-width:980px!important}
.supplier-orders-card .data-table td:last-child{min-width:360px!important}

/* Estimate rows: one palette, compact hierarchy, no accidental bright blocks. */
.material-supplier-estimate-panel,
.material-supplier-estimate-panel .supplier-estimate-table-wrap{
  background:#0d2638!important;border-color:rgba(105,167,200,.19)!important;
}
.material-supplier-estimate-panel .supplier-estimate-table tbody tr{
  background:#102c3f!important;border-color:rgba(105,167,200,.20)!important;
}
.material-supplier-estimate-panel .supplier-estimate-table tbody tr:hover{background:#14364b!important}
.material-supplier-estimate-panel .supplier-estimate-product-button{
  background:#0d2638!important;border-color:rgba(71,176,255,.25)!important;color:var(--vh-text)!important;
}
.material-supplier-estimate-panel .supplier-estimate-product-button:hover{background:#14364b!important;border-color:rgba(71,176,255,.42)!important}
.material-supplier-estimate-panel .supplier-estimate-remove{
  border-radius:10px!important;background:rgba(190,70,74,.13)!important;border-color:rgba(220,97,100,.34)!important;color:#f2b0b2!important;
}
.material-supplier-estimate-panel .supplier-estimate-remove:hover{background:rgba(190,70,74,.21)!important;color:#ffd0d2!important}

@media(max-width:1050px){
  .procurement-head{align-items:flex-start!important;gap:12px!important}
  .procurement-head-actions{width:100%!important;display:grid!important;grid-template-columns:minmax(0,1fr) auto!important}
  .procurement-head-actions select{min-width:0!important;width:100%!important}
}
@media(max-width:720px){
  .procurement-head-actions{grid-template-columns:1fr!important}
  .procurement-head-actions .btn,.procurement-footer .btn{width:100%!important}
  .procurement-footer{display:grid!important;grid-template-columns:1fr!important}
}


/* SOURCE: v112352.css */
/* VoltHome OS v11.23.52 — supplier-first materials, locked dark palette */
#materialSupplierEstimatePanel{display:none!important}
.object-supplier-picker-row,.supplier-material-source-row{display:grid;grid-template-columns:minmax(220px,1fr) minmax(220px,1fr);gap:12px;margin:0 0 14px;padding:12px;border:1px solid rgba(68,126,158,.24);border-radius:14px;background:#0c1d2a}
.object-supplier-picker-row label,.supplier-material-source-row label{display:flex;flex-direction:column;gap:6px;color:#c9d8e4;font-size:12px;font-weight:700}
.object-supplier-picker-row select,.supplier-material-source-row select{width:100%;min-height:42px;border:1px solid rgba(72,137,171,.35);border-radius:12px;background:#102838;color:#eef7fb;padding:0 12px;outline:none}
.object-supplier-picker-row select:focus,.supplier-material-source-row select:focus{border-color:#36a9d6;box-shadow:0 0 0 3px rgba(54,169,214,.12)}
.supplier-material-source-row{grid-template-columns:minmax(260px,420px) 1fr;align-items:end}
.supplier-material-source-note{min-height:42px;display:flex;align-items:center;padding:0 12px;border-radius:12px;background:#102431;color:#9fb4c3;border:1px solid rgba(72,137,171,.2)}
.supplier-only-filters,.supplier-material-search-row{grid-template-columns:1fr!important}
.supplier-material-list{display:flex!important;flex-direction:column;gap:8px;max-height:560px;overflow:auto;padding-right:4px;scrollbar-gutter:stable}
.supplier-material-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px 14px;border:1px solid rgba(68,126,158,.22);border-radius:14px;background:#0d2230;color:#edf6fa}
.supplier-material-card:hover{background:#102a3a;border-color:rgba(54,169,214,.42)}
.supplier-material-card-main{min-width:0;display:flex;flex-direction:column;gap:6px}
.supplier-material-card-title{font-weight:800;line-height:1.3;color:#f3f8fb;white-space:normal;overflow-wrap:anywhere}
.supplier-material-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap;color:#9fb4c3;font-size:12px}
.supplier-material-price{font-size:14px;font-weight:800;color:#f0b24c}
.supplier-material-card-actions{display:flex;align-items:center;gap:8px}
.supplier-material-qty{width:86px;height:38px;border:1px solid rgba(72,137,171,.35);border-radius:10px;background:#102838;color:#eef7fb;padding:0 10px}
.supplier-material-add{min-height:38px;border-radius:11px!important;background:#c98524!important;border-color:#d89a3d!important;color:#fff8ea!important;box-shadow:none!important}
.supplier-material-add:hover{background:#d39332!important;color:#fff!important;transform:none!important}
.supplier-material-db-row>.btn{border-radius:11px!important;background:#123249!important;border:1px solid rgba(54,169,214,.42)!important;color:#dff5ff!important}
.supplier-material-empty{padding:22px;border:1px dashed rgba(88,137,163,.28);border-radius:14px;background:#0b1d29;color:#92a9b8;text-align:center}
.supplier-catalog-filters-simple{display:grid!important;grid-template-columns:minmax(220px,320px) minmax(260px,1fr)!important;gap:10px!important}
.supplier-catalog-filters-simple input,.supplier-catalog-filters-simple select{border-radius:11px!important;background:#102838!important;color:#edf6fa!important;border:1px solid rgba(72,137,171,.3)!important}
/* Keep procurement material list compact and independently scrollable. */
.procurement-planner-card{overflow:hidden}
.procurement-table-wrap{max-height:520px!important;overflow:auto!important;scrollbar-gutter:stable;border-radius:12px}
.procurement-table{min-width:1680px}
.supplier-orders-card .table-wrap{max-height:420px;overflow:auto;scrollbar-gutter:stable}
.material-action-panel-simple{display:flex!important;justify-content:flex-start}
.material-action-panel-simple .material-action-group{width:auto!important}
.material-calculation-actions .btn{border-radius:11px!important;min-height:40px}
.material-calculation-actions #materialProjectSaveTopBtn{background:#123249!important;border:1px solid rgba(54,169,214,.46)!important;color:#dff5ff!important}
.material-calculation-actions #materialProjectSaveTopBtn:hover{background:#163c55!important;color:#fff!important;transform:none!important}
@media(max-width:900px){.object-supplier-picker-row,.supplier-material-source-row{grid-template-columns:1fr}.supplier-material-card{grid-template-columns:1fr}.supplier-material-card-actions{justify-content:flex-start}.supplier-catalog-filters-simple{grid-template-columns:1fr!important}}


/* SOURCE: v112353.css */
/* VoltHome OS v11.23.53 — supplier-only materials + bounded scroll, locked palette */
#price:not(.vh1153-ready) #sheetCatalog,
#price:not(.vh1153-ready) #cleanMaterialCatalog,
#price:not(.vh1153-ready) #sheetLines{visibility:hidden}

/* Left material source: only supplier + material group. */
.supplier-material-toolbar-row{display:grid;grid-template-columns:minmax(240px,1fr) minmax(220px,340px);gap:12px;margin:0 0 12px;padding:12px;border:1px solid rgba(68,126,158,.24);border-radius:14px;background:#0c1d2a}
.supplier-material-toolbar-row label{display:flex;flex-direction:column;gap:6px;color:#c9d8e4;font-size:12px;font-weight:700}
.supplier-material-toolbar-row select{width:100%;min-height:42px;border:1px solid rgba(72,137,171,.35);border-radius:12px;background:#102838;color:#eef7fb;padding:0 12px;outline:none}
.supplier-material-toolbar-row select:focus{border-color:#36a9d6;box-shadow:0 0 0 3px rgba(54,169,214,.12)}
#price>.calc-layout>.card:first-child>.sheet-tabs{display:none!important}

/* Supplier material lists never stretch the page indefinitely. */
#sheetCatalog,#cleanMaterialCatalog,#materialDbList{max-height:520px!important;overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable;padding-right:4px}

/* Supplier page: each long data region owns its own scroll. */
#suppliers .supplier-catalog-card{overflow:hidden}
#suppliers .supplier-catalog-wrap{display:block!important;max-height:500px!important;overflow:auto!important;scrollbar-gutter:stable;border-radius:12px}
#suppliers .supplier-catalog-table{min-width:1040px}
#suppliers .supplier-list-card{overflow:hidden}
#suppliers #supplierCards{max-height:440px!important;overflow-y:auto!important;scrollbar-gutter:stable;padding-right:4px}
#suppliers .procurement-planner-card{overflow:hidden!important}
#suppliers .procurement-table-wrap{display:block!important;max-height:460px!important;overflow:auto!important;scrollbar-gutter:stable;border-radius:12px}
#suppliers .supplier-orders-card{overflow:hidden!important}
#suppliers .supplier-orders-card>.table-wrap{display:block!important;max-height:380px!important;overflow:auto!important;scrollbar-gutter:stable;border-radius:12px}

/* Empty supplier catalog is deliberately visually quiet until a supplier is selected. */
.supplier-catalog-empty{height:120px;color:#8fa8b8!important;background:#0b1d29!important}
#supplierCatalogSyncBtn:disabled{opacity:.45;cursor:not-allowed;filter:saturate(.5)}

.material-db-kind-tabs{margin-top:12px}

@media(max-width:900px){
  .supplier-material-toolbar-row{grid-template-columns:1fr}
  #sheetCatalog,#cleanMaterialCatalog,#materialDbList{max-height:460px!important}
  #suppliers .supplier-catalog-wrap{max-height:440px!important}
}


/* SOURCE: v112354.css */
/* VoltHome OS 11.23.54 — stable bounded supplier UI */
#price:not(.vh1154-ready) #sheetCatalog,#price:not(.vh1154-ready) #cleanMaterialCatalog,#materials-db:not(.vh1154-ready) #materialDbList{visibility:hidden}
#materialDbCategory{display:block!important;min-width:220px;background:#102838;color:#eef7fb;border:1px solid rgba(72,137,171,.35);border-radius:12px;padding:0 12px;min-height:42px}
.material-db-filters{display:grid!important;grid-template-columns:minmax(260px,1fr) minmax(220px,320px);gap:10px}
#sheetCatalog,#cleanMaterialCatalog,#materialDbList{height:500px!important;max-height:500px!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;scrollbar-gutter:stable}
#suppliers .supplier-catalog-wrap{height:440px!important;max-height:440px!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
#suppliers .procurement-table-wrap{height:390px!important;max-height:390px!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
#suppliers #supplierCards{height:390px!important;max-height:390px!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
#suppliers .supplier-orders-card>.table-wrap{height:330px!important;max-height:330px!important;overflow:auto!important;overscroll-behavior:contain;scrollbar-gutter:stable}
#supplierCatalogSyncStatus{min-height:44px;max-height:220px;overflow:auto}
#supplierCatalogExportBtn:disabled{opacity:.45;cursor:not-allowed}
.supplier-live-sync{max-width:100%;overflow:hidden}
.supplier-live-grid{display:grid;grid-template-columns:repeat(4,minmax(115px,1fr));gap:7px}
.supplier-live-grid>span{background:#102838;border:1px solid rgba(72,137,171,.22);border-radius:10px;padding:7px 9px}
.supplier-live-grid small{display:block;color:#8fa8b8;font-size:10px}.supplier-live-grid b{color:#eef7fb}
@media(max-width:900px){.material-db-filters{grid-template-columns:1fr}.supplier-live-grid{grid-template-columns:repeat(2,1fr)}#sheetCatalog,#cleanMaterialCatalog,#materialDbList{height:430px!important;max-height:430px!important}}


/* SOURCE: v112357.css */
/* VoltHome OS 11.23.57 — compact suppliers + stable supplier material UI */
#materials-db .sheet-tabs{display:none!important}
#materials-db .material-db-filters{grid-template-columns:minmax(240px,1fr) minmax(240px,360px)!important}
#materials-db #materialDbList{height:520px!important;max-height:520px!important;overflow-y:auto!important}

/* Compact 'Мои поставщики': no oversized empty card area. */
#suppliers .supplier-page-grid{grid-template-columns:minmax(270px,.58fr) minmax(0,1.75fr)!important;align-items:start}
#suppliers .supplier-list-card{padding:12px!important}
#suppliers .supplier-list-card .card-head{gap:8px;margin-bottom:8px!important}
#suppliers .supplier-list-card .card-head h3{font-size:14px!important}
#suppliers .supplier-list-card .card-head .muted{font-size:10px!important;line-height:1.35}
#suppliers #supplierSearch{min-height:36px!important;padding:7px 10px!important;font-size:11px!important}
#suppliers #supplierCards{height:300px!important;max-height:300px!important;gap:6px!important}
#suppliers .supplier-card{padding:8px!important;border-radius:10px!important}
#suppliers .supplier-card-head{gap:6px!important}
#suppliers .supplier-card h4{font-size:12px!important;line-height:1.25!important}
#suppliers .supplier-card-head>div>span{font-size:9px!important}
#suppliers .supplier-connection-state{font-size:9px!important;padding:4px 6px!important}
#suppliers .supplier-card-meta{margin-top:6px!important;gap:5px!important}
#suppliers .supplier-card-meta span{padding:4px 6px!important}
#suppliers .supplier-card-meta b{font-size:10px!important}
#suppliers .supplier-card-meta small{font-size:8px!important}
#suppliers .supplier-card-url{margin-top:5px!important;padding:5px 6px!important;font-size:9px!important}
#suppliers .supplier-card-actions{margin-top:6px!important;gap:4px!important}
#suppliers .supplier-card-actions .small-btn{padding:6px 8px!important;min-height:30px!important;font-size:9.5px!important;border-radius:9px!important}

/* Prevent visual repaint flashes while the supplier lists are being updated. */
#price #sheetCatalog,#price #cleanMaterialCatalog,#materials-db #materialDbList{contain:layout paint;backface-visibility:hidden}

@media(max-width:1500px){#suppliers .supplier-page-grid{grid-template-columns:minmax(260px,.7fr) minmax(0,1.5fr)!important}}
@media(max-width:1050px){#suppliers .supplier-page-grid{grid-template-columns:1fr!important}#suppliers #supplierCards{height:260px!important;max-height:260px!important}}


/* SOURCE: v112358.css */
/* VoltHome OS v11.23.58 — readable suppliers, compact procurement, real supplier category filters */

/* Supplier material filters: same compact layout in estimate and DB. */
#price .supplier-material-toolbar-row{grid-template-columns:minmax(260px,1fr) minmax(300px,1fr)!important;gap:12px!important}
#price #materialSupplierKindSelect,#price #materialSupplierSelect,
#materials-db #materialDbSupplierSelect,#materials-db #materialDbCategory{
  min-height:42px!important;font-size:13px!important;border-radius:11px!important
}
#price #sheetCatalog,#materials-db #materialDbList{max-height:560px!important;height:auto!important;overflow-y:auto!important;scrollbar-gutter:stable}
#price #sheetPaneClean{display:none!important}
#price .supplier-material-card,#materials-db .supplier-material-card{padding:12px 14px!important}
#price .supplier-material-card-title,#materials-db .supplier-material-card-title{font-size:13px!important;line-height:1.35!important}
#price .supplier-material-meta,#materials-db .supplier-material-meta{font-size:11px!important;line-height:1.4!important}

/* 'Мои поставщики': readable type, search never leaves the card, no artificial empty block. */
#suppliers .supplier-page-grid{grid-template-columns:minmax(330px,.72fr) minmax(0,1.75fr)!important;align-items:start!important}
#suppliers .supplier-list-card{padding:14px!important;min-height:0!important;height:auto!important;overflow:hidden!important}
#suppliers .supplier-list-card .card-head{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;align-items:start!important;margin-bottom:10px!important}
#suppliers .supplier-list-card .card-head>div{min-width:0!important}
#suppliers .supplier-list-card .card-head h3{font-size:15px!important;line-height:1.2!important}
#suppliers .supplier-list-card .card-head .muted{font-size:11.5px!important;line-height:1.45!important;max-width:34ch}
#suppliers #supplierSearch{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box!important;min-height:39px!important;padding:8px 11px!important;font-size:12.5px!important;border-radius:10px!important}
#suppliers #supplierCards{height:auto!important;min-height:0!important;max-height:235px!important;overflow-y:auto!important;scrollbar-gutter:stable!important;gap:8px!important;padding-right:2px!important}
#suppliers .supplier-card{padding:10px!important;border-radius:11px!important;min-height:0!important}
#suppliers .supplier-card h4{font-size:13px!important;line-height:1.3!important}
#suppliers .supplier-card-head>div>span{font-size:10.5px!important;line-height:1.35!important}
#suppliers .supplier-connection-state{font-size:10px!important;padding:4px 7px!important}
#suppliers .supplier-card-meta{margin-top:7px!important;gap:6px!important}
#suppliers .supplier-card-meta span{padding:5px 7px!important}
#suppliers .supplier-card-meta b{font-size:11px!important}
#suppliers .supplier-card-meta small{font-size:9.5px!important}
#suppliers .supplier-card-url{margin-top:6px!important;padding:6px 7px!important;font-size:10px!important;line-height:1.3!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#suppliers .supplier-card-actions{margin-top:7px!important;gap:5px!important}
#suppliers .supplier-card-actions .small-btn{padding:6px 9px!important;min-height:31px!important;font-size:10.5px!important;border-radius:9px!important}

/* Procurement blocks shrink to content when empty; scroll only when rows actually accumulate. */
#suppliers .procurement-planner-card,#suppliers .supplier-orders-card{min-height:0!important;height:auto!important;padding-bottom:14px!important}
#suppliers .procurement-table-wrap{height:auto!important;min-height:0!important;max-height:260px!important;overflow:auto!important;scrollbar-gutter:stable!important;overscroll-behavior:contain!important}
#suppliers .supplier-orders-card>.table-wrap{height:auto!important;min-height:0!important;max-height:220px!important;overflow:auto!important;scrollbar-gutter:stable!important;overscroll-behavior:contain!important}
#suppliers .procurement-table-wrap .data-table,#suppliers .supplier-orders-card>.table-wrap .data-table{margin:0!important}
#suppliers .procurement-table-wrap td.empty,#suppliers .supplier-orders-card td.empty{height:auto!important;min-height:0!important;padding:18px!important}
#suppliers .procurement-footer{margin-top:10px!important}

@media(max-width:1500px){
  #suppliers .supplier-page-grid{grid-template-columns:minmax(320px,.8fr) minmax(0,1.5fr)!important}
}
@media(max-width:1100px){
  #suppliers .supplier-page-grid{grid-template-columns:1fr!important}
  #suppliers #supplierCards{max-height:260px!important}
  #price .supplier-material-toolbar-row{grid-template-columns:1fr!important}
}


/* SOURCE: v112362.css */
/* VoltHome OS v11.23.62 — clean Razryad workflow */
.vh1162-project-tabs{gap:2px;overflow:auto;scrollbar-width:thin}.vh1162-project-tabs .project-detail-tab{white-space:nowrap;padding:8px 11px}
.vh1162-room-wall,.vh1162-cons-wall{min-width:170px}.project-consumer-row{grid-template-columns:minmax(180px,1.5fr) repeat(7,minmax(105px,.65fr)) auto!important;align-items:end}.project-consumer-row label select,.project-consumer-row label input{width:100%}
.vh1162-routebar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;background:#0e2030;border:1px solid #29435a;border-radius:8px;margin-bottom:10px}.vh1162-segment{display:flex;gap:2px;background:#0a1825;border:1px solid #263d51;padding:2px;border-radius:7px}.vh1162-segment button{border:0;background:transparent;color:#829ab3;padding:7px 11px;border-radius:5px;font-size:10px}.vh1162-segment button.active{background:#ffbd16;color:#17222c;font-weight:800}.vh1162-routebar label{display:flex;align-items:center;gap:6px;color:#8ca5bc;font-size:10px}.vh1162-routebar input{width:62px;background:#0a1926;border:1px solid #2d465d;color:#fff;padding:6px;border-radius:5px}.vh1162-route-state{margin-left:auto;color:#ffc943;font-size:10px;font-weight:700}
.vh1162-section-title{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:11px 13px;margin-top:12px;background:#102334;border:1px solid #294156;border-radius:8px 8px 0 0}.vh1162-section-title b{font-size:12px}.vh1162-section-title span{color:#7793ad;font-size:10px}.vh1162-cable-list{border:1px solid #294156;border-top:0;border-radius:0 0 8px 8px;overflow:hidden}.vh1162-cable-row{display:grid;grid-template-columns:34px 70px 190px 100px 1fr 85px;gap:10px;align-items:center;padding:9px 12px;border-bottom:1px solid #20374a;font-size:10px}.vh1162-cable-row:last-child{border-bottom:0}.vh1162-cable-row .num{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#ffbd16;color:#18232d;font-weight:900}.vh1162-cable-row .breaker{background:#f3a917;color:#fff;padding:6px 8px;border-radius:5px;text-align:center;font-weight:800}.vh1162-cable-row input{width:65px;background:#0b1a27;border:1px solid #2b4359;color:#fff;padding:5px;border-radius:5px}.vh1162-cable-row em{font-style:normal;color:#7892ab}
.vh1162-jgroup{border:1px solid #294156;border-radius:8px;background:#0e1d2b;margin:8px 0;overflow:hidden}.vh1162-jgroup>header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:#11263a}.vh1162-jgroup>header div{display:flex;flex-direction:column}.vh1162-jgroup small{color:#7895b0}.vh1162-junction{margin:8px;padding:9px;background:#0b1926;border:1px solid #294156;border-radius:7px}.vh1162-jhead,.vh1162-branch{display:flex;align-items:center;gap:8px}.vh1162-jhead>input{flex:1}.vh1162-junction input{background:#102436;border:1px solid #304b63;color:#eef6ff;padding:6px;border-radius:5px}.vh1162-junction label{font-size:9px;color:#839db6}.vh1162-junction label input{width:70px}.vh1162-jactions{display:flex;gap:6px;margin:8px 0;flex-wrap:wrap}.vh1162-jactions button{background:#142c40;border:1px solid #31516c;color:#b7d0e7;padding:5px 8px;border-radius:5px;font-size:9px}.vh1162-branch{padding:6px;border-top:1px dashed #294156;font-size:9px}.vh1162-branch>input{flex:1}.vh1162-branch em{min-width:82px;color:#66b7ed;font-style:normal}.vh1162-branch>button{background:transparent;border:0;color:#ff777d}.vh1162-empty{padding:12px}
.vh1162-shield-workspace{margin-top:10px}.vh1162-shield-top{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#0d1d2c;border:1px solid #294259;border-radius:9px 9px 0 0}.vh1162-shield-top>div{display:flex;flex-direction:column;flex:1}.vh1162-shield-top>div>b{font-size:13px}.vh1162-shield-top>div>span{font-size:10px;color:#7893ac;margin-top:2px}.vh1162-shield-top select{min-width:260px;background:#0a1926;color:#eaf5ff;border:1px solid #314b62;padding:7px;border-radius:6px}.vh1162-shield-tabs{display:flex;gap:2px;padding:7px 10px;background:#0b1926;border:1px solid #294259;border-top:0}.vh1162-shield-tabs button{border:0;background:transparent;color:#8098b0;padding:7px 12px;border-radius:6px;font-size:10px}.vh1162-shield-tabs button.active{background:#ffbd16;color:#17222b;font-weight:900}
.vh1162-board-split{display:grid;grid-template-columns:210px 1fr;border:1px solid #294259;border-top:0;min-height:560px}.vh1162-board-split aside{padding:12px;background:#0c1a28;border-right:1px solid #294259}.vh1162-board-split aside .cap{font-size:9px;color:#617c95;letter-spacing:.07em;margin:8px 0}.vh1162-board-split aside .stat{display:flex;justify-content:space-between;font-size:10px;padding:4px 0}.vh1162-board-split aside .stat span{color:#7e97af}.vh1162-board-main{min-width:0;background:#0e1d2b}.vh1162-board-main{margin:0!important;width:auto!important;max-width:none!important;padding:0!important;overflow:visible!important}.vh1162-board-config{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:10px;padding:10px 12px;background:#102234;border-bottom:1px solid #294259}.vh1162-board-config label{display:flex;flex-direction:column;gap:4px;font-size:9px;color:#7390aa;text-transform:uppercase}.vh1162-board-config select{background:#0a1926;color:#dcecff;border:1px solid #29455d;padding:6px;border-radius:5px;text-transform:none}
.vh1162-lines-block>header{display:flex;align-items:center;gap:8px;padding:8px 12px;background:#102335;border-bottom:1px solid #294259}.vh1162-lines-block>header i{display:block;width:3px;height:16px;background:#ffbd16;border-radius:2px}.vh1162-lines-block>header b{font-size:11px}.vh1162-lines-block>header span{font-size:9px;color:#7792aa}.vh1162-line-head,.vh1162-line{display:grid;grid-template-columns:25px 170px 175px 72px 75px 55px 120px minmax(210px,1fr) 90px;gap:8px;align-items:center;padding:5px 9px;border-bottom:1px solid #20374a;font-size:9px}.vh1162-line-head{color:#657f97;background:#0b1926}.vh1162-line select,.vh1162-line input{width:100%;background:#0c1c2a;border:1px solid #29445b;color:#ddecfb;padding:5px;border-radius:5px;font-size:9px}.vh1162-line .mini-selects{display:grid;grid-template-columns:1fr 1fr;gap:3px;margin-top:3px}.vh1162-line span:nth-child(8){display:flex;flex-direction:column}.vh1162-line small{color:#6f8aa3}.vh1162-line .remove{color:#718ba4;text-align:center}
.vh1162-scheme{padding:12px;background:#0b1926;border:1px solid #294259}.vh1162-scheme-note{font-size:10px;color:#89a4bc;margin-bottom:10px}.vh1162-din{margin-bottom:12px;padding:8px 10px 12px;border:1px solid #304a62;border-radius:8px;background:#0d2030}.vh1162-din>header{display:flex;justify-content:space-between;font-size:9px;color:#8099b1}.vh1162-din .din-metal{height:7px;margin:7px 0 -4px;background:linear-gradient(#b9c1c8,#65717b,#c5ccd1);border:1px solid #69747d}.vh1162-din .devices{display:flex;align-items:stretch;gap:3px;position:relative}.vh1162-din .device{width:72px;min-height:116px;padding:5px 4px;background:linear-gradient(180deg,#edf1ef,#cdd5d2);color:#1b2429;border:1px solid #68757a;border-radius:3px;box-shadow:0 3px 8px #0005;display:flex;flex-direction:column;align-items:center;position:relative}.vh1162-din .device.diff{background:linear-gradient(180deg,#e7f1df,#b8cf9d)}.vh1162-din .device.rcd{background:linear-gradient(180deg,#f4e6bd,#d6c07f)}.vh1162-din .device:before{content:'';position:absolute;top:-7px;left:12px;right:12px;height:4px;background:#e65353}.vh1162-din .device.L2:before{background:#b7993c}.vh1162-din .device.L3:before{background:#5d7fa8}.vh1162-din .device.L1-L2-L3:before{background:linear-gradient(90deg,#e65353 0 33%,#b7993c 33% 66%,#5d7fa8 66%)}.vh1162-din .brand{font-size:6px}.vh1162-din .code{font-size:8px;font-weight:800}.vh1162-din strong{font-size:14px;margin:4px 0}.vh1162-din .lever{width:15px;height:22px;background:#f6f7f6;border:1px solid #78858a;border-radius:3px;box-shadow:inset 0 -5px #c8cecc}.vh1162-din small{font-size:7px;text-align:center;margin-top:4px}.vh1162-din em{font-size:6px;font-style:normal;color:#526066;text-align:center}.vh1162-din .terminals{margin-top:auto;display:flex;gap:10px}.vh1162-din .terminals i{width:5px;height:5px;border:1px solid #444;border-radius:50%}.vh1162-din .empty-mod{width:25px;min-height:116px;border:1px dashed #334e66}.vh1162-bars{display:grid;gap:6px;margin:8px 0}.vh1162-bars>div{display:flex;align-items:center;gap:6px;padding:7px;border:1px solid #29445b;border-radius:5px}.vh1162-bars b{width:24px;color:#69b9ed}.vh1162-bars>div:last-child b{color:#65d091}.vh1162-bars i{width:10px;height:10px;border:1px solid #7990a4;border-radius:50%}.vh1162-outgoing{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.vh1162-outgoing>div{display:grid;grid-template-columns:38px 1fr;gap:3px 7px;padding:7px;border:1px solid #29445b;border-radius:6px}.vh1162-outgoing .phase{grid-row:1/4;display:grid;place-items:center;border-radius:50%;background:#742e31;font-weight:800}.vh1162-outgoing .phase.L2{background:#70602e}.vh1162-outgoing .phase.L3{background:#355477}.vh1162-outgoing b{font-size:9px}.vh1162-outgoing em,.vh1162-outgoing small{font-size:8px;color:#7e99b1;font-style:normal}
.vh1162-doc-controls{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:10px}.vh1162-doc-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#0e2030;border:1px solid #294259;border-radius:8px;margin-bottom:10px}.vh1162-doc-head>div{display:flex;flex-direction:column;flex:1}.vh1162-doc-head>div>b{font-size:13px}.vh1162-doc-head>div>span{font-size:9px;color:#7893ac}.vh1162-doc-kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}.vh1162-doc-kpi span{display:flex;flex-direction:column;padding:10px;background:#102334;border:1px solid #294259;border-radius:7px;color:#7894ad;font-size:9px}.vh1162-doc-kpi b{font-size:15px;color:#fff;margin-top:4px}.vh1162-table{border:1px solid #294259;border-radius:7px;overflow:auto}.vh1162-table>div{display:grid;grid-template-columns:1fr 2.5fr .8fr .9fr 1fr;min-width:700px}.vh1162-table>div>span{padding:8px;border-bottom:1px solid #20364a;font-size:9px}.vh1162-table .head span{color:#6f89a1;background:#0c1a28;font-size:8px;text-transform:uppercase}.vh1162-table small{display:block;color:#6f89a1;margin-top:2px}.vh1162-table .last{font-weight:700}.vh1162-est-group{margin-bottom:9px}.vh1162-est-group>header{display:flex;justify-content:space-between;padding:8px 10px;background:#13293d;border:1px solid #294259;color:#58a7ff;font-size:9px}.vh1162-warning{padding:10px 12px;border:1px solid #8b6823;background:#392f1d;color:#ffc75a;border-radius:8px;margin-bottom:10px;font-size:9px}
.vh1162-invoice{max-width:1030px;margin:auto;padding:22px 26px;background:#0c1a28;border:1px solid #40576c;border-radius:8px;color:#eef6ff}.vh1162-invoice .invoice-note{text-align:center;color:#7898b4;font-size:9px;padding:7px 0 12px}.vh1162-invoice .bank{width:100%;border-collapse:collapse}.vh1162-invoice .bank td{border:1px solid #53697c;padding:8px}.vh1162-invoice .bank small{display:block;color:#7896b1;font-size:8px}.vh1162-invoice .bank b{font-size:10px}.vh1162-invoice h2{font-size:20px;border-bottom:2px solid #d4e3ef;padding-bottom:10px}.vh1162-invoice h2 small{color:#8ba5ba;font-size:12px}.vh1162-invoice .invoice-meta>div{display:flex;gap:10px;border-bottom:1px dashed #3b5267;padding:5px;font-size:10px}.vh1162-invoice .invoice-meta span{width:90px;color:#7896b1}.vh1162-invoice .items{width:100%;border-collapse:collapse;margin-top:10px;font-size:9px}.vh1162-invoice .items th,.vh1162-invoice .items td{border:1px solid #3d5368;padding:7px}.vh1162-invoice .items td:nth-child(2) small{display:block;color:#6e8aa3}.vh1162-invoice .items tr.missing{background:#332b1e}.vh1162-invoice .items tr.total{background:#13283a;font-size:11px}.vh1162-invoice .sign,.vh1162-paper .sign{display:flex;justify-content:space-between;margin-top:32px;color:#a9c0d4}.vh1162-paper{max-width:980px;margin:auto;padding:25px;background:#102131;border:1px solid #334b61;border-radius:8px}.vh1162-paper p,.vh1162-paper li{font-size:10px;line-height:1.6}.vh1162-albums{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.vh1162-albums>div{padding:14px;background:#102334;border:1px solid #294259;border-radius:8px;display:flex;flex-direction:column;gap:5px}.vh1162-albums span,.vh1162-albums small{color:#7893ac;font-size:9px}.vh1162-project-scheme{margin-top:12px}.vh1162-project-scheme h3{font-size:12px}
@media(max-width:1200px){.vh1162-board-split{grid-template-columns:1fr}.vh1162-board-split aside{display:grid;grid-template-columns:repeat(4,1fr);border-right:0;border-bottom:1px solid #294259}.vh1162-line-head,.vh1162-line{grid-template-columns:25px 150px 150px 70px 70px 50px 110px minmax(180px,1fr) 80px}.vh1162-board-config{grid-template-columns:repeat(2,1fr)}.project-consumer-row{grid-template-columns:repeat(3,1fr)!important}.vh1162-outgoing{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.vh1162-shield-top{align-items:stretch;flex-direction:column}.vh1162-shield-top select{min-width:0}.vh1162-board-config,.vh1162-doc-kpi,.vh1162-outgoing,.vh1162-albums{grid-template-columns:1fr}.vh1162-cable-row{grid-template-columns:30px 60px 1fr}.vh1162-cable-row>*:nth-child(n+4){grid-column:3}.project-consumer-row{grid-template-columns:1fr!important}.vh1162-invoice{padding:12px}.vh1162-doc-controls{display:block}.vh1162-segment{margin-bottom:5px;overflow:auto}}
.vh1162-invoice-types{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}.vh1162-invoice-types button{border:1px solid #2c4359;background:#102132;color:#88a3bd;padding:8px 12px;border-radius:6px;font-size:11px}.vh1162-invoice-types button.active{background:#ffbd16;border-color:#ffbd16;color:#17212b;font-weight:800}
.vh1162-board-actions{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid #253d52;background:#0c1c2a}.vh1162-board-actions span{font-size:9px;color:#7893ad}.vh1162-extra-eq{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px;border-bottom:1px solid #253d52}.vh1162-extra-eq>span{background:#14283a;border:1px solid #2c465d;border-radius:5px;padding:6px 8px;font-size:9px}.vh1162-extra-eq button,.device-del{border:0;background:#4a2025;color:#ff9ba0;border-radius:4px;margin-left:5px}.vh1162-line .drag{color:#69839b;font-weight:900;cursor:grab}.vh1162-scheme-note{display:flex;justify-content:space-between;gap:12px;align-items:center}.vh1162-scheme-note b{color:#fff}.vh1162-scheme-note span{color:#7994ae}.vh1162-feed{display:flex;align-items:center;gap:6px;padding:8px 10px;margin:8px 0 11px;border:1px solid #29475f;border-radius:6px;background:#0d2030;font-size:9px}.vh1162-feed>span{width:28px;height:28px;display:grid;place-items:center;border-radius:50%;font-weight:900;color:#fff}.vh1162-feed .L1{background:#87383c}.vh1162-feed .L2{background:#88763c}.vh1162-feed .L3{background:#496c96}.vh1162-feed .N{background:#355b7c}.vh1162-feed .PE{background:#527a48}.vh1162-feed i{height:1px;flex:1;background:#66819a}.vh1162-feed b{white-space:nowrap;color:#a6bfd6}.vh1162-din .device{width:calc(40px * var(--mods,1));min-width:50px;max-width:210px}.vh1162-din .device.main{background:linear-gradient(180deg,#eef1ef,#d1d8d5)}.vh1162-din .device.relay{background:linear-gradient(180deg,#f1e3b9,#d6bd74)}.vh1162-din .device.extra{background:linear-gradient(180deg,#dce5eb,#b8c7cf)}.vh1162-din .device[draggable=true]{cursor:grab}.vh1162-din .device[draggable=true]:active{cursor:grabbing;opacity:.75}.vh1162-din .device-phase{font-size:7px;font-weight:900;padding:2px 4px;border-radius:8px;background:#263a48;color:#fff;margin-top:3px}.phase-bus{height:14px;display:flex;align-items:center;gap:0;margin-top:4px}.phase-bus i{display:block;height:3px;flex:1}.phase-bus .L1{background:#a64b50}.phase-bus .L2{background:#9a873f}.phase-bus .L3{background:#577da7}.phase-bus span{margin-left:8px;font-size:7px;color:#6f899f;white-space:nowrap}
.vh1162-invoice-scope{margin-left:auto;padding:7px 10px;border:1px solid #29455d;border-radius:6px;background:#0c1b29;color:#708ca6;font-size:9px}.vh1162-invoice-scope b{color:#e9f4ff;margin-left:5px}

/* v11.23.112 — cable journal row selects one group map only. */
.vh1162-cable-row{cursor:pointer;transition:background .12s ease,border-color .12s ease,box-shadow .12s ease}
.vh1162-cable-row:hover{background:#11283a}
.vh1162-cable-row.selected{background:#173348;box-shadow:inset 3px 0 0 #f5a70a}
.vh1162-cable-row.selected .num{box-shadow:0 0 0 2px rgba(245,167,10,.22)}
.vh1162-cable-row:focus-visible{outline:2px solid #f5a70a;outline-offset:-2px}
.vh1162-map-placeholder{padding:18px 14px;border:1px solid #294156;border-top:0;border-radius:0 0 8px 8px;background:#0e1d2b;color:#8ba4ba;font-size:11px}
.vh1162-jgroup-single{margin-top:8px}

/* 11.23.136 — estimate accordion replaces old estimate segment menu */
.vh136-estimate-scopes{display:grid;gap:9px}
.vh136-estimate-scope{border:1px solid #294259;border-radius:9px;background:#0d1e2d;overflow:hidden}
.vh136-estimate-scope>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;cursor:pointer;list-style:none;color:#eaf5ff;font-weight:800}
.vh136-estimate-scope>summary::-webkit-details-marker{display:none}
.vh136-estimate-scope>summary:after{content:'▾';color:#ffbd16;font-size:12px}
.vh136-estimate-scope:not([open])>summary:after{content:'▸'}
.vh136-estimate-scope>summary b{color:#ffca42;font-size:12px}
.vh136-estimate-scope-body{padding:0 12px 12px}
.vh136-estimate-filter{display:flex;gap:4px;align-items:center;overflow-x:auto;padding:3px;margin-bottom:10px;background:#091825;border:1px solid #263d51;border-radius:8px}
.vh136-estimate-filter button{border:0;background:transparent;color:#829ab3;padding:8px 12px;border-radius:6px;white-space:nowrap;font-size:10px}
.vh136-estimate-filter button.active{background:#ffbd16;color:#17222c;font-weight:800}
.vh134-doc-actions{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;flex-wrap:nowrap!important;flex:0 0 auto!important}
.vh134-doc-actions .btn{white-space:nowrap!important}


/* SOURCE: v112363.css */
/* VoltHome OS 11.23.63 — scheme closer to Razryad's compact dark engineering UI */
#vhSqliteOnlyBadge{margin-left:10px;padding:3px 8px;border:1px solid #235b47;border-radius:999px;background:#102a22;color:#73dbac;font-size:10px;font-weight:700;white-space:nowrap}
.vh1163-razryad-shield{--rz-bg:#0e1d2b;--rz-panel:#122537;--rz-line:#2b435a;--rz-muted:#7e98b1;--rz-blue:#168bd0;--rz-green:#3b8a4b;--rz-yellow:#ffbd16}
.vh1163-razryad-shield .vh1162-shield-top{background:#0e1d2b;border-bottom:1px solid #263e53;padding:10px 12px}
.vh1163-razryad-shield .vh1162-shield-tabs{background:#0e1d2b;border-bottom:1px solid #263e53;padding:7px 12px}
.vh1163-razryad-shield .vh1162-shield-tabs button{border-radius:5px;border:1px solid #2d455c;background:#102132;color:#7e9ab5}
.vh1163-razryad-shield .vh1162-shield-tabs button.active{background:#ffbd16;border-color:#ffbd16;color:#15202a;font-weight:900}
.vh1163-scheme{background:#0d1c2a;border-color:#29435a;padding:12px 14px}
.vh1163-scheme .vh1162-scheme-note{padding:7px 0 11px;border-bottom:1px solid #253e53;margin-bottom:9px}
.vh1163-scheme .vh1162-feed{background:#102234;border-color:#29465e;margin:8px 0 12px}
.vh1163-scheme .vh1162-din{background:#102234;border:1px solid #2c465e;border-radius:6px;padding:8px 10px 10px;box-shadow:none}
.vh1163-scheme .vh1162-din>header{font-size:9px;color:#829bb2;margin-bottom:4px}
.vh1163-scheme .vh1162-din .din-metal{height:4px;background:#64798a;border:0;border-radius:1px;margin:5px 0 2px;box-shadow:0 1px #aac0ce inset}
.vh1163-scheme .vh1162-din .devices{gap:3px;align-items:stretch;padding-top:3px}
.vh1163-scheme .vh1162-din .device{min-height:104px;width:calc(48px * var(--mods,1));min-width:58px;max-width:210px;border:1px solid #2d4a61;border-radius:5px;background:#11283a!important;color:#dbe9f5;box-shadow:none;padding:6px 5px}
.vh1163-scheme .vh1162-din .device:before{top:0;left:0;right:0;height:3px;border-radius:4px 4px 0 0}
.vh1163-scheme .vh1162-din .device.diff{background:#173427!important;border-color:#285c3e}
.vh1163-scheme .vh1162-din .device.rcd,.vh1163-scheme .vh1162-din .device.relay{background:#342e1c!important;border-color:#6a5725}
.vh1163-scheme .vh1162-din .device.extra{background:#162c3d!important}
.vh1163-scheme .vh1162-din .brand{color:#6f8ba3;font-size:6px;text-transform:uppercase}
.vh1163-scheme .vh1162-din .code{color:#4fa7e2;font-size:8px;margin-top:2px}
.vh1163-scheme .vh1162-din .device.diff .code{color:#63c578}
.vh1163-scheme .vh1162-din .device.rcd .code{color:#f2c24d}
.vh1163-scheme .vh1162-din strong{color:#fff;font-size:13px;margin:6px 0 3px}
.vh1163-scheme .vh1162-din .lever{width:14px;height:19px;border-radius:2px;background:#d9e2e8;border:1px solid #82909a;box-shadow:inset 0 -5px #aeb9c0}
.vh1163-scheme .vh1162-din small{color:#9ab2c6;font-size:7px;line-height:1.2}
.vh1163-scheme .vh1162-din em{color:#66849d;font-size:6px}
.vh1163-scheme .vh1162-din .empty-mod{min-height:104px;width:24px;border:1px dashed #2a455c;background:#0d1f2e}
.vh1163-scheme .phase-bus{margin-top:5px;border-top:1px solid #213a4f;padding-top:5px}
.vh1163-scheme .vh1162-bars>div{background:#0f2130;border-color:#29445a}
.vh1163-scheme .vh1162-outgoing>div{background:#102234;border-color:#29445a;min-height:54px}
.vh1163-scheme .vh1162-outgoing b{color:#f2f7fb;font-size:9px}
.vh1163-scheme .vh1162-outgoing em{color:#75aee0}
@media(max-width:900px){#vhSqliteOnlyBadge{display:none}.vh1163-scheme .vh1162-outgoing{grid-template-columns:1fr}.vh1163-scheme .vh1162-din{overflow:auto}}


/* SOURCE: v112364.css */
/* VoltHome OS 11.23.136 — room editor collision fix + shield stability polish */
.project-consumer-list{overflow-x:auto!important;overflow-y:visible!important;padding-bottom:4px}
.project-consumer-row{
  display:grid!important;
  grid-template-columns:minmax(360px,1fr) 92px 82px 110px 32px!important;
  min-width:760px!important;
  gap:8px!important;
  align-items:end!important;
}
.project-consumer-row>*{min-width:0!important}
.project-consumer-row label{min-width:0!important;overflow:visible!important}
.project-consumer-row input,.project-consumer-row select{width:100%!important;min-width:0!important;max-width:100%!important;height:40px!important;box-sizing:border-box!important;font-size:13px!important;font-weight:600!important;line-height:1.2!important}
.project-consumer-row label span{font-size:10px!important;line-height:1.15!important;white-space:nowrap!important}
.project-consumer-main{min-width:360px!important}
.project-consumer-name{height:40px!important;font-size:13px!important;font-weight:700!important}
.project-consumer-row .consumer-group-number{min-width:0!important}
.project-consumer-row .consumer-group-number input{min-width:0!important;text-align:center!important}
.project-consumer-row .danger{width:32px!important;min-width:32px!important;height:40px!important;align-self:end!important}

/* Keep the Razryad-like shield dense without forcing large repaint areas during edits. */
.vh1163-razryad-shield .vh1162-din,.vh1163-razryad-shield .device{contain:layout paint}
.vh1163-razryad-shield .device{will-change:auto}


/* SOURCE: v112365.css */
/* VoltHome OS 11.23.65 — Razryad shield visual and cable stability */
.vh1165-obsolete-journal{display:none!important}
.vh1162-routebar .vh1162-segment button.active{background:#ffbd16!important;color:#14202b!important;border-color:#ffbd16!important;box-shadow:0 0 0 1px #ffbd1640 inset}
.vh1162-routebar .vh1162-segment button{transition:background .12s,color .12s,border-color .12s}
.vh1165-shield-top{display:grid;grid-template-columns:1fr minmax(240px,340px) auto auto;gap:9px;align-items:center;padding:12px 14px;background:#0d1b29;border:1px solid #253d53;border-radius:9px 9px 0 0}.vh1165-shield-top>div{display:flex;flex-direction:column;gap:3px}.vh1165-shield-top b{font-size:15px}.vh1165-shield-top span{font-size:10px;color:#829bb3}.vh1165-shield-top select{background:#102437;color:#eef6ff;border:1px solid #2c465f;border-radius:7px;padding:8px}
.vh1165-tabs{display:flex;gap:5px;padding:8px 12px;background:#0a1724;border:1px solid #253d53;border-top:0;overflow:auto}.vh1165-tabs button{border:1px solid #29445c;background:#102235;color:#879fb8;border-radius:6px;padding:8px 13px;white-space:nowrap}.vh1165-tabs button.active{background:#ffbd16;border-color:#ffbd16;color:#14202b;font-weight:900}
.vh1165-board{display:grid;grid-template-columns:205px 1fr;gap:0;border:1px solid #253d53;border-top:0;background:#0d1a27;min-height:400px}.vh1165-board aside{padding:13px;border-right:1px solid #263d52;background:#0c1926}.vh1165-board aside h4{font-size:9px;color:#67839d;letter-spacing:.06em;margin:8px 0}.vh1165-board aside>div{display:flex;justify-content:space-between;gap:10px;padding:5px 0;font-size:10px}.vh1165-board aside span{color:#8199b0}.vh1165-board .vh1165-board-content{padding:12px;min-width:0}.vh1165-config{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:8px;margin-bottom:8px}.vh1165-config label{font-size:9px;color:#7894ad}.vh1165-config select{display:block;width:100%;margin-top:4px;background:#102437;border:1px solid #2b455d;color:#eaf5ff;border-radius:6px;padding:8px}.vh1165-board-actions{display:flex;align-items:center;gap:10px;margin:9px 0;color:#758ea7;font-size:10px}.vh1165-extra{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:9px}.vh1165-extra>span{background:#13283a;border:1px solid #314a61;border-radius:6px;padding:6px 8px;display:flex;align-items:center;gap:7px;font-size:10px}.vh1165-extra small{color:#7e9ab4}.vh1165-extra button{border:0;background:transparent;color:#ff9292}
.vh1165-lines{border-top:1px solid #263e54;margin-top:10px}.vh1165-lines>header{display:flex;align-items:center;gap:8px;padding:10px 5px}.vh1165-lines>header i{width:3px;height:18px;background:#ffb713;border-radius:3px}.vh1165-lines>header b{font-size:12px}.vh1165-lines>header span{color:#718ca5;font-size:9px}.vh1165-line-head,.vh1165-line{display:grid;grid-template-columns:180px 190px 100px 70px 60px 135px minmax(190px,1fr) 95px;gap:6px;align-items:center}.vh1165-line-head{padding:6px 4px;color:#7190ad;font-size:9px;border-bottom:1px solid #22384d}.vh1165-line{padding:7px 4px;border-bottom:1px solid #1e3346;font-size:9px}.vh1165-line select,.vh1165-line input{width:100%;min-width:0;background:#102437;border:1px solid #29445d;color:#edf7ff;border-radius:5px;padding:5px}.vh1165-line>span:first-child>div,.vh1165-line>span:nth-child(2){display:grid;grid-template-columns:1fr 1fr;gap:4px}.vh1165-line>span:first-child>select{margin-bottom:4px}.vh1165-line>span:nth-child(2)>select:first-child{grid-column:1/-1}.vh1165-line small{display:block;color:#6f8aa4;margin-top:2px}
.vh1165-scheme-toolbar{display:flex;align-items:center;gap:12px;padding:12px 14px;background:#0d1a27;border:1px solid #253d53;border-top:0}.vh1165-scheme-toolbar>div{display:flex;flex-direction:column;gap:3px}.vh1165-scheme-toolbar span{color:#8098af;font-size:10px}.vh1165-scheme-toolbar button{margin-left:auto}.vh1165-order{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 12px;background:#0d1a27;border:1px solid #253d53;border-top:0;font-size:9px}.vh1165-order>b{color:#829bb4;margin-right:4px}.vh1165-order>span{display:flex;gap:6px;align-items:center;background:#11283b;border:1px solid #2f4c65;padding:6px 8px;border-radius:6px;cursor:grab}.vh1165-order i{display:grid;place-items:center;width:18px;height:18px;background:#ffbd16;color:#18212a;border-radius:50%;font-style:normal;font-weight:900}.vh1165-svg-wrap{background:white;border:1px solid #cbd5df;overflow:auto;max-height:calc(100vh - 250px)}.vh1165-board-svg{display:block;min-width:1000px;height:auto}.vh1165-note{padding:9px 12px;background:#102b3e;color:#9ed9ff;border:1px solid #2c5978;font-size:10px}
.vh1165-cable-table{border:1px solid #263e53;background:#0d1a27}.vh1165-cable-table>header{display:flex;justify-content:space-between;padding:11px 13px;border-bottom:1px solid #253d53}.vh1165-cable-table>header span{font-size:10px;color:#7591aa}.vh1165-cable-head,.vh1165-cable-table>div:not(.vh1165-cable-head){display:grid;grid-template-columns:1.2fr 1.4fr 160px 160px 180px;gap:8px;align-items:center;padding:8px 12px;border-bottom:1px solid #1f3447;font-size:10px}.vh1165-cable-head{color:#718ca5;background:#0b1723}.vh1165-cable-table input{background:#102437;border:1px solid #29445d;color:#fff;border-radius:5px;padding:6px;width:85px}.vh1165-mat-head,.vh1165-cable-table:has(.vh1165-mat-head)>div:not(.vh1165-mat-head){grid-template-columns:120px 1fr 150px 150px}
.vh1165-eq-box{width:min(860px,calc(100vw - 30px))!important}.vh1165-eq-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:14px}.vh1165-eq-grid button{background:#102437;border:1px solid #2b485f;color:#eaf5ff;border-radius:8px;padding:12px;text-align:left;display:grid;grid-template-columns:1fr auto;gap:4px}.vh1165-eq-grid button:hover{border-color:#ffbd16}.vh1165-eq-grid b{font-size:11px}.vh1165-eq-grid span{color:#ffca43;font-weight:800;font-size:10px}.vh1165-eq-grid small{grid-column:1/-1;color:#7994ad}.vh1165-eq-custom{display:grid;grid-template-columns:1fr 100px auto;gap:8px;padding:0 14px 14px}.vh1165-eq-custom input{background:#102437;border:1px solid #2b485f;color:#fff;border-radius:7px;padding:9px}
@media(max-width:1250px){.vh1165-config{grid-template-columns:repeat(3,1fr)}.vh1165-line-head,.vh1165-line{grid-template-columns:160px 170px 90px 65px 55px 110px minmax(150px,1fr) 80px}.vh1165-eq-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.vh1165-shield-top{grid-template-columns:1fr}.vh1165-board{grid-template-columns:1fr}.vh1165-board aside{border-right:0;border-bottom:1px solid #263d52}.vh1165-config{grid-template-columns:1fr 1fr}.vh1165-lines{overflow:auto}.vh1165-line-head,.vh1165-line{min-width:1000px}.vh1165-cable-table{overflow:auto}.vh1165-cable-head,.vh1165-cable-table>div:not(.vh1165-cable-head){min-width:850px}.vh1165-eq-grid{grid-template-columns:1fr}.vh1165-eq-custom{grid-template-columns:1fr}}

/* v11.23.66 wiring editor */
.vh1166-wire{margin:10px 0 12px;border:1px solid #29445c;border-radius:10px;background:#0d2031;padding:12px}.vh1166-wire header{display:flex;align-items:center;gap:12px}.vh1166-wire header>div:first-child{display:flex;flex-direction:column;gap:3px}.vh1166-wire header span{font-size:10px;color:#7f9ab2}.vh1166-wire-types{margin-left:auto;display:flex;gap:5px}.vh1166-wire-types button{border:1px solid #35526b;background:#112a3d;color:#9cb4c9;border-radius:6px;padding:7px 11px}.vh1166-wire-types button.active{background:#ffb814;color:#17212a;border-color:#ffb814;font-weight:800}.vh1166-wire-add{display:grid;grid-template-columns:minmax(180px,1fr) 25px minmax(180px,1fr) auto;gap:7px;align-items:center;margin-top:10px}.vh1166-wire-add select{min-width:0;background:#10283b;color:#e9f3fb;border:1px solid #35516a;border-radius:6px;padding:9px}.vh1166-wire-add>b{text-align:center;color:#ffbe22}.vh1166-wire-list{display:grid;gap:6px;margin-top:10px}.vh1166-wire-list>div{display:grid;grid-template-columns:26px 75px 1fr 30px;align-items:center;gap:7px;border:1px solid #274258;background:#10283a;border-radius:7px;padding:7px 9px;font-size:10px}.vh1166-wire-list i{height:4px;border-radius:5px;background:#e45151}.vh1166-wire-list .comb i{background:repeating-linear-gradient(90deg,#e4b82c 0 10px,#745f18 10px 13px)}.vh1166-wire-list button{border:0;background:#24394b;color:#d7e5f1;border-radius:5px;height:25px}.vh1166-wire-help{margin-top:9px;color:#829bb0;font-size:10px;border-top:1px dashed #29445c;padding-top:8px}@media(max-width:850px){.vh1166-wire-add{grid-template-columns:1fr}.vh1166-wire-add>b{transform:rotate(90deg)}}


/* SOURCE: v112369.css */
/* VoltHome OS v11.23.69 — shield text/collision and authoritative MCB+RCD follow-up */
.vh1168-svg-wrap{min-height:360px}
.vh1168-line-row .vh1168-name-cell small{max-width:100%;overflow-wrap:anywhere}
.vh1168-line-row .vh1168-room-cell{overflow-wrap:anywhere}


/* SOURCE: v112372.css */
/* VoltHome OS v11.23.72 — consolidated shield core */
.vh1172-lines{border:1px solid #263e54;border-radius:10px;overflow:hidden;background:#0d1a27;margin-top:10px}
.vh1172-lines>header{display:flex;align-items:center;gap:8px;padding:10px 12px;background:#102335;border-bottom:1px solid #294259}
.vh1172-lines>header i{width:3px;height:18px;background:#ffb713;border-radius:3px}.vh1172-lines>header span{color:#718ca5;font-size:9px}
.vh1172-grid-wrap{overflow:auto}.vh1172-head,.vh1172-row{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(220px,1.15fr) 90px 90px 60px 140px minmax(220px,1.4fr) 90px;gap:8px;align-items:start;min-width:1160px}
.vh1172-head{padding:8px 12px;background:#0b1926;color:#7190ad;font-size:9px;border-bottom:1px solid #22384d}.vh1172-row{padding:10px 12px;border-bottom:1px solid #1f3448;font-size:10px}.vh1172-row:last-child{border-bottom:0}
.vh1172-row select,.vh1172-row input{width:100%;min-width:0;background:#102437;border:1px solid #29445d;color:#edf7ff;border-radius:6px;padding:6px;font-size:10px}.vh1172-stack{display:grid;gap:5px}.vh1172-two{display:grid;grid-template-columns:1fr 1fr;gap:5px}.vh1172-length{display:flex;align-items:center;gap:5px}.vh1172-length span{color:#6f8aa4}.vh1172-room,.vh1172-name{min-width:0;word-break:break-word;line-height:1.35}.vh1172-name b{display:block}.vh1172-name small{display:block;color:#6f8aa4;margin-top:3px;line-height:1.25}.vh1172-empty{padding:14px;color:#829bb3}
.vh1172-order{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:9px 12px;background:#0d1a27;border:1px solid #253d53;border-top:0;font-size:9px}.vh1172-order>b{color:#829bb4}.vh1172-order>span{display:flex;align-items:center;gap:6px;max-width:220px;padding:6px 8px;background:#11283b;border:1px solid #2f4c65;border-radius:999px;cursor:grab}.vh1172-order>span.dragging{opacity:.5}.vh1172-order i{display:grid;place-items:center;width:18px;height:18px;flex:0 0 auto;background:#ffbd16;color:#18212a;border-radius:50%;font-style:normal;font-weight:900}.vh1172-order em{font-style:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vh1172-svg-wrap{background:#fff;border:1px solid #cbd5df;overflow:auto;max-height:calc(100vh - 250px)}.vh1172-note{padding:9px 12px;background:#102b3e;color:#9ed9ff;border:1px solid #2c5978;font-size:10px}
.vh1162-project-tabs{border-radius:12px;overflow-x:auto}.vh1162-project-tabs .project-detail-tab{border-radius:10px!important}
@media(max-width:1200px){.vh1172-head,.vh1172-row{min-width:1120px}}

/* v11.23.101 — stable shield geometry across tab/PDF re-renders */
.vh1172-svg-wrap .vh1165-board-svg{display:block;width:auto!important;max-width:none!important;min-width:1320px!important;height:auto!important;flex:none}


/* SOURCE: v112398.css */
/* VoltHome OS v11.23.112 — canonical shield + CRM hover */
#projectTab-panel.vh-shield-rebuilding{opacity:.55;pointer-events:none}
#projectTab-panel{transition:opacity .08s ease}
/* CRM rows keep the same dark-blue palette and readable text on hover. */
html[data-theme="dark"] #crm .data-table tbody tr:hover td,
html[data-theme="dark"] #crmBody tr:hover td{
  background:#17384f!important;
  color:#eef7fc!important;
}
html[data-theme="dark"] #crm .data-table tbody tr:hover td b,
html[data-theme="dark"] #crm .data-table tbody tr:hover td span,
html[data-theme="dark"] #crm .data-table tbody tr:hover td small,
html[data-theme="dark"] #crm .data-table tbody tr:hover td div,
html[data-theme="dark"] #crmBody tr:hover td b,
html[data-theme="dark"] #crmBody tr:hover td span,
html[data-theme="dark"] #crmBody tr:hover td small,
html[data-theme="dark"] #crmBody tr:hover td div{
  color:#eef7fc!important;
}
html[data-theme="dark"] #crm .data-table tbody tr:hover td .muted,
html[data-theme="dark"] #crmBody tr:hover td .muted{color:#a9bdca!important}
html[data-theme="dark"] #crm .data-table tbody tr:hover .status,
html[data-theme="dark"] #crmBody tr:hover .status{filter:none!important;opacity:1!important}


/* v11.23.112 — stable CRM hover: one palette, no competing animation/flicker. */
#crmBody tr,
#crmBody tr td,
#crmBody tr td *,
#crm .data-table tbody tr,
#crm .data-table tbody tr td,
#crm .data-table tbody tr td *{
  transition:none!important;
  animation:none!important;
  transform:none!important;
  filter:none!important;
}
html[data-theme="dark"] #crmBody tr:hover,
html[data-theme="dark"] #crm .data-table tbody tr:hover{
  background:#17384f!important;
}
html[data-theme="dark"] #crmBody tr:hover td,
html[data-theme="dark"] #crm .data-table tbody tr:hover td{
  background:#17384f!important;
  color:#eef7fc!important;
}
html[data-theme="dark"] #crmBody tr:hover td:not(.no-print) b,
html[data-theme="dark"] #crmBody tr:hover td:not(.no-print) span:not(.status),
html[data-theme="dark"] #crmBody tr:hover td:not(.no-print) small,
html[data-theme="dark"] #crmBody tr:hover td:not(.no-print) div:not(.muted),
html[data-theme="dark"] #crm .data-table tbody tr:hover td:not(.no-print) b,
html[data-theme="dark"] #crm .data-table tbody tr:hover td:not(.no-print) span:not(.status),
html[data-theme="dark"] #crm .data-table tbody tr:hover td:not(.no-print) small,
html[data-theme="dark"] #crm .data-table tbody tr:hover td:not(.no-print) div:not(.muted){color:#eef7fc!important}
html[data-theme="dark"] #crmBody tr:hover .muted,
html[data-theme="dark"] #crm .data-table tbody tr:hover .muted{color:#a9bdca!important}
html[data-theme="dark"] #crmBody .status,
html[data-theme="dark"] #crmBody tr:hover .status,
html[data-theme="dark"] #crm .data-table tbody .status,
html[data-theme="dark"] #crm .data-table tbody tr:hover .status{
  background:#214d68!important;
  border:1px solid rgba(121,194,231,.34)!important;
  color:#f3fbff!important;
  opacity:1!important;
  filter:none!important;
  text-shadow:none!important;
}
html[data-theme="dark"] #crmBody .small-btn,
html[data-theme="dark"] #crmBody tr:hover .small-btn{
  background:#10283a!important;
  color:#eef7fc!important;
  border-color:#2c526b!important;
  transform:none!important;
}
html[data-theme="dark"] #crmBody tr:hover .small-btn:hover{
  background:#1b455f!important;
  color:#ffffff!important;
}


/* SOURCE: v112376.css */
/* VoltHome OS v11.23.76 — unified project brand + calculation workflow */
.vh1176-load-toolbar{display:flex!important;align-items:flex-start;justify-content:space-between;gap:10px;grid-template-columns:none!important}
.vh1176-workflow-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.vh1176-workflow-actions .small-btn b,.vh1176-process-actions .small-btn b{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:#13293d;border:1px solid #36536b;color:#ffbd16;font-size:10px;margin-right:4px}
.vh1176-calc-details{margin-left:auto;min-width:min(100%,320px);max-width:760px;border:1px solid #294259;border-radius:9px;background:#0d1e2d;overflow:hidden}
.vh1176-calc-details summary{cursor:pointer;list-style:none;padding:9px 12px;color:#b7cde0;font-size:10px;font-weight:800;user-select:none}
.vh1176-calc-details summary::-webkit-details-marker{display:none}
.vh1176-calc-details[open] summary{border-bottom:1px solid #294259;color:#f0f7ff}
.vh1176-calc-grid{display:grid;grid-template-columns:repeat(4,minmax(130px,1fr));gap:8px;padding:10px 12px}
.vh1176-calc-grid label{display:flex;flex-direction:column;gap:4px;font-size:9px;color:#7f9ab2}
.vh1176-calc-grid input{width:100%;box-sizing:border-box;background:#0b1b29;border:1px solid #304a61;color:#eff7ff;border-radius:6px;padding:7px}
.vh1176-calc-help{padding:0 12px 10px;color:#758fa6;font-size:9px;line-height:1.45}
.vh1176-protection-settings{grid-template-columns:minmax(220px,1.25fr) minmax(180px,.8fr) minmax(260px,1.2fr)!important;align-items:end!important;gap:10px!important}
.vh1176-brand-copy{align-self:center}.vh1176-brand-copy span{display:block;margin-top:3px;color:#7893ac;font-size:9px;line-height:1.35}
.vh1176-project-brand,.vh1176-protection-settings .project-default-cable{min-width:0}
.vh1176-project-brand select,.vh1176-protection-settings .project-default-cable select{width:100%}
.vh1176-process-actions{grid-column:1/-1;display:flex!important;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.vh1176-process-actions .small-btn{min-height:34px;border-radius:8px}
.vh1176-project-brand-lock{opacity:.78;cursor:not-allowed!important}
.vh1176-summary-label{display:block;color:#7893ac;font-size:8px;font-weight:700;margin-top:2px}
.vh1176-unverified-pulse{outline:2px solid rgba(247,148,29,.75)!important;box-shadow:0 0 0 4px rgba(247,148,29,.12)!important;transition:outline .15s,box-shadow .15s}
@media(max-width:1050px){.vh1176-protection-settings{grid-template-columns:1fr 1fr!important}.vh1176-brand-copy{grid-column:1/-1}.vh1176-calc-grid{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.vh1176-load-toolbar{flex-direction:column}.vh1176-calc-details{margin-left:0;width:100%;max-width:none}.vh1176-protection-settings{grid-template-columns:1fr!important}.vh1176-process-actions{grid-column:1}.vh1176-calc-grid{grid-template-columns:1fr}.vh1176-process-actions .small-btn,.vh1176-workflow-actions .small-btn{width:100%}}


/* SOURCE: v112377.css */
/* VoltHome OS v11.23.77 — phase-aware workflow layout */
.vh1176-load-toolbar{display:block!important}
.vh1177-workflow-all{display:flex!important;align-items:center;gap:8px;flex-wrap:wrap;width:100%}
.vh1177-workflow-all .small-btn{min-height:34px;border-radius:8px;white-space:nowrap}
.vh1177-protection-settings{grid-template-columns:minmax(230px,1.1fr) minmax(190px,.85fr) minmax(290px,1.3fr)!important;align-items:end!important}
.vh1177-calc-details{grid-column:1/-1;margin:0!important;max-width:none!important;width:100%;box-sizing:border-box}
.vh1177-phase-poles-note{display:block;margin-top:3px;color:#7893ac;font-size:8px;line-height:1.25}
.vh1177-phase-badge{display:inline-flex;align-items:center;justify-content:center;min-width:30px;padding:3px 7px;border-radius:999px;background:#10283a;border:1px solid #31516b;color:#dcecff;font-weight:800}
@media(max-width:1050px){.vh1177-protection-settings{grid-template-columns:1fr 1fr!important}.vh1177-protection-settings .vh1176-brand-copy{grid-column:1/-1}}
@media(max-width:720px){.vh1177-workflow-all .small-btn{width:100%}.vh1177-protection-settings{grid-template-columns:1fr!important}.vh1177-calc-details{grid-column:1}}


/* SOURCE: v112388.css */
/* VoltHome OS v11.23.88 — clean workflow UI */
#projectCableDefault,#projectBrand{min-width:0;width:100%}
.project-protection-grid select{min-width:0}
.vh1188-confirm{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:0 0 12px;padding:10px 12px;border:1px solid rgba(80,160,210,.25);border-radius:10px;background:rgba(10,30,45,.78)}
.vh1188-confirm small{color:#9fb4c6}
.vh1188-locked{display:flex;flex-direction:column;gap:6px;padding:18px;border:1px solid rgba(80,160,210,.22);border-radius:12px;background:#0d1c29;color:#e9f3fb}
.vh1188-locked span{color:#9fb4c6}
#vh1182ProtectBtn:disabled,#vh1182CheckBtn:disabled,#vh1182PanelBtn:disabled{opacity:.42;cursor:not-allowed;filter:saturate(.65)}
.vh1177-phase-poles-note{display:none!important}


/* SOURCE: v112391.css */
.project-group-row.is-group-verified{
  outline:1px solid rgba(60,180,120,.35);
  background:rgba(40,120,80,.08);
}
.project-group-row.is-group-verified select:disabled,
.project-group-row.is-group-verified input:disabled,
.project-group-row.is-group-verified button:disabled{
  opacity:.75;
  cursor:not-allowed;
}


/* SOURCE: v112399.css */
/* VoltHome OS v11.23.112 — CRM stable row + shield label alignment */

/* CRM: hover must not change paint state. This removes visible flicker even if the row is re-rendered. */
#crm .client-table-wrap tbody tr,
#crm .client-table-wrap tbody tr:hover,
#crmBody tr,
#crmBody tr:hover{
  background:#17384f!important;
  color:#eef7fc!important;
  transition:none!important;
  animation:none!important;
  transform:none!important;
  filter:none!important;
  box-shadow:none!important;
}
#crm .client-table-wrap tbody tr td,
#crm .client-table-wrap tbody tr:hover td,
#crmBody tr td,
#crmBody tr:hover td{
  background:#17384f!important;
  color:#eef7fc!important;
  transition:none!important;
  animation:none!important;
  transform:none!important;
  filter:none!important;
}
#crm .client-table-wrap tbody tr td *,
#crm .client-table-wrap tbody tr:hover td *,
#crmBody tr td *,
#crmBody tr:hover td *{transition:none!important;animation:none!important;transform:none!important;filter:none!important;}
#crm .client-table-wrap tbody tr .muted,
#crm .client-table-wrap tbody tr:hover .muted,
#crmBody tr .muted,
#crmBody tr:hover .muted{color:#a9bdca!important;}
#crm .client-table-wrap tbody tr .status,
#crm .client-table-wrap tbody tr:hover .status,
#crmBody tr .status,
#crmBody tr:hover .status{background:#214d68!important;border:1px solid rgba(121,194,231,.34)!important;color:#f3fbff!important;opacity:1!important;text-shadow:none!important;}
#crm .client-table-wrap tbody tr .small-btn,
#crm .client-table-wrap tbody tr:hover .small-btn,
#crmBody tr .small-btn,
#crmBody tr:hover .small-btn{background:#10283a!important;color:#eef7fc!important;border-color:#2c526b!important;box-shadow:none!important;}
#crm .client-table-wrap tbody tr .small-btn:hover,
#crmBody tr .small-btn:hover{background:#1b455f!important;color:#fff!important;}


/* SOURCE: v1123107.css */
/* VoltHome OS v11.23.112 — consumer engineering catalogue, project palette */
.vh1176-calc-details{min-width:0!important;max-width:100%!important;overflow:hidden!important}
.vh12106-consumers,.vh12106-consumers *{box-sizing:border-box}
.vh12106-consumers{grid-column:1/-1;width:100%;max-width:100%;min-width:0;margin-top:10px;border:1px solid rgba(79,139,180,.34);border-radius:12px;background:#0b2233;overflow:hidden;box-shadow:inset 0 1px 0 rgba(255,255,255,.025)}
.vh12106-consumers>summary{cursor:pointer;display:flex;align-items:center;gap:8px;padding:12px 14px;font-weight:800;color:#e8f2f8;list-style:none;min-width:0;background:#102f45;border-bottom:1px solid rgba(79,139,180,.22)}
.vh12106-consumers>summary::-webkit-details-marker,.vh12106-add>summary::-webkit-details-marker{display:none}
.vh12106-consumers>summary span{margin-left:auto;color:#8fb1c7;font-size:11px;flex:0 0 auto}
.vh12106-note{padding:10px 14px;color:#9db6c6;font-size:11px;line-height:1.5;background:#0c283b;border-bottom:1px solid rgba(79,139,180,.16);overflow-wrap:anywhere}
.vh12106-catalog{width:100%;max-width:100%;min-width:0;max-height:520px;overflow-y:auto;overflow-x:hidden;padding:10px;display:grid;gap:10px;scrollbar-gutter:stable}
.vh12107-category{min-width:0;border:1px solid rgba(82,139,177,.22);border-radius:10px;background:#0a2030;overflow:hidden}
.vh12107-category>header{display:flex;gap:8px;align-items:center;padding:8px 10px;background:#123a52;color:#dcebf4;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.vh12107-category>header span{margin-left:auto;color:#8fb1c7;font-size:10px}
.vh12106-row{width:100%;max-width:100%;min-width:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:end;gap:7px;padding:9px 10px;border-top:1px solid rgba(115,153,177,.12);background:#0b2739}
.vh12106-row:nth-child(odd){background:#0c2a3e}
.vh12106-field{display:flex;flex-direction:column;gap:4px;min-width:0;color:#91adbe;font-size:10px}.vh12106-field span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vh12106-field input,.vh12106-field select,.vh12106-add-grid input,.vh12106-add-grid select{display:block;width:100%;max-width:100%;min-width:0;height:34px;border:1px solid rgba(103,147,175,.34)!important;border-radius:7px!important;background:#0a2131!important;color:#e7f1f7!important;box-shadow:none!important;outline:none}
.vh12106-field input:focus,.vh12106-field select:focus,.vh12106-add-grid input:focus,.vh12106-add-grid select:focus{border-color:#2a8bc1!important;background:#0c2a3e!important}
.vh12106-actions{display:flex;gap:6px;justify-content:flex-end;min-width:0}.vh12106-actions .small-btn{min-width:0;white-space:nowrap;height:34px}
.vh12106-actions .primary{background:#174f70!important;color:#edf7fc!important;border-color:#286f98!important}.vh12106-actions .danger{background:#44242b!important;color:#f6e6e9!important;border-color:#70404b!important}
.vh12106-add{margin:0 10px 10px;border:1px solid rgba(82,139,177,.20);border-radius:9px;max-width:calc(100% - 20px);min-width:0;overflow:hidden;background:#0a2030}
.vh12106-add>summary{cursor:pointer;color:#eab84d;font-size:11px;font-weight:800;padding:9px 10px;background:#102f45}
.vh12106-add-grid{width:100%;max-width:100%;min-width:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;align-items:end;padding:10px}
.vh12106-add-grid label{display:flex;flex-direction:column;gap:4px;min-width:0}.vh12106-add-grid label span{font-size:10px;color:#91adbe}
@media(max-width:1500px){.vh12106-row{grid-template-columns:repeat(4,minmax(0,1fr))}.vh12106-add-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.vh12106-actions{justify-content:stretch}.vh12106-actions .small-btn{flex:1}}
@media(max-width:1000px){.vh12106-row,.vh12106-add-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.vh12106-row,.vh12106-add-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.vh12106-row,.vh12106-add-grid{grid-template-columns:minmax(0,1fr)}.vh12106-actions{flex-direction:column}}


/* SOURCE: v1123108.css */
/* VoltHome OS v11.23.112 — consumer editor single-line layout only */
.vh12106-consumers{min-width:0!important;max-width:100%!important;overflow:hidden!important}
.vh12106-catalog{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
  scrollbar-gutter:stable;
}
.vh12107-category{
  width:100%!important;
  min-width:1180px!important;
  max-width:none!important;
}
.vh12106-row{
  width:100%!important;
  min-width:1180px!important;
  max-width:none!important;
  display:grid!important;
  grid-template-columns:
    minmax(210px,2.35fr)
    minmax(105px,1.15fr)
    minmax(70px,.72fr)
    minmax(54px,.48fr)
    minmax(82px,.78fr)
    minmax(78px,.72fr)
    minmax(82px,.78fr)
    minmax(78px,.72fr)
    minmax(100px,.95fr)
    minmax(84px,.78fr)
    minmax(80px,.72fr)
    minmax(138px,1.20fr)!important;
  grid-auto-flow:column!important;
  grid-auto-rows:auto!important;
  align-items:end!important;
  gap:5px!important;
  padding:7px 8px!important;
}
.vh12106-row>.vh12106-field,
.vh12106-row>.vh12106-actions{
  grid-row:1!important;
  min-width:0!important;
  margin:0!important;
}
.vh12106-field{gap:3px!important;font-size:9px!important}
.vh12106-field>span{font-size:9px!important;line-height:1.05!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
.vh12106-field input,.vh12106-field select{height:31px!important;padding:4px 7px!important;font-size:10px!important}
.vh12106-name input{font-size:10.5px!important}
.vh12106-actions{height:31px!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;align-self:end!important}
.vh12106-actions .small-btn{height:31px!important;min-width:0!important;padding:4px 6px!important;font-size:9.5px!important;line-height:1!important}
/* Do not let older responsive rules wrap a consumer into a second row. */
@media(max-width:1500px), (max-width:1000px), (max-width:720px), (max-width:520px){
  .vh12106-row{grid-template-columns:minmax(210px,2.35fr) minmax(105px,1.15fr) minmax(70px,.72fr) minmax(54px,.48fr) minmax(82px,.78fr) minmax(78px,.72fr) minmax(82px,.78fr) minmax(78px,.72fr) minmax(100px,.95fr) minmax(84px,.78fr) minmax(80px,.72fr) minmax(138px,1.20fr)!important}
  .vh12106-actions{display:grid!important;grid-template-columns:1fr 1fr!important}
}


/* SOURCE: v1123109.css */
/* VoltHome OS v11.23.112 — calculation headers + consumer one-row geometry only */

/* Make the calculation settings block visually distinct in the existing project palette. */
.vh1176-calc-details{
  margin-top:10px!important;
  border:1px solid rgba(45,150,205,.58)!important;
  border-radius:11px!important;
  background:#0a2233!important;
  box-shadow:0 0 0 1px rgba(29,111,158,.10), inset 0 1px 0 rgba(255,255,255,.025)!important;
  overflow:hidden!important;
}
.vh1176-calc-details>summary{
  min-height:42px!important;
  padding:11px 15px!important;
  display:flex!important;
  align-items:center!important;
  color:#f3f8fb!important;
  background:linear-gradient(180deg,#17445f 0%,#12384f 100%)!important;
  border-bottom:1px solid rgba(79,170,218,.40)!important;
  font-weight:800!important;
  letter-spacing:.01em!important;
  cursor:pointer!important;
}
.vh1176-calc-details>summary:hover{
  background:linear-gradient(180deg,#1a4c69 0%,#143e57 100%)!important;
  color:#fff!important;
}
.vh1176-calc-grid{padding:12px 14px 8px!important}
.vh1176-calc-help{padding:0 14px 12px!important}

/* Make the consumer/automation sub-section a clear, separately clickable bar. */
.vh12106-consumers{
  margin:10px 12px 12px!important;
  width:calc(100% - 24px)!important;
  max-width:calc(100% - 24px)!important;
  border:1px solid rgba(231,174,55,.52)!important;
  border-radius:10px!important;
  background:#0a2131!important;
  overflow:hidden!important;
}
.vh12106-consumers>summary{
  min-height:40px!important;
  padding:10px 14px!important;
  background:linear-gradient(180deg,#173e55 0%,#102f45 100%)!important;
  border-bottom:1px solid rgba(231,174,55,.30)!important;
  color:#f6d778!important;
  font-weight:850!important;
  letter-spacing:.01em!important;
}
.vh12106-consumers>summary:hover{
  background:linear-gradient(180deg,#1b4964 0%,#14384f 100%)!important;
  color:#ffe497!important;
}
.vh12106-consumers>summary span{
  color:#ffe08a!important;
  background:rgba(231,174,55,.12)!important;
  border:1px solid rgba(231,174,55,.28)!important;
  border-radius:999px!important;
  padding:2px 7px!important;
}

/* One consumer = exactly one row. No overlap: explicit track widths and real gaps. */
.vh12106-catalog{
  width:100%!important;
  max-width:100%!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
  padding:10px!important;
  scrollbar-gutter:stable!important;
}
.vh12107-category{
  width:max-content!important;
  min-width:100%!important;
  max-width:none!important;
  overflow:visible!important;
}
.vh12106-row{
  box-sizing:border-box!important;
  width:max-content!important;
  min-width:1588px!important;
  max-width:none!important;
  display:grid!important;
  grid-template-columns:300px 150px 92px 72px 110px 104px 112px 92px 126px 102px 96px 178px!important;
  grid-template-rows:44px!important;
  grid-auto-flow:column!important;
  align-items:end!important;
  column-gap:8px!important;
  row-gap:0!important;
  padding:7px 9px!important;
  overflow:visible!important;
}
.vh12106-row>.vh12106-field,
.vh12106-row>.vh12106-actions{
  grid-row:1!important;
  min-width:0!important;
  max-width:100%!important;
  width:100%!important;
  margin:0!important;
  box-sizing:border-box!important;
}
.vh12106-field{
  display:flex!important;
  flex-direction:column!important;
  justify-content:flex-end!important;
  gap:3px!important;
  height:44px!important;
  overflow:hidden!important;
}
.vh12106-field>span{
  display:block!important;
  height:10px!important;
  font-size:8.5px!important;
  line-height:10px!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.vh12106-field input,
.vh12106-field select{
  box-sizing:border-box!important;
  display:block!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  height:31px!important;
  padding:4px 7px!important;
  margin:0!important;
  font-size:10px!important;
  line-height:20px!important;
}
.vh12106-actions{
  height:31px!important;
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:6px!important;
  align-self:end!important;
  overflow:hidden!important;
}
.vh12106-actions .small-btn{
  box-sizing:border-box!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  height:31px!important;
  padding:4px 7px!important;
  margin:0!important;
  font-size:9px!important;
  line-height:1!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
/* Older breakpoints must never convert a consumer into two rows. */
@media(max-width:2000px), (max-width:1500px), (max-width:1000px), (max-width:720px), (max-width:520px){
  .vh12106-row{
    grid-template-columns:300px 150px 92px 72px 110px 104px 112px 92px 126px 102px 96px 178px!important;
    grid-template-rows:44px!important;
  }
  .vh12106-actions{display:grid!important;grid-template-columns:1fr 1fr!important;flex-direction:initial!important}
}


/* SOURCE: v1123110.css */
/* VoltHome OS v11.23.112 — responsive full-width consumer grid + orange calculation control only */

/* Important project action: make the calculation disclosure read as an orange control. */
.vh1176-calc-details{
  position:relative!important;
  padding-top:0!important;
}
.vh1176-calc-details>summary{
  box-sizing:border-box!important;
  display:inline-flex!important;
  width:auto!important;
  max-width:calc(100% - 24px)!important;
  min-width:220px!important;
  min-height:38px!important;
  margin:10px 12px 4px!important;
  padding:9px 16px!important;
  border:1px solid rgba(255,190,61,.95)!important;
  border-radius:9px!important;
  background:linear-gradient(180deg,#f6a916 0%,#e58a08 100%)!important;
  color:#101923!important;
  box-shadow:0 5px 14px rgba(229,138,8,.20), inset 0 1px 0 rgba(255,255,255,.35)!important;
  font-weight:900!important;
  line-height:1.15!important;
  white-space:nowrap!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.vh1176-calc-details>summary:hover,
.vh1176-calc-details>summary:focus-visible{
  background:linear-gradient(180deg,#ffb627 0%,#f39a0b 100%)!important;
  color:#0d1720!important;
  border-color:#ffd36f!important;
  box-shadow:0 6px 18px rgba(229,138,8,.28), 0 0 0 2px rgba(246,169,22,.12)!important;
}

/* The catalogue itself owns horizontal overflow. Nothing escapes the project panel. */
.vh12106-consumers,
.vh12106-catalog{
  box-sizing:border-box!important;
  max-width:100%!important;
}
.vh12106-catalog{
  width:100%!important;
  overflow-x:auto!important;
  overflow-y:auto!important;
}

/* Every category and every consumer row fills all available width on large screens. */
.vh12107-category{
  box-sizing:border-box!important;
  width:100%!important;
  min-width:1480px!important;
  max-width:none!important;
}
.vh12106-row{
  box-sizing:border-box!important;
  width:100%!important;
  min-width:1480px!important;
  max-width:none!important;
  grid-template-columns:
    minmax(220px,2.25fr)
    minmax(118px,1.15fr)
    minmax(76px,.72fr)
    minmax(64px,.58fr)
    minmax(94px,.90fr)
    minmax(90px,.86fr)
    minmax(102px,.96fr)
    minmax(82px,.76fr)
    minmax(116px,1.08fr)
    minmax(92px,.86fr)
    minmax(88px,.82fr)
    minmax(164px,1.42fr)!important;
  grid-template-rows:44px!important;
  column-gap:7px!important;
  padding:7px 8px!important;
}
.vh12106-row>.vh12106-field,
.vh12106-row>.vh12106-actions{
  min-width:0!important;
  width:100%!important;
  max-width:none!important;
}

/* Keep controls inside their own grid cells at every desktop resolution. */
.vh12106-field input,
.vh12106-field select,
.vh12106-actions,
.vh12106-actions .small-btn{
  box-sizing:border-box!important;
  min-width:0!important;
  max-width:100%!important;
}

/* On narrower displays preserve one row and scroll only inside this catalogue. */
@media (max-width:1600px){
  .vh12107-category,
  .vh12106-row{min-width:1480px!important}
}
@media (max-width:900px){
  .vh1176-calc-details>summary{
    min-width:0!important;
    max-width:calc(100% - 16px)!important;
    margin:8px!important;
    padding:8px 12px!important;
  }
  .vh12106-consumers{
    margin:8px!important;
    width:calc(100% - 16px)!important;
    max-width:calc(100% - 16px)!important;
  }
}

/* v11.23.112 — requested UI-only correction: remove the blue outer frame around Calculation parameters. */
.vh1176-calc-details,
.vh1176-calc-details[open]{
  border:none!important;
  outline:none!important;
  box-shadow:none!important;
  background:transparent!important;
}


/* SOURCE: v1123114.css */
/* VoltHome OS v11.23.114 — cable-map topology editor */
.vh114-map{overflow:visible!important}
.vh114-map-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px!important;background:#112f45!important;border-bottom:1px solid rgba(94,143,174,.28)!important}
.vh114-map-head>div{display:flex;flex-direction:column;gap:3px}.vh114-map-head b{color:#eef6fa}.vh114-map-head small,.vh114-map-head>span{color:#91afc1;font-size:11px}
.vh114-tree{padding:12px;background:#081b29;overflow-x:auto}
.vh114-box{margin-left:calc(var(--vh-depth,0) * 24px);border:1px solid rgba(83,132,163,.32);border-radius:10px;background:#0b2536;overflow:hidden;min-width:760px}
.vh114-box+.vh114-box{margin-top:10px}.vh114-child{margin-top:10px;border-left:3px solid #f2a313}
.vh114-box-head{display:grid!important;grid-template-columns:minmax(180px,1fr) 150px auto auto;align-items:end;gap:8px;padding:9px 10px!important;background:#102e42!important}
.vh114-box-title{display:flex;flex-direction:column;gap:2px;min-width:0}.vh114-box-title b{font-size:13px;color:#f5f8fa}.vh114-box-title small{font-size:10px;color:#8eabbc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vh114-edge{display:flex;flex-direction:column;gap:3px;color:#8eabbc;font-size:9px}.vh114-edge input{height:30px!important;width:100%!important;min-width:0;background:#091f2e!important;color:#eef5f8!important;border:1px solid rgba(93,141,171,.4)!important;border-radius:6px!important}
.vh114-root-badge{align-self:center;padding:6px 10px;border-radius:999px;background:rgba(242,163,19,.16);border:1px solid rgba(242,163,19,.55);color:#ffc24d;font-size:10px;font-weight:800}
.vh114-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 10px;border-top:1px solid rgba(83,132,163,.16);border-bottom:1px solid rgba(83,132,163,.16);background:#0a2131}.vh114-actions>span{color:#91afc1;font-size:10px;margin-right:4px}.vh114-actions button{height:28px;border:1px solid rgba(98,145,175,.35);border-radius:6px;background:#102f45;color:#dce9f1;font-size:10px;padding:0 8px;cursor:pointer}.vh114-actions button:hover{border-color:#f2a313;color:#ffc24d}
.vh114-branches{display:grid;gap:7px;padding:9px 10px}.vh114-branch{display:grid;grid-template-columns:minmax(220px,1fr) minmax(640px,3fr);gap:8px;align-items:end;padding:7px;border:1px solid rgba(82,132,163,.22);border-radius:8px;background:#0a2030}.vh114-branch-main{display:grid;grid-template-columns:18px minmax(0,1fr) 32px;gap:5px;align-items:end}.vh114-arrow{color:#f2a313;align-self:center}.vh114-name{height:31px!important;min-width:0;background:#091f2e!important;color:#eef5f8!important;border:1px solid rgba(93,141,171,.4)!important;border-radius:6px!important}
.vh114-fields{display:grid;grid-template-columns:.65fr .8fr 1.25fr 1.15fr 1fr 1fr;gap:6px}.vh114-fields label{display:flex;flex-direction:column;gap:3px;min-width:0;color:#89a7b9;font-size:9px}.vh114-fields input,.vh114-fields select{height:31px!important;width:100%!important;min-width:0;background:#091f2e!important;color:#eef5f8!important;border:1px solid rgba(93,141,171,.4)!important;border-radius:6px!important}
.vh114-empty{padding:8px;color:#7796aa;font-size:10px}.vh114-children{padding:0 8px 8px}
@media(max-width:1200px){.vh114-box{min-width:720px}.vh114-branch{grid-template-columns:200px minmax(600px,3fr)}}


/* SOURCE: v1123117.css */
/* VoltHome OS v11.23.117 — scoped cable-map engineering layout */
.vh117-map{overflow:visible!important}.vh117-summary{display:flex;flex-wrap:wrap;gap:8px;padding:8px 12px;background:#0a2131;border-bottom:1px solid rgba(83,132,163,.22)}.vh117-summary span{padding:5px 8px;border-radius:6px;background:#102e42;color:#91afc1;font-size:10px}.vh117-summary b{color:#f5f8fa}.vh117-path{display:flex;align-items:flex-start;gap:9px;padding:10px 12px;overflow-x:auto;background:#091f2e;border-bottom:1px solid rgba(83,132,163,.22);color:#f2a313}.vh117-panel,.vh117-tree-node{min-width:max-content;padding:7px 9px;border:1px solid rgba(83,132,163,.35);border-radius:7px;background:#0d2a3d;color:#eef6fa;font-size:11px}.vh117-panel small,.vh117-tree-node small,.vh117-tree-node span{display:block;color:#90adbe;font-size:9px;margin-top:2px}.vh117-tree-node ul{margin:6px 0 0 14px;padding-left:10px;border-left:1px solid rgba(242,163,19,.45)}.vh117-tree-node li{margin:5px 0;color:#d7e5ed}.vh117-load{color:#91afc1!important;font-size:9px}
.vh117-box{margin-left:calc(var(--vh-depth,0)*22px);border:1px solid rgba(83,132,163,.32);border-radius:9px;background:#0b2536;overflow:hidden;min-width:1240px}.vh117-child{margin-top:10px;border-left:3px solid #f2a313}.vh117-box-head{display:grid;grid-template-columns:minmax(360px,1.4fr) minmax(220px,.7fr) auto auto;align-items:end;gap:8px;padding:9px 10px;background:#102e42}.vh117-id{display:grid;grid-template-columns:140px minmax(190px,1fr);gap:7px}.vh117-id label,.vh117-segment-fields label,.vh117-fields label{display:flex;flex-direction:column;gap:3px;min-width:0;color:#89a7b9;font-size:9px}.vh117-id input,.vh117-segment-fields input,.vh117-segment-fields select,.vh117-fields input,.vh117-fields select,.vh117-branch-name input{height:30px!important;min-width:0;width:100%!important;background:#091f2e!important;color:#eef5f8!important;border:1px solid rgba(93,141,171,.4)!important;border-radius:6px!important}.vh117-edge-title{display:flex;flex-direction:column;gap:2px}.vh117-edge-title b{color:#eef6fa;font-size:11px}.vh117-edge-title small{color:#8eabbc;font-size:9px}
.vh117-segment-fields{display:grid;grid-template-columns:repeat(14,minmax(90px,1fr));gap:6px;padding:8px 10px;background:#0a2030;overflow-x:auto}.vh117-segment-summary,.vh117-branch-total{padding:5px 10px;color:#86a5b8;font-size:9px;border-top:1px solid rgba(83,132,163,.14)}.vh117-segment-summary b,.vh117-branch-total b{color:#dce9f1}.vh117-branches{display:grid;gap:7px;padding:9px 10px}.vh117-branch{padding:7px;border:1px solid rgba(82,132,163,.22);border-radius:8px;background:#0a2030;overflow-x:auto}.vh117-branch-name{display:grid;grid-template-columns:18px minmax(210px,1fr) 32px;gap:5px;align-items:center;margin-bottom:6px}.vh117-branch-name>span{color:#f2a313}.vh117-fields{display:grid;grid-template-columns:70px 100px 130px 100px 100px 95px 90px 90px 95px 145px 120px 105px 105px 145px;gap:6px;min-width:1500px}.vh117-children{padding:0 8px 8px}.vh114-tree:has(.vh117-box){overflow-x:auto}
@media(max-width:1400px){.vh117-box{min-width:1180px}.vh117-box-head{grid-template-columns:minmax(330px,1.3fr) minmax(190px,.7fr) auto auto}}


/* SOURCE: v1123118.css */
/* VoltHome OS v11.23.120 — scoped workflow UI; project palette only */
.vh118-chase-auto{display:block;margin-top:3px!important;font-style:normal;color:#8faebe;font-size:9px}.vh118-chase-auto label{display:flex!important;flex-direction:row!important;align-items:center;gap:4px}.vh118-chase-auto input{width:auto!important;height:auto!important;min-width:0!important}
.vh114-map-head .vh118-cable-pdf{margin-left:auto}.vh118-workflow-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px;padding:10px 12px;background:#0b2536;border:1px solid rgba(83,132,163,.28);border-radius:9px}.vh118-workflow-head>div:first-child{display:flex;flex-direction:column;gap:3px}.vh118-workflow-head b{color:#f5f8fa}.vh118-workflow-head span{color:#91afc1;font-size:10px}.vh118-actions{display:flex;gap:7px;flex-wrap:wrap}
.vh118-material-section{margin:9px 0;border:1px solid rgba(83,132,163,.25);border-radius:9px;background:#0a2030;overflow:hidden}.vh118-material-section summary{cursor:pointer;padding:10px 12px;background:#102e42;color:#eef6fa;font-weight:700}.vh118-material-section summary b{float:right;color:#f2a313}.vh118-table{width:100%;overflow-x:auto}.vh118-tr{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(260px,2fr) minmax(120px,.6fr) minmax(100px,.5fr);gap:8px;padding:7px 10px;border-top:1px solid rgba(83,132,163,.15);align-items:center;color:#dce8ef}.vh118-tr span{min-width:0}.vh118-tr small{display:block;color:#8faebe;margin-top:2px}.vh118-th{background:#0c2638;color:#91afc1;font-size:9px;text-transform:uppercase}.vh118-empty{padding:14px;color:#8faebe}
.vh118-supplier-match{margin-top:5px;padding:5px 7px;border-radius:5px;font-size:10px}.vh118-supplier-match.ok{background:rgba(35,132,94,.18);color:#9ed8bd}.vh118-supplier-match.missing{background:rgba(191,91,37,.16);color:#e3ad8e}.vh118-material-actions{margin-top:8px}
.vh118-scope-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:8px;margin-bottom:12px}.vh118-scope-grid article{padding:10px;border:1px solid rgba(83,132,163,.28);background:#0b2536;border-radius:8px}.vh118-scope-grid article>b{display:block;color:#f5f8fa}.vh118-scope-grid article>span{display:block;color:#8faebe;font-size:9px;margin:3px 0 8px}.vh118-scope-grid article>div{display:flex;gap:5px;flex-wrap:wrap}
@media(max-width:1200px){.vh118-scope-grid{grid-template-columns:repeat(2,minmax(200px,1fr))}}@media(max-width:760px){.vh118-scope-grid{grid-template-columns:1fr}.vh118-tr{min-width:720px}.vh118-table{overflow-x:auto}}
.vh117-map-host>.vh1162-map-placeholder{min-height:110px;display:flex;align-items:center;justify-content:center;color:#8faebe;background:#0a2030;border:1px solid rgba(83,132,163,.18);border-radius:8px}


/* SOURCE: v1123128.css */
/* VoltHome OS v11.23.128 — unified save indicator */
#vhSystemStatus.is-checking .vh-status-dot{animation:vh128spin .75s linear infinite;border:2px solid rgba(255,255,255,.35);border-top-color:currentColor;background:transparent!important}
@keyframes vh128spin{to{transform:rotate(360deg)}}


/* SOURCE: v1123129.css */
/* VoltHome OS v11.23.131 — compact sidebar status + calculation integrity */
.sidebar{display:flex!important;flex-direction:column!important}
#desktopNav{flex:1 1 auto}
#vhSystemStatus.vh129-sidebar-status{
  position:static!important;inset:auto!important;z-index:auto!important;
  margin:10px 10px 12px!important;padding:7px 9px!important;min-height:0!important;
  width:auto!important;max-width:none!important;border-radius:9px!important;
  box-shadow:none!important;backdrop-filter:none!important;
  background:rgba(255,255,255,.035)!important;border-color:rgba(141,190,221,.13)!important;
  font-size:9px!important;line-height:1.25!important;opacity:.72;gap:6px!important;
  flex-wrap:wrap!important;transition:opacity .15s ease!important
}
#vhSystemStatus.vh129-sidebar-status:hover{opacity:1}
#vhSystemStatus.vh129-sidebar-status .vh-status-dot{width:6px;height:6px;box-shadow:none!important}
#vhSystemStatus.vh129-sidebar-status.is-checking .vh-status-dot{animation:none!important;border:0!important;background:#d6a62d!important}
#vhSystemStatus.vh129-sidebar-status #vhLastSaveText{display:block;width:100%;padding-left:12px;opacity:.62}
.vh129-price-source{font-size:10px;color:var(--vh-muted);margin-top:5px}


/* SOURCE: v1123131.css */
/* VoltHome OS v11.23.131 — quiet DB lamp */
#vhSystemStatus.vh131-lamp-only{width:30px!important;min-width:30px!important;height:30px!important;min-height:30px!important;padding:0!important;margin-top:auto!important;border-radius:10px!important;display:flex!important;align-items:center!important;justify-content:center!important;overflow:hidden!important;opacity:.72!important;gap:0!important}
#vhSystemStatus.vh131-lamp-only #vhSystemStatusText,
#vhSystemStatus.vh131-lamp-only #vhLastSaveText{display:none!important}
#vhSystemStatus.vh131-lamp-only .vh-status-dot{display:block!important;width:8px!important;height:8px!important;min-width:8px!important;border:0!important;border-radius:50%!important;background:#35d07f!important;box-shadow:0 0 0 0 rgba(53,208,127,.32)!important;animation:vh131DbPulse 1.9s ease-out infinite!important}
#vhSystemStatus.vh131-lamp-only.is-error .vh-status-dot{background:#ff6969!important;animation:none!important}
@keyframes vh131DbPulse{0%{box-shadow:0 0 0 0 rgba(53,208,127,.32)}65%{box-shadow:0 0 0 6px rgba(53,208,127,0)}100%{box-shadow:0 0 0 0 rgba(53,208,127,0)}}


/* SOURCE: v1123133.css */
/* VoltHome OS v11.23.135 — targeted UI fixes only */
/* The removed four-card estimate shortcut menu must not return. */
.vh118-scope-grid{display:none!important}
/* RK engineering row stays one line; narrow screens scroll horizontally instead of reflowing labels. */
.vh117-box{overflow:hidden!important}
.vh117-segment-fields{display:grid!important;grid-template-columns:110px 105px 95px 105px 125px 110px 105px 100px 95px 125px 125px 110px 110px 145px!important;gap:6px!important;min-width:1580px!important;overflow:visible!important}
.vh117-box>.vh117-segment-fields{overflow:visible!important}
.vh117-box{overflow-x:auto!important}
.vh117-segment-fields label{min-width:0!important;white-space:nowrap!important}
.vh117-segment-fields input,.vh117-segment-fields select{min-width:0!important;width:100%!important}
/* Material-sheet save state uses the same calm aligned block geometry as other forms. */
#materialSaveState.estimate-save-state{display:block!important;width:100%!important;clear:both!important;margin:0 0 10px!important;padding:7px 10px!important;line-height:1.2!important;position:static!important;transform:none!important}
/* Sidebar database state: only text SQLite plus one dot. */
#vhSystemStatus.vh133-db-status{position:static!important;width:calc(100% - 20px)!important;min-width:0!important;height:34px!important;min-height:34px!important;margin:8px 10px 10px!important;padding:6px 9px!important;display:flex!important;align-items:center!important;gap:7px!important;overflow:hidden!important;border:1px solid rgba(69,209,143,.18)!important;border-radius:9px!important;background:rgba(6,28,42,.36)!important;box-shadow:none!important;color:var(--vh-muted)!important;opacity:.9!important}
#vhSystemStatus.vh133-db-status .vh133-db-text{font-size:10px!important;font-weight:700!important;white-space:nowrap!important;color:#78cfa8!important}
#vhSystemStatus.vh133-db-status .vh-status-dot{width:7px!important;height:7px!important;min-width:7px!important;border-radius:50%!important;background:#35d07f!important;animation:vh133DbPulse 2s ease-in-out infinite!important;box-shadow:0 0 0 2px rgba(53,208,127,.08)!important}
#vhSystemStatus.vh133-db-status.is-error .vh-status-dot{background:#ff6969!important;animation:none!important}
#vhSystemStatus.vh133-db-status #vhSystemStatusText,#vhSystemStatus.vh133-db-status #vhLastSaveText,.vh132-db-copy{display:none!important}
@keyframes vh133DbPulse{0%,100%{opacity:.62}50%{opacity:1}}

/* v134 final replacement: status fields match normal form controls exactly. */
#materialSaveState.estimate-save-state,#estimateSaveState.estimate-save-state{box-sizing:border-box!important;width:100%!important;min-height:44px!important;height:44px!important;margin:10px 0!important;padding:0 12px!important;display:flex!important;align-items:center!important;border-radius:10px!important;font-size:12px!important;line-height:1!important;position:static!important;transform:none!important}
/* Final SQLite block: one line only, no old two-line database copy. */
#vhSystemStatus.vh133-db-status{width:calc(100% - 20px)!important;height:34px!important;min-height:34px!important;margin:8px 10px 10px!important;padding:6px 10px!important;display:flex!important;align-items:center!important;gap:8px!important;border-radius:9px!important;overflow:hidden!important}
#vhSystemStatus.vh133-db-status .vh133-db-text{font-size:11px!important;font-weight:700!important;line-height:1!important}
/* Canonical project-estimate actions stay on one line and never overlap. */
.vh134-doc-actions{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:nowrap!important;margin-left:auto!important}.vh134-doc-actions .btn{white-space:nowrap!important;min-width:0!important}
@media(max-width:900px){.vh1162-doc-head{overflow-x:auto!important}.vh134-doc-actions{min-width:max-content!important}}


/* SOURCE: v1123135.css */
/* VoltHome OS v11.23.135 — targeted work/material warnings */
#estimateLines .estimate-row.vh135-missing-price,
#sheetLines .material-sheet-line.vh135-material-missing,
#sheetLines .estimate-row.vh135-material-missing{
  border-color:rgba(255,157,58,.72)!important;
  background:rgba(255,137,36,.08)!important;
  box-shadow:inset 3px 0 0 rgba(255,157,58,.95)!important;
}
.vh135-missing-note,.vh135-material-note{margin-top:4px;color:#ffb04a;font-size:11px;font-weight:800;line-height:1.25}


/* SOURCE: v1123195.css */
/* VoltHome OS 11.23.195 — instruction center and compact live persistence indicator. */
#vhSystemStatus.vh-system-status{
  display:flex!important;position:static!important;inset:auto!important;z-index:auto!important;
  width:100%;max-width:none;min-height:0;padding:7px 8px;margin:0;border:0!important;
  border-radius:10px;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;
  justify-content:center;flex-wrap:wrap;gap:5px;text-align:center;font-size:9px;line-height:1.25;
  color:rgba(235,246,252,.72)
}
.vh-sidebar-footer{flex:0 0 auto;display:grid;gap:2px;margin-top:5px;padding:7px 5px 2px;border-top:1px solid rgba(255,255,255,.09)}
.vh-sidebar-footer #vhLastSaveText{display:none}
.vh-sidebar-footer .vh-status-dot{width:7px;height:7px;transition:transform .2s ease,box-shadow .2s ease,background .2s ease}
.vh-sidebar-footer .vh-system-status.is-checking .vh-status-dot,.vh-sidebar-footer .vh-system-status.is-saving .vh-status-dot{animation:vhSavePulse 1s ease-in-out infinite}
@keyframes vhSavePulse{0%,100%{transform:scale(.8);opacity:.55}50%{transform:scale(1.3);opacity:1;box-shadow:0 0 0 5px rgba(53,243,255,.12)}}
.vh-app-version{margin:0!important;padding:4px 6px!important;border:0!important;background:transparent!important;color:rgba(235,246,252,.48)!important;font-size:8px!important;font-weight:650!important}
@media (min-width:721px) and (max-width:1050px){.vh-sidebar-footer{padding-left:0;padding-right:0}.vh-sidebar-footer #vhSystemStatusText{display:none}.vh-sidebar-footer .vh-status-dot{width:8px;height:8px}.vh-app-version{font-size:7px!important}}

.vh-help-page{overflow:visible!important}.vh-help-toolbar{align-items:center}.vh-help-toolbar .search{width:min(360px,100%)}
.vh-help-layout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:18px;align-items:start}
.vh-help-toc{position:sticky;top:16px;max-height:calc(100dvh - 80px);overflow:auto;display:grid;gap:5px;padding:14px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--shadow)}
.vh-help-toc>b{padding:4px 7px 9px}.vh-help-toc button{appearance:none;border:0;border-radius:10px;padding:9px 10px;text-align:left;background:transparent;color:var(--text);cursor:pointer;font:inherit;font-size:12px}.vh-help-toc button:hover{background:rgba(53,243,255,.09)}
.vh-help-content{display:grid;gap:14px;min-width:0}.vh-help-card{scroll-margin-top:18px;display:grid;grid-template-columns:46px minmax(0,1fr);gap:14px;padding:18px;border:1px solid var(--line);border-radius:20px;background:var(--card);box-shadow:var(--shadow)}
.vh-help-card h3{margin:1px 0 8px;font-size:17px}.vh-help-card p{margin:0;color:var(--muted);line-height:1.65}.vh-help-step{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;font-weight:850;background:linear-gradient(135deg,rgba(53,243,255,.18),rgba(166,92,255,.18));border:1px solid rgba(53,243,255,.25)}
.vh-help-flow{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:14px}.vh-help-flow span{padding:7px 10px;border-radius:10px;background:rgba(53,243,255,.07);border:1px solid var(--line);font-size:11px;font-weight:700}.vh-help-flow b{color:var(--muted)}
html[data-theme="light"] .vh-help-toc,html[data-theme="light"] .vh-help-card{background:#fff;border-color:rgba(39,68,86,.13);box-shadow:0 12px 34px rgba(31,56,73,.08)}
html[data-theme="light"] .vh-help-toc button:hover{background:rgba(24,169,187,.08)}html[data-theme="light"] .vh-help-flow span{background:rgba(24,169,187,.06)}
@media(max-width:900px){.vh-help-layout{grid-template-columns:1fr}.vh-help-toc{position:static;max-height:none;grid-template-columns:repeat(2,minmax(0,1fr))}.vh-help-toc>b{grid-column:1/-1}}
@media(max-width:600px){.vh-help-toolbar{align-items:stretch}.vh-help-toolbar .search{width:100%}.vh-help-toc{grid-template-columns:1fr}.vh-help-card{grid-template-columns:36px minmax(0,1fr);padding:14px;gap:10px}.vh-help-step{width:34px;height:34px;border-radius:11px;font-size:11px}.vh-help-flow{align-items:stretch}.vh-help-flow span{flex:1 1 100%}.vh-help-flow b{display:none}}


/* SOURCE: v1123199.css */
/* VoltHome OS 11.23.206 — final sidebar save indicator + help containment. */
#vhSystemStatus.vh-system-status{display:flex!important;width:auto!important;min-width:0!important;max-width:100%!important;height:28px!important;min-height:28px!important;margin:0 auto!important;padding:5px 9px!important;align-items:center!important;justify-content:center!important;flex-wrap:nowrap!important;gap:6px!important;border:1px solid rgba(53,208,127,.18)!important;border-radius:999px!important;background:rgba(6,28,42,.22)!important;box-shadow:none!important;overflow:hidden!important;color:rgba(220,241,234,.78)!important;font-size:9px!important;font-weight:700!important;white-space:nowrap!important}
#vhSystemStatus .vh-status-dot{display:block!important;width:6px!important;height:6px!important;min-width:6px!important;border:0!important;border-radius:50%!important;background:#35d07f!important;box-shadow:0 0 0 0 rgba(53,208,127,.24)!important;animation:none!important}
#vhSystemStatus.is-saving .vh-status-dot,#vhSystemStatus.is-checking .vh-status-dot{animation:vh198SavePulse .9s ease-in-out infinite!important}
#vhSystemStatus.is-error .vh-status-dot{background:#ff6969!important;animation:none!important}
#vhSystemStatus #vhLastSaveText,#vhSystemStatus #vhSqliteOnlyBadge,#vhSystemStatus .vh133-db-text,#vhSystemStatus .vh132-db-copy{display:none!important}
.vh-sidebar-footer{display:grid!important;justify-items:center!important;gap:3px!important;padding:7px 5px 3px!important}.vh-app-version{text-align:center!important;width:100%!important}
@keyframes vh198SavePulse{0%,100%{transform:scale(.78);opacity:.55}50%{transform:scale(1.2);opacity:1;box-shadow:0 0 0 4px rgba(53,208,127,.12)}}
.vh-help-page{min-width:0!important;overflow:visible!important}.vh-help-layout{min-width:0!important}.vh-help-content{min-width:0!important;overflow:hidden}.vh-help-card{max-width:100%!important;overflow:hidden}.vh-help-card p{overflow-wrap:anywhere}
html[data-theme="light"] #vhSystemStatus.vh-system-status{background:rgba(255,255,255,.45)!important;border-color:rgba(33,148,103,.18)!important;color:rgba(35,83,67,.76)!important}

/* 11.23.206 complete help center */
.vh-help-card-body{min-width:0}.vh-help-card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.vh-help-card-title h3{margin:1px 0 8px}.vh-help-details{display:grid;gap:8px;margin-top:14px}.vh-help-detail{display:grid;grid-template-columns:minmax(120px,180px) minmax(0,1fr);gap:12px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:rgba(53,243,255,.035)}.vh-help-detail b{font-size:12px}.vh-help-detail span{font-size:12px;line-height:1.55;color:var(--muted)}.vh-help-admin-card{border-color:rgba(255,189,54,.32)}.vh-help-admin-badge{font-size:10px;font-weight:800;padding:5px 8px;border-radius:999px;border:1px solid rgba(255,189,54,.35);color:#ffbd36;background:rgba(255,189,54,.08)}.vh-help-admin-link{border-left:2px solid rgba(255,189,54,.55)!important}.vh-help-toc{scrollbar-width:thin}.vh-help-content{padding-bottom:24px}html[data-theme="light"] .vh-help-detail{background:rgba(24,169,187,.035)}html[data-theme="light"] .vh-help-admin-badge{color:#8a6100;background:rgba(255,189,54,.12)}@media(max-width:600px){.vh-help-detail{grid-template-columns:1fr;gap:4px}.vh-help-layout{gap:12px}.vh-help-content{overflow:visible}}


/* SOURCE: v1123138.css */
/* VoltHome OS v11.23.139 — scoped only; no global shell/layout overrides */
.vh138-project-calc-btn{display:flex!important;align-items:center!important;justify-content:center!important;width:100%!important;min-height:40px!important;text-align:center!important;font-weight:750!important;white-space:normal!important}
#projectEditorModal .modal-actions{display:flex;align-items:center;gap:10px}
#projectEditorModal .vh138-editor-spacer{flex:1 1 auto}


/* SOURCE: v1123142.css */
/* VoltHome OS v11.23.142 — consumer labels + stable SQLite lamp */
/* Rooms -> consumers: one fixed row, every caption above its field. */
.project-consumer-list{overflow-x:auto!important;overflow-y:visible!important}
.project-consumer-row{
  display:grid!important;
  grid-template-columns:520px 100px 90px 110px 36px!important;
  grid-template-rows:58px!important;
  align-items:start!important;
  column-gap:10px!important;
  row-gap:0!important;
  width:max-content!important;
  min-width:886px!important;
  max-width:none!important;
  margin:0!important;
  box-sizing:border-box!important;
}
.project-consumer-row>*{grid-row:1!important;min-width:0!important;box-sizing:border-box!important}
.project-consumer-row label,.project-consumer-main{
  height:58px!important;
  display:grid!important;
  grid-template-rows:12px 38px!important;
  gap:4px!important;
  align-content:start!important;
  min-width:0!important;
  padding:0!important;
}
.project-consumer-row label>span,.project-consumer-main>span{
  height:12px!important;line-height:12px!important;font-size:10px!important;
  white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  display:block!important;margin:0!important;padding:0!important;
}
.project-consumer-row input,.project-consumer-row select{
  height:38px!important;min-height:38px!important;max-height:38px!important;
  font-size:13px!important;line-height:20px!important;box-sizing:border-box!important;
}
.project-consumer-row label input,.project-consumer-row label select{
  text-align:left!important;text-align-last:left!important;font-variant-numeric:tabular-nums!important;padding-left:12px!important;
}
.project-consumer-row .danger{
  width:36px!important;min-width:36px!important;height:38px!important;align-self:start!important;margin:16px 0 0!important;
}
@media(max-width:1100px){.project-consumer-row{grid-template-columns:520px 100px 90px 110px 36px!important;min-width:886px!important}}

/* Estimate/KP totals stay in one right-aligned column. */
.vh136-estimate-scope>summary{display:grid!important;grid-template-columns:minmax(0,1fr) 132px 18px!important;align-items:center!important;gap:12px!important}
.vh136-estimate-scope>summary>span{min-width:0!important}
.vh136-estimate-scope>summary>b{justify-self:end!important;width:132px!important;min-width:132px!important;text-align:right!important;font-variant-numeric:tabular-nums!important}
.vh136-estimate-scope>summary:after{justify-self:end!important}

/* SQLite is always a green softly pulsing live lamp while the app is connected/saving. */
#vhSystemStatus.vh133-db-status .vh-status-dot,
#vhSystemStatus.vh133-db-status.is-ok .vh-status-dot,
#vhSystemStatus.vh133-db-status.is-checking .vh-status-dot{
  width:7px!important;height:7px!important;min-width:7px!important;border:0!important;border-radius:50%!important;
  background:#35d07f!important;box-shadow:0 0 0 0 rgba(53,208,127,.30)!important;
  animation:vh142DbPulse 1.8s ease-out infinite!important;
}
#vhSystemStatus.vh133-db-status.is-error .vh-status-dot{background:#ff6969!important;animation:none!important}
@keyframes vh142DbPulse{0%{box-shadow:0 0 0 0 rgba(53,208,127,.34)}65%{box-shadow:0 0 0 6px rgba(53,208,127,0)}100%{box-shadow:0 0 0 0 rgba(53,208,127,0)}}


/* SOURCE: v1123143.css */
/* VoltHome OS v11.23.143 — generated document actions */
#projectTab-cables .vh114-map-head .vh143-cable-pdf,
#projectTab-cables .vh114-map-head .vh143-add-cable{white-space:nowrap;flex:0 0 auto}
#projectTab-cables .vh114-map-head .vh143-cable-pdf{margin-left:auto!important}
#projectTab-cables .vh114-map-head .vh143-add-cable{margin-left:6px}
#projectTab-panel .vh1165-scheme-toolbar{align-items:center}
#projectTab-panel .vh1165-scheme-toolbar .vh143-add-shield{margin-left:6px;white-space:nowrap;flex:0 0 auto}


/* SOURCE: v1123144.css */
/* VoltHome OS 11.23.144 — commercial foundation; scoped UI only */
.vh144-login-divider{display:flex;align-items:center;gap:10px;color:var(--muted,#8fa3b8);font-size:12px;margin:13px 0}.vh144-login-divider:before,.vh144-login-divider:after{content:"";height:1px;flex:1;background:rgba(120,160,190,.22)}
.vh144-register-open{width:100%;padding:12px}.vh144-register-box{max-width:760px}.vh144-register-box h3{margin:0}.vh144-register-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.vh144-register-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.vh144-subscription-card{grid-column:1/-1;padding:18px!important}.vh144-sub-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.vh144-sub-head small{display:block;color:var(--muted,#8fa3b8);font-weight:800;letter-spacing:.08em}.vh144-sub-head h3{font-size:24px;margin:3px 0 0}.vh144-plan-status{border:1px solid rgba(54,211,153,.35);background:rgba(32,180,126,.12);color:#74e4bd;border-radius:999px;padding:7px 12px;font-weight:800}.vh144-trial-line{display:flex;justify-content:space-between;gap:14px;padding:11px 13px;border:1px solid rgba(255,166,45,.26);background:rgba(255,166,45,.08);border-radius:10px;margin-bottom:14px}.vh144-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.vh144-plan-card{border:1px solid rgba(118,157,187,.22);background:rgba(8,34,51,.4);border-radius:12px;padding:14px;min-height:170px;display:flex;flex-direction:column}.vh144-plan-card.active{border-color:rgba(255,166,45,.65);box-shadow:inset 0 0 0 1px rgba(255,166,45,.16)}.vh144-plan-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.vh144-plan-title b{font-size:16px}.vh144-plan-title span{font-size:10px;border-radius:999px;background:rgba(255,166,45,.16);color:#ffc26f;padding:4px 7px}.vh144-plan-card ul{padding-left:18px;margin:12px 0 16px;color:var(--muted,#a8b7c6);line-height:1.7;flex:1}.vh144-plan-card .btn{width:100%}.vh144-sub-note{font-size:11px;color:var(--muted,#8fa3b8);margin-top:12px}
@media(max-width:760px){.vh144-register-grid,.vh144-plan-grid{grid-template-columns:1fr}.vh144-sub-head,.vh144-trial-line{align-items:flex-start;flex-direction:column}}

/* v11.23.146: registration modal is above the full-screen login layer. */
#vh144RegisterModal.modal.open,.modal.vh144-register-modal.open{z-index:100050!important}


/* SOURCE: v1123148.css */
/* VoltHome OS 11.23.148 — visible tariff locks */
.vh148-plan-locked{opacity:.46!important;cursor:not-allowed!important;filter:saturate(.55);position:relative}
.vh148-plan-locked:hover{transform:none!important;box-shadow:none!important}
.nav-btn.vh148-plan-locked,.project-detail-tab.vh148-plan-locked{pointer-events:auto}
.vh148-plan-locked[data-vh-plan-hint]::after{content:'🔒';font-size:10px;margin-left:6px;opacity:.9}


/* SOURCE: v1123152.css */
/* VoltHome OS 11.23.152 — bounded material workspaces + larger database viewport. */
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  display:flex!important;
  flex-direction:column!important;
  height:clamp(500px,62vh,720px)!important;
  min-height:500px!important;
  max-height:calc(100vh - 285px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:6px!important;
}
#materials-db #materialDbList{
  display:flex!important;
  flex-direction:column!important;
  height:clamp(560px,68vh,780px)!important;
  min-height:540px!important;
  max-height:calc(100vh - 245px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:6px!important;
}
#price .card:has(#sheetCatalog),
#materials-db .card:has(#materialDbList){overflow:hidden!important;min-height:0!important}
#price #sheetCatalog::-webkit-scrollbar,
#price #cleanMaterialCatalog::-webkit-scrollbar,
#materials-db #materialDbList::-webkit-scrollbar{width:8px}
#price #sheetCatalog::-webkit-scrollbar-thumb,
#price #cleanMaterialCatalog::-webkit-scrollbar-thumb,
#materials-db #materialDbList::-webkit-scrollbar-thumb{background:rgba(255,189,54,.48);border-radius:999px}
@media(max-height:760px){
  #price #sheetCatalog,#price #cleanMaterialCatalog{height:440px!important;min-height:360px!important;max-height:calc(100vh - 250px)!important}
  #materials-db #materialDbList{height:470px!important;min-height:390px!important;max-height:calc(100vh - 220px)!important}
}
@media(max-width:900px){
  #price #sheetCatalog,#price #cleanMaterialCatalog,#materials-db #materialDbList{min-height:380px!important;height:52vh!important;max-height:620px!important}
}


/* SOURCE: v1123153.css */
/* VoltHome OS 11.23.153 — verified material workspaces: full-height cards + internal scrolling. */
#price.active,
#materials-db.active{
  min-height:0!important;
}

/* Material estimate: keep the page itself fixed; scroll only the long catalog/estimate lists. */
#price .calc-layout{
  height:calc(100dvh - 150px)!important;
  min-height:560px!important;
  align-items:stretch!important;
  overflow:hidden!important;
}
#price .calc-layout > .card{
  height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
}
#price .calc-layout > .card:first-child{
  display:flex!important;
  flex-direction:column!important;
}
#price .calc-layout > .card:first-child .sheet-pane.active{
  display:flex!important;
  flex:1 1 auto!important;
  min-height:0!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  flex:1 1 auto!important;
  width:100%!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:7px!important;
}
#price .calc-layout > .card:nth-child(2){
  display:flex!important;
  flex-direction:column!important;
}
#price #sheetLines{
  flex:1 1 auto!important;
  min-height:140px!important;
  max-height:none!important;
  overflow-y:auto!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}

/* Base materials: card uses all remaining viewport height; product list owns the scroll. */
#materials-db.active{
  display:flex!important;
  flex-direction:column!important;
  height:calc(100dvh - 150px)!important;
  overflow:hidden!important;
}
#materials-db > .toolbar{
  flex:0 0 auto!important;
}
#materials-db > .supplier-material-db-card{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
#materials-db #materialDbList{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:7px!important;
}

#price #sheetCatalog::-webkit-scrollbar,
#price #cleanMaterialCatalog::-webkit-scrollbar,
#price #sheetLines::-webkit-scrollbar,
#materials-db #materialDbList::-webkit-scrollbar{width:10px}
#price #sheetCatalog::-webkit-scrollbar-thumb,
#price #cleanMaterialCatalog::-webkit-scrollbar-thumb,
#price #sheetLines::-webkit-scrollbar-thumb,
#materials-db #materialDbList::-webkit-scrollbar-thumb{background:rgba(255,174,0,.55);border-radius:999px}

.vh153-list-summary{font-size:11px;color:var(--vh-muted);padding:2px 2px 8px}
.vh153-list-more{padding:10px;text-align:center;color:var(--vh-muted);font-size:11px}

@media(max-width:1180px){
  #price .calc-layout{height:calc(100dvh - 138px)!important;min-height:520px!important}
}
@media(max-width:1000px){
  #price .calc-layout{height:auto!important;min-height:0!important;overflow:visible!important}
  #price .calc-layout > .card{height:auto!important;min-height:520px!important}
  #price #sheetCatalog,#price #cleanMaterialCatalog{height:55dvh!important;min-height:360px!important;max-height:620px!important;flex:none!important}
  #materials-db.active{height:calc(100dvh - 122px)!important}
}


/* SOURCE: v1123154.css */
/* VoltHome OS 11.23.154 — subscription lifecycle card. */
.vh154-status-wrap{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.vh154-local-badge{font-size:10px;font-weight:900;letter-spacing:.08em;padding:5px 7px;border-radius:999px;border:1px solid rgba(113,164,201,.35);color:#a9c9de;background:rgba(76,132,170,.10)}
.vh144-plan-status.vh154-status-trial{border-color:rgba(255,166,45,.42);background:rgba(255,166,45,.10);color:#ffc26f}
.vh144-plan-status.vh154-status-active{border-color:rgba(54,211,153,.35);background:rgba(32,180,126,.12);color:#74e4bd}
.vh144-plan-status.vh154-status-expired{border-color:rgba(255,174,66,.42);background:rgba(255,144,34,.10);color:#ffc16a}
.vh144-plan-status.vh154-status-blocked{border-color:rgba(255,90,105,.45);background:rgba(214,48,66,.12);color:#ff9aa6}
.vh154-subscription-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 12px}
.vh154-subscription-meta>div,.vh154-limit-grid>div{border:1px solid rgba(118,157,187,.20);background:rgba(8,34,51,.36);border-radius:10px;padding:10px 12px;min-width:0}
.vh154-subscription-meta small,.vh154-limit-grid small{display:block;color:var(--muted,#8fa3b8);font-size:10px;font-weight:800;letter-spacing:.04em;margin-bottom:4px}
.vh154-subscription-meta b,.vh154-limit-grid b{font-size:13px;color:var(--text,#edf6fb);overflow-wrap:anywhere}
.vh154-access-note{padding:10px 12px;border:1px solid rgba(54,211,153,.24);background:rgba(32,180,126,.07);border-radius:10px;color:#acd8ca;font-size:12px;margin-bottom:12px}
.vh154-access-note.limited{border-color:rgba(255,166,45,.30);background:rgba(255,166,45,.07);color:#e8c48f}
.vh154-access-note.blocked{border-color:rgba(255,90,105,.30);background:rgba(214,48,66,.07);color:#efadb5}
.vh154-limits{border:1px solid rgba(118,157,187,.18);border-radius:12px;padding:12px;margin-bottom:14px;background:rgba(4,22,34,.26)}
.vh154-limits-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px}.vh154-limits-title span{font-size:10px;color:var(--muted,#8fa3b8)}
.vh154-limit-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.vh154-plan-limits{display:flex;flex-wrap:wrap;gap:5px;margin:-8px 0 12px}.vh154-plan-limits span{font-size:9px;color:var(--muted,#8fa3b8);padding:3px 6px;border:1px solid rgba(118,157,187,.16);border-radius:999px}
@media(max-width:760px){.vh154-subscription-meta,.vh154-limit-grid{grid-template-columns:1fr}.vh154-status-wrap{justify-content:flex-start}.vh154-limits-title{align-items:flex-start;flex-direction:column}}


/* SOURCE: v1123155.css */
/* VoltHome OS 11.23.155 — readable subscription UI + billing periods. */
#vh144SubscriptionCard{color:#edf6fb}
#vh144SubscriptionCard .vh144-sub-head small{color:#a9bfd0!important}
#vh144SubscriptionCard .vh144-sub-head h3{color:#f7fbff!important}
#vh144SubscriptionCard .vh154-subscription-meta{grid-template-columns:repeat(4,minmax(0,1fr))}
#vh144SubscriptionCard .vh154-subscription-meta>div,
#vh144SubscriptionCard .vh154-limit-grid>div{background:rgba(9,34,52,.72)!important;border-color:rgba(132,178,210,.34)!important}
#vh144SubscriptionCard .vh154-subscription-meta small,
#vh144SubscriptionCard .vh154-limit-grid small{color:#a9bfd0!important;font-size:11px!important}
#vh144SubscriptionCard .vh154-subscription-meta b,
#vh144SubscriptionCard .vh154-limit-grid b{color:#f1f7fb!important;font-size:14px!important}
#vh144SubscriptionCard .vh154-access-note{color:#c9eee1!important;background:rgba(32,180,126,.10)!important}
#vh144SubscriptionCard .vh154-access-note.limited{color:#f0d0a1!important}
#vh144SubscriptionCard .vh154-access-note.blocked{color:#ffc0c8!important}
#vh144SubscriptionCard .vh154-limits-title b{color:#f3f8fb!important}
#vh144SubscriptionCard .vh154-limits-title span,
#vh144SubscriptionCard .vh154-plan-limits span,
#vh144SubscriptionCard .vh144-sub-note{color:#a9bfd0!important}
#vh144SubscriptionCard .vh144-plan-card{background:rgba(9,34,52,.72)!important;border-color:rgba(132,178,210,.32)!important}
#vh144SubscriptionCard .vh144-plan-title b{color:#f4f9fc!important}
#vh144SubscriptionCard .vh144-plan-card ul{color:#b9cbd8!important}
.vh155-period-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:0 0 14px;padding:12px;border:1px solid rgba(132,178,210,.30);background:rgba(9,34,52,.58);border-radius:12px}
.vh155-period-row>div:first-child{display:flex;flex-direction:column;gap:3px}.vh155-period-row b{color:#f4f9fc}.vh155-period-row span{font-size:11px;color:#a9bfd0}
.vh155-period-switch{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.vh155-period-switch button{border:1px solid rgba(132,178,210,.35);background:rgba(5,25,39,.72);color:#d9e8f1;border-radius:9px;padding:8px 11px;font-weight:800;cursor:pointer}.vh155-period-switch button:hover{border-color:rgba(255,166,45,.55);color:#fff}.vh155-period-switch button.active{border-color:#f0a12d;background:rgba(240,161,45,.16);color:#ffd18a;box-shadow:inset 0 0 0 1px rgba(240,161,45,.12)}
.vh154-status-wrap .vh144-plan-status{min-width:92px;text-align:center;padding:7px 13px;border-radius:999px;font-size:12px}
.vh154-local-badge{display:none!important}
@media(max-width:980px){#vh144SubscriptionCard .vh154-subscription-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){#vh144SubscriptionCard .vh154-subscription-meta{grid-template-columns:1fr}.vh155-period-row{align-items:flex-start;flex-direction:column}.vh155-period-switch{justify-content:flex-start}}


/* SOURCE: v1123156.css */
/* VoltHome OS 11.23.158 — payment flow and subscription history. */
#vh144SubscriptionCard .vh144-plan-card{display:flex;flex-direction:column;gap:10px}#vh144SubscriptionCard .vh144-plan-card .btn{margin-top:auto}.vh156-price{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:9px;background:rgba(7,29,45,.7);border:1px solid rgba(132,178,210,.2)}.vh156-price strong{font-size:16px;color:#ffd18a}.vh156-price span{font-size:11px;color:#a9bfd0}.vh156-pending,.vh156-history{margin-top:14px;border:1px solid rgba(132,178,210,.28);border-radius:12px;background:rgba(7,29,45,.54);padding:12px}.vh156-section-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.vh156-section-title b{color:#f4f9fc}.vh156-section-title span{padding:3px 7px;border-radius:999px;background:rgba(132,178,210,.12);color:#b9cfdd;font-size:11px}.vh156-payment-row{display:grid;grid-template-columns:minmax(180px,1fr) auto auto;gap:12px;align-items:center;padding:10px;border-radius:10px;border:1px solid rgba(240,161,45,.34);background:rgba(240,161,45,.07)}.vh156-payment-row>div:first-child{display:flex;flex-direction:column;gap:2px}.vh156-payment-row b{color:#f6fbff}.vh156-payment-row span{color:#a9bfd0;font-size:11px}.vh156-payment-row>strong{color:#ffd18a}.vh156-payment-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.vh156-history-list{display:flex;flex-direction:column;gap:7px;max-height:300px;overflow:auto;padding-right:4px}.vh156-history-row{display:grid;grid-template-columns:minmax(200px,1fr) minmax(160px,auto) minmax(170px,auto);gap:12px;align-items:center;padding:9px 10px;border:1px solid rgba(132,178,210,.18);background:rgba(8,32,49,.65);border-radius:9px}.vh156-history-row>div{display:flex;flex-direction:column;gap:2px}.vh156-history-row>div:nth-child(2){align-items:flex-end}.vh156-history-row b,.vh156-history-row strong{color:#eaf4fa}.vh156-history-row span{font-size:11px;color:#9fb7c8}.vh156-history-row code{font-size:10px;color:#7895a8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vh156-payment-status{display:inline-flex!important;padding:3px 7px;border-radius:999px}.vh156-payment-status.pending{color:#ffd18a!important;background:rgba(240,161,45,.11)}.vh156-payment-status.paid{color:#98ebc3!important;background:rgba(32,180,126,.11)}.vh156-payment-status.failed,.vh156-payment-status.cancelled,.vh156-payment-status.refunded{color:#ffc0c8!important;background:rgba(213,71,92,.09)}.vh156-empty{color:#9fb7c8;font-size:12px;padding:9px 2px}@media(max-width:980px){.vh156-payment-row,.vh156-history-row{grid-template-columns:1fr}.vh156-payment-actions{justify-content:flex-start}.vh156-history-row>div:nth-child(2){align-items:flex-start}}


/* SOURCE: v1123157.css */
/* VoltHome OS 11.23.158 — commercial pricing controls */
.vh157-pricing-admin{margin-top:16px;padding:14px;border:1px solid rgba(104,178,219,.22);border-radius:14px;background:rgba(7,27,43,.34)}
.vh157-pricing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:10px}
.vh157-pricing-card{display:grid;grid-template-columns:1fr;gap:8px;padding:12px;border:1px solid rgba(122,182,216,.18);border-radius:12px;background:rgba(8,31,49,.42)}
.vh157-pricing-card>b{font-size:15px;color:#f2f7fb}
.vh157-pricing-card label{display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:center;color:#b9c9d5;font-size:12px}
.vh157-pricing-card input{width:100%;min-width:0;padding:8px 10px;border:1px solid rgba(130,185,218,.25);border-radius:9px;background:#0b2639;color:#f7fbff}
.vh157-pricing-actions{display:flex;justify-content:flex-end;margin-top:12px}
.vh144-plan-card button:disabled{opacity:.48;cursor:not-allowed;filter:saturate(.35)}
@media(max-width:1100px){.vh157-pricing-grid{grid-template-columns:1fr}.vh157-pricing-card label{grid-template-columns:1fr 150px}}

.vh159-credit,.vh159-offer-note,.vh159-scheduled{display:block;margin-top:8px;color:#cbd5e1;font-size:13px}.vh159-offer-note{padding:10px 12px;border:1px solid rgba(148,163,184,.22);border-radius:10px;background:rgba(15,23,42,.35)}.vh159-scheduled{padding:12px 14px;border:1px solid rgba(56,189,248,.35);border-radius:12px;background:rgba(14,165,233,.08)}.vh159-scheduled b,.vh159-scheduled span{display:block}.vh159-scheduled span{margin-top:4px}


/* SOURCE: v1123160.css */
/* VoltHome OS 11.23.160 — compact billing row + platform subscription administration */
#vh144SubscriptionCard .vh156-payment-row{grid-template-columns:minmax(260px,1fr) auto auto auto!important;gap:14px!important;align-items:center!important;min-height:58px!important;padding:9px 12px!important}
#vh144SubscriptionCard .vh156-payment-row>div:first-child{min-width:0}
#vh144SubscriptionCard .vh156-payment-row>strong{white-space:nowrap;font-size:14px}
#vh144SubscriptionCard .vh159-credit{white-space:nowrap;display:inline-flex;align-items:center}
#vh144SubscriptionCard .vh156-payment-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap!important;white-space:nowrap}
#vh144SubscriptionCard .vh156-payment-actions .btn{margin:0!important;min-height:36px;height:36px;padding:0 16px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.vh160-admin{margin-top:14px;border:1px solid rgba(132,178,210,.28);border-radius:12px;background:rgba(7,29,45,.54);padding:12px}
.vh160-admin-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.vh160-admin-head b{color:#f4f9fc}.vh160-admin-head span{font-size:11px;color:#a9bfd0}
.vh160-admin-list{display:flex;flex-direction:column;gap:8px;max-height:420px;overflow-y:auto;padding-right:4px}
.vh160-account{display:grid;grid-template-columns:minmax(210px,1.2fr) minmax(140px,.7fr) minmax(145px,.8fr) minmax(340px,1.5fr);gap:10px;align-items:center;padding:10px;border:1px solid rgba(132,178,210,.18);border-radius:10px;background:rgba(8,32,49,.66)}
.vh160-account-main,.vh160-account-state{display:flex;flex-direction:column;gap:2px;min-width:0}.vh160-account-main b,.vh160-account-state b{color:#eef7fb}.vh160-account-main span,.vh160-account-state span{font-size:11px;color:#9fb7c8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vh160-account-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:nowrap}.vh160-account-actions select{height:34px;min-width:96px;padding:0 8px;border-radius:8px;background:#0b2638;color:#eaf4fa;border:1px solid rgba(132,178,210,.28)}.vh160-account-actions .btn{height:34px;min-height:34px;margin:0;padding:0 11px;white-space:nowrap}
.vh160-platform-mark{display:inline-flex;padding:2px 6px;border-radius:999px;background:rgba(240,161,45,.12);color:#ffd18a!important;width:max-content}
@media(max-width:1280px){.vh160-account{grid-template-columns:1fr 1fr}.vh160-account-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}}
@media(max-width:1050px){#vh144SubscriptionCard .vh156-payment-row{grid-template-columns:1fr auto!important}#vh144SubscriptionCard .vh156-payment-actions{grid-column:1/-1;justify-content:flex-start}.vh160-account{grid-template-columns:1fr}}

.vh164-admin-pending{grid-column:1/-1;display:flex;flex-direction:column;gap:6px;padding-top:6px;border-top:1px solid rgba(132,178,210,.18)}.vh164-admin-pending span{display:flex;align-items:center;justify-content:flex-end;gap:8px;font-size:11px;color:#b9cfdd}.vh164-admin-pending .btn{min-height:30px;padding:5px 10px;white-space:nowrap}


/* SOURCE: v1123162.css */
/* VoltHome OS 11.23.162 — subscription spacing only. */
#vh144SubscriptionCard .vh159-scheduled{margin-top:12px!important;margin-bottom:16px!important}
#vh144SubscriptionCard .vh159-scheduled + .vh154-limits{margin-top:0!important}


/* SOURCE: v1123163.css */
/* VoltHome OS 11.23.163 — compact billing history only. */
#vh144SubscriptionCard .vh156-history-row{grid-template-columns:minmax(360px,1fr) auto minmax(180px,auto)!important;gap:14px!important;align-items:center!important;min-height:44px!important;padding:7px 10px!important}
#vh144SubscriptionCard .vh156-history-row>div:first-child{display:flex!important;flex-direction:row!important;align-items:center!important;gap:12px!important;min-width:0}
#vh144SubscriptionCard .vh156-history-row>div:first-child>b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#vh144SubscriptionCard .vh156-history-row>div:first-child>span{white-space:nowrap;flex:0 0 auto}
#vh144SubscriptionCard .vh156-history-row>div:nth-child(2){display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;white-space:nowrap}
#vh144SubscriptionCard .vh156-history-row code{display:block;max-width:220px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:1100px){#vh144SubscriptionCard .vh156-history-row{grid-template-columns:1fr auto!important}#vh144SubscriptionCard .vh156-history-row code{grid-column:1/-1;max-width:none;text-align:left}#vh144SubscriptionCard .vh156-history-row>div:first-child{flex-wrap:wrap}}
@media(max-width:720px){#vh144SubscriptionCard .vh156-history-row{grid-template-columns:1fr!important}#vh144SubscriptionCard .vh156-history-row>div:nth-child(2){justify-content:flex-start!important}#vh144SubscriptionCard .vh156-history-row code{grid-column:auto}}


/* SOURCE: v1123165.css */
/* VoltHome OS 11.23.165 — isolated payment provider status. */
.vh-workspace-conflict{position:fixed;z-index:12000;left:16px;right:16px;bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #e3b15a;border-radius:12px;background:#fff8e8;color:#3a2a10;box-shadow:0 10px 28px rgba(0,0,0,.18)}
.vh-workspace-conflict[hidden]{display:none!important}
.vh-workspace-conflict>div{display:grid;gap:4px}
.vh-workspace-conflict span{font-size:12px;color:#6a5633}
html[data-theme="dark"] .vh-workspace-conflict{background:#2a2418;color:#f4ead4;border-color:#8a6a2a}
html[data-theme="dark"] .vh-workspace-conflict span{color:#cbb892}
.vh165-provider{margin-top:14px;border:1px solid rgba(132,178,210,.28);border-radius:12px;background:rgba(7,29,45,.54);padding:12px}
#profile>.vh165-provider,#profile>.vh-smtp-admin{display:block;width:100%;box-sizing:border-box}
.vh165-provider-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.vh165-provider-head>div{display:flex;align-items:center;gap:9px}.vh165-provider-head b{color:#f4f9fc}.vh165-provider-head>div span{color:#a9bfd0;font-size:12px}
.vh165-state{display:inline-flex;align-items:center;justify-content:center;min-height:26px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:700}.vh165-state.ready{color:#8ee6b7;background:rgba(30,174,104,.13);border:1px solid rgba(55,205,128,.28)}.vh165-state.setup{color:#ffd18a;background:rgba(240,161,45,.10);border:1px solid rgba(240,161,45,.24)}
.vh165-provider-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:8px}.vh165-provider-grid>div{display:flex;flex-direction:column;gap:3px;padding:9px 10px;border-radius:9px;border:1px solid rgba(132,178,210,.16);background:rgba(8,32,49,.54)}.vh165-provider-grid small,.vh165-webhook small{color:#91aabd;font-size:10px}.vh165-provider-grid b{color:#eef7fb;font-size:12px}
.vh165-webhook{display:flex;align-items:center;gap:10px;margin-top:8px;padding:8px 10px;border-radius:9px;border:1px solid rgba(132,178,210,.14)}.vh165-webhook code{color:#d7e8f2;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vh165-provider-note{margin-top:8px;color:#8fa8ba;font-size:10px}
.vh-smtp-admin{margin-top:14px;border:1px solid rgba(247,148,29,.32);border-radius:12px;background:rgba(7,29,45,.62);padding:14px}
.vh-smtp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.vh-smtp-head>div{display:flex;flex-direction:column;gap:3px}.vh-smtp-head b{color:#f4f9fc}.vh-smtp-head span{color:#a9bfd0;font-size:12px}
.vh-smtp-state{padding:4px 9px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}
.vh-smtp-state.ready{background:rgba(34,120,68,.25);color:#b9f0cb;border:1px solid rgba(72,199,116,.4)}
.vh-smtp-state.setup{background:rgba(247,148,29,.16);color:#ffd7a8;border:1px solid rgba(247,148,29,.45)}
.vh-smtp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}
.vh-smtp-grid .field{margin:0}
.vh-smtp-check{display:flex;align-items:center;gap:8px;grid-column:1/-1;color:#d7e7f1;font-size:13px}
.vh-smtp-test{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.vh-smtp-actions{display:flex;gap:8px;flex-wrap:wrap}
.vh-smtp-note{margin-top:10px;color:#8fa8ba;font-size:11px;line-height:1.45}
@media(max-width:720px){.vh-smtp-grid,.vh-smtp-test{grid-template-columns:1fr}.vh-smtp-actions{width:100%}.vh-smtp-actions .btn{flex:1}}
html:not([data-theme="dark"]) .vh-smtp-admin{background:var(--vh-surface-2)!important;border-color:var(--vh-line)!important}
@media(max-width:1000px){.vh165-provider-grid{grid-template-columns:1fr 1fr}}@media(max-width:650px){.vh165-provider-grid{grid-template-columns:1fr}.vh165-provider-head{align-items:flex-start}.vh165-webhook{align-items:flex-start;flex-direction:column}}


/* SOURCE: v1123167.css */
/* VoltHome OS 11.23.167 — owner-only billing + team/sidebar UI polish. */
#users .toolbar{align-items:flex-end;margin-bottom:14px}#users .toolbar>div:first-child h2{font-size:22px;letter-spacing:-.02em}#users .toolbar>div:first-child .muted{margin-top:4px;font-size:11px}
#users #vh166TeamSummary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px;padding:12px;border:1px solid var(--vh-line);border-radius:14px;background:var(--vh-surface-2)}
#users #vh166TeamSummary>div{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--vh-line);border-radius:11px;background:var(--vh-surface)}#users #vh166TeamSummary small{font-size:9px;color:var(--vh-muted);text-transform:uppercase;letter-spacing:.06em}#users #vh166TeamSummary b{font-size:13px;color:var(--vh-text)}
#users>.card{padding:0;overflow:hidden}#users .user-list-head,#users .user-row{grid-template-columns:minmax(230px,1.45fr) minmax(130px,.7fr) 120px minmax(165px,.8fr) minmax(280px,1.15fr);gap:14px}#users .user-list-head{padding:12px 16px;background:color-mix(in srgb,var(--vh-surface-2) 86%,transparent);font-size:9px;letter-spacing:.06em}#users .user-row{padding:14px 16px;min-height:66px}#users .user-row>div:first-child b{font-size:12px}#users .user-row small{font-size:9px}#users .user-actions{justify-content:flex-end;align-items:center;gap:6px;flex-wrap:nowrap}#users .user-actions .small-btn{min-height:32px;padding:6px 10px;white-space:nowrap;border-radius:9px}#users .vh166-owner-note{display:inline-flex;align-items:center;min-height:32px;padding:0 11px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface);color:var(--vh-muted);font-size:9px;white-space:nowrap}#users .user-status-active,#users .user-status-blocked{font-weight:800;font-size:10px}
#vh144SubscriptionCard .vh144-plan-card>.btn.primary{width:100%;min-height:38px;border-color:rgba(255,170,48,.68)!important;background:linear-gradient(135deg,#ff981f,#ffb33d)!important;color:#13263a!important;box-shadow:0 8px 20px rgba(255,154,31,.14);font-weight:850}#vh144SubscriptionCard .vh144-plan-card>.btn.primary:hover{filter:brightness(1.035);transform:translateY(-1px)}
#vh144SubscriptionCard.vh167-staff-subscription{padding:14px 16px!important}.vh167-staff-plan-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.vh167-staff-plan-head small{display:block;color:var(--vh-muted);font-size:8px;font-weight:800;letter-spacing:.07em}.vh167-staff-plan-head h3{margin:4px 0 0;font-size:19px}.vh167-readonly-badge{padding:5px 9px;border:1px solid var(--vh-line);border-radius:999px;color:var(--vh-muted);font-size:9px;font-weight:750;background:var(--vh-surface)}.vh167-staff-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px}.vh167-staff-plan-grid>div{display:grid;gap:3px;padding:9px 10px;border:1px solid var(--vh-line);border-radius:9px;background:var(--vh-surface)}.vh167-staff-plan-grid small{font-size:8px;color:var(--vh-muted)}.vh167-staff-plan-grid b{font-size:10px;color:var(--vh-text)}.vh167-owner-only-note{margin-top:10px;padding:8px 10px;border-radius:9px;background:rgba(255,165,40,.07);border:1px solid rgba(255,165,40,.22);font-size:9px;color:var(--vh-muted)}
body.vh167-staff-ui .app{grid-template-columns:224px minmax(0,1fr)!important}body.vh167-staff-ui .sidebar{padding:18px 14px!important;background:linear-gradient(180deg,#0b2234 0%,#0d2a3e 100%)!important;box-shadow:8px 0 28px rgba(7,26,40,.18)!important}body.vh167-staff-ui .sidebar::after{display:none!important}body.vh167-staff-ui .sidebar .brand{margin-bottom:14px!important}body.vh167-staff-ui .sidebar nav#desktopNav{display:flex!important;flex-direction:column!important;justify-content:flex-start!important;gap:5px!important;padding:2px 2px 8px 0!important;overflow-y:auto!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn{min-height:42px!important;padding:7px 9px!important;margin:0!important;gap:9px!important;border-radius:10px!important;font-size:10px!important;line-height:1.15!important;transform:none!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn b{width:28px!important;height:28px!important;min-width:28px!important;border-radius:8px!important;font-size:15px!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn span{white-space:normal!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn.active{border-left:3px solid var(--brand-orange)!important;padding-left:7px!important;background:linear-gradient(90deg,rgba(247,148,29,.22),rgba(255,255,255,.045))!important}body.vh167-staff-ui .sidebar .side-bottom{margin-top:auto!important}
@media(max-width:1180px){#users .user-list-head{display:none}#users .user-row{grid-template-columns:minmax(0,1fr) auto;gap:8px 14px}#users .user-row>div:nth-child(2),#users .user-row>div:nth-child(3),#users .user-row>div:nth-child(4){font-size:9px;color:var(--vh-muted)}#users .user-actions{grid-column:1/-1;justify-content:flex-start;flex-wrap:wrap}}@media(max-width:900px){#users #vh166TeamSummary,.vh167-staff-plan-grid{grid-template-columns:1fr}}@media(max-width:1050px) and (min-width:721px){body.vh167-staff-ui .app{grid-template-columns:78px minmax(0,1fr)!important}body.vh167-staff-ui .sidebar{padding:16px 9px!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn{justify-content:center!important;padding:7px!important}body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn span{display:none!important}}


/* SOURCE: v1123169.css */
/* VoltHome OS 11.23.169 contracts */
.vh169-contract-wrap{display:grid;gap:14px}.vh169-contract-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.vh169-contract-head h3{margin:0 0 4px}.vh169-contract-head span{opacity:.7}.vh169-contract-actions{display:flex;gap:8px}.vh169-contract-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px;border:1px solid rgba(79,174,220,.25);border-radius:14px;background:rgba(13,39,57,.45)}.vh169-contract-grid label{display:grid;gap:6px;font-size:12px;font-weight:700}.vh169-contract-grid label.wide{grid-column:span 2}.vh169-contract-grid label.all{grid-column:1/-1}.vh169-contract-grid input,.vh169-contract-grid select,.vh169-contract-grid textarea{width:100%;box-sizing:border-box}.vh169-paper{padding:22px;border-radius:14px;background:#fff;color:#18212a;box-shadow:0 10px 30px rgba(0,0,0,.12)}.vh169-paper h2{text-align:center}.vh169-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px 20px;margin:14px 0}.vh169-sign{display:flex;justify-content:space-between;gap:24px;margin-top:36px}.vh169-history{border:1px solid rgba(79,174,220,.22);border-radius:14px;overflow:hidden}.vh169-history-title,.vh169-history>div:not(.vh169-history-title){display:grid;grid-template-columns:1.2fr 1fr 1.2fr;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid rgba(255,255,255,.06)}.vh169-history-title{display:flex!important;justify-content:space-between;background:rgba(16,53,75,.65)}.vh169-history>div:last-child{border-bottom:0}.vh169-contract-lock,.vh169-loading,.vh169-error{min-height:220px;display:grid;place-items:center;align-content:center;gap:8px;text-align:center;border:1px dashed rgba(255,179,51,.35);border-radius:16px}.vh169-lock-icon{font-size:30px}.vh169-contract-tab-locked{opacity:.48}.vh169-contract-tab-locked::after{content:' 🔒';font-size:11px}@media(max-width:980px){.vh169-contract-grid{grid-template-columns:1fr 1fr}.vh169-contract-grid label.wide{grid-column:span 1}.vh169-meta{grid-template-columns:1fr}}@media(max-width:640px){.vh169-contract-grid{grid-template-columns:1fr}.vh169-contract-grid label.wide,.vh169-contract-grid label.all{grid-column:1}.vh169-sign{flex-direction:column}}


/* SOURCE: v1123171.css */
/* VoltHome OS 11.23.171 — regression stabilization only. */
#projectDetailModal .project-detail-pane{contain:layout style;}
#projectTab-invoice,#projectTab-contract,#projectTab-act,#projectTab-estimate,#projectTab-materials{min-height:180px;}


/* SOURCE: v1123173.css */
/* VoltHome OS v11.23.173 */
.vh173-invoice-files-card{margin-top:16px;padding:16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.025)}
.vh173-invoice-files-head{display:flex;align-items:center;justify-content:space-between;gap:16px}
.vh173-invoice-files-head b,.vh173-invoice-files-head small{display:block}.vh173-invoice-files-head small{margin-top:4px;color:var(--muted)}
.vh173-invoice-files{display:grid;gap:7px;margin-top:12px}.vh173-invoice-file{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.02)}
.vh173-invoice-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vh173-cable-pdf,.vh143-add-cable{min-height:36px}
@media(max-width:760px){.vh173-invoice-files-head{align-items:stretch;flex-direction:column}.vh173-invoice-files-head .btn{width:100%}}


/* SOURCE: v1123174.css */
/* VoltHome OS v11.23.174 */
.vh173-invoice-files-card{display:none!important}
#projectTab-invoice .vh1162-doc-head{align-items:center}
#projectTab-invoice .vh174-add-invoice{margin-left:6px}
@media(max-width:760px){#projectTab-invoice .vh1162-doc-head{align-items:stretch}#projectTab-invoice .vh174-add-invoice{margin-left:0}}


/* SOURCE: v1123175.css */
/* v11.23.175 */
.vh175-purchase-note{font-size:11px;color:#64748b}


/* SOURCE: v1123176.css */
/* VoltHome OS v11.23.176 invoice lifecycle */
#projectTab-invoice .vh176-empty{min-height:320px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;padding:30px;border:1px dashed var(--line);border-radius:18px;background:rgba(255,255,255,.018)}
#projectTab-invoice .vh176-empty-icon{font-size:42px;opacity:.6}#projectTab-invoice .vh176-empty h2{margin:0}#projectTab-invoice .vh176-empty p{max-width:620px;color:var(--muted);margin:0 0 10px}
#projectTab-invoice .vh176-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.vh176-invoice{padding:18px;border:1px solid var(--line);border-radius:16px;background:var(--panel,#fff)}
.vh176-items input{width:100%;min-width:70px;box-sizing:border-box}.vh176-items .vh176-name{min-width:260px}.vh176-items td:nth-child(2) small{display:block;color:var(--muted);margin-top:3px}.vh176-bottom{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}.vh176-total{font-size:18px}.vh176-total b{font-size:22px}
@media(max-width:900px){#projectTab-invoice .vh176-head{align-items:stretch}.vh176-actions{width:100%}.vh176-items{display:block;overflow-x:auto}.vh176-items .vh176-name{min-width:220px}.vh176-bottom{align-items:stretch;flex-direction:column}.vh176-total{text-align:right}}


/* SOURCE: v1123182.css */
/* VoltHome OS v11.23.182 — contract visual alignment */
#projectTab-contract .vh169-contract-wrap{gap:12px;color:var(--text,#dce8f2)}
#projectTab-contract .vh169-contract-head{padding:12px 14px;border:1px solid var(--line,#294156);border-radius:10px;background:#0f2232}
#projectTab-contract .vh169-contract-head h3{font-size:14px;color:#fff}
#projectTab-contract .vh169-contract-head span{color:#829bb0;opacity:1}
#projectTab-contract .vh169-contract-grid{padding:12px;border:1px solid #294156;border-radius:10px;background:#0d1f2e;box-shadow:none}
#projectTab-contract .vh169-contract-grid label{color:#9db3c5;font-size:10px}
#projectTab-contract .vh169-contract-grid input,#projectTab-contract .vh169-contract-grid select,#projectTab-contract .vh169-contract-grid textarea{background:#0a1926;border:1px solid #2d465d;color:#eef6fb;border-radius:7px;padding:8px}
#projectTab-contract .vh169-paper{padding:18px;border:1px solid #294156;border-radius:10px;background:#102434;color:#dce8f2;box-shadow:none}
#projectTab-contract .vh169-paper h2{color:#fff;font-size:17px}
#projectTab-contract .vh169-meta{background:#0b1c2a;border:1px solid #263f54;border-radius:8px;padding:10px}
#projectTab-contract .vh169-sign{color:#a9bdcc}
#projectTab-contract .vh169-history{border-color:#294156;border-radius:10px;background:#0c1d2b}
#projectTab-contract .vh169-history-title{background:#102a3d}
#projectTab-contract .vh169-history>div:not(.vh169-history-title){border-color:#233b50}


/* SOURCE: v1123183.css */
/* VoltHome OS v11.23.183 — canonical document/UI consistency */
.vh183-note{margin:10px 0 14px;padding:10px 12px;border:1px solid var(--vh-line);border-radius:10px;background:var(--vh-surface-2);color:var(--vh-muted);font-size:13px}
.vh183-table{display:grid;gap:0;border:1px solid var(--vh-line);border-radius:10px;overflow:hidden;background:var(--vh-surface);color:var(--vh-text)}.vh183-th,.vh183-tr{display:grid;grid-template-columns:1.1fr 2.4fr .8fr .9fr 1fr;align-items:center;color:var(--vh-text)}.vh183-th{background:var(--vh-surface-2);font-weight:700;color:var(--vh-text)}.vh183-th span,.vh183-tr span{padding:9px 10px;border-bottom:1px solid var(--vh-line);min-width:0}.vh183-tr:last-child span{border-bottom:0}.vh183-total,.vh183-table+.vh183-total,.vh183-total+.sign{color:var(--vh-text)}.vh183-total{text-align:right;margin:14px 0;font-size:16px}.vh183-head>div:last-child{display:flex;gap:8px;flex-wrap:wrap}
.vh183-contract{display:grid;gap:14px}.vh183-contract-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:14px;border:1px solid #d9e1e8;border-radius:12px;background:#fff}.vh183-contract-grid label{display:grid;gap:5px;font-size:12px;color:#5c6a78}.vh183-contract-grid input,.vh183-contract-grid select,.vh183-contract-grid textarea{width:100%;min-height:38px;border:1px solid #ccd6df;border-radius:8px;padding:8px 10px;background:#fff;color:#172635}.vh183-contract-grid .wide{grid-column:span 2}.vh183-contract-grid .all{grid-column:1/-1}.vh183-contract-summary{display:grid;gap:7px;padding:14px;border:1px solid #d9e1e8;border-radius:12px;background:#f8fafb;color:#465767}
@media(max-width:900px){.vh183-contract-grid{grid-template-columns:1fr 1fr}.vh183-contract-grid .wide{grid-column:1/-1}.vh183-th,.vh183-tr{grid-template-columns:1fr 1.7fr .8fr .9fr 1fr;font-size:12px}}@media(max-width:640px){.vh183-contract-grid{grid-template-columns:1fr}.vh183-contract-grid .wide{grid-column:auto}.vh183-table{overflow:auto}.vh183-th,.vh183-tr{min-width:720px}}


/* SOURCE: v1123184.css */
/* VoltHome OS v11.23.184 — material estimate footer is always visible */
#price .calc-layout > .card:nth-child(2){
  min-height:0!important;
  overflow:hidden!important;
}
#price #sheetLines{
  flex:1 1 0!important;
  min-height:110px!important;
  overflow-y:auto!important;
}
#price .material-total-box-standalone{
  flex:0 0 auto!important;
  position:relative!important;
  z-index:3!important;
  margin-top:10px!important;
  margin-bottom:0!important;
  width:100%!important;
  min-height:58px!important;
  overflow:visible!important;
}
#price #sheetPriceTotal{
  display:block!important;
  overflow:visible!important;
  text-overflow:clip!important;
  white-space:normal!important;
  word-break:break-word!important;
  line-height:1.2!important;
}


/* SOURCE: v1123194.css */
/* v11.23.193 — responsive + canonical surface normalization
   Keeps the VoltHome palette/identity while removing legacy square/dark underlays
   that leaked from historical modules into the light theme. */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:hidden;
}
body{min-width:320px}
.app{
  width:100%;
  max-width:100vw;
  grid-template-columns:250px minmax(0,1fr)!important;
}
main{
  min-width:0!important;
  width:100%;
  max-width:100%;
  overflow-x:hidden!important;
}
.page,.grid,.card,.toolbar,.topbar,.actions,.table-wrap{
  min-width:0;
  max-width:100%;
}
img,svg,canvas,video{max-width:100%}

/* Desktop navigation must always remain reachable on short screens. */
.sidebar{
  height:100vh!important;
  height:100dvh!important;
  max-height:100vh!important;
  max-height:100dvh!important;
  min-height:0!important;
  display:flex!important;
  flex-direction:column!important;
  overflow:hidden!important;
}
.sidebar .brand{flex:0 0 auto!important}
.sidebar nav#desktopNav{
  display:flex!important;
  flex:1 1 auto!important;
  flex-direction:column!important;
  justify-content:flex-start!important;
  min-height:0!important;
  max-height:100%!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable;
  touch-action:pan-y;
  -webkit-overflow-scrolling:touch;
  padding-bottom:10px!important;
}
.sidebar nav#desktopNav .nav-btn{
  flex:0 0 auto!important;
  min-width:0;
}

/* Compact vertically only when viewport height requires it. */
@media (min-width:721px) and (max-height:850px){
  .sidebar{padding-top:14px!important;padding-bottom:12px!important}
  .sidebar .brand{margin-bottom:12px!important;padding:7px!important}
  .sidebar .brand .logo{height:48px!important;width:56px!important}
  .sidebar nav#desktopNav{gap:4px!important}
  .sidebar nav#desktopNav .nav-btn{padding-top:9px!important;padding-bottom:9px!important}
}
@media (min-width:721px) and (max-height:700px){
  .sidebar{padding-top:10px!important;padding-bottom:8px!important}
  .sidebar .brand{margin-bottom:8px!important;padding:5px!important}
  .sidebar .brand .logo{height:42px!important;width:50px!important}
  .sidebar nav#desktopNav{gap:2px!important}
  .sidebar nav#desktopNav .nav-btn{padding-top:7px!important;padding-bottom:7px!important}
}

/* Tablet: narrow rail remains independently scrollable. */
@media (max-width:1050px) and (min-width:721px){
  .app{grid-template-columns:90px minmax(0,1fr)!important}
  .sidebar{padding-left:10px!important;padding-right:10px!important}
  .sidebar nav#desktopNav .nav-btn{justify-content:center!important;padding-left:8px!important;padding-right:8px!important}
  .sidebar nav#desktopNav .nav-btn span{display:none!important}
  .sidebar nav#desktopNav .nav-btn b{margin:0!important}
  main{padding-left:18px!important;padding-right:18px!important}
}

/* Mobile: one-row swipeable dock instead of a multi-row panel that covers content. */
@media (max-width:720px){
  .app{display:block!important;width:100%!important}
  .sidebar{display:none!important}
  main{
    width:100%!important;
    max-width:100vw!important;
    padding:14px 12px calc(100px + env(safe-area-inset-bottom,0px))!important;
    overflow-x:hidden!important;
  }
  .topbar{
    width:100%!important;
    flex-direction:column!important;
    align-items:stretch!important;
    gap:10px!important;
  }
  .topbar .title,.topbar .actions,.topbar-clean-actions{width:100%!important;min-width:0!important}
  .topbar-clean-actions{display:flex!important;flex-wrap:wrap!important}
  .theme-toggle{min-width:0!important;max-width:100%!important}
  .top-profile-button{min-width:0!important;max-width:100%!important}

  .mobile-nav{
    display:flex!important;
    grid-template-columns:none!important;
    align-items:stretch!important;
    gap:4px!important;
    left:8px!important;
    right:8px!important;
    bottom:max(8px,env(safe-area-inset-bottom,0px))!important;
    width:auto!important;
    max-width:calc(100vw - 16px)!important;
    max-height:82px!important;
    padding:6px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    overscroll-behavior-x:contain;
    scroll-snap-type:x proximity;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-x;
  }
  .mobile-nav::-webkit-scrollbar{display:none}
  .mobile-nav button{
    flex:0 0 86px!important;
    width:86px!important;
    min-width:86px!important;
    min-height:64px!important;
    padding:6px 4px!important;
    font-size:10px!important;
    line-height:1.15!important;
    white-space:normal!important;
    overflow-wrap:anywhere;
    scroll-snap-align:center;
  }
  .mobile-nav button>div{font-size:18px;line-height:1.1;margin-bottom:3px}

  .modal{padding:8px!important;align-items:center!important}
  .modal-box,
  .user-editor-box,
  #projectDetailModal .project-detail-box{
    width:calc(100vw - 16px)!important;
    max-width:calc(100vw - 16px)!important;
    max-height:calc(100dvh - 16px)!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
  }
  .table-wrap{width:100%!important;max-width:100%!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}
  .toolbar,.subtabs,.file-tabs,.material-toolbar,.record-actions{max-width:100%!important}
  input,select,textarea,button{max-width:100%}
  .search{min-width:0!important;width:100%!important}
}

@media (max-width:520px){
  main{padding-left:9px!important;padding-right:9px!important}
  .card{padding-left:12px!important;padding-right:12px!important}
  .topbar{padding:10px!important;border-radius:15px!important}
  .title h2{font-size:20px!important;line-height:1.2!important}
  .title p{font-size:11px!important}
  .actions{gap:6px!important}
  .theme-toggle{width:100%!important}
  .theme-toggle button{min-width:0!important;flex:1 1 0!important}
  .top-profile-button{width:100%!important}
  .form-grid,.stats,.kpi-strip{grid-template-columns:1fr!important}
  .modal-box{padding:14px!important}
}


/* ===== 11.23.193 canonical surfaces =====
   Historical runtime modules may contain hard-coded navy surfaces.  From this
   release onward all ordinary UI containers inherit the active theme instead. */
:root{--vh-radius-sm:10px;--vh-radius-md:14px;--vh-radius-lg:18px}

/* Ordinary content surfaces: theme-aware in both light and dark modes. */
.object-supplier-picker-row,.supplier-material-source-row,
.supplier-material-source-note,.supplier-material-card,.supplier-material-empty,
.supplier-live-grid>span,.supplier-catalog-sync-status span,
.supplier-product-view-facts>div,.supplier-product-view-description,.supplier-product-view-internal,
.ai-log,.ai-model-list,.ai-history-item,.ai-step,
.project-engineering-card,.project-room-card,.project-load-settings,.project-group-row,.project-room-load-card,
.vh1172-lines,.vh1172-order,.vh1172-note,
#projectTab-contract .vh169-contract-head,#projectTab-contract .vh169-contract-grid,
#projectTab-contract .vh169-paper,#projectTab-contract .vh169-meta,#projectTab-contract .vh169-history,
.vh1163-scheme,.vh1163-scheme .vh1162-feed,.vh1163-scheme .vh1162-din,
.vh1163-scheme .vh1162-bars>div,.vh1163-scheme .vh1162-outgoing>div{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}

/* Inputs/selectors must never keep a dark hard-coded skin in the light theme. */
.object-supplier-picker-row select,.supplier-material-source-row select,.supplier-material-qty,
.supplier-catalog-filters-simple input,.supplier-catalog-filters-simple select,
#materialDbCategory,#projectTab-contract .vh169-contract-grid input,
#projectTab-contract .vh169-contract-grid select,#projectTab-contract .vh169-contract-grid textarea,
.vh1172-row select,.vh1172-row input{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
  border-radius:var(--vh-radius-sm)!important;
}

/* Text inside formerly locked-dark modules follows the current theme. */
.supplier-material-card-title,#projectTab-contract .vh169-contract-head h3,
#projectTab-contract .vh169-paper h2{color:var(--vh-text)!important}
.supplier-material-meta,.supplier-material-source-note,
.object-supplier-picker-row label,.supplier-material-source-row label,
#projectTab-contract .vh169-contract-grid label,#projectTab-contract .vh169-sign{
  color:var(--vh-muted)!important;
}

/* Lists and tables: no solid navy rectangular blocks in light mode. */
.data-table{background:var(--vh-surface)!important;color:var(--vh-text)!important}
.data-table thead,.data-table th{background:var(--vh-surface-2)!important;color:var(--vh-muted)!important}
.data-table tbody,.data-table tbody tr{background:transparent!important}
.data-table tbody td{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
.data-table tbody tr:hover td{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}
.table-wrap{background:var(--vh-surface)!important;border-radius:var(--vh-radius-md)!important;overflow:auto!important}

/* CRM used a historical forced dark hover skin; remove that theme conflict. */
#crmBody tr:hover,#crm .data-table tbody tr:hover,
#crmBody tr:hover td,#crm .data-table tbody tr:hover td{
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important
}
#crmBody tr:hover td b,#crmBody tr:hover td span:not(.status),#crmBody tr:hover td small,#crmBody tr:hover td div:not(.muted),
#crm .data-table tbody tr:hover td b,#crm .data-table tbody tr:hover td span:not(.status),#crm .data-table tbody tr:hover td small,#crm .data-table tbody tr:hover td div:not(.muted){color:var(--vh-text)!important}
#crmBody tr:hover .muted,#crm .data-table tbody tr:hover .muted{color:var(--vh-muted)!important}
#crmBody .small-btn,#crmBody tr:hover .small-btn{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}

/* Supplier/material rows use the same rounded visual language as the rest of VoltHome. */
.supplier-material-card,.supplier-material-empty,.object-supplier-picker-row,.supplier-material-source-row,
.supplier-product-view-facts>div,.supplier-product-view-description,.supplier-product-view-internal,
.ai-log,.ai-model-list,.ai-history-item,.ai-step,
.project-engineering-card,.project-room-card,.project-load-settings,.project-group-row,.project-room-load-card{
  border-radius:var(--vh-radius-md)!important;
}
.supplier-material-card:hover{background:var(--vh-surface)!important;border-color:rgba(247,148,29,.35)!important}

/* Remove square legacy corners from ordinary controls/containers. */
.btn,.small-btn,.nav-btn,.subtab,.calc-tab,.sheet-tab,.file-tab,.status,.pill,
.search,input:not([type="checkbox"]):not([type="radio"]),select,textarea,
.card,.mini,.row,.sync,.topbar,.modal-box,.theme-toggle,.top-profile-button,
.supplier-card,.supplier-list-card,.supplier-catalog-card,.supplier-catalog-wrap,
.procurement-table-wrap,.supplier-orders-card,.material-db-filters{
  border-radius:var(--vh-radius-sm)!important;
}
.card,.modal-box,.topbar,.supplier-list-card,.supplier-catalog-card{border-radius:var(--vh-radius-lg)!important}

/* Technical/AI journal is still visually distinct, but follows the theme rather than
   appearing as an unrelated black/navy rectangle. */
.ai-log{border:1px solid var(--vh-line)!important;box-shadow:none!important}

/* Dark theme keeps the same hierarchy without introducing square slabs. */
html[data-theme="dark"] .data-table tbody td{background:var(--vh-surface)!important}
html[data-theme="dark"] .data-table tbody tr:hover td{background:var(--vh-surface-2)!important}

/* Historical engineering/catalog modules also inherit the current theme. */
.vh1165-shield-top,.vh1165-tabs,.vh1165-board,.vh1165-board aside,
.vh1165-config select,.vh1165-line select,.vh1165-line input,.vh1165-extra>span,
.vh114-map-head,.vh114-tree,.vh114-box,.vh114-box-head,.vh114-actions,.vh114-branch,
.vh114-edge input,.vh114-name,.vh114-fields input,.vh114-fields select,
.vh12106-consumers,.vh12106-consumers>summary,.vh12106-note,.vh12107-category,
.vh12107-category>header,.vh12106-row,.vh12106-add,.vh12106-add>summary,
.vh12106-field input,.vh12106-field select,.vh12106-add-grid input,.vh12106-add-grid select,
.vh1176-calc-details,.vh1176-calc-grid input,
.procurement-planner-card .data-table,.supplier-orders-card .data-table,
.procurement-planner-card .data-table th,.supplier-orders-card .data-table th,
.procurement-planner-card .data-table td,.supplier-orders-card .data-table td,
.material-supplier-estimate-panel,.material-supplier-estimate-panel .supplier-estimate-table,
.material-supplier-estimate-panel .supplier-estimate-table th,
.material-supplier-estimate-panel .supplier-estimate-table td{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
}
.vh1165-shield-top,.vh1165-board,.vh114-box,.vh12106-consumers,.vh12107-category,
.vh12106-add,.vh1176-calc-details,.material-supplier-estimate-panel{
  border-radius:var(--vh-radius-md)!important;
  overflow:hidden!important;
}
.vh1165-tabs button,.vh1165-config select,.vh1165-line select,.vh1165-line input,
.vh114-actions button,.vh114-edge input,.vh114-name,.vh114-fields input,.vh114-fields select,
.vh12106-field input,.vh12106-field select,.vh12106-add-grid input,.vh12106-add-grid select,
.vh1176-calc-grid input{border-radius:var(--vh-radius-sm)!important}
.procurement-planner-card .data-table tbody tr:nth-child(even) td,
.supplier-orders-card .data-table tbody tr:nth-child(even) td,
.procurement-planner-card .data-table tbody tr:hover td,
.supplier-orders-card .data-table tbody tr:hover td,
.material-supplier-estimate-panel .supplier-estimate-table tbody tr:hover td{
  background:var(--vh-surface)!important;color:var(--vh-text)!important
}

/* Light-theme safeguard: no historical navy slab may appear in the common working areas. */
html:not([data-theme="dark"]) #materials-db .supplier-material-card,
html:not([data-theme="dark"]) #price .supplier-material-card,
html:not([data-theme="dark"]) #suppliers .data-table td,
html:not([data-theme="dark"]) #crm .data-table td,
html:not([data-theme="dark"]) #objectcalc .data-table td,
html:not([data-theme="dark"]) #electric .data-table td,
html:not([data-theme="dark"]) #aistudio .ai-log{
  background:var(--vh-surface)!important;color:var(--vh-text)!important
}

/* ===== 11.23.193 viewport containment + readable surfaces =====
   Fixes observed on the production server: sidebar following document scroll,
   action buttons/total blocks escaping cards, legacy dark selector slabs in
   light mode, low-contrast object headings, and unnecessary active-button glow. */
*,*::before,*::after{box-sizing:border-box}
html,body{min-height:100%;overflow-x:hidden!important}
.app{align-items:start!important;min-width:0!important}

/* Desktop/tablet sidebar stays inside the viewport while only its nav scrolls. */
@media (min-width:721px){
  .sidebar{
    position:sticky!important;
    top:0!important;
    left:auto!important;
    align-self:start!important;
    width:100%!important;
    min-width:0!important;
    height:100dvh!important;
    max-height:100dvh!important;
    overflow:hidden!important;
  }
  .sidebar nav#desktopNav{min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important}
  .sidebar .side-bottom{flex:0 0 auto!important;margin-top:8px!important}
}

/* Every content child must be allowed to shrink inside its grid/flex track. */
main,.page,.page>* ,.card,.card>* ,.calc-layout,.calc-layout>* ,.topbar,.toolbar,
.card-head,.card-head>* ,.estimate-meta,.estimate-actions,.material-total-box,
.project-detail-tabs,.project-detail-tab-panes,.project-detail-pane,
.project-engineering-card,.project-object-profile,.supplier-material-toolbar-row,
.supplier-material-card,.supplier-material-card-main,.supplier-material-card-actions{
  min-width:0!important;
  max-width:100%!important;
}

/* Material estimate: buttons always remain inside the right card. */
#price .material-calculation-actions{
  width:100%!important;
  max-width:100%!important;
  display:grid!important;
  grid-template-columns:repeat(auto-fit,minmax(118px,1fr))!important;
  gap:8px!important;
  overflow:visible!important;
}
#price .material-calculation-actions .btn{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  padding:9px 8px!important;
  white-space:normal!important;
  overflow-wrap:anywhere!important;
  line-height:1.2!important;
}
#price .material-total-box-standalone{
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
  overflow:hidden!important;
}
#price #sheetPriceTotal{max-width:100%!important;overflow-wrap:anywhere!important;word-break:normal!important}
#price .estimate-meta input,#price .estimate-meta textarea,#price .field select{width:100%!important;min-width:0!important;max-width:100%!important}

/* Supplier/base-material selectors use the active theme, not a locked navy slab. */
.supplier-material-toolbar-row,
.object-supplier-picker-row,.supplier-material-source-row,
.supplier-catalog-empty,.supplier-catalog-filters-simple,
.material-db-filters,.material-price-controls{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
  box-shadow:none!important;
}
.supplier-material-toolbar-row label,
.object-supplier-picker-row label,.supplier-material-source-row label,
.material-db-filters label{color:var(--vh-muted)!important}
.supplier-material-toolbar-row select,
.supplier-material-search-row input,
.supplier-catalog-filters-simple input,.supplier-catalog-filters-simple select,
.material-db-filters input,.material-db-filters select{
  background:var(--vh-input)!important;
  color:var(--vh-text)!important;
  border-color:var(--vh-line)!important;
  box-shadow:none!important;
}

/* Object calculation/profile text must be readable in both themes. */
#projectObjectProfile,
#projectObjectProfile .project-section-head,
#projectObjectProfile .project-section-head h4,
.project-engineering-card .project-section-head h4,
.project-load-settings,.project-protection-settings,
.project-object-profile-grid>div{
  color:var(--vh-text)!important;
}
#projectObjectProfile .project-section-head h4,
.project-engineering-card .project-section-head h4{opacity:1!important;text-shadow:none!important}
.project-object-profile-grid small,.project-object-profile-grid span,
.project-engineering-card .muted,.project-rooms-head .muted{color:var(--vh-muted)!important;opacity:1!important}

/* Tabs stay readable and indicate selection without glow/underlight. */
.project-detail-tabs{max-width:100%!important;overflow-x:auto!important;overflow-y:hidden!important}
.project-detail-tab{box-shadow:none!important;filter:none!important;transform:none!important}
.project-detail-tab:hover{box-shadow:none!important;filter:none!important;transform:none!important}
.project-detail-tab.active{
  background:var(--vh-surface-2)!important;
  color:var(--vh-text)!important;
  border-color:rgba(247,148,29,.58)!important;
  box-shadow:none!important;
  filter:none!important;
  transform:none!important;
}
.project-detail-tab.active::after{display:none!important}

/* Remove decorative press/highlight effects from normal controls. */
button,.btn,.small-btn,.icon-btn,.sheet-tab,[role="button"]{box-shadow:none!important}
button:hover:not(:disabled),.btn:hover:not(.disabled),.small-btn:hover:not(:disabled),
.icon-btn:hover:not(:disabled),.sheet-tab:hover,[role="button"]:hover{
  transform:none!important;filter:none!important;box-shadow:none!important;
}
button:active:not(:disabled),.btn:active:not(.disabled),.small-btn:active:not(:disabled),
.icon-btn:active:not(:disabled),.sheet-tab:active,[role="button"]:active{
  transform:none!important;filter:none!important;box-shadow:none!important;
}

/* Generic action rows/cards never enlarge the document horizontally. */
.actions,.toolbar,.supplier-toolbar-actions,.supplier-card-actions,.procurement-head-actions,
.project-docs-actions,.vh1176-workflow-actions,.record-actions{
  flex-wrap:wrap!important;
  max-width:100%!important;
}
.actions>* ,.toolbar>* ,.supplier-toolbar-actions>* ,.procurement-head-actions>*{
  min-width:0!important;max-width:100%!important;
}

/* At laptop widths use one material column if two columns would squeeze controls. */
@media (max-width:1280px){
  #price .calc-layout{grid-template-columns:minmax(0,1fr)!important;height:auto!important;overflow:visible!important}
  #price .calc-layout>.card{height:auto!important;min-height:0!important;overflow:hidden!important}
  #price #sheetCatalog,#price #cleanMaterialCatalog{max-height:55dvh!important;min-height:320px!important}
  #price #sheetLines{max-height:48dvh!important;min-height:140px!important}
}
@media (max-width:900px){
  #price .material-calculation-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .supplier-material-toolbar-row{grid-template-columns:1fr!important}
}
@media (max-width:520px){
  #price .material-calculation-actions{grid-template-columns:1fr!important}
}
/* VoltHome OS 11.23.194 — production UI polish verified from server screenshots. */

/* Never paint the login form for an already authenticated refresh. JS reveals it only after /api/auth/me returns 401/403. */
#loginScreen.hidden{display:none!important}

/* Desktop/tablet: sidebar is truly viewport-fixed. The document scroll belongs only to main content. */
@media (min-width:721px){
  :root{--vh-fixed-sidebar:272px}
  body.vh167-staff-ui{--vh-fixed-sidebar:224px}
  .app{display:block!important;min-height:100dvh!important;width:100%!important}
  .sidebar{
    position:fixed!important;left:0!important;top:0!important;bottom:0!important;
    width:var(--vh-fixed-sidebar)!important;height:100dvh!important;max-height:100dvh!important;
    z-index:40!important;display:flex!important;flex-direction:column!important;overflow:hidden!important;
  }
  main{
    margin-left:var(--vh-fixed-sidebar)!important;
    width:calc(100% - var(--vh-fixed-sidebar))!important;
    max-width:calc(100% - var(--vh-fixed-sidebar))!important;
    min-width:0!important;
  }
  .sidebar nav#desktopNav{flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important}
}
@media (min-width:721px) and (max-width:1050px){
  :root{--vh-fixed-sidebar:96px}
  body.vh167-staff-ui{--vh-fixed-sidebar:78px}
}
@media (max-width:720px){main{margin-left:0!important;width:100%!important;max-width:100%!important}}

/* Remove the old SQLite status card from the menu. Technical status remains available to scripts but is not visual UI. */
#vhSystemStatus{display:none!important}
.vh-app-version{
  flex:0 0 auto;margin:9px 8px 4px;padding:8px 10px;border:1px solid rgba(255,255,255,.13);
  border-radius:10px;background:rgba(255,255,255,.06);color:rgba(239,247,252,.86);
  font-size:10px;font-weight:750;line-height:1.2;text-align:center;letter-spacing:.02em
}
@media (min-width:721px) and (max-width:1050px){.vh-app-version{padding:7px 3px;font-size:8px}}

/* User requested the unexplained decorative top outline to be removed. */
.card::before{display:none!important;content:none!important}

/* Material estimate: no viewport-clipping. Long lists scroll internally, the total always remains reachable and visible. */
#price .calc-layout{
  height:auto!important;min-height:0!important;overflow:visible!important;align-items:start!important;
  grid-template-columns:minmax(0,1.25fr) minmax(430px,.75fr)!important;
}
#price .calc-layout>.card{height:auto!important;min-height:0!important;overflow:hidden!important}
#price .calc-layout>.card:nth-child(2){display:flex!important;flex-direction:column!important}
#price #sheetLines{
  flex:0 1 auto!important;height:auto!important;min-height:96px!important;max-height:38dvh!important;
  overflow-y:auto!important;overflow-x:hidden!important;scrollbar-gutter:stable!important
}
#price .material-total-box-standalone{
  display:flex!important;visibility:visible!important;opacity:1!important;flex:0 0 auto!important;
  width:100%!important;max-width:100%!important;min-height:60px!important;margin:12px 0 0!important;
  overflow:hidden!important
}
#price #sheetPriceTotal{display:block!important;visibility:visible!important;opacity:1!important;white-space:normal!important;text-overflow:clip!important;overflow:visible!important}

/* Four real actions remain after removing “Проверить”; “Изменить” is the right-most action. */
#price .material-calculation-actions{
  display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:10px!important;width:100%!important;margin-top:14px!important;margin-bottom:14px!important
}
#price .material-calculation-actions .btn{min-width:0!important;width:100%!important;max-width:100%!important;min-height:44px!important;padding:9px 8px!important;line-height:1.2!important;white-space:normal!important}
@media (max-width:1500px){
  #price .calc-layout{grid-template-columns:minmax(0,1fr)!important}
  #price #sheetCatalog,#price #cleanMaterialCatalog{max-height:52dvh!important;min-height:300px!important}
  #price #sheetLines{max-height:38dvh!important}
}
@media (max-width:760px){#price .material-calculation-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
@media (max-width:430px){#price .material-calculation-actions{grid-template-columns:1fr!important}}

/* Light theme: generated legacy modules may not force navy/grey slabs. */
html:not([data-theme="dark"]) #objectcalc .vh1167-select-row,
html:not([data-theme="dark"]) #objectcalc .vh1167-workspace,
html:not([data-theme="dark"]) #calculator .source-note,
html:not([data-theme="dark"]) #price .source-note{
  background:transparent!important;color:var(--vh-muted)!important;border-color:var(--vh-line)!important;box-shadow:none!important
}
html:not([data-theme="dark"]) #objectcalc .vh1167-select-row select{
  background:var(--vh-input)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;box-shadow:none!important
}
html:not([data-theme="dark"]) #calculator .source-note{
  padding:10px 12px!important;border:1px solid var(--vh-line)!important;border-radius:10px!important;background:var(--vh-surface-2)!important
}

/* Light-theme personal cabinet/subscription uses the same palette as the rest of the application. */
html:not([data-theme="dark"]) #profile,
html:not([data-theme="dark"]) #vh144SubscriptionCard{color:var(--vh-text)!important}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-sub-head h3,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-subscription-meta b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limit-grid b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limits-title b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-plan-title b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-section-title b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-payment-row b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history-row b,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history-row strong{color:var(--vh-text)!important}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-sub-head small,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-subscription-meta small,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limit-grid small,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limits-title span,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-plan-limits span,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-sub-note,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-plan-card ul,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-payment-row span,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history-row span{color:var(--vh-muted)!important}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-subscription-meta>div,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limit-grid>div,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-plan-card,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-price,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-pending,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-payment-row,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history-row,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh167-staff-plan-grid>div{
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important
}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-price strong{color:#a85b00!important}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-plan-title span{color:#9a5707!important;background:#fff2dd!important}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-access-note{
  color:#165c40!important;
  background:#d7f0e4!important;
  border-color:#8eccb0!important;
}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-access-note.limited{
  color:#8a5208!important;
  background:#fff0d8!important;
  border-color:#e6c98a!important;
}
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-access-note.blocked{
  color:#9a2d38!important;
  background:#fae6e8!important;
  border-color:#e3b4ba!important;
}
html:not([data-theme="dark"]) .vh144-plan-status.vh154-status-trial{
  color:#8a5208!important;
  background:#fff0d8!important;
  border-color:#e6c98a!important;
}

/* Header profile button must look native in light theme, not like a dark-theme tile. */
html:not([data-theme="dark"]) .top-profile-button{
  background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important
}
html:not([data-theme="dark"]) .top-profile-button b{color:var(--vh-text)!important}
html:not([data-theme="dark"]) .top-profile-button small,
html:not([data-theme="dark"]) .top-profile-arrow{color:var(--vh-muted)!important}
html:not([data-theme="dark"]) .top-user-avatar-fallback{background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}

/* AI Studio screenshot: keep a deliberate gap between the last LM Studio field and action row. */
#aistudio .field + .toolbar,
#aistudio #aiLMStudioModel + .toolbar{margin-top:14px!important}
#aistudio .toolbar{row-gap:10px!important;column-gap:10px!important}

/* Consistent spacing and containment through all main action bars. */
.page .toolbar,.page .estimate-actions,.page .record-actions,.page .supplier-toolbar-actions,
.page .module-action-bar,.page .procurement-head-actions{gap:10px!important}
.page button,.page .btn,.page .small-btn{max-width:100%!important}
.page input,.page select,.page textarea{max-width:100%!important}

/* Focus remains accessible but no thick/foreign black outline from browser defaults. */
button:focus-visible,.btn:focus-visible,.small-btn:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{
  outline:2px solid rgba(247,148,29,.38)!important;outline-offset:2px!important;box-shadow:none!important
}
/* Auth bootstrap is neutral: do not flash either private app content or the login form before session verification. */
body.auth-pending .app{visibility:hidden!important}
body.auth-pending #loginScreen{display:none!important}

/* VoltHome OS 11.23.204 — clean visual system and responsive release layer. */
:root{--vh-radius:14px;--vh-radius-lg:18px;--vh-radius-sm:10px}

/* One visual language for all legacy cards/controls. */
.card,.mini,.row,.table-wrap,.modal-box,.program-doc,.file-item,.file-drop,.journal-entry,
[class*="vh11"],[class*="vh14"],[class*="vh15"],[class*="vh16"],[class*="vh17"],[class*="vh18"],
.supplier-material-card,.supplier-material-toolbar-row,.object-supplier-picker-row,.supplier-material-source-row,
.project-engineering-card,.project-object-profile,.permission-grid,.permission-item,.check-row{
  border-radius:var(--vh-radius)!important;
}
input,select,textarea,button,.btn,.small-btn,.subtab,.sheet-tab,.calc-tab,.file-tab,.project-detail-tab{
  border-radius:var(--vh-radius-sm)!important;
}

/* Light theme: remove historical dark islands everywhere in working UI. */
html:not([data-theme="dark"]) .vh12106-consumers,
html:not([data-theme="dark"]) .vh12106-note,
html:not([data-theme="dark"]) .vh12107-category,
html:not([data-theme="dark"]) .vh12106-row,
html:not([data-theme="dark"]) .vh12106-add,
html:not([data-theme="dark"]) .vh114-tree,
html:not([data-theme="dark"]) .vh114-box,
html:not([data-theme="dark"]) .vh114-actions,
html:not([data-theme="dark"]) .vh114-branch,
html:not([data-theme="dark"]) .vh118-workflow-head,
html:not([data-theme="dark"]) .vh118-material-section,
html:not([data-theme="dark"]) .vh118-material-section summary,
html:not([data-theme="dark"]) .vh118-th,
html:not([data-theme="dark"]) .vh118-scope-grid article,
html:not([data-theme="dark"]) .vh1162-routebar,
html:not([data-theme="dark"]) .vh1162-segment,
html:not([data-theme="dark"]) .vh1188-locked,
html:not([data-theme="dark"]) .object-supplier-picker-row,
html:not([data-theme="dark"]) .supplier-material-source-row,
html:not([data-theme="dark"]) .supplier-material-toolbar-row,
html:not([data-theme="dark"]) .supplier-material-card,
html:not([data-theme="dark"]) .supplier-material-empty,
html:not([data-theme="dark"]) .supplier-catalog-empty,
html:not([data-theme="dark"]) #projectTab-contract .vh169-contract-head,
html:not([data-theme="dark"]) #projectTab-contract .vh169-contract-grid,
html:not([data-theme="dark"]) #projectTab-contract .vh169-paper,
html:not([data-theme="dark"]) #projectTab-contract .vh169-meta,
html:not([data-theme="dark"]) #projectTab-contract .vh169-history,
html:not([data-theme="dark"]) #projectTab-contract .vh169-history-title,
html:not([data-theme="dark"]) .vh144-plan-card,
html:not([data-theme="dark"]) .vh157-pricing-admin,
html:not([data-theme="dark"]) .vh157-pricing-card,
html:not([data-theme="dark"]) .vh160-admin,
html:not([data-theme="dark"]) .vh160-account,
html:not([data-theme="dark"]) .vh165-provider,
html:not([data-theme="dark"]) .vh165-provider-grid>div,
html:not([data-theme="dark"]) .vh165-webhook{
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important;
}
html:not([data-theme="dark"]) .vh12106-field input,
html:not([data-theme="dark"]) .vh12106-field select,
html:not([data-theme="dark"]) .vh12106-add-grid input,
html:not([data-theme="dark"]) .vh12106-add-grid select,
html:not([data-theme="dark"]) .vh114-edge input,
html:not([data-theme="dark"]) .vh114-name,
html:not([data-theme="dark"]) .vh114-fields input,
html:not([data-theme="dark"]) .vh114-fields select,
html:not([data-theme="dark"]) #projectTab-contract input,
html:not([data-theme="dark"]) #projectTab-contract select,
html:not([data-theme="dark"]) #projectTab-contract textarea,
html:not([data-theme="dark"]) .vh1162-routebar input,
html:not([data-theme="dark"]) .vh157-pricing-card input,
html:not([data-theme="dark"]) .vh160-account-actions select{
  background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;
}
html:not([data-theme="dark"]) .vh114-actions button{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
html:not([data-theme="dark"]) .vh114-edge,html:not([data-theme="dark"]) .vh114-fields label,
html:not([data-theme="dark"]) .vh118-workflow-head span,html:not([data-theme="dark"]) .vh118-tr small,
html:not([data-theme="dark"]) .vh118-empty,html:not([data-theme="dark"]) .vh118-scope-grid article>span{
  color:var(--vh-muted)!important;
}
html:not([data-theme="dark"]) .vh118-tr,html:not([data-theme="dark"]) .vh118-workflow-head b,
html:not([data-theme="dark"]) .vh118-scope-grid article>b,
html:not([data-theme="dark"]) #projectTab-contract .vh169-contract-head h3,
html:not([data-theme="dark"]) #projectTab-contract .vh169-paper h2{color:var(--vh-text)!important}

/* Dark theme: instruction must be high-contrast, never inherit obsolete variables. */
.vh-help-page{height:calc(100dvh - 120px);min-height:520px;overflow:hidden!important}
.vh-help-layout{display:grid;grid-template-columns:minmax(210px,240px) minmax(0,1fr);gap:18px;height:100%;min-height:0;align-items:stretch!important}
.vh-help-toc{position:relative!important;top:auto!important;height:100%;max-height:none!important;overflow-y:auto!important;overscroll-behavior:contain;background:var(--vh-surface)!important;border:1px solid var(--vh-line)!important;color:var(--vh-text)!important}
.vh-help-toc>b,.vh-help-toc button{color:var(--vh-text)!important;opacity:1!important}
.vh-help-content{height:100%;min-height:0;overflow-y:auto!important;overflow-x:hidden!important;padding-right:4px;padding-bottom:32px}
.vh-help-card{background:var(--vh-surface)!important;border-color:var(--vh-line)!important;color:var(--vh-text)!important}
.vh-help-card p,.vh-help-detail span{color:var(--vh-muted)!important;opacity:1!important}
.vh-help-detail,.vh-help-flow span{background:var(--vh-surface-2)!important;border-color:var(--vh-line)!important;color:var(--vh-text)!important}

/* Active project tab: selection without the unexplained orange outline. */
.project-detail-tab.active{border-color:var(--vh-line)!important;background:var(--vh-surface)!important;color:var(--vh-text)!important;box-shadow:inset 0 -2px 0 var(--brand-orange)!important}
.project-detail-tab:focus:not(:focus-visible),.project-detail-tab.active:focus:not(:focus-visible){outline:none!important}

/* Sidebar keeps the same scale for owner/admin/staff. */
body.vh167-staff-ui .app{grid-template-columns:272px minmax(0,1fr)!important}
body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn{font-size:14px!important;padding:13px 14px!important}
body.vh167-staff-ui .sidebar nav#desktopNav .nav-btn b{width:31px!important;height:31px!important;min-width:31px!important;font-size:18px!important}

/* Responsive desktop/tablet/mobile without clipped working areas. */
html,body{max-width:100%;overflow-x:hidden}
main,.page,.card,.grid,.project-detail-pane,.project-detail-box{min-width:0;max-width:100%}
img,svg,canvas,video{max-width:100%}
.table-wrap,.cable-journal-table-wrap,.project-detail-tabs{max-width:100%;overflow-x:auto!important;-webkit-overflow-scrolling:touch}
@media(max-width:1050px) and (min-width:721px){
  .app,body.vh167-staff-ui .app{grid-template-columns:96px minmax(0,1fr)!important}
  main{padding:20px 18px 42px!important}
  .grid{gap:12px}.span-3,.span-4,.span-5,.span-6,.span-7,.span-8{grid-column:span 12!important}
  .vh-help-page{height:auto;overflow:visible!important}.vh-help-layout{grid-template-columns:1fr;height:auto}.vh-help-toc{height:auto;max-height:260px!important;position:sticky!important;top:8px!important;z-index:3}.vh-help-content{height:auto;overflow:visible!important}
}
@media(max-width:720px){
  .app{display:block!important}.sidebar{display:none!important}main{padding:14px 12px 86px!important;width:100%!important}
  .topbar{display:grid!important;grid-template-columns:1fr!important;gap:10px!important;margin-bottom:14px!important}
  .actions,.topbar-clean-actions{width:100%!important;display:flex!important;flex-wrap:wrap!important}.actions>*{max-width:100%}
  .grid{display:grid!important;grid-template-columns:1fr!important;gap:10px!important}.grid>[class*="span-"]{grid-column:1!important}
  .form-grid,.profile-grid,.equipment-form,.ai-provider-row,.ai-result-grid,.stats,.kpi-strip{grid-template-columns:1fr!important}
  .modal{padding:8px!important}.modal-box,.project-detail-box{width:100%!important;max-width:100%!important;max-height:94dvh!important;border-radius:16px!important;padding:12px!important}
  .vh-help-page{height:auto;min-height:0;overflow:visible!important}.vh-help-layout{display:block!important;height:auto}.vh-help-toc{position:sticky!important;top:0!important;z-index:5;height:auto!important;max-height:34dvh!important;margin-bottom:12px}.vh-help-content{height:auto!important;overflow:visible!important}.vh-help-card{grid-template-columns:36px minmax(0,1fr)!important;padding:13px!important}
  .project-detail-tabs{display:flex!important;flex-wrap:nowrap!important}.project-detail-tab{flex:0 0 auto!important}
}

/* ======================================================================
   VoltHome OS 11.23.204 — FINAL VISUAL CONTRACT
   One theme system for legacy/current UI. This layer intentionally sits last.
   ====================================================================== */
:root{
  --vh-bg:#eef4f8;
  --vh-surface:#ffffff;
  --vh-surface-2:#f6f9fc;
  --vh-surface-3:#edf3f7;
  --vh-text:#173247;
  --vh-muted:#667d8d;
  --vh-line:#d7e2e9;
  --vh-input:#ffffff;
  --vh-shadow:0 10px 28px rgba(25,56,76,.08);
  --vh-radius-sm:10px;
  --vh-radius-md:14px;
  --vh-radius-lg:18px;
}
html[data-theme="dark"]{
  --vh-bg:#071521;
  --vh-surface:#0f2435;
  --vh-surface-2:#132b3e;
  --vh-surface-3:#183449;
  --vh-text:#f1f7fb;
  --vh-muted:#abc0ce;
  --vh-line:#2a475a;
  --vh-input:#0b1d2b;
  --vh-shadow:0 12px 30px rgba(0,0,0,.22);
}
html,body{background:var(--vh-bg)!important;color:var(--vh-text)!important}
body,.page,.page *{text-rendering:optimizeLegibility}
.page{color:var(--vh-text)!important}
.page .muted,.page small,.page .hint,.page .note{color:var(--vh-muted)}
.card,.mini,.row,.table-wrap,.modal-box,.program-doc,.file-item,.file-drop,.journal-entry,
.project-engineering-card,.project-object-profile,.supplier-material-card,.supplier-list-card,
.supplier-catalog-card,.supplier-orders-card,.procurement-planner-card{
  color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none;
}
.card,.modal-box,.supplier-list-card,.supplier-catalog-card{background:var(--vh-surface)!important}
.mini,.row,.program-doc,.file-item,.file-drop,.journal-entry{background:var(--vh-surface-2)!important}
.page input:not([type="checkbox"]):not([type="radio"]),.page select,.page textarea,.page .search{
  background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;
}
.page input::placeholder,.page textarea::placeholder{color:var(--vh-muted)!important;opacity:.85}
.page label,.page .field label{color:var(--vh-muted)!important}
.page h1,.page h2,.page h3,.page h4,.page h5,.page b,.page strong{color:var(--vh-text)}
.page .btn:not(.primary):not(.danger),.page .small-btn:not(.primary):not(.danger){
  background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;
}
.page .btn.primary{background:linear-gradient(135deg,#ff971c,#ffb43e)!important;color:#13283a!important;border-color:transparent!important}

/* Personal account / subscription / platform admin: no dark slabs in LIGHT theme. */
html:not([data-theme="dark"]) #vh144SubscriptionCard,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-subscription-meta>div,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limits,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh154-limit-grid>div,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh144-plan-card,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh155-period-row,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-price,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-pending,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-payment-row,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh156-history-row,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh157-pricing-admin,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh157-pricing-card,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh160-admin,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh160-account,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh165-provider,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh165-provider-grid>div,
html:not([data-theme="dark"]) #vh144SubscriptionCard .vh165-webhook,
html:not([data-theme="dark"]) .vh154-subscription-meta>div,
html:not([data-theme="dark"]) .vh154-limits,
html:not([data-theme="dark"]) .vh154-limit-grid>div,
html:not([data-theme="dark"]) .vh144-plan-card,
html:not([data-theme="dark"]) .vh155-period-row,
html:not([data-theme="dark"]) .vh156-price,
html:not([data-theme="dark"]) .vh156-pending,
html:not([data-theme="dark"]) .vh156-history,
html:not([data-theme="dark"]) .vh156-payment-row,
html:not([data-theme="dark"]) .vh156-history-row,
html:not([data-theme="dark"]) .vh157-pricing-admin,
html:not([data-theme="dark"]) .vh157-pricing-card,
html:not([data-theme="dark"]) .vh160-admin,
html:not([data-theme="dark"]) .vh160-account,
html:not([data-theme="dark"]) .vh165-provider,
html:not([data-theme="dark"]) .vh165-provider-grid>div,
html:not([data-theme="dark"]) .vh165-webhook{
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important;
}
html:not([data-theme="dark"]) .vh155-period-switch button{
  background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;
}
html:not([data-theme="dark"]) .vh155-period-switch button.active{
  background:#fff3df!important;color:#8a5100!important;border-color:#f0a12d!important;box-shadow:none!important;
}
html:not([data-theme="dark"]) :is(.vh144-sub-head,.vh154-subscription-meta,.vh154-limits,.vh144-plan-card,.vh156-pending,.vh156-history,.vh157-pricing-admin,.vh157-pricing-card,.vh160-admin,.vh160-account,.vh165-provider) :is(b,strong,h3,h4){color:var(--vh-text)!important}
html:not([data-theme="dark"]) :is(.vh144-sub-head,.vh154-subscription-meta,.vh154-limits,.vh144-plan-card,.vh156-pending,.vh156-history,.vh157-pricing-admin,.vh157-pricing-card,.vh160-admin,.vh160-account,.vh165-provider) :is(span,small,label,li,code){color:var(--vh-muted)!important}
html:not([data-theme="dark"]) .vh157-pricing-card input,
html:not([data-theme="dark"]) .vh160-account-actions select{
  background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;
}
html:not([data-theme="dark"]) .vh165-state.ready{color:#16794c!important;background:#e7f7ef!important;border-color:#b9e5cf!important}
html:not([data-theme="dark"]) .vh165-state.setup{color:#8a5a00!important;background:#fff4df!important;border-color:#f2d29c!important}
html:not([data-theme="dark"]) .vh160-platform-mark{color:#8a5a00!important;background:#fff4df!important}

/* Other known legacy dark panels in LIGHT theme. */
html:not([data-theme="dark"]) :is(.vh159-offer-note,.vh159-scheduled,.vh169-contract-grid,.vh169-history,.vh169-history-title,
.vh118-workflow-head,.vh118-material-section,.vh1162-routebar,.vh1162-segment,.vh1188-locked,
.vh12106-consumers,.vh12106-note,.vh12107-category,.vh12106-row,.vh12106-add,
.vh114-tree,.vh114-box,.vh114-actions,.vh114-branch,.vh1165-shield-top,.vh1165-board){
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important;
}
html:not([data-theme="dark"]) #projectTab-contract :is(.vh169-contract-head,.vh169-contract-grid,.vh169-paper,.vh169-meta,.vh169-history,.vh169-history-title){
  background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important;
}
html:not([data-theme="dark"]) #projectTab-contract :is(input,select,textarea){background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}

/* Tables are readable in both themes. */
.data-table,.data-table tbody,.data-table tr,.data-table td{color:var(--vh-text)!important}
.data-table{background:var(--vh-surface)!important}
.data-table th{background:var(--vh-surface-2)!important;color:var(--vh-muted)!important;border-color:var(--vh-line)!important}
.data-table td{background:var(--vh-surface)!important;border-color:var(--vh-line)!important}
.data-table tbody tr:hover td{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}

/* Help: stable two-column document layout. NO fixed parent height, NO clipping. */
.vh-help-page{height:auto!important;min-height:0!important;overflow:visible!important;padding-bottom:36px!important}
.vh-help-toolbar{position:relative!important;display:flex!important;align-items:center!important;gap:12px!important;flex-wrap:wrap!important}
.vh-help-layout{display:grid!important;grid-template-columns:minmax(220px,255px) minmax(0,1fr)!important;gap:18px!important;height:auto!important;min-height:0!important;align-items:start!important;overflow:visible!important}
.vh-help-toc{position:sticky!important;top:12px!important;height:auto!important;max-height:calc(100dvh - 40px)!important;overflow:auto!important;background:var(--vh-surface)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:var(--vh-radius-lg)!important;box-shadow:none!important;padding:12px!important}
.vh-help-toc>b{display:block!important;color:var(--vh-text)!important;padding:4px 7px 9px!important}
.vh-help-toc button{display:block!important;width:100%!important;background:transparent!important;color:var(--vh-text)!important;border:0!important;text-align:left!important;padding:9px 10px!important;border-radius:9px!important;cursor:pointer!important;line-height:1.35!important}
.vh-help-toc button:hover,.vh-help-toc button.active{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}
.vh-help-content{display:grid!important;gap:10px!important;height:auto!important;min-height:0!important;overflow:visible!important;padding:0 0 32px!important}
.vh-help-card{display:block!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;padding:0!important;background:var(--vh-surface)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:var(--vh-radius-md)!important;box-shadow:none!important}
.vh-help-card-toggle{appearance:none;width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 26px;gap:12px;align-items:center;text-align:left;border:0;background:transparent;color:var(--vh-text);padding:13px 15px;cursor:pointer;border-radius:inherit}
.vh-help-card-toggle:hover{background:var(--vh-surface-2)}
.vh-help-card-toggle .vh-help-step{width:36px!important;height:36px!important;border-radius:11px!important;background:var(--vh-surface-2)!important;border:1px solid var(--vh-line)!important;color:var(--vh-text)!important}
.vh-help-card-toggle h3{margin:0!important;color:var(--vh-text)!important;font-size:15px!important;line-height:1.35!important}
.vh-help-chevron{font-size:18px;color:var(--vh-muted);transition:transform .18s ease;justify-self:end}
.vh-help-card.is-open .vh-help-chevron{transform:rotate(180deg)}
.vh-help-card-body{display:none!important;padding:0 16px 16px 69px!important;min-width:0!important;color:var(--vh-text)!important}
.vh-help-card.is-open .vh-help-card-body{display:block!important}
.vh-help-card-body>p{margin:0 0 12px!important;color:var(--vh-muted)!important;line-height:1.6!important}
.vh-help-details{display:grid!important;gap:8px!important;margin-top:10px!important}
.vh-help-detail{display:grid!important;grid-template-columns:minmax(130px,180px) minmax(0,1fr)!important;gap:10px!important;padding:10px 11px!important;background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:10px!important}
.vh-help-detail b{color:var(--vh-text)!important}.vh-help-detail span{color:var(--vh-muted)!important;line-height:1.5!important}
.vh-help-flow span{background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
.vh-help-admin-card{border-color:rgba(240,161,45,.45)!important}

/* No accidental clipped last blocks. */
.page,.card,.vh-help-page,.vh-help-layout,.vh-help-content{max-height:none}
.page:last-child,.vh-help-content>:last-child{margin-bottom:0!important}

@media(max-width:1050px){
  .vh-help-layout{grid-template-columns:1fr!important}
  .vh-help-toc{position:relative!important;top:auto!important;max-height:260px!important}
}
@media(max-width:720px){
  .vh-help-toolbar{display:grid!important;grid-template-columns:1fr!important}
  .vh-help-toolbar .search{width:100%!important;min-width:0!important}
  .vh-help-layout{display:block!important}
  .vh-help-toc{position:relative!important;max-height:34dvh!important;margin-bottom:12px!important}
  .vh-help-card-toggle{grid-template-columns:34px minmax(0,1fr) 22px!important;padding:11px 12px!important;gap:9px!important}
  .vh-help-card-toggle .vh-help-step{width:31px!important;height:31px!important;font-size:10px!important}
  .vh-help-card-body{padding:0 12px 13px!important}
  .vh-help-detail{grid-template-columns:1fr!important;gap:4px!important}
  .vh157-pricing-grid,.vh154-limit-grid,.vh144-plan-grid,.vh165-provider-grid{grid-template-columns:1fr!important}
  .vh160-account{grid-template-columns:1fr!important}.vh160-account-actions{justify-content:flex-start!important;flex-wrap:wrap!important}
  .vh155-period-row{align-items:flex-start!important;flex-direction:column!important}.vh155-period-switch{justify-content:flex-start!important}
}

/* ===== VoltHome OS 11.23.204 — final visual/theme/help contract ===== */
:root{--vh-bg:#eef4f8;--vh-surface:#fff;--vh-surface-2:#f6f9fc;--vh-surface-3:#edf3f7;--vh-text:#173247;--vh-muted:#667d8d;--vh-line:#d7e2e9;--vh-input:#fff;--vh-shadow:0 10px 28px rgba(25,56,76,.08)}
html[data-theme="dark"]{--vh-bg:#071521;--vh-surface:#0f2435;--vh-surface-2:#132b3e;--vh-surface-3:#183449;--vh-text:#f1f7fb;--vh-muted:#abc0ce;--vh-line:#2a475a;--vh-input:#0b1d2b;--vh-shadow:0 12px 30px rgba(0,0,0,.22)}
html,body{background:var(--vh-bg)!important;color:var(--vh-text)!important}.page{color:var(--vh-text)!important}.page .muted,.page small,.page .hint,.page .note{color:var(--vh-muted)}
.card,.modal-box,.table-wrap,.mini,.row,.program-doc,.file-item,.file-drop,.journal-entry{color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important}.card,.modal-box,.table-wrap{background:var(--vh-surface)!important}.mini,.row,.program-doc,.file-item,.file-drop,.journal-entry{background:var(--vh-surface-2)!important}
.page input:not([type="checkbox"]):not([type="radio"]),.page select,.page textarea,.page .search{background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}.page input::placeholder,.page textarea::placeholder{color:var(--vh-muted)!important;opacity:.85}.page label,.page .field label{color:var(--vh-muted)!important}.page h1,.page h2,.page h3,.page h4,.page h5,.page b,.page strong{color:var(--vh-text)}
.page .btn:not(.primary):not(.danger),.page .small-btn:not(.primary):not(.danger){background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}.page .btn.primary{background:linear-gradient(135deg,#ff971c,#ffb43e)!important;color:#13283a!important;border-color:transparent!important}

/* Light theme: eliminate legacy navy/gray commercial slabs and unreadable text. */
html:not([data-theme="dark"]) :is(.vh154-subscription-meta>div,.vh154-limits,.vh154-limit-grid>div,.vh144-plan-card,.vh155-period-row,.vh156-price,.vh156-pending,.vh156-history,.vh156-payment-row,.vh156-history-row,.vh157-pricing-admin,.vh157-pricing-card,.vh160-admin,.vh160-account,.vh165-provider,.vh165-provider-grid>div,.vh165-webhook,.vh159-offer-note,.vh159-scheduled){background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important}
html:not([data-theme="dark"]) :is(.vh144-sub-head,.vh154-subscription-meta,.vh154-limits,.vh144-plan-card,.vh156-pending,.vh156-history,.vh157-pricing-admin,.vh157-pricing-card,.vh160-admin,.vh160-account,.vh165-provider) :is(b,strong,h3,h4){color:var(--vh-text)!important}
html:not([data-theme="dark"]) :is(.vh144-sub-head,.vh154-subscription-meta,.vh154-limits,.vh144-plan-card,.vh156-pending,.vh156-history,.vh157-pricing-admin,.vh157-pricing-card,.vh160-admin,.vh160-account,.vh165-provider) :is(span,small,label,li,code){color:var(--vh-muted)!important}
html:not([data-theme="dark"]) .vh157-pricing-card input,html:not([data-theme="dark"]) .vh160-account-actions select{background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
html:not([data-theme="dark"]) .vh155-period-switch button{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}html:not([data-theme="dark"]) .vh155-period-switch button.active{background:#fff3df!important;color:#8a5100!important;border-color:#f0a12d!important;box-shadow:none!important}
html:not([data-theme="dark"]) .vh165-state.ready{color:#16794c!important;background:#e7f7ef!important;border-color:#b9e5cf!important}html:not([data-theme="dark"]) .vh165-state.setup,html:not([data-theme="dark"]) .vh160-platform-mark{color:#8a5a00!important;background:#fff4df!important;border-color:#f2d29c!important}
html:not([data-theme="dark"]) :is(.vh118-workflow-head,.vh118-material-section,.vh1162-routebar,.vh1162-segment,.vh1188-locked,.vh12106-consumers,.vh12106-note,.vh12107-category,.vh12106-row,.vh12106-add,.vh114-tree,.vh114-box,.vh114-actions,.vh114-branch,.vh1165-shield-top,.vh1165-board){background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important}
html:not([data-theme="dark"]) #projectTab-contract :is(.vh169-contract-head,.vh169-contract-grid,.vh169-paper,.vh169-meta,.vh169-history,.vh169-history-title){background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important;box-shadow:none!important}html:not([data-theme="dark"]) #projectTab-contract :is(input,select,textarea){background:var(--vh-input)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}
.data-table{background:var(--vh-surface)!important;color:var(--vh-text)!important}.data-table th{background:var(--vh-surface-2)!important;color:var(--vh-muted)!important;border-color:var(--vh-line)!important}.data-table td{background:var(--vh-surface)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}.data-table tbody tr:hover td{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}

/* Help: normal document flow + sticky TOC + real accordion. Never clip content. */
.vh-help-page{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;padding-bottom:36px!important}.vh-help-toolbar{display:flex!important;align-items:center!important;gap:12px!important;flex-wrap:wrap!important}.vh-help-layout{display:grid!important;grid-template-columns:minmax(220px,255px) minmax(0,1fr)!important;gap:18px!important;height:auto!important;min-height:0!important;max-height:none!important;align-items:start!important;overflow:visible!important}.vh-help-toc{position:sticky!important;top:12px!important;height:auto!important;max-height:calc(100dvh - 40px)!important;overflow:auto!important;background:var(--vh-surface)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:18px!important;box-shadow:none!important;padding:12px!important}.vh-help-toc>b{display:block!important;color:var(--vh-text)!important;padding:4px 7px 9px!important}.vh-help-toc button{display:block!important;width:100%!important;background:transparent!important;color:var(--vh-text)!important;border:0!important;text-align:left!important;padding:9px 10px!important;border-radius:9px!important;cursor:pointer!important;line-height:1.35!important}.vh-help-toc button:hover{background:var(--vh-surface-2)!important;color:var(--vh-text)!important}.vh-help-content{display:grid!important;gap:10px!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;padding:0 0 32px!important}.vh-help-card{display:block!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;padding:0!important;background:var(--vh-surface)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:14px!important;box-shadow:none!important}.vh-help-card-toggle{appearance:none;width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 26px;gap:12px;align-items:center;text-align:left;border:0;background:transparent;color:var(--vh-text);padding:13px 15px;cursor:pointer;border-radius:inherit}.vh-help-card-toggle:hover{background:var(--vh-surface-2)}.vh-help-card-toggle .vh-help-step{width:36px!important;height:36px!important;border-radius:11px!important;background:var(--vh-surface-2)!important;border:1px solid var(--vh-line)!important;color:var(--vh-text)!important}.vh-help-card-toggle h3{margin:0!important;color:var(--vh-text)!important;font-size:15px!important;line-height:1.35!important}.vh-help-chevron{font-size:18px;color:var(--vh-muted);transition:transform .18s ease;justify-self:end}.vh-help-card.is-open .vh-help-chevron{transform:rotate(180deg)}.vh-help-card-body{display:none!important;padding:0 16px 16px 69px!important;min-width:0!important;color:var(--vh-text)!important}.vh-help-card.is-open .vh-help-card-body{display:block!important}.vh-help-card-body>p{margin:0 0 12px!important;color:var(--vh-muted)!important;line-height:1.6!important}.vh-help-details{display:grid!important;gap:8px!important;margin-top:10px!important}.vh-help-detail{display:grid!important;grid-template-columns:minmax(130px,180px) minmax(0,1fr)!important;gap:10px!important;padding:10px 11px!important;background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border:1px solid var(--vh-line)!important;border-radius:10px!important}.vh-help-detail b{color:var(--vh-text)!important}.vh-help-detail span{color:var(--vh-muted)!important;line-height:1.5!important}.vh-help-flow span{background:var(--vh-surface-2)!important;color:var(--vh-text)!important;border-color:var(--vh-line)!important}.vh-help-admin-card{border-color:rgba(240,161,45,.45)!important}
@media(max-width:1050px){.vh-help-layout{grid-template-columns:1fr!important}.vh-help-toc{position:relative!important;top:auto!important;max-height:260px!important}}
@media(max-width:720px){.vh-help-toolbar{display:grid!important;grid-template-columns:1fr!important}.vh-help-toolbar .search{width:100%!important;min-width:0!important}.vh-help-layout{display:block!important}.vh-help-toc{position:relative!important;max-height:34dvh!important;margin-bottom:12px!important}.vh-help-card-toggle{grid-template-columns:34px minmax(0,1fr) 22px!important;padding:11px 12px!important;gap:9px!important}.vh-help-card-toggle .vh-help-step{width:31px!important;height:31px!important;font-size:10px!important}.vh-help-card-body{padding:0 12px 13px!important}.vh-help-detail{grid-template-columns:1fr!important;gap:4px!important}.vh157-pricing-grid,.vh154-limit-grid,.vh144-plan-grid,.vh165-provider-grid{grid-template-columns:1fr!important}.vh160-account{grid-template-columns:1fr!important}.vh160-account-actions{justify-content:flex-start!important;flex-wrap:wrap!important}.vh155-period-row{align-items:flex-start!important;flex-direction:column!important}.vh155-period-switch{justify-content:flex-start!important}}

/* ===== VoltHome OS 11.23.205 visual corrections ===== */
/* Instruction navigation belongs to content viewport and must not travel with the main page/sidebar scroll. */
@media(min-width:1051px){
 .vh-help-layout{align-items:start!important}
 .vh-help-toc{position:sticky!important;top:12px!important;align-self:start!important;max-height:calc(100vh - 44px)!important;overflow:auto!important}
}
/* Clean controls in light theme; no grey select/button fields or orange active blur. */
html:not([data-theme="dark"]) select,html:not([data-theme="dark"]) .select,html:not([data-theme="dark"]) .project-select{background:#fff!important;color:#173247!important;border-color:#cbd8e1!important;box-shadow:none!important}
html:not([data-theme="dark"]) .project-detail-tab.active,html:not([data-theme="dark"]) .project-workspace-toolbar .active{background:#fff!important;color:#173247!important;border-color:#b9cad6!important;box-shadow:0 1px 3px rgba(20,55,75,.08)!important;text-shadow:none!important;filter:none!important}
html:not([data-theme="dark"]) .btn,html:not([data-theme="dark"]) button{filter:none;text-shadow:none}
/* Personal account success/status text must stay readable. */
html:not([data-theme="dark"]) .success,html:not([data-theme="dark"]) .status.success,html:not([data-theme="dark"]) .vh-success{color:#174d32!important}
/* Album server upload UI. */
.vh205-albums{display:grid;gap:12px}.vh205-album{border:1px solid var(--vh-line,var(--line));border-radius:14px;background:var(--vh-surface,var(--card));padding:14px}.vh205-album-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.vh205-album-head>div{display:grid;gap:4px}.vh205-album-head span{font-size:12px;color:var(--vh-muted,var(--muted))}.vh205-upload input{display:none}.vh205-album-files{display:grid;gap:7px;margin-top:12px}.vh205-album-files>div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--vh-line,var(--line));border-radius:10px}.vh205-album-files>div>div{display:flex;gap:6px}
@media(max-width:720px){.vh205-album-head,.vh205-album-files>div{align-items:stretch;flex-direction:column}.vh205-upload{text-align:center}}


/* ===== VoltHome OS 11.23.209 — inherited layout contract ===== */
/* Full-width material category dropdown, readable in both themes. */
#price #materialSupplierKindSelect{width:100%!important;min-width:0!important;background:var(--vh-input,var(--input-bg))!important;color:var(--vh-text,var(--text))!important;border:1px solid var(--vh-line,var(--line))!important;border-radius:12px!important}
#price #materialSupplierKindSelect option{background:var(--vh-surface,var(--card));color:var(--vh-text,var(--text))}

/* Help TOC owns its scroll and never follows the numbered article scroll on desktop. */
@media(min-width:1051px){
 #help .vh-help-layout{display:grid!important;grid-template-columns:minmax(210px,260px) minmax(0,1fr)!important;gap:18px!important;align-items:start!important}
 #help .vh-help-toc.vh206-fixed-toc{position:fixed!important;left:var(--vh206-toc-left)!important;top:12px!important;width:var(--vh206-toc-width)!important;max-height:calc(100vh - 24px)!important;overflow-y:auto!important;overscroll-behavior:contain!important;z-index:8!important}
 #help .vh-help-content{grid-column:2!important;min-width:0!important}
}
@media(max-width:1050px){#help .vh-help-toc{position:relative!important;left:auto!important;top:auto!important;width:auto!important;max-height:34dvh!important;overflow-y:auto!important}}

/* Branded, usable server albums. */
.vh206-albums{display:grid;gap:12px}.vh206-album{padding:14px;border:1px solid var(--vh-line,var(--line));border-radius:14px;background:var(--vh-surface,var(--card));min-width:0}.vh206-album-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.vh206-album-head>div:first-child{display:grid;gap:4px;min-width:0}.vh206-album-head span{font-size:12px;color:var(--vh-muted,var(--muted))}.vh206-album-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.vh206-upload input{display:none}.vh206-album-files{display:grid;gap:7px;margin-top:12px}.vh206-album-files>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 10px;border:1px solid var(--vh-line,var(--line));border-radius:10px;min-width:0}.vh206-album-files>div>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vh206-album-files>div>div{display:flex;gap:6px;flex:0 0 auto}.vh206-album-toolbar{align-items:center!important}

/* Calculation action toolbar: never wrap into a second visual row on desktop.
   For non-owner users the template group is removed and the remaining groups stretch cleanly. */
#calculator .module-action-bar{display:flex!important;flex-wrap:nowrap!important;align-items:stretch!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:thin}
#calculator .module-action-bar>.action-group{display:flex;flex-wrap:nowrap!important;align-items:flex-end!important;flex:0 0 auto!important;min-width:0!important}
#calculator .module-action-bar>.action-group .action-group-label{width:auto!important;align-self:center!important;white-space:nowrap!important}
#calculator .module-action-bar>.action-group .btn,#calculator .module-action-bar>.action-group select{white-space:nowrap!important;flex:0 0 auto!important}
#calculator .action-group-template[hidden],#calculator .vh-platform-template-tools[hidden]{display:none!important}
@media(max-width:900px){
 #calculator .module-action-bar{display:flex!important;flex-wrap:nowrap!important;overflow-x:auto!important}
 #calculator .module-action-bar>.action-group{border-bottom:0!important;border-right:1px solid var(--line)!important;padding-bottom:0!important;padding-right:10px!important}
 #calculator .module-action-bar>.action-group:last-child{border-right:0!important}
}
@media(max-width:720px){.vh206-album-head,.vh206-album-files>div{align-items:stretch;flex-direction:column}.vh206-album-files>div>span{white-space:normal}.vh206-album-actions{width:100%}.vh206-album-actions>*{flex:1 1 auto;text-align:center}}


/* ===== VoltHome OS 11.23.209 — screenshot-driven final layout corrections ===== */
/* Instruction: two independent scroll areas. The TOC never overlays the numbered content. */
@media (min-width:1051px){
  #help.active{display:flex!important;flex-direction:column!important;height:calc(100dvh - 28px)!important;min-height:0!important;max-height:calc(100dvh - 28px)!important;overflow:hidden!important;padding-bottom:0!important}
  #help .vh-help-toolbar{flex:0 0 auto!important}
  #help .vh-help-layout{display:grid!important;grid-template-columns:minmax(220px,260px) minmax(0,1fr)!important;gap:18px!important;flex:1 1 auto!important;min-height:0!important;height:auto!important;max-height:none!important;overflow:hidden!important;align-items:stretch!important}
  #help .vh-help-toc,#help .vh-help-toc.vh206-fixed-toc{position:relative!important;inset:auto!important;left:auto!important;top:auto!important;width:auto!important;height:100%!important;max-height:none!important;align-self:stretch!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;z-index:1!important;margin:0!important;box-sizing:border-box!important}
  #help .vh-help-content{grid-column:2!important;height:100%!important;min-height:0!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;scrollbar-gutter:stable!important;padding:0 8px 28px 0!important}
}

/* Works price toolbar: no horizontal scrollbar, no "Позиции" caption, everything fits one row. */
#calculator .module-action-bar{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:8px!important;width:100%!important;max-width:100%!important;overflow:visible!important;padding:9px!important}
#calculator .module-action-bar>.action-group{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:7px!important;min-width:0!important;flex:1 1 auto!important;padding-right:8px!important}
#calculator .module-action-bar>.action-group-main{flex:0 1 auto!important}
#calculator .module-action-bar>.action-group-main>.action-group-label{display:none!important}
#calculator .module-action-bar>.action-group .action-group-label{width:auto!important;flex:0 0 auto!important;align-self:center!important;white-space:nowrap!important;margin:0 2px 0 0!important}
#calculator .module-action-bar>.action-group .btn,#calculator .module-action-bar>.action-group select{min-width:0!important;max-width:100%!important;height:38px!important;white-space:nowrap!important;flex:1 1 auto!important;padding-left:9px!important;padding-right:9px!important}
#calculator .module-action-bar>.action-group-template select{min-width:120px!important}
#calculator .module-action-bar>.action-group-template[hidden],#calculator .module-action-bar>.vh-platform-template-tools[hidden]{display:none!important}
@media (max-width:1180px) and (min-width:721px){
  #calculator .module-action-bar{gap:6px!important;padding:7px!important}
  #calculator .module-action-bar>.action-group{gap:5px!important;padding-right:5px!important}
  #calculator .module-action-bar>.action-group .action-group-label{display:none!important}
  #calculator .module-action-bar>.action-group .btn,#calculator .module-action-bar>.action-group select{font-size:11px!important;padding-left:7px!important;padding-right:7px!important}
}

/* Material estimate: both columns stay level in one viewport; the long material catalog scrolls vertically inside its card. */
@media (min-width:1181px){
  #price.active{height:calc(100dvh - 28px)!important;min-height:0!important;max-height:calc(100dvh - 28px)!important;overflow:hidden!important}
  #price .calc-layout{display:grid!important;grid-template-columns:minmax(0,1.55fr) minmax(420px,.95fr)!important;gap:16px!important;height:100%!important;min-height:0!important;max-height:100%!important;align-items:stretch!important;overflow:hidden!important}
  #price .calc-layout>.card{height:100%!important;min-height:0!important;max-height:100%!important;overflow:hidden!important}
  #price .calc-layout>.card:first-child{display:flex!important;flex-direction:column!important}
  #price .calc-layout>.card:first-child>.card-head,#price .supplier-material-toolbar-row,#price .supplier-material-search-row{flex:0 0 auto!important}
  #price .calc-layout>.card:first-child .sheet-pane.active{display:flex!important;flex-direction:column!important;flex:1 1 auto!important;min-height:0!important;overflow:hidden!important}
  #price #sheetCatalog,#price #cleanMaterialCatalog{display:flex!important;flex-direction:column!important;flex:1 1 auto!important;height:auto!important;min-height:0!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;scrollbar-gutter:stable!important;padding-right:7px!important}
  #price .calc-layout>.card:nth-child(2){display:flex!important;flex-direction:column!important}
  #price #sheetLines{flex:1 1 auto!important;min-height:80px!important;max-height:none!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important}
  #price .material-total-box-standalone{flex:0 0 auto!important}
}
#price #materialSupplierKindSelect{pointer-events:auto!important;appearance:auto!important;opacity:1!important;cursor:pointer!important}
#price #materialSupplierKindSelect:disabled{cursor:not-allowed!important;opacity:.65!important}


/* ===== VoltHome OS 11.23.209 — help/material estimate final repair ===== */
/* Help: stable two-column workspace. Both columns scroll independently; cards retain natural height. */
@media (min-width:1051px){
  #help.active{display:block!important;height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important;padding-bottom:20px!important}
  #help .vh-help-layout{display:grid!important;grid-template-columns:minmax(220px,260px) minmax(0,1fr)!important;gap:18px!important;height:calc(100dvh - 190px)!important;min-height:520px!important;max-height:calc(100dvh - 150px)!important;overflow:hidden!important;align-items:stretch!important}
  #help .vh-help-toc,#help .vh-help-toc.vh206-fixed-toc{position:relative!important;inset:auto!important;left:auto!important;top:auto!important;width:auto!important;height:100%!important;min-height:0!important;max-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;z-index:1!important;margin:0!important;box-sizing:border-box!important}
  #help .vh-help-content{display:block!important;grid-column:2!important;height:100%!important;min-height:0!important;max-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;scrollbar-gutter:stable!important;padding:0 8px 24px 0!important}
  #help .vh-help-card{display:block!important;width:100%!important;height:auto!important;min-height:0!important;max-height:none!important;margin:0 0 10px!important;overflow:hidden!important}
  #help .vh-help-card-toggle{min-height:58px!important;height:auto!important}
  #help .vh-help-card-body{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}
  #help .vh-help-card.is-open .vh-help-card-body{display:block!important}
}
@media (max-width:1050px){
  #help .vh-help-layout{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}
  #help .vh-help-toc{position:relative!important;height:auto!important;max-height:34dvh!important;overflow-y:auto!important}
  #help .vh-help-content{display:block!important;height:auto!important;max-height:none!important;overflow:visible!important}
  #help .vh-help-card{height:auto!important;max-height:none!important;margin-bottom:10px!important}
}

/* Material estimate: base VoltHome catalog is a real source. Category selector stays usable and
   catalog itself owns vertical scrolling instead of stretching the whole page. */
#price #materialSupplierSelect,#price #materialSupplierKindSelect{pointer-events:auto!important;opacity:1!important;cursor:pointer!important}
#price #materialSupplierKindSelect{appearance:auto!important}
#price #sheetPaneRough.active{display:flex!important;flex-direction:column!important;min-height:0!important;flex:1 1 auto!important;overflow:hidden!important}
#price #sheetCatalog{min-height:220px!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain!important;scrollbar-gutter:stable!important}
#price .vh208-more{padding:10px 12px;text-align:center;color:var(--vh-muted,var(--muted));font-size:12px;border-top:1px solid var(--vh-line,var(--line))}
@media (min-width:1181px){
  #price .calc-layout>.card:first-child{min-height:0!important;overflow:hidden!important}
  #price #sheetCatalog{flex:1 1 auto!important;height:auto!important;max-height:none!important}
}

/* ===== VoltHome OS 11.23.223 — approved visual + stacked calculation workspaces =====
   Scope is intentionally narrow:
   - preserve the approved pre-today visual baseline;
   - keep supplier/auth/server logic untouched;
   - only normalize calculator toolbar and stack calculator/material estimate panels;
   - one bounded catalog scroll per left/top catalog, full readable width for result panels. */

/* WORK CALCULATOR: catalog first, customer calculation below it. */
#calculator .calc-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:16px!important;
  align-items:start!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#calculator .calc-layout>.card{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#calculator #calcCatalog{
  height:520px!important;
  min-height:320px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}
#calculator #estimateLines{
  height:auto!important;
  min-height:160px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}

/* WORK TOOLBAR: all controls use one size/rhythm and wrap before overlap. */
#calculator .module-action-bar{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr))!important;
  gap:8px!important;
  width:100%!important;
  max-width:100%!important;
  overflow:visible!important;
  padding:9px!important;
  align-items:stretch!important;
}
#calculator .module-action-bar>.action-group{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  min-width:0!important;
  width:100%!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  align-items:stretch!important;
}
#calculator .module-action-bar>.action-group .action-group-label{display:none!important}
#calculator .module-action-bar>.action-group .btn,
#calculator .module-action-bar>.action-group select{
  box-sizing:border-box!important;
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:40px!important;
  min-height:40px!important;
  max-height:40px!important;
  margin:0!important;
  padding:0 10px!important;
  font-size:12px!important;
  font-weight:700!important;
  line-height:1.15!important;
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:clip!important;
  text-align:center!important;
  border-radius:10px!important;
}

/* MATERIAL ESTIMATE: material catalog first, estimate-for-work block below it. */
#price .calc-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:16px!important;
  align-items:start!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout>.card{
  width:100%!important;
  min-width:0!important;
  max-width:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout>.card:first-child,
#price .calc-layout>.card:nth-child(2){
  display:block!important;
}
#price .calc-layout>.card:first-child .sheet-pane.active{
  display:block!important;
  overflow:visible!important;
  min-height:0!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  height:520px!important;
  min-height:320px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}
#price #sheetLines{
  height:auto!important;
  min-height:160px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}

/* Full-width result rows must remain readable; never squeeze titles vertically. */
#calculator #estimateLines .estimate-row,
#price #sheetLines .material-sheet-line,
#price #sheetLines .estimate-row{
  min-width:0!important;
  max-width:100%!important;
}
#calculator #estimateLines .line-name,
#price #sheetLines .line-name{
  min-width:0!important;
  width:auto!important;
  max-width:100%!important;
}
#calculator #estimateLines .line-name b,
#calculator #estimateLines .line-name .muted,
#price #sheetLines .line-name b,
#price #sheetLines .line-name .muted{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
}

/* Responsive behavior is based on available viewport width, not aspect ratio. */
@media (max-width:1050px){
  #calculator .module-action-bar{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #calculator .module-action-bar>.action-group-template{grid-column:1/-1!important}
  #calculator #calcCatalog,
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{height:460px!important;max-height:460px!important}
}
@media (max-width:700px){
  #calculator .module-action-bar{grid-template-columns:1fr!important}
  #calculator .module-action-bar>.action-group{grid-template-columns:1fr!important}
  #calculator #calcCatalog,
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{height:420px!important;min-height:280px!important;max-height:420px!important}
}

/* ===== VoltHome OS 11.23.223 — bounded catalogs + readable stacked workspaces + compact shield =====
   Final override. The page itself remains scrollable; only long catalogs own an inner scrollbar. */
#price.active,
#calculator.active{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout,
#calculator .calc-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:16px!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  align-items:start!important;
}
#price .calc-layout>.card,
#calculator .calc-layout>.card{
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout>.card:first-child,
#calculator .calc-layout>.card:first-child{
  display:block!important;
}
#price .calc-layout>.card:first-child .sheet-pane.active{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
/* Same visual scroll size for work price and material catalog. */
#calculator #calcCatalog,
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  height:520px!important;
  min-height:520px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:7px!important;
}
#price #sheetCatalog::-webkit-scrollbar,
#price #cleanMaterialCatalog::-webkit-scrollbar,
#calculator #calcCatalog::-webkit-scrollbar{width:9px!important}
#price #sheetCatalog::-webkit-scrollbar-thumb,
#price #cleanMaterialCatalog::-webkit-scrollbar-thumb,
#calculator #calcCatalog::-webkit-scrollbar-thumb{background:rgba(255,189,54,.56)!important;border-radius:999px!important}
/* Result blocks are below catalogs and readable at full width. */
#price #sheetLines,
#calculator #estimateLines{
  width:100%!important;
  height:auto!important;
  min-height:150px!important;
  max-height:520px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable!important;
}
/* Shield: remove the useless empty middle area and let controls use available width. */
.vh1165-board{
  grid-template-columns:205px minmax(0,1fr)!important;
  width:100%!important;
  min-width:0!important;
}
.vh1165-board>.vh1165-board-content{
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  box-sizing:border-box!important;
}
.vh1165-config{
  grid-template-columns:repeat(auto-fit,minmax(170px,1fr))!important;
  width:100%!important;
  min-width:0!important;
}
@media(max-width:1200px){
  .vh1165-board{grid-template-columns:1fr!important}
  .vh1165-board>aside{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:0 18px!important;
    border-right:0!important;
    border-bottom:1px solid #263d52!important;
  }
  .vh1165-board>aside h4{grid-column:1/-1!important}
  .vh1165-config{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media(max-width:700px){
  #calculator #calcCatalog,
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{
    height:420px!important;
    min-height:420px!important;
    max-height:420px!important;
  }
  .vh1165-board>aside,.vh1165-config{grid-template-columns:1fr!important}
}

/* ===== VoltHome OS 11.23.223 — material estimate catalog scroll, final override =====
   Match the work-price catalog behavior: one bounded material viewport, then the estimate block below. */
#price.active{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  gap:16px!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  align-items:start!important;
}
#price .calc-layout > .card{
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
/* The catalog card never expands with all products. */
#price .calc-layout > .card:first-child{
  display:block!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout > .card:first-child .sheet-pane{
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
#price .calc-layout > .card:first-child .sheet-pane.active{
  display:block!important;
}
/* Same scroll viewport as #calculator #calcCatalog. */
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
  width:100%!important;
  height:520px!important;
  min-height:520px!important;
  max-height:520px!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable both-edges!important;
  padding-right:7px!important;
}
#price #sheetCatalog::-webkit-scrollbar,
#price #cleanMaterialCatalog::-webkit-scrollbar{width:9px!important}
#price #sheetCatalog::-webkit-scrollbar-thumb,
#price #cleanMaterialCatalog::-webkit-scrollbar-thumb{background:rgba(255,189,54,.56)!important;border-radius:999px!important}
/* Estimate remains immediately below the bounded catalog. */
#price .calc-layout > .card:nth-child(2){
  display:block!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
}
@media(max-width:700px){
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{
    height:420px!important;
    min-height:420px!important;
    max-height:420px!important;
  }
}


/* ===== VoltHome OS 11.23.223 — scope correction: scroll ONLY in material estimate =====
   Base Materials database stays natural-height with the normal page scroll.
   Material Estimate keeps a bounded internal product-catalog scroll. */
#materials-db.active{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#materials-db > .supplier-material-db-card,
#materials-db .card:has(#materialDbList){
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#materials-db #materialDbList{
  display:flex!important;
  flex-direction:column!important;
  flex:none!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
  overflow-x:visible!important;
  overflow-y:visible!important;
  overscroll-behavior:auto!important;
  scrollbar-gutter:auto!important;
  padding-right:0!important;
}
#price #sheetPaneRough.active{
  display:flex!important;
  flex-direction:column!important;
  min-height:0!important;
  overflow:hidden!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  height:520px!important;
  min-height:320px!important;
  max-height:520px!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
}
@media(max-width:900px), (max-height:760px){
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{height:420px!important;min-height:300px!important;max-height:420px!important}
  #materials-db.active,
  #materials-db > .supplier-material-db-card,
  #materials-db #materialDbList{height:auto!important;min-height:0!important;max-height:none!important;overflow:visible!important}
}

/* ===== VoltHome OS 11.23.225 — material estimate viewport matches Work Calculation =====
   Scope: ONLY Material Estimate (#price). Base Materials DB is untouched.
   The material list is a bounded internal viewport so the estimate card starts directly below it. */
#price #sheetPaneRough.active{
  display:block!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  display:block!important;
  box-sizing:border-box!important;
  width:100%!important;
  height:465px!important;
  min-height:465px!important;
  max-height:465px!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  padding-right:7px!important;
}
@media(max-width:900px), (max-height:760px){
  #price #sheetCatalog,
  #price #cleanMaterialCatalog{
    height:420px!important;
    min-height:420px!important;
    max-height:420px!important;
  }
}

/* ===== VoltHome OS 11.23.225 — definitive Material Estimate scroll viewport =====
   Scope: ONLY #price (Material Estimate). Base Materials DB is not changed.
   Match the visible Work Calculation pattern: one fixed-height top catalog card,
   its product list scrolls internally, estimate card begins immediately below. */
#price .calc-layout > .card:first-child{
  display:flex!important;
  flex-direction:column!important;
  box-sizing:border-box!important;
  height:628px!important;
  min-height:628px!important;
  max-height:628px!important;
  overflow:hidden!important;
}
#price .calc-layout > .card:first-child > .card-head,
#price .calc-layout > .card:first-child > .supplier-material-toolbar-row{
  flex:0 0 auto!important;
}
#price #sheetPaneRough.active,
#price #sheetPaneClean.active{
  display:flex!important;
  flex-direction:column!important;
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  overflow:hidden!important;
}
#price #sheetPaneRough.active > .supplier-material-search-row,
#price #sheetPaneClean.active > .supplier-material-search-row{
  flex:0 0 auto!important;
}
#price #sheetCatalog,
#price #cleanMaterialCatalog{
  display:flex!important;
  flex-direction:column!important;
  flex:1 1 auto!important;
  box-sizing:border-box!important;
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:scroll!important;
  overflow-x:hidden!important;
  overscroll-behavior:contain!important;
  scrollbar-gutter:stable!important;
  scrollbar-width:thin!important;
  scrollbar-color:rgba(255,189,54,.95) rgba(255,255,255,.08)!important;
  padding-right:7px!important;
}
#price #sheetCatalog::-webkit-scrollbar,
#price #cleanMaterialCatalog::-webkit-scrollbar{
  width:10px!important;
  display:block!important;
}
#price #sheetCatalog::-webkit-scrollbar-track,
#price #cleanMaterialCatalog::-webkit-scrollbar-track{
  background:rgba(255,255,255,.08)!important;
  border-radius:999px!important;
}
#price #sheetCatalog::-webkit-scrollbar-thumb,
#price #cleanMaterialCatalog::-webkit-scrollbar-thumb{
  background:rgba(255,189,54,.95)!important;
  border-radius:999px!important;
  min-height:44px!important;
}
#price .calc-layout > .card:nth-child(2){
  margin-top:0!important;
}
@media(max-width:900px), (max-height:760px){
  #price .calc-layout > .card:first-child{
    height:560px!important;
    min-height:560px!important;
    max-height:560px!important;
  }
}
@media(max-width:700px){
  #price .calc-layout > .card:first-child{
    height:520px!important;
    min-height:520px!important;
    max-height:520px!important;
  }
}

/* VoltHome OS 11.23.228 — shield nested-main conflict removed. */
.vh1165-board>.vh1165-board-content{margin:0!important;width:100%!important;max-width:100%!important;min-width:0!important;padding:12px!important;overflow:visible!important;box-sizing:border-box!important}

/* VoltHome OS 11.23.230 — material estimate PDF variants */
.material-pdf-choice-box{max-width:460px!important}
.material-pdf-choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 12px}
.material-pdf-choice-actions .btn{min-height:44px}
@media(max-width:560px){.material-pdf-choice-actions{grid-template-columns:1fr}}

/* VoltHome OS 11.23.235 — material PDF article option */
.material-pdf-article-option{display:flex;align-items:center;gap:9px;margin:14px 0 4px;text-align:left;font-weight:700;cursor:pointer}
.material-pdf-article-option input{width:18px;height:18px;flex:0 0 auto}


/* VoltHome OS 11.23.235 — approved logo restored to the top of the left menu */
.vh-sidebar-brand{
  flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  width:100%;margin:0 0 12px;padding:8px 6px 10px;
  border-bottom:1px solid rgba(255,255,255,.10);overflow:hidden
}
.vh-sidebar-brand img{
  display:block;width:100%;max-width:235px;height:auto;max-height:142px;
  object-fit:contain;border-radius:10px;background:#fff
}
.login-card::before{background:#fff url("assets/volthome-logo.png") center/contain no-repeat!important}
@media(max-width:1050px) and (min-width:721px){
  .vh-sidebar-brand{padding:4px 0 8px;margin-bottom:8px}
  .vh-sidebar-brand img{width:62px;max-height:62px;object-fit:cover;object-position:50% 23%;border-radius:12px}
}
@media(max-width:720px){.vh-sidebar-brand{display:none!important}}

/* v11.23.304 — счёт и акт: ровная таблица, без «лесенки» */
.vh1162-table{display:table;width:100%;border-collapse:collapse;table-layout:fixed}
.vh1162-table>div{display:table-row;min-width:0;grid-template-columns:none}
.vh1162-table>div>span{display:table-cell;vertical-align:top;border:1px solid var(--vh-line,#20364a);padding:8px 10px;word-break:break-word}
.vh183-table{display:table;width:100%;border-collapse:collapse;table-layout:fixed}
.vh183-th,.vh183-tr{display:table-row;grid-template-columns:none;align-items:stretch}
.vh183-th span,.vh183-tr span{display:table-cell;vertical-align:top;border:1px solid var(--vh-line,#20364a);padding:8px 10px;word-break:break-word;min-width:0}
.vh-typical-doc-table{width:100%;border-collapse:collapse;table-layout:fixed}
.vh-typical-doc-table th,.vh-typical-doc-table td{border:1px solid #555;padding:6px 8px;vertical-align:top;text-align:left;word-wrap:break-word}

/* VoltHome OS 11.23.245 — procurement toolbar one-line + order delete */
#suppliers .procurement-head{
  display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:14px!important;flex-wrap:wrap!important;
}
#suppliers .procurement-head-actions{
  display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:10px!important;
  margin-left:auto;max-width:100%;
}
#suppliers .procurement-head-actions select{
  flex:1 1 240px;min-width:180px;width:auto!important;max-width:360px!important;
}
#suppliers .procurement-head-actions .btn{
  flex:0 0 auto;white-space:nowrap;width:auto!important;
}
#suppliers .procurement-footer{
  display:flex!important;justify-content:flex-end!important;align-items:center!important;gap:10px!important;flex-wrap:wrap!important;
}
#suppliers .procurement-footer .btn{width:auto!important}
#suppliers .supplier-orders-head{
  display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px!important;flex-wrap:wrap!important;
}
#suppliers .supplier-orders-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-left:auto}
#suppliers .proc-order-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:0!important}
@media (max-width:900px){
  #suppliers .procurement-head-actions{flex-wrap:wrap!important;width:100%!important;margin-left:0}
  #suppliers .procurement-head-actions select{max-width:none!important;width:100%!important;flex:1 1 100%}
}

/* VoltHome OS 11.23.246 — readable supplier orders + wide order card */
#suppliers .supplier-orders-card>.table-wrap{
  height:auto!important;
  min-height:0!important;
  max-height:min(58vh,640px)!important;
  overflow:auto!important;
}
.vh-order-detail-modal .vh-order-detail-box{
  width:min(920px,calc(100vw - 28px))!important;
  max-height:min(88vh,920px)!important;
  text-align:left!important;
  overflow:auto!important;
}
.vh-order-detail-body{margin:8px 0 16px}
.vh-order-detail-meta{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px 14px;
  margin:0 0 14px;
}
.vh-order-detail-meta span{display:block;color:#9bb3c4;font-size:11px;margin-bottom:3px}
.vh-order-detail-meta b{color:#eef7fc;font-size:13px;word-break:break-word}
.vh-order-detail-body .table-wrap{max-height:min(42vh,480px);overflow:auto}
.vh-order-detail-actions{display:flex;justify-content:flex-end;margin-top:14px}
@media (max-width:720px){
  .vh-order-detail-meta{grid-template-columns:1fr}
}

