:root {
  --bg: #f5f7f3;
  --panel: #fff;
  --ink: #182017;
  --muted: #667064;
  --line: #dfe6dc;
  --green: #6fbe44;
  --green-dark: #3b8f24;
  --brand-blue: #0b3658;
  --brand-blue-dark: #08283f;
  --brand-blue-soft: #eaf2f8;
  --red: #c74343;
  --blue: #278be7;
  --amber: #f5b94b;
  --purple: #b75ac8;
  --shadow: 0 16px 42px rgba(11,54,88,.14);
}

* { box-sizing: border-box; }
body { margin: 0; font-family: "Segoe UI", Arial, sans-serif; background: var(--bg); color: var(--ink); }
h1, h2, h3, p { margin: 0; }
h1 { font-size: 24px; }
h2 { font-size: 17px; }
h3 { margin-top: 18px; font-size: 15px; }
.topbar { display: flex; justify-content: space-between; align-items:flex-start; gap: 20px; padding: 18px 24px; background: #fff; border-bottom: 1px solid var(--line); }
.topbar p, .note, .fineprint { color: var(--muted); font-size: 13px; }
.top-actions, .dialog-actions, .legend, .catalog-actions, .view-tabs { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.export-select{width:145px;padding:9px 10px}
.project-switcher-label{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--muted);flex:0 0 auto}
.project-switcher{flex:0 0 clamp(190px,18vw,300px);width:clamp(190px,18vw,300px);min-width:190px;padding:9px 10px}
.hidden-action{display:none}
.landing-screen{display:none;position:absolute;inset:0 auto auto 0;width:100%;z-index:1100;background:#fff;color:#14202a}
.landing-screen.active{display:block}
.landing-nav{height:76px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 max(28px,calc((100vw - 1320px)/2));background:#fff;border-bottom:1px solid #dce4ea;position:sticky;top:0;z-index:5}
.landing-brand{display:flex;flex-direction:column;text-decoration:none;color:var(--brand-blue);line-height:1.1}
.landing-brand strong{font-size:23px}.landing-brand span{font-size:11px;color:#60717e;margin-top:4px}
.landing-nav-actions{display:flex;align-items:center;gap:18px}.landing-nav-actions>a{color:#344a59;text-decoration:none;font-size:14px;font-weight:700}
.landing-hero{position:relative;min-height:650px;display:flex;align-items:center;overflow:hidden;background:#081e30}
.landing-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.75) contrast(1.03)}
.landing-hero-overlay{position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,26,43,.97) 0%,rgba(5,26,43,.88) 39%,rgba(5,26,43,.44) 68%,rgba(5,26,43,.16) 100%)}
.landing-hero-content{position:relative;width:min(720px,calc(100% - 48px));margin-left:max(28px,calc((100vw - 1320px)/2));padding:90px 0;color:#fff}
.landing-eyebrow,.landing-section-label{display:block;color:#77b5dc;font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.07em;margin-bottom:14px}
.landing-hero h1{font-size:clamp(42px,5vw,68px);line-height:1.03;max-width:700px;letter-spacing:0;margin-bottom:24px}
.landing-hero p{font-size:21px;line-height:1.5;max-width:650px;color:#e2edf4}
.landing-hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin:32px 0 14px}.landing-cta{background:#fff;color:var(--brand-blue);padding:14px 20px;font-size:16px}.landing-cta:hover{background:#eaf2f8}
.landing-ghost{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.55);color:#fff;padding:14px 20px;text-decoration:none}.landing-hero small{color:#c5d5df}
.landing-main{background:#fff}.landing-intro{max-width:860px;margin:0 auto;padding:92px 28px 56px;text-align:center}.landing-intro h2,.landing-workflow h2,.landing-benefits h2,.landing-final-cta h2{font-size:38px;line-height:1.15;color:var(--brand-blue-dark);margin-bottom:18px}.landing-intro p,.landing-workflow-copy p,.landing-final-cta p{font-size:18px;line-height:1.6;color:#586b79}
.landing-features{width:min(1320px,calc(100% - 56px));margin:0 auto 90px;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid #dce4ea;border-left:1px solid #dce4ea}
.landing-features article{padding:34px;min-height:235px;border-right:1px solid #dce4ea;border-bottom:1px solid #dce4ea}.landing-features article>span{color:#6f8fa6;font-size:13px;font-weight:900}.landing-features h3{font-size:22px;color:var(--brand-blue);margin:36px 0 12px}.landing-features p{color:#596c79;line-height:1.6}
.landing-proof{background:var(--brand-blue);color:#fff;padding:34px max(28px,calc((100vw - 1320px)/2));display:grid;grid-template-columns:repeat(4,1fr);gap:1px}.landing-proof div{padding:18px 28px;border-left:1px solid rgba(255,255,255,.24)}.landing-proof div:first-child{border-left:0}.landing-proof strong,.landing-proof span{display:block}.landing-proof strong{font-size:20px;margin-bottom:5px}.landing-proof span{font-size:13px;color:#c6d8e4}
.landing-workflow{width:min(1180px,calc(100% - 56px));margin:0 auto;padding:100px 0;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}.landing-workflow ol{margin:0;padding:0;list-style:none;counter-reset:steps}.landing-workflow li{counter-increment:steps;position:relative;padding:6px 0 28px 62px;border-left:1px solid #bfcdd7}.landing-workflow li:before{content:counter(steps);position:absolute;left:-21px;top:0;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--brand-blue);color:#fff;font-weight:900}.landing-workflow li:last-child{border-left-color:transparent}.landing-workflow li strong,.landing-workflow li span{display:block}.landing-workflow li strong{font-size:19px;color:var(--brand-blue);margin-bottom:5px}.landing-workflow li span{color:#60717e}
.landing-benefits{padding:92px max(28px,calc((100vw - 1180px)/2));background:#eef4f7;display:grid;grid-template-columns:1fr 1fr;gap:80px}.landing-benefits ul{margin:0;padding:0;list-style:none}.landing-benefits li{position:relative;padding:15px 0 15px 34px;border-bottom:1px solid #ccd9e1;color:#405563;font-weight:650}.landing-benefits li:before{content:'✓';position:absolute;left:0;color:var(--brand-blue);font-weight:900}
.landing-final-cta{width:min(1180px,calc(100% - 56px));margin:0 auto;padding:100px 0;display:flex;justify-content:space-between;align-items:center;gap:60px}.landing-final-cta>div{max-width:740px}.landing-final-cta .landing-cta{background:var(--brand-blue);color:#fff;white-space:nowrap}.landing-final-cta .landing-cta:hover{background:var(--brand-blue-dark)}
.landing-footer{padding:28px max(28px,calc((100vw - 1320px)/2));background:#071c2b;color:#b9cbd6;display:flex;align-items:center;justify-content:space-between;gap:24px;font-size:13px}.landing-footer strong{color:#fff;font-size:18px}.landing-footer a{color:#d7e5ed}
.auth-back-button{border:0;background:transparent;color:var(--brand-blue);padding:0;margin-bottom:10px;font-weight:800;cursor:pointer;text-align:left}
.server-screen{position:fixed;inset:0;z-index:1000;display:none;align-items:center;justify-content:center;background:linear-gradient(135deg,#f4f8fb,#dfeaf2);padding:24px}
.server-screen.active{display:flex}
.server-card{width:min(560px,100%);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:24px;display:grid;gap:16px}
.server-card h1{font-size:28px;color:var(--brand-blue-dark)}
.server-card p{color:var(--muted);line-height:1.4}
.server-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.auth-tabs{display:flex;gap:8px;border-bottom:1px solid var(--line);padding-bottom:8px}
.auth-tab{border:0;background:var(--brand-blue-soft);color:var(--brand-blue-dark);border-radius:8px;padding:9px 12px;font-weight:800;cursor:pointer}
.auth-tab.active{background:var(--brand-blue);color:#fff}
.auth-form{display:none;gap:8px}
.auth-form.active{display:grid}
.auth-reset-button{justify-self:start;margin-top:2px}
.auth-reset-actions{justify-content:flex-start}
.server-message{min-height:18px;font-size:13px;font-weight:700}
.server-message.error{color:var(--red)}
.server-message.ok{color:var(--brand-blue)}
.projects-card{width:min(980px,100%);max-height:92vh;overflow:auto}
.server-project-actions{display:flex;gap:10px;flex-wrap:wrap}
.server-project-list{display:grid;gap:8px;max-height:52vh;overflow:auto}
.server-project-row{border:1px solid var(--line);border-radius:8px;background:#fbfcfa;padding:12px;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}
.server-project-row strong{font-size:16px}
.server-project-row small{display:block;color:var(--muted);margin-top:3px}
.server-project-row-actions{display:flex;gap:6px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.server-share-panel{margin:14px 0;border:1px solid var(--line);border-radius:8px;background:#f7faf5;padding:10px}
.server-share-panel h3{margin:0 0 6px;font-size:14px}
.server-member-list{display:grid;gap:5px;margin:8px 0}
.server-member-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;padding:6px 8px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:12px}
.server-member-row small{color:var(--muted);font-weight:800}
.server-member-row select{width:100px;padding:5px 6px;font-size:12px}
.server-member-row .link-button{font-size:12px}
.server-share-form{display:grid;grid-template-columns:1fr 120px auto;gap:6px;align-items:center}
.server-share-form .field{padding:7px 8px;font-size:12px}
.admin-panel{border-top:1px solid var(--line);padding-top:14px;display:grid;gap:10px}
.admin-panel.hidden-action{display:none}
.admin-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.backup-list,.admin-user-list{display:grid;gap:7px}
.backup-row,.admin-user-row{border:1px solid var(--line);border-radius:8px;background:#fbfcfa;padding:10px;display:grid;gap:8px}
.backup-row{grid-template-columns:1fr auto;align-items:center}
.admin-user-row{grid-template-columns:1fr 1fr 1.15fr;align-items:center}
.admin-user-row strong,.backup-row strong{font-size:14px}
.admin-user-row small,.backup-row small{display:block;color:var(--muted);font-weight:700;margin-top:2px}
.admin-user-license,.admin-user-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.admin-user-license{flex-direction:column;align-items:flex-start}
.admin-user-license>span{display:flex;gap:8px;align-items:center}
.admin-user-actions{grid-column:3}
.admin-user-actions .admin-password{min-width:150px;flex:1}
.admin-license-term{width:auto;min-width:145px}
.admin-user-actions{display:flex;gap:6px;align-items:center}
.admin-user-actions .field{width:150px;padding:7px 8px;font-size:12px}

.button { border: 0; border-radius: 8px; padding: 10px 14px; font-weight: 700; cursor: pointer; }
.button.primary { background: var(--brand-blue); color: #fff; }
.button.secondary { background: #edf3ea; color: var(--ink); }
.button.ghost { background: transparent; color: var(--muted); }
.button.danger { background: #fae8e8; color: var(--red); }
.button.small { padding: 8px 10px; font-size: 12px; }

.workspace { display: grid; grid-template-columns: 340px minmax(500px,1fr) 380px; height: calc(100vh - 82px); min-height: 660px; }
.panel { background: var(--panel); border-right: 1px solid var(--line); padding: 16px; overflow: auto; }
.quote-panel { border-left: 1px solid var(--line); border-right: 0; }
.panel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.panel-head span { color: var(--muted); font-size: 13px; }
.field { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 10px 11px; font: inherit; background: #fbfcfa; }
.top-actions .project-switcher{width:clamp(190px,18vw,300px);min-width:190px}
.top-actions .export-select{width:145px;min-width:145px;flex:0 0 145px}
.export-action-select{background:var(--brand-blue);color:#fff;border-color:var(--brand-blue);font-weight:800;cursor:pointer}
.export-action-select option{background:#fff;color:var(--ink)}
.category-filter { margin-top: 8px; }
.textarea { min-height: 104px; resize: vertical; }
.label { display: block; margin: 14px 0 6px; color: var(--muted); font-size: 12px; font-weight: 700; text-transform: uppercase; }
.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px}
.field-gap{margin-top:6px}
.marker-extra-details{display:none}
.marker-extra-details.active{display:block}
.circuit-peer-list{display:grid;gap:5px;margin-top:6px;max-height:150px;overflow:auto;border:1px solid var(--line);border-radius:8px;padding:7px;background:#f7faf5}
.circuit-peer-list label{display:flex;gap:7px;align-items:flex-start;font-size:12px;font-weight:700}
.circuit-peer-list .note{margin:0;font-size:12px}
.note { margin: 10px 0 12px; }
.catalog-actions { margin-top: 10px; }
.catalog-system-label { display: grid; gap: 5px; margin: 8px 0 10px; font-size: 12px; font-weight: 900; color: var(--muted); text-transform: uppercase; }
.catalog-system-select { font-size: 16px; font-weight: 900; color: var(--ink); text-transform: none; }

.product-list, .selected-list { display: grid; gap: 8px; }
.product-card, .selected-item { border: 1px solid var(--line); border-radius: 8px; padding: 10px; background: #fff; }
.product-card { cursor: grab; }
.product-card.selected { border-color: var(--green); box-shadow: 0 0 0 3px rgba(111,190,68,.18); }
.product-title { display: flex; align-items: center; gap: 8px; font-weight: 800; margin-bottom: 4px; }
.favorite-button{margin-left:auto;border:0;background:transparent;color:#aeb8a8;font-size:18px;line-height:1;cursor:pointer;padding:0 2px}
.favorite-button.active{color:#f0a808;text-shadow:0 1px 0 #fff}
.room-category-input{margin-top:6px;padding:6px 8px}
.product-meta { display: flex; justify-content: space-between; gap: 10px; color: var(--muted); font-size: 12px; }
.price { color: var(--green-dark); font-weight: 800; }
.product-actions { display: flex; gap: 8px; margin-top: 8px; }
.link-button { border: 0; background: transparent; padding: 0; color: var(--green-dark); font-weight: 800; cursor: pointer; }

.plan-wrap { display: flex; flex-direction: column; min-width: 0; }
.toolbar, .subtoolbar { display: flex; justify-content: space-between; gap: 12px; padding: 12px 16px; border-bottom: 1px solid var(--line); background: #fafcf8; }
.subtoolbar { justify-content: flex-start; align-items: center; }
#planName { color: var(--muted); margin-left: 8px; font-size: 13px; }
.tab-button { border: 1px solid var(--line); border-radius: 8px; background: #fff; padding: 8px 12px; font-weight: 800; cursor: pointer; }
.tab-button.active { background: var(--green); border-color: var(--green); color: #10250a; }
.view-panel { display: none; flex: 1; min-height: 0; }
.view-panel.active { display: flex; flex-direction: column; }

.legend { color: var(--muted); font-size: 12px; }
.legend-icon, .catalog-icon, .marker .symbol { position: relative; display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 6px; color: transparent; flex: 0 0 auto; }
.legend-icon i, .catalog-icon i, .marker .symbol i { position: absolute; inset: 0; }
.legend-icon.control, .catalog-icon.control, .marker.control .symbol { background: var(--green); }
.legend-icon.motion, .catalog-icon.motion, .marker.motion .symbol { background: var(--blue); border-radius: 50%; }
.legend-icon.window-contact, .catalog-icon.window-contact, .marker.motion .symbol.window-contact { background: var(--blue); border-radius: 6px; }
.legend-icon.light, .catalog-icon.light, .marker.light .symbol { background: #f0a808; border-radius: 50%; }
.legend-icon.led, .catalog-icon.led, .marker.led .symbol { background: #f0a808; border-radius: 5px; }
.legend-icon.core, .catalog-icon.core, .marker.core .symbol { background: var(--amber); }
.legend-icon.hub, .catalog-icon.hub, .marker.core .symbol.hub { background: var(--green); }
.legend-icon.access, .catalog-icon.access, .marker.access .symbol { background: var(--purple); }
.legend-icon.actuator, .catalog-icon.actuator, .marker.actuator .symbol { background: #e07136; }
.legend-icon.camera, .catalog-icon.camera, .marker.camera .symbol { background: #d63c2f; }
.legend-icon.rack, .catalog-icon.rack, .marker.rack .symbol { background: #58616b; }
.legend-icon.network, .catalog-icon.network, .marker.network .symbol { background: #1377b8; }
.legend-icon.energy, .catalog-icon.energy, .marker.energy .symbol { background: #20a585; }
.legend-icon.climate, .catalog-icon.climate, .marker.climate .symbol { background: #4bb7b0; }
.legend-icon.ac, .catalog-icon.ac, .marker.ac .symbol { background: #34a6d9; }
.legend-icon.audio, .catalog-icon.audio, .marker.audio .symbol { background: #7d6ae8; }
.legend-icon.curtain, .catalog-icon.curtain, .marker.curtain .symbol { background: #1e88e5; }
.legend-icon.other, .catalog-icon.other, .marker.other .symbol { background: #8b98a8; }

.symbol::before, .catalog-icon::before, .legend-icon::before { content: ""; position: absolute; inset: 5px; border: 2px solid #fff; }
.control::before { border-radius: 4px; }
.control::after { content: ""; position: absolute; width: 4px; height: 4px; border-radius: 50%; background: #fff; left: 7px; top: 10px; box-shadow: 7px 0 0 #fff; }
.motion::before { inset: 7px 5px; border-radius: 50%; }
.motion::after { content: ""; position: absolute; width: 5px; height: 5px; border-radius: 50%; background: #fff; left: 9px; top: 9px; }
.window-contact::before { inset: 5px 9px 5px 5px; border-radius: 2px; }
.window-contact::after { content: ""; position: absolute; right: 5px; top: 5px; width: 4px; height: 14px; border: 2px solid #fff; border-radius: 2px; background: transparent; }
.light::before { inset: 5px 8px 9px 8px; border-radius: 50% 50% 45% 45%; }
.light::after { content: ""; position: absolute; left: 9px; top: 15px; width: 7px; height: 4px; background: #fff; border-radius: 1px; }
.core::before { inset: 5px; border-radius: 2px; }
.core::after { content: ""; position: absolute; inset: 3px; border-left: 2px dotted #fff; border-right: 2px dotted #fff; }
.hub::before { inset: 5px; border-radius: 50%; }
.hub::after { content: ""; position: absolute; left: 9px; top: 9px; width: 6px; height: 6px; border-radius: 50%; background: #fff; box-shadow: -4px -4px 0 -2px #fff, 4px -4px 0 -2px #fff, -4px 4px 0 -2px #fff, 4px 4px 0 -2px #fff; }
.access::before { inset: 5px 7px; border-radius: 3px; }
.access::after { content: ""; position: absolute; left: 8px; top: 5px; width: 8px; height: 7px; border: 2px solid #fff; border-bottom: 0; border-radius: 8px 8px 0 0; }
.actuator::before { inset: 6px 4px 10px 4px; border-radius: 2px; }
.actuator::after { content: ""; position: absolute; left: 10px; top: 14px; width: 4px; height: 6px; background: #fff; }
.camera::before { inset: 7px 5px; border-radius: 3px; }
.camera::after { content: ""; position: absolute; right: 3px; top: 9px; border-left: 7px solid #fff; border-top: 4px solid transparent; border-bottom: 4px solid transparent; }
.rack::before { inset: 4px 7px; border-radius: 2px; }
.rack::after { content: ""; position: absolute; left: 9px; right: 9px; top: 8px; height: 2px; background: #fff; box-shadow: 0 4px 0 #fff, 0 8px 0 #fff; }
.network::before { inset: 5px 5px 10px 5px; border-radius: 3px; }
.network::after { content: ""; position: absolute; left: 11px; top: 14px; width: 2px; height: 5px; background: #fff; box-shadow: -5px 4px 0 #fff, 0 4px 0 #fff, 5px 4px 0 #fff; }
.audio::before { inset: 5px 9px 5px 5px; border-radius: 2px; }
.audio::after { content: ""; position: absolute; right: 5px; top: 7px; width: 6px; height: 10px; border: 2px solid #fff; border-left: 0; border-radius: 0 10px 10px 0; }
.climate::before, .ac::before { inset: 10px 5px; border-radius: 8px; }
.ac::after { content: ""; position: absolute; left: 6px; right: 6px; top: 6px; height: 4px; border-radius: 5px 5px 2px 2px; background: #fff; box-shadow: 0 8px 0 -2px rgba(255,255,255,.9); }
.energy::before { inset: 4px 8px; border: 0; background: #fff; clip-path: polygon(50% 0, 18% 52%, 48% 52%, 28% 100%, 82% 39%, 54% 39%); }

.drop-zone { position: relative; flex: 1; margin: 16px; border: 2px dashed #cbd7c4; border-radius: 8px; overflow: auto; background: linear-gradient(90deg,rgba(111,190,68,.06) 1px,transparent 1px),linear-gradient(rgba(111,190,68,.06) 1px,transparent 1px),#fff; background-size: 28px 28px; }
.drop-zone.has-plan { border-style: solid; background: #fff; }
.plan-stage { position: relative; width: 100%; height: 100%; min-width: 100%; min-height: 100%; transform-origin: 0 0; }
#planImage, .plan-pdf { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: none; user-select: none; border: 0; pointer-events: none; }
.drop-zone.has-plan:not(.has-pdf) #planImage { display: block; }
.drop-zone.has-pdf .plan-pdf { display: block; }
.empty-plan { position: absolute; inset: 0; display: grid; place-content: center; gap: 8px; text-align: center; padding: 20px; color: var(--muted); }
.drop-zone.has-plan .empty-plan { display: none; }
#markerLayer { position: absolute; inset: 0; pointer-events: none; }
.marker { position: absolute; width: 30px; height: 30px; border: 0; background: transparent; transform: translate(-50%,-50%); cursor: move; padding: 0; pointer-events: auto; }
.marker .symbol { width: 26px; height: 26px; box-shadow: 0 0 0 2px #fff, var(--shadow); }
.marker .project-no { position: absolute; left: 50%; top: 26px; transform: translateX(-50%); background: #fff; color: #182017; border: 1px solid var(--line); border-radius: 5px; padding: 1px 4px; font-size: 9px; font-weight: 800; white-space: nowrap; }

.selected-top { display: flex; justify-content: space-between; gap: 10px; font-weight: 800; }
.selected-item button { border: 0; background: transparent; color: var(--green-dark); cursor: pointer; font-weight: 800; }
.room-input { margin-top: 8px; }
.project-tag { display: inline-block; margin-right: 6px; color: var(--green-dark); font-weight: 900; }

.cabinet-controls { flex-wrap: wrap; }
.mini-field { width: 62px; border: 1px solid var(--line); border-radius: 6px; padding: 6px; margin-left: 4px; }
.zoom-field { width: 130px; vertical-align: middle; }
.compact-field { width: auto; min-width: 180px; padding: 6px 8px; margin-left: 4px; }
.cabinet-board { flex: 1; padding: 18px; overflow: auto; background: #eef3eb; }
.cabinet-shell { display: grid; gap: 18px; min-width: 680px; background: #fff; border: 2px solid #c5d2bd; border-radius: 8px; padding: 18px; zoom: var(--cabinet-zoom, 1); }
.cabinet-shell.cabinet-built { border-color: #7f8c78; background: #f9faf8; }
.cabinet-shell.cabinet-built .din-device { cursor: default; }
.rail { display: grid; grid-template-columns: 74px 1fr; gap: 12px; align-items: stretch; }
.rail-label { display: grid; place-items: center; color: var(--muted); font-weight: 800; font-size: 12px; border-right: 1px solid var(--line); }
.rail-slots { position:relative; display: grid; grid-template-columns: repeat(var(--slots), 1fr); min-height: 390px; background: repeating-linear-gradient(90deg,#f7f9f5 0,#f7f9f5 calc(100% / var(--slots) - 1px),#d9e2d4 calc(100% / var(--slots) - 1px),#d9e2d4 calc(100% / var(--slots))); border: 1px solid var(--line); border-radius: 6px; overflow: visible; padding:150px 0 150px; }
.din-device { align-self: stretch; margin: 0 2px; border: 0; background: transparent; box-shadow: none; font-size: 10px; overflow: visible; cursor: pointer; min-width:0; position:relative; z-index:4; }
.din-body{position:relative;height:104px;filter:drop-shadow(0 8px 12px rgba(21,31,18,.18))}
.din-face{position:absolute;left:0;right:0;top:26px;height:52px;display:grid;grid-template-rows:1fr auto auto;align-items:center;gap:1px;padding:8px 8px 5px;background:linear-gradient(145deg,#141719 0,#34383b 26%,#171a1d 27%,#2f3336 52%,#191c1f 53%,#3b3f42 78%,#171a1d 79%);border:1px solid #070808;border-radius:2px;color:#fff;overflow:hidden}
.din-face::before{content:"";position:absolute;left:8px;right:8px;top:50%;height:11px;transform:translateY(-50%);background:linear-gradient(90deg,transparent 0 18%,#8cff4f 19% 72%,transparent 73%);box-shadow:0 0 8px rgba(140,255,79,.25)}
.din-brand{position:relative;z-index:1;justify-self:center;background:#8cff4f;color:#101410;font-weight:900;font-size:11px;letter-spacing:.4px;padding:1px 18px;clip-path:polygon(0 50%,10px 0,100% 0,100% 100%,10px 100%)}
.din-product-name{position:relative;z-index:1;justify-self:end;color:#d8ffd0;font-size:8px;font-weight:800;text-transform:uppercase}
.din-face strong{position:relative;z-index:1;display:block;color:#fff;font-size:9px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 1px #000}
.din-face small{position:relative;z-index:1;display:block;color:#cbd1d4;font-size:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.din-compact-face .din-face{background:linear-gradient(145deg,#78dc56 0,#a6f484 28%,#5bbd3a 29%,#8be969 58%,#63c940 59%,#b6ff91 100%);border-color:#368f28;color:#10250a}
.din-compact-face .din-face::before{left:12px;right:12px;height:8px;background:repeating-linear-gradient(90deg,#152015 0 2px,transparent 2px 6px);box-shadow:none;opacity:.65;top:18%}
.din-compact-face .din-face::after{content:"LAN";position:absolute;left:7px;top:8px;width:25px;height:17px;border:1px solid rgba(12,34,12,.5);border-radius:2px;background:linear-gradient(#dfe5e0,#aab5ad);color:#152015;font-size:7px;font-weight:900;line-height:17px;text-align:center;box-shadow:inset 0 -3px 0 rgba(0,0,0,.12)}
.din-compact-face .din-brand{background:#173018;color:#8cff4f;font-size:8px;padding:1px 7px;clip-path:none;border-radius:2px;justify-self:end}
.din-compact-face .din-product-name{color:#173018}
.din-compact-face .din-face strong,.din-compact-face .din-face small{color:#10250a;text-shadow:none}
.din-rgbw-face .din-face{top:18px;height:68px;background:linear-gradient(145deg,#141719 0,#34383b 26%,#171a1d 27%,#2f3336 52%,#191c1f 53%,#3b3f42 78%,#171a1d 79%);border-color:#070808}
.din-rgbw-face .din-face::before{left:13px;right:13px;top:62%;height:8px;background:linear-gradient(90deg,transparent 0 18%,#8cff4f 19% 72%,transparent 73%);opacity:.85}
.din-rgbw-face .din-brand{font-size:8px;padding:1px 7px;justify-self:end}
.din-rgbw-face .din-product-name{color:#d8ffd0}
.din-rgbw-face .din-face strong{font-size:8px}
.din-rgbw-face .din-face small{font-size:7px}
.din-rgbw-face .din-terminal-single-screw{width:2.25%;min-width:5px;height:13px;border-radius:2px}
.din-rgbw-face .din-terminal-single-screw i{width:3px;height:3px}
.din-rgbw-face .din-terminal-single-screw em{font-size:6px}
.din-terminals{position:absolute;left:0;right:0;top:0;bottom:0;overflow:visible;z-index:4}
.din-device:not(.din-positioned) .din-terminals{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(14px,1fr);gap:3px;align-items:end;justify-content:center;padding:0 8px;bottom:auto;height:18px}
.din-device:not(.din-positioned) .din-terminals.bottom{top:auto;bottom:0;align-items:start}
.din-terminal{position:absolute;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr;width:7.2%;min-width:12px;height:18px;background:#7b1118;border:1px solid #4d090e;border-radius:2px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.22),0 1px 2px rgba(0,0,0,.25);transform:translate(-50%,-50%)}
.din-device:not(.din-positioned) .din-terminal{position:relative;left:auto;top:auto;transform:none;width:auto}
.din-terminal-single-screw{grid-template-columns:1fr;width:3.1%;min-width:7px;height:16px}
.din-terminal-single-screw i{width:4px;height:4px}
.din-terminal-pair{width:13.2%;min-width:24px}
.din-terminal-pair-power{background:linear-gradient(90deg,#df4b35 0 48%,#f4f6f8 49% 100%);border-color:#aab2ba}
.din-terminal-pair-link{background:linear-gradient(90deg,#1f86c8 0 48%,#f4f6f8 49% 100%);border-color:#aab2ba}
.din-terminal-pair-tree{background:linear-gradient(90deg,#2f8c2f 0 48%,#f4f6f8 49% 100%);border-color:#aab2ba}
.din-terminal-power{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-link{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-tree{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-plus24{background:#df4b35;border-color:#a84a35}
.din-terminal-gnd{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-link-plus{background:#1f86c8;border-color:#0d5d90}
.din-terminal-link-minus{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-tree-a{background:#2f8c2f;border-color:#1d681d}
.din-terminal-tree-b{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-input{background:#1b78a8;border-color:#0d4e70}
.din-terminal-rgbw{background:#25282b;border-color:#080909}
.din-terminal-rgbw[title^="R:"]{background:#b41122;border-color:#750915}
.din-terminal-rgbw[title^="G:"]{background:#2f8c2f;border-color:#1d681d}
.din-terminal-rgbw[title^="B:"]{background:#1f86c8;border-color:#0d5d90}
.din-terminal-rgbw[title^="W:"]{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-rgbw-common{background:#df4b35;border-color:#a84a35}
.din-terminal i{display:block;width:5px;height:5px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff 0 18%,#c7c7c7 19% 58%,#555 59%);align-self:center;justify-self:center}
.din-terminal em{position:absolute;left:50%;top:100%;transform:translate(-50%,1px);font-style:normal;font-size:7px;font-weight:900;color:#172116;background:#fff;border:1px solid rgba(0,0,0,.18);border-radius:2px;padding:0 2px;line-height:1.1;white-space:nowrap}
.din-terminal em:empty{display:none}
.din-terminal.top em{top:auto;bottom:100%;transform:translate(-50%,-1px)}
.din-terminal.used:not(.din-terminal-pair):not(.din-terminal-power):not(.din-terminal-link):not(.din-terminal-tree):not(.din-terminal-input):not(.din-terminal-rgbw){background:#a61722}
.din-terminal-power.used{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-link.used{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-plus24.used{background:#df4b35;border-color:#a84a35}
.din-terminal-gnd.used{background:#f4f6f8;border-color:#aab2ba}
.din-terminal-link-plus.used{background:#1f86c8;border-color:#0d5d90}
.din-terminal-link-minus.used{background:#f4f6f8;border-color:#aab2ba}
.din-terminal.used::after{content:"";position:absolute;inset:-2px;border:1px solid rgba(140,255,79,.6);border-radius:3px;pointer-events:none}
.din-terminal[data-wire-label]::before,.din-terminal[data-wire-label]::after{content:none}
.din-load-wire,.din-protection-wire{position:absolute;width:1px;height:52px;border-radius:0;pointer-events:none;box-shadow:0 0 0 1px rgba(255,255,255,.72);transform:translateX(-50%);z-index:5}
.din-load-wire{left:calc(50% + 4px);background:#8a4f22}
.din-load-wire-down{background:#111}
.din-load-wire-up{background:#8a4f22}
.din-protection-wire{left:calc(50% - 4px);background:#c62828}
.din-terminal.top .din-load-wire,.din-terminal.top .din-protection-wire{bottom:100%;margin-bottom:3px}
.din-terminal.bottom .din-load-wire,.din-terminal.bottom .din-protection-wire{top:100%;margin-top:3px}
.din-wire-label,.din-protection-label{position:absolute;width:max-content;max-width:120px;color:#000;background:transparent;border:0;border-radius:0;padding:0;font-size:7px;font-weight:400;line-height:1;white-space:nowrap;box-shadow:none;z-index:7;pointer-events:none;transform-origin:left center}
.din-wire-label{left:calc(50% + 8px)}
.din-protection-label{left:calc(50% - 8px)}
.din-terminal.top .din-wire-label,.din-terminal.top .din-protection-label{bottom:calc(100% + 10px);transform:rotate(-90deg)}
.din-terminal.bottom .din-wire-label,.din-terminal.bottom .din-protection-label{top:calc(100% + 10px);transform:rotate(90deg)}
.cabinet-bus-layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:3;pointer-events:none}
.cabinet-bus-layer path{fill:none;stroke-width:.65;stroke-linecap:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 .7px rgba(0,0,0,.8)) drop-shadow(0 0 2px rgba(255,255,255,1))}
.cabinet-bus-segment{stroke-width:.8}
.cabinet-power-bus.cabinet-twisted-a{stroke:#f07d21}
.cabinet-power-bus.cabinet-twisted-b{stroke:#fff;stroke-dasharray:2 1}
.cabinet-link-bus.cabinet-twisted-a{stroke:#1f86c8}
.cabinet-link-bus.cabinet-twisted-b{stroke:#fff;stroke-dasharray:2 1}
.cabinet-bus-drop{stroke-width:.45}
.cabinet-link-terminator{stroke:#111;stroke-width:1.1!important}
.cabinet-bus-note{position:absolute;top:92%;transform:translateX(-50%);background:#fff;color:#172116;border:1px solid #63715d;border-radius:3px;padding:2px 4px;font-size:8px;font-weight:900;z-index:3;white-space:nowrap;box-shadow:0 1px 4px rgba(21,31,18,.2);pointer-events:none}
.hide-cabinet-power .cabinet-power-bus{display:none}
.hide-cabinet-power .din-layer-power em{display:none}
.hide-cabinet-protection .din-layer-outputs .din-protection-wire,.hide-cabinet-protection .din-layer-outputs .din-protection-label{display:none}
.hide-cabinet-outputs .din-layer-outputs .din-load-wire,.hide-cabinet-outputs .din-layer-outputs .din-wire-label{display:none}
.hide-cabinet-tree .cabinet-tree-bus{display:none}
.hide-cabinet-tree .din-layer-tree em{display:none}
.hide-cabinet-link .cabinet-link-bus,.hide-cabinet-link .cabinet-link-terminator,.hide-cabinet-link .cabinet-link-bus-label{display:none}
.hide-cabinet-link .din-layer-link em{display:none}
.cabinet-device-row{grid-template-columns:64px 1fr auto auto;align-items:start}
.cabinet-device-row .cabinet-port-list{display:none;grid-column:1/-1;margin-top:8px;border-top:1px solid var(--line);padding-top:8px;gap:4px}
.cabinet-device-row.open .cabinet-port-list{display:grid}
.cabinet-module-list{gap:7px;margin-top:6px}
.cabinet-module-group{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}
.cabinet-module-group summary{display:grid;grid-template-columns:auto 1fr auto;gap:6px;align-items:center;padding:8px 9px;cursor:pointer}
.cabinet-module-group summary>span{font-size:12px;font-weight:800;line-height:1.2}
.cabinet-module-group summary>small{grid-column:2/3;color:var(--muted);font-size:10px;line-height:1.2}
.cabinet-module-group .cabinet-delete{grid-column:3;grid-row:1/span 2}
.cabinet-module-group.dragging{opacity:.45}
.cabinet-module-group.drop-target-row{outline:2px solid rgba(111,190,68,.55);background:#f0faeb}
.cabinet-module-group .cabinet-port-list{display:grid;margin:0;padding:8px;border-top:1px solid var(--line);gap:4px}
.cabinet-port-row{display:grid;grid-template-columns:54px 1fr;gap:7px;align-items:start;padding:5px 6px;background:#f7faf5;border:1px solid var(--line);border-radius:5px;font-size:11px}
.cabinet-port-row b{color:var(--green-dark)}
.cabinet-port-row span{color:#172116}
.cabinet-port-row.draggable-port{cursor:grab}
.cabinet-port-row.dragging{opacity:.45}
.cabinet-port-row.drop-target-row{outline:2px solid rgba(111,190,68,.55);background:#eef7e8}
.cabinet-port-list div{display:grid;grid-template-columns:76px 1fr;gap:8px;align-items:start;padding:4px 6px;background:#f7faf5;border:1px solid var(--line);border-radius:5px;font-size:11px}
.cabinet-port-list .cabinet-port-row{grid-template-columns:54px 1fr;padding:5px 6px}
.cabinet-port-list div b{color:var(--green-dark)}
.cabinet-port-list div span{color:#172116}
.cabinet-manual-note{display:grid;gap:4px;margin-top:4px}
.cabinet-manual-note textarea{width:100%;resize:vertical}

.totals { position: sticky; bottom: 0; margin-top: 18px; padding-top: 12px; background: var(--panel); border-top: 1px solid var(--line); }
.totals div, .offer-summary p { display: flex; justify-content: space-between; gap: 20px; margin-top: 8px; }
.grand { font-size: 18px; color: var(--green-dark); }
.install-settings{display:grid;gap:6px;font-size:12px}
.install-settings label{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#f7faf5;border:1px solid var(--line);border-radius:6px;padding:6px}
.install-settings .mini-field{width:78px}
.install-device-rate-list{display:grid;gap:5px;max-height:260px;overflow:auto}
.install-product-rate span{display:grid;gap:2px;min-width:0}
.install-product-rate strong{font-size:12px;line-height:1.15}
.install-product-rate small{font-size:10px;color:var(--muted)}
.install-product-rate em{font-style:normal;color:var(--muted);font-size:11px}
.install-empty{background:#f7faf5;border:1px solid var(--line);border-radius:6px;padding:8px;color:var(--muted)}
.install-custom-list{display:grid;gap:5px}
.install-custom-row{display:grid;grid-template-columns:1fr 54px 70px auto;gap:5px;align-items:center}
.install-custom-row input{min-width:0;padding:6px 7px}
.install-custom-row button{padding:6px 8px}

dialog { border: 0; border-radius: 8px; width: min(980px,calc(100vw - 32px)); padding: 0; box-shadow: var(--shadow); }
dialog::backdrop { background: rgba(13,20,11,.45); }
.account-dialog{width:min(820px,calc(100vw - 32px))}
.account-form{padding:24px}
.account-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:14px}
.account-dialog-head h2{margin:0 0 4px}
.account-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:18px}
.account-grid section{min-width:0}
.account-grid h3{margin:0 0 12px}
.account-grid .field{width:100%;margin-bottom:12px}
.account-license{margin-top:16px;padding:12px 14px;border:1px solid #9fc3dc;border-radius:8px;background:#edf6fc;color:#0b3553;font-weight:800}
.account-license.expired{border-color:#e0a6a6;background:#fff1f1;color:#a11d1d}
.account-actions{border-top:1px solid var(--line);margin-top:8px}
.legal-consent{display:flex;align-items:flex-start;gap:10px;margin:4px 0 14px;color:var(--muted);font-size:14px;line-height:1.45}
.legal-consent input{width:18px;height:18px;margin:2px 0 0;flex:0 0 auto;accent-color:var(--navy,#0b3553)}
.legal-consent a{color:#0b3553;font-weight:800}
.modal-form, .offer { padding: 24px; background: #fff; }
.client-offer-document{width:min(980px,calc(100vw - 72px));max-height:calc(100vh - 120px);overflow:auto;background:#f2f5f0;padding:0}
.offer-page{position:relative;min-height:1120px;background:#fff;color:#1c2428;padding:58px 70px 54px;box-sizing:border-box;page-break-after:always;overflow:hidden}
.offer-page:last-child{page-break-after:auto}
.offer-page h1{font-size:38px;line-height:1.08;margin:0 0 14px;color:#1f2730}
.offer-page h2{font-size:32px;line-height:1.12;margin:0 0 12px;color:#1f2730}
.offer-page h3{font-size:17px;margin:0 0 8px;color:#0b2d4a}
.offer-page p{font-size:14px;line-height:1.55;color:#62717b;margin:0 0 12px}
.offer-cover-page{display:grid;grid-template-columns:42% 58%;padding:0}
.offer-cover-left{background:linear-gradient(#0b2d4a 0 28%,#f4f7fb 28% 100%);padding:58px 54px;display:flex;flex-direction:column}
.offer-brand{display:block;background:#fff;padding:8px 10px;margin-bottom:74px;width:max-content}
.offer-brand-logo{width:148px;height:148px;object-fit:contain;display:block}
.offer-brand strong{font-size:17px;color:#0b2d4a}.offer-brand small{display:block;font-size:8px;color:#1f2730}
.offer-cover-title{font-size:44px;font-weight:900;letter-spacing:.5px;margin-bottom:22px;color:#10202a}
.offer-cover-subtitle{font-size:21px;line-height:1.3;font-weight:900;color:#10202a;max-width:280px}
.offer-cover-meta{margin-top:auto;display:grid;gap:22px}
.offer-meta-label{display:block;color:#748086;text-transform:uppercase;font-size:10px;font-weight:900;letter-spacing:.7px;margin-bottom:6px}
.offer-cover-meta strong{font-size:20px;color:#182017}
.offer-cover-visual{background:linear-gradient(135deg,#dfe8e8,#ffffff);position:relative;overflow:hidden}
.offer-cover-visual.has-plan{background-size:cover;background-position:center}
.offer-cover-visual:after{content:"";position:absolute;inset:auto -80px -80px 10%;height:46%;background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(111,190,68,.12));border-radius:42px;transform:rotate(-6deg)}
.offer-house-lines{position:absolute;inset:110px 70px auto auto;width:360px;height:300px;border:20px solid rgba(11,45,74,.16);border-top-width:42px;border-radius:6px;transform:skewX(-8deg)}
.offer-header{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:48px;border-bottom:1px solid #dbe3de;padding-bottom:22px}
.offer-header .offer-brand{margin:0;padding:4px 6px}.offer-header .offer-brand-logo{width:104px;height:104px}
.offer-page-number{position:absolute;right:70px;bottom:32px;color:#8a9690;font-size:11px}
.offer-contact{position:absolute;left:70px;bottom:32px;color:#8a9690;font-size:11px}
.offer-lead{font-size:17px!important;color:#66737b!important;max-width:720px}
.offer-three{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:34px 0}
.offer-feature{background:#f5f7f4;border-radius:8px;padding:20px;min-height:150px}
.offer-feature-num{display:grid;place-items:center;width:38px;height:38px;background:#0b2d4a;color:#fff;border-radius:50%;font-weight:900;margin-bottom:16px}
.offer-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:28px}
.offer-info-card{background:#f5f7f4;border-radius:8px;padding:22px}
.offer-info-card dl{display:grid;grid-template-columns:130px 1fr;gap:9px 18px;margin:0;font-size:13px}
.offer-info-card dt{font-weight:900;color:#66737b;text-transform:uppercase;font-size:10px}.offer-info-card dd{margin:0;font-weight:800;color:#1f2730}
.offer-scope-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:28px}
.offer-scope-item{background:#f5f7f4;border-radius:8px;padding:18px;display:flex;justify-content:space-between;gap:14px;align-items:center}
.offer-scope-item strong{font-size:15px}.offer-scope-item strong small{display:block;color:#66737b;font-size:11px;font-weight:700;margin-top:4px}.offer-scope-item span{font-size:28px;font-weight:900;color:#0b2d4a}
.offer-function-list{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:30px}
.offer-function{display:grid;grid-template-columns:42px 1fr;gap:15px;align-items:start}
.offer-function-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#0b2d4a;color:#fff;font-weight:900}
.offer-section-card{margin-top:14px;border-radius:8px;overflow:hidden;background:#f1f4f2}
.offer-section-head{display:flex;justify-content:space-between;gap:18px;background:#0d304e;color:#fff;padding:13px 18px;font-weight:900;text-transform:uppercase;font-size:13px}
.offer-section-head span:last-child{white-space:nowrap}
.offer-section-items{display:grid}
.offer-section-item{display:grid;grid-template-columns:1fr auto;gap:18px;padding:10px 18px;border-bottom:1px solid #fff;font-size:13px}
.offer-section-item small{display:block;color:#66737b;margin-top:2px}.offer-section-item strong{white-space:nowrap}
.offer-summary-box{margin:42px 0 0 auto;background:#0b2d4a;color:#fff;border-radius:10px;padding:26px 32px;width:330px}
.offer-summary-box h3{text-transform:uppercase;font-size:11px;color:#0b2d4a;letter-spacing:.5px}
.offer-summary-row{display:flex;justify-content:space-between;gap:20px;margin-top:12px;font-size:15px}.offer-summary-row strong{font-size:20px}
.offer-summary-box h3,.offer-summary-box .offer-summary-row span,.offer-summary-box .offer-summary-row strong{color:#fff}
.nice-offer-document .offer-cover-left{background:linear-gradient(#0b2d4a 0 28%,#f4f7fb 28% 100%)}
.nice-offer-document .offer-feature-num,.nice-offer-document .offer-function-icon,.nice-offer-document .offer-process-no,.nice-offer-document .offer-summary-box{background:#0b2d4a;color:#fff}
.nice-offer-document .offer-summary-box h3,.nice-offer-document .offer-scope-item span,.nice-offer-document .offer-process-percent,.nice-offer-document .offer-care-plan strong{color:#0b2d4a}
.nice-offer-document .offer-summary-box h3,.nice-offer-document .offer-summary-box .offer-summary-row span,.nice-offer-document .offer-summary-box .offer-summary-row strong{color:#fff}
.nice-offer-document .offer-section-head{background:#0b2d4a}
.nice-offer-document .offer-cover-visual:after{background:linear-gradient(135deg,rgba(255,255,255,.9),rgba(11,45,74,.16))}
.offer-process{display:grid;gap:18px;margin-top:30px}
.offer-process-step{display:grid;grid-template-columns:48px 80px 1fr;gap:18px;align-items:start}
.offer-process-no{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#0b2d4a;color:#fff;font-weight:900}
.offer-process-percent{font-size:28px;font-weight:900;color:#0b2d4a}
.offer-care{background:#f5f7f4;border-radius:10px;padding:22px;margin-top:24px}
.offer-care-plans{display:grid;grid-template-columns:1fr 1fr;gap:12px}.offer-care-plan{background:#fff;border-radius:8px;padding:16px}.offer-care-plan strong{display:block;font-size:22px;color:#0b2d4a;margin-top:6px}
.offer-fineprint{margin-top:28px;color:#66737b;font-size:12px;line-height:1.5}
table { width: 100%; border-collapse: collapse; margin-top: 10px; font-size: 13px; }
th, td { border-bottom: 1px solid var(--line); text-align: left; padding: 9px 6px; vertical-align: top; }
th { color: var(--muted); }
.offer-section-row td { background: #f0f6ec; color: #0b2346; border-top: 2px solid #d6e5ce; }
.offer-section-row td:first-child { display: table-cell; }
.offer-section-row span { color: var(--muted); font-size: 11px; margin-left: 8px; }
.offer-summary { max-width: 340px; margin-left: auto; margin-top: 18px; }
.dialog-actions { justify-content: flex-end; padding-top: 14px; }
@media(max-width:800px){.account-grid{grid-template-columns:1fr}.admin-user-row{grid-template-columns:1fr}.admin-user-actions{grid-column:auto}}
@media(max-width:900px){.landing-nav-actions>a{display:none}.landing-hero{min-height:620px}.landing-hero-overlay{background:rgba(5,26,43,.84)}.landing-features{grid-template-columns:1fr 1fr}.landing-proof{grid-template-columns:1fr 1fr}.landing-workflow,.landing-benefits{grid-template-columns:1fr;gap:40px}.landing-final-cta{align-items:flex-start;flex-direction:column}}
@media(max-width:600px){.landing-nav{height:auto;padding:14px 18px}.landing-brand span{display:none}.landing-nav-actions{gap:8px}.landing-nav-actions .button{padding:9px 10px}.landing-hero-content{margin-left:22px;width:calc(100% - 44px);padding:68px 0}.landing-hero h1{font-size:40px}.landing-hero p{font-size:18px}.landing-features{grid-template-columns:1fr;width:calc(100% - 36px)}.landing-proof{grid-template-columns:1fr}.landing-proof div{border-left:0;border-top:1px solid rgba(255,255,255,.2)}.landing-intro h2,.landing-workflow h2,.landing-benefits h2,.landing-final-cta h2{font-size:31px}.landing-footer{align-items:flex-start;flex-direction:column}}
.choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:8px 0 16px}
.choice-card{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:8px;background:#f7faf5;padding:12px;cursor:pointer}
.choice-card:has(input:checked){border-color:var(--green);box-shadow:0 0 0 2px rgba(111,190,68,.18) inset;background:#eef8e8}
.choice-card input{margin-top:3px;accent-color:var(--green)}
.choice-card strong{display:block;color:#142012}
.choice-card small{display:block;color:var(--muted);font-size:12px;line-height:1.3;margin-top:3px}

@media(max-width:1200px) {
  .workspace { grid-template-columns: 320px 1fr; height: auto; }
  .quote-panel { grid-column: 1/-1; border-left: 0; border-top: 1px solid var(--line); }
  .drop-zone { min-height: 520px; }
}
@media(max-width:760px) {
  .topbar, .toolbar { flex-direction: column; }
  .workspace { grid-template-columns: 1fr; }
  .panel { border-right: 0; border-bottom: 1px solid var(--line); }
  .drop-zone { min-height: 420px; margin: 10px; }
}
@media print {
  @page { size: A4; margin: 0; }
  body * { visibility: hidden; }
  #offerDocument, #offerDocument * { visibility: visible; }
  #offerDocument { position: absolute; inset: 0; width: 210mm; max-height:none; overflow:visible; padding: 0; background: #fff; box-shadow: none; }
  .offer-page{width:210mm;min-height:297mm;padding:18mm 18mm 14mm}
  .offer-cover-page{padding:0}
  .offer-cover-left{padding:18mm 14mm}
  .offer-header,.offer-section-card,.offer-feature,.offer-info-card,.offer-scope-item,.offer-process-step,.offer-care{break-inside:avoid}
  .dialog-actions { display: none; }
}

.marker::before,.marker::after,.din-device::before,.din-device::after{content:none!important}
.plan-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.button.active-tool{background:#dff2d5;color:#16360d;box-shadow:0 0 0 2px rgba(111,190,68,.25) inset}#roomLayer,#treeLayer,#scaleLayer{position:absolute;inset:0;pointer-events:none}#treeLayer{z-index:4}#treeLayer svg{width:100%;height:100%;display:block;overflow:visible}#markerLayer{position:absolute;inset:0;z-index:2}.room-rect{position:absolute;border:2px solid rgba(111,190,68,.9);background:rgba(111,190,68,.12);border-radius:4px;pointer-events:auto}.room-plan-label{position:absolute;left:4px;top:4px;background:#fff;color:#182017;border:1px solid var(--line);border-radius:4px;padding:2px 5px;font-size:11px;font-weight:800;line-height:1.2;max-width:180px;box-sizing:border-box}.room-plan-label:is(input){width:150px;pointer-events:auto}.room-plan-label:is(input):focus{outline:2px solid rgba(111,190,68,.45);outline-offset:1px}.room-rect.drawing{border-style:dashed}.scale-line{position:absolute;height:0;border-top:3px solid #182017;transform-origin:left center;pointer-events:none}.scale-line::before,.scale-line::after{content:"";position:absolute;top:-6px;width:2px;height:12px;background:#182017}.scale-line::before{left:0}.scale-line::after{right:0}.scale-label{position:absolute;background:#fff;border:1px solid var(--line);border-radius:5px;padding:2px 5px;font-size:11px;font-weight:800;transform:translate(-50%,-140%)}.room-line{display:flex;justify-content:space-between;gap:8px;align-items:center}.room-area{color:var(--muted);font-size:12px}.din-device{touch-action:none}.din-device.dragging{opacity:.45}.rail-slots.drop-target{outline:3px solid rgba(111,190,68,.32);outline-offset:2px}

.tool-mode-tabs{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.tool-mode{border:1px solid var(--line);border-radius:8px;background:#fff;padding:7px 11px;font-weight:900;cursor:pointer}
.tool-mode.active{background:var(--green);border-color:var(--green);color:#10250a}
.tool-hidden{display:none!important}
.right-mode-panel{display:none}
.right-mode-panel.active{display:block}
.input::before{inset:6px;border-radius:3px;border:2px solid #fff}
.input::after{content:"I";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:11px;font-weight:900}
.bus-room-row{background:#f7faf5;border-radius:5px;padding:5px}
.bus-device-row{padding-left:14px}
.bus-list-actions{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.bus-list-actions .button.active{background:var(--green);border-color:var(--green);color:#10250a}
.cable-view-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:7px}
.panel-subtitle{grid-column:1/-1;font-weight:900;color:var(--ink);margin:2px 0 0}
.advanced-layer-controls{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;background:#fff;margin-top:6px;overflow:hidden}
.advanced-layer-controls summary{cursor:pointer;font-weight:900;padding:8px 10px;background:#f7faf5}
.advanced-layer-body{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px}
.cable-estimate-settings{grid-column:1/-1;border:1px solid var(--line);border-radius:8px;background:#fff;margin-top:6px;overflow:hidden}
.cable-estimate-settings summary{cursor:pointer;font-weight:900;padding:8px 10px;background:#f7faf5}
.cable-estimate-grid{display:grid;gap:6px;padding:8px}
.cable-estimate-row{display:grid;grid-template-columns:minmax(82px,1fr) repeat(3,auto);gap:6px;align-items:center;font-size:11px}
.cable-estimate-row label{background:transparent;border:0;padding:0;gap:3px}
.cable-estimate-row .mini-field{width:56px;padding:4px 5px;font-size:11px}
.layer-controls>.inline-note{grid-column:1/-1;color:var(--muted);font-size:11px}
.cabinet-layer-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:12px}
.cabinet-layer-controls label{display:flex;align-items:center;gap:6px;background:#f7faf5;border:1px solid var(--line);border-radius:6px;padding:6px}
.cabinet-layer-controls .layer-actions{grid-column:1/-1}
.bus-row-hidden{display:none!important}
.bus-room-row.collapsed{background:#eef7e8}
.bus-room-actions{display:flex;align-items:center;gap:7px;white-space:nowrap}
.bus-room-refresh{font-size:16px;line-height:1}
.bus-room-toggle{white-space:nowrap}
.floor-item small{display:block;color:var(--muted);margin:4px 0 2px}
.floor-name-input{margin-top:6px}

.tool-hint{width:100%;color:var(--muted);font-size:12px;margin:2px 0 0}.top-actions{justify-content:flex-end}.top-actions .button{white-space:nowrap}
.room-poly{position:absolute;inset:0;pointer-events:auto}.room-poly svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.room-poly polygon{fill:rgba(111,190,68,.12);stroke:rgba(111,190,68,.9);stroke-width:.22;vector-effect:non-scaling-stroke}.room-poly .poly-label{position:absolute;background:#fff;color:#182017;border:1px solid var(--line);border-radius:4px;padding:2px 5px;font-size:11px;font-weight:800;transform:translate(4px,4px)}.poly-point{position:absolute;width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px #fff;transform:translate(-50%,-50%);pointer-events:none}.room-rect.editing,.room-poly.editing{outline:3px solid rgba(111,190,68,.35);outline-offset:3px}.marker .project-no{font-size:10px}.relay-output .symbol,.blind .symbol{background:#e07136}
.compact-select{width:190px;padding:7px 8px}.quick-product-tool{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.quick-product-tool .compact-select{width:320px;max-width:42vw}.quick-product-search{width:320px;max-width:42vw;padding:7px 8px}.mini-label{font-size:12px;color:var(--muted);font-weight:700;display:inline-flex;align-items:center;gap:4px}.compact-list{gap:5px}.compact-list .selected-item,.product-card{padding:7px}.compact-list .product-meta,.compact-list .product-actions,.product-card .product-meta,.product-card .product-actions{font-size:11px;margin-top:4px}.compact-list .field{padding:6px 8px}.room-group{border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden}.room-group summary{cursor:pointer;padding:8px 10px;font-weight:900;display:flex;justify-content:space-between;gap:8px}.room-group[open] summary{border-bottom:1px solid var(--line);background:#f7faf5}.room-devices{display:grid;gap:5px;padding:7px}.room-device{display:grid;grid-template-columns:42px 1fr auto;gap:6px;align-items:center;font-size:12px;border-bottom:1px solid #eef2eb;padding-bottom:5px}.room-device:last-child{border-bottom:0}.layer-controls{display:grid;grid-template-columns:1fr 1fr;gap:6px;font-size:12px}.layer-controls label{display:flex;align-items:center;gap:6px;background:#f7faf5;border:1px solid var(--line);border-radius:6px;padding:6px}.legend-icon.blind,.catalog-icon.blind,.marker.blind .symbol{background:#278be7}.legend-icon.relay-output,.catalog-icon.relay-output,.marker.relay-output .symbol{background:#f5b94b}.blind::before{inset:5px 4px 12px 4px;border-radius:2px}.blind::after{content:"";position:absolute;left:5px;right:5px;top:13px;height:2px;background:#fff;box-shadow:0 4px 0 #fff}.relay-output::before{inset:6px;border-radius:50%;}.relay-output::after{content:"";position:absolute;left:12px;top:5px;width:2px;height:9px;background:#fff;transform:rotate(35deg);transform-origin:bottom}.room-rect.selected-room,.room-poly.selected-room polygon{stroke:#1f7a14!important;stroke-width:3!important;fill:rgba(111,190,68,.2)!important}.toolbar{align-items:flex-start}.view-tabs{flex-wrap:nowrap}.tab-button{white-space:nowrap}.plan-tools{flex:1}.product-card{line-height:1.2}.product-title{margin-bottom:2px}

.marker.blind .symbol,.catalog-icon.blind,.legend-icon.blind{background:#278be7!important}.marker.relay-output .symbol,.catalog-icon.relay-output,.legend-icon.relay-output{background:#f0a808!important;color:#fff!important;opacity:1!important}.marker.relay-output .symbol{box-shadow:0 0 0 3px #fff,0 2px 10px rgba(0,0,0,.22)!important}.marker.relay-output .symbol::before,.catalog-icon.relay-output::before,.legend-icon.relay-output::before{border-color:#fff!important;opacity:1!important}.selected-item-active{box-shadow:0 0 0 2px rgba(111,190,68,.25) inset}
.marker .symbol.smoke,.catalog-icon.smoke,.legend-icon.smoke{background:#278be7!important;border-radius:50%}
.symbol.smoke::before,.catalog-icon.smoke::before,.legend-icon.smoke::before{inset:6px 4px 12px;border:0;border-top:2px solid #fff;border-radius:50%}
.symbol.smoke::after,.catalog-icon.smoke::after,.legend-icon.smoke::after{content:"";position:absolute;left:6px;right:6px;top:11px;height:2px;border-top:2px solid #fff;border-bottom:2px solid #fff;border-radius:50%}
.marker .symbol.thermostat,.catalog-icon.thermostat,.legend-icon.thermostat{background:#4bb7b0!important;border-radius:50%}
.symbol.thermostat::before,.catalog-icon.thermostat::before,.legend-icon.thermostat::before{inset:5px;border:2px solid #fff;border-radius:50%}
.symbol.thermostat::after,.catalog-icon.thermostat::after,.legend-icon.thermostat::after{content:"°";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:14px;font-weight:900;line-height:1}
.marker .symbol.valve,.catalog-icon.valve,.legend-icon.valve{background:#e07136!important;border-radius:6px}
.symbol.valve::before,.catalog-icon.valve::before,.legend-icon.valve::before{left:5px;right:5px;top:7px;bottom:7px;inset:auto;border:0;border-left:7px solid #fff;border-right:7px solid #fff;border-top:5px solid transparent;border-bottom:5px solid transparent}
.symbol.valve::after,.catalog-icon.valve::after,.legend-icon.valve::after{content:"";position:absolute;left:10px;right:10px;top:4px;bottom:4px;background:#fff;border-radius:2px}
.marker-inline-details{grid-column:1/-1;border:1px solid #d6e5ce;border-radius:8px;background:#fbfdf9;padding:8px;display:grid;gap:7px}
.marker-inline-details .inline-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.marker-inline-details .field{font-size:12px;padding:6px 8px}
.marker-inline-details textarea{min-height:58px}
.marker-inline-details .label{font-size:10px;margin:0 0 2px}
.marker-inline-details .marker-extra-details{display:none}
.marker-inline-details .marker-extra-details.active{display:grid;gap:6px}
.marker-inline-details .inline-note{font-size:11px;color:var(--muted)}
.scale-point{position:absolute;width:10px;height:10px;border-radius:50%;background:#182017;box-shadow:0 0 0 3px #fff;transform:translate(-50%,-50%);pointer-events:none}
.marker-guide{position:absolute;pointer-events:none;z-index:3;background:rgba(39,139,231,.7)}
.guide-vertical{top:0;bottom:0;width:1px;transform:translateX(-50%)}
.guide-horizontal{left:0;right:0;height:1px;transform:translateY(-50%)}
.spot-range{position:absolute;border:2px dashed rgba(240,168,8,.9);background:rgba(240,168,8,.1);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;z-index:2}
.tree-trunk,.tree-return{stroke:#1f7a14;stroke-width:.45;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:stroke;cursor:pointer}
.tree-return{stroke-dasharray:1.8 1}
.tree-branch{stroke:#58a83d;stroke-width:.24;stroke-dasharray:1 1;stroke-linecap:round;fill:none;pointer-events:stroke;cursor:pointer}
.tree-manual{stroke:#0d8f2e;stroke-width:.55;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:stroke;cursor:pointer}
.tree-manual-draft{stroke:#0d8f2e;stroke-width:.45;stroke-dasharray:1.4 1;stroke-linecap:round;fill:none;pointer-events:none}
.relay-wire{stroke:#f0a808;stroke-width:.32;stroke-dasharray:1.6 .9;stroke-linecap:round;fill:none;pointer-events:none}
.relay-wire-label{font-size:3.2px;font-weight:900;fill:#8a5200;paint-order:stroke;stroke:#fff;stroke-width:1}
.blind-wire{stroke:#1e88e5;stroke-width:.34;stroke-dasharray:1.7 .85;stroke-linecap:round;fill:none;pointer-events:none}
.blind-wire-label{font-size:3.2px;font-weight:900;fill:#004f99;paint-order:stroke;stroke:#fff;stroke-width:1}
.led-power-wire{stroke:#ff8a00;stroke-width:.3;stroke-dasharray:1.2 .75;stroke-linecap:round;fill:none;pointer-events:none}
.led-power-wire-label{font-size:3px;font-weight:900;fill:#8a5200;paint-order:stroke;stroke:#fff;stroke-width:1}
.signal-wire{stroke:#4f7ea8;stroke-width:.28;stroke-dasharray:1.1 .8;stroke-linecap:round;fill:none;pointer-events:none}
.signal-wire-label{font-size:3.2px;font-weight:900;fill:#254f73;paint-order:stroke;stroke:#fff;stroke-width:1}
.rack-wire{stroke:#7952b3;stroke-width:.34;stroke-dasharray:1.35 .75;stroke-linecap:round;fill:none;pointer-events:none}
.rack-wire-label{font-size:3.2px;font-weight:900;fill:#56398a;paint-order:stroke;stroke:#fff;stroke-width:1}
.camera-fov-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0}
.camera-fov-sector{fill:rgba(214,60,47,.13);stroke:rgba(214,60,47,.52);stroke-width:.22;stroke-dasharray:1.1 .8}
.camera-fov-sector.selected{fill:rgba(214,60,47,.2);stroke:rgba(214,60,47,.9);stroke-width:.34}
.camera-fov-handle{fill:#fff;stroke:#d63c2f;stroke-width:.38;cursor:grab;pointer-events:auto;filter:drop-shadow(0 0 1px rgba(255,255,255,.9))}
.camera-fov-handle:active{cursor:grabbing}
.camera-fov-handle-aim{fill:#d63c2f;stroke:#fff;stroke-width:.42}
.led-strip-line{stroke:#f0a808;stroke-width:.78;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:stroke;cursor:pointer;filter:drop-shadow(0 0 2px rgba(240,168,8,.35))}
.led-strip-line.selected{stroke:#ff7a00;stroke-width:.95}
.led-strip-draft{stroke:#f0a808;stroke-width:.45;stroke-dasharray:1.5 1;stroke-linecap:round;fill:none;pointer-events:none}
.led-strip-label{font-size:.82px;font-weight:900;fill:#b26b00;paint-order:stroke;stroke:#fff;stroke-width:.3;pointer-events:none}
.led-strip-handle{fill:#fff;stroke:#b26b00;stroke-width:.38;cursor:move;pointer-events:auto}
.led-strip-add{fill:#f0a808;stroke:#fff;stroke-width:.35;cursor:copy;pointer-events:auto}
.led-strip-add-label{font-size:2px;font-weight:900;fill:#fff;text-anchor:middle;pointer-events:none}
.curtain-line{stroke:#1e88e5;stroke-width:.82;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:stroke;cursor:pointer;filter:drop-shadow(0 0 2px rgba(30,136,229,.35))}
.curtain-line.selected{stroke:#005cb2;stroke-width:1}
.curtain-draft{stroke:#1e88e5;stroke-width:.45;stroke-dasharray:1.5 1;stroke-linecap:round;fill:none;pointer-events:none}
.curtain-handle{fill:#fff;stroke:#005cb2;stroke-width:.38;cursor:move;pointer-events:auto}
.curtain-add{fill:#1e88e5;stroke:#fff;stroke-width:.35;cursor:copy;pointer-events:auto}
.curtain-add-label{font-size:2px;font-weight:900;fill:#fff;text-anchor:middle;pointer-events:none}
.curtain-label{font-size:.82px;font-weight:900;fill:#005cb2;paint-order:stroke;stroke:#fff;stroke-width:.3;pointer-events:none}
.tree-selected-segment{stroke-width:.75!important;filter:drop-shadow(0 0 2px rgba(31,122,20,.45))}
.tree-label{font-size:2.2px;font-weight:900;fill:#16360d;paint-order:stroke;stroke:#fff;stroke-width:.7;stroke-linejoin:round}
.tree-source{fill:#1f7a14}.tree-warning{fill:#b26b00}
.tree-handle-line{stroke:rgba(31,122,20,.28);stroke-width:.15;stroke-dasharray:.6 .6;pointer-events:none}
.tree-control-handle{fill:#fff;stroke:#1f7a14;stroke-width:.35;cursor:grab;pointer-events:auto}
.tree-control-handle:active{cursor:grabbing}
.tree-add-point{fill:#1f7a14;stroke:#fff;stroke-width:.35;cursor:copy;pointer-events:auto}
.tree-add-label{font-size:2px;font-weight:900;fill:#fff;text-anchor:middle;pointer-events:none}
.tree-waypoint-handle{fill:#dff2d5;stroke:#1f7a14;stroke-width:.4;cursor:move;pointer-events:auto}
.tree-endpoint-handle{fill:#fff;stroke:#182017;stroke-width:.45;cursor:move;pointer-events:auto}
.tree-endpoint-start{fill:#dff2d5}.tree-endpoint-end{fill:#f6f0d8}
.tree-device-ring{fill:rgba(31,122,20,.08);stroke:#1f7a14;stroke-width:.35;pointer-events:none}
.tree-unconnected-ring{fill:rgba(245,185,75,.16);stroke:#b26b00;stroke-width:.45;stroke-dasharray:.7 .5;pointer-events:none}
.turbo-trunk,.turbo-return{stroke:#7d3cff;stroke-width:.45;stroke-linecap:round;stroke-linejoin:round;fill:none;pointer-events:stroke;cursor:pointer}
.turbo-return{stroke-dasharray:1.8 1}
.turbo-branch{stroke:#a56bff;stroke-width:.24;stroke-dasharray:1 1;stroke-linecap:round;fill:none;pointer-events:stroke;cursor:pointer}
.turbo-source{fill:#6b2fd8}
.turbo-device-ring{fill:rgba(125,60,255,.1);stroke:#7d3cff;stroke-width:.35;pointer-events:none}
.turbo-unconnected-ring{fill:rgba(125,60,255,.08);stroke:#7d3cff;stroke-width:.45;stroke-dasharray:.7 .5;pointer-events:none}
.marker.selected-marker .symbol{box-shadow:0 0 0 3px #182017,0 0 0 6px #fff,var(--shadow)}
.marker.selected-marker .project-no{border-color:#182017}
.cable-outlet-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.cable-outlet-line{stroke:#d63c2f;stroke-width:.34;stroke-dasharray:.85 .55;fill:none;vector-effect:non-scaling-stroke}
.cable-outlet-point{position:absolute;width:12px;height:12px;border-radius:999px;border:2px solid #fff;background:#d63c2f;color:#fff;transform:translate(-50%,-50%);display:block;font-size:0;box-shadow:var(--shadow);pointer-events:auto}
.cable-outlet-label{position:absolute;transform:translate(7px,-50%);background:#fff;border:1px solid var(--line);border-radius:5px;padding:1px 4px;font-size:9px;font-weight:800;color:#d63c2f;white-space:nowrap;box-shadow:0 2px 8px rgba(21,31,18,.08)}
.dimension-line{position:absolute;height:0;border-top:2px solid #182017;transform-origin:0 0;pointer-events:auto;cursor:move}
.dimension-line::before,.dimension-line::after{content:"";position:absolute;top:-5px;width:0;height:9px;border-left:2px solid #182017}
.dimension-line::before{left:0}.dimension-line::after{right:0}
.dimension-label{position:absolute;transform:translate(-50%,-120%);background:#fff;border:1px solid #182017;border-radius:5px;padding:2px 6px;font-size:10px;font-weight:900;color:#182017;white-space:nowrap;box-shadow:0 2px 8px rgba(21,31,18,.1);pointer-events:auto;cursor:text}
.dimension-point{position:absolute;width:10px;height:10px;border-radius:50%;background:#182017;border:2px solid #fff;transform:translate(-50%,-50%);box-shadow:0 1px 5px rgba(21,31,18,.25);pointer-events:auto;cursor:move}
.has-svg::before,.has-svg::after{content:none!important}
.has-svg img{width:17px;height:17px;display:block;filter:brightness(0) invert(1)}
.catalog-icon.has-svg img,.legend-icon.has-svg img{width:16px;height:16px}
.toolbar{display:block;padding:10px 16px 8px}
.toolbar-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.plan-tools{margin-top:8px;gap:6px;flex:none;flex-wrap:wrap;overflow:visible;padding-bottom:2px}
.plan-tools>*{flex:0 0 auto}
.plan-tools .button.small{padding:6px 8px}
.plan-tools .mini-label{padding:4px 0}
.plan-tools .compact-select{width:min(220px,100%)}
.tool-hint{margin-top:6px}
.view-tabs{flex-wrap:wrap}
.drop-zone{margin:10px 16px 16px}
.plan-wrap:fullscreen{background:#f5f7f3;width:100vw;height:100vh;overflow:auto;padding:0}
.plan-wrap:fullscreen .toolbar{position:sticky;top:0;z-index:20}
.plan-wrap:fullscreen .drop-zone{height:calc(100vh - 150px);min-height:620px;margin:10px 16px 16px}
.tree-delete-point{fill:#d63c2f;stroke:#fff;stroke-width:.35;cursor:pointer}
.tree-delete-label{fill:#fff;font-size:2.2px;font-weight:900;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
.bus-device-row[draggable="true"]{cursor:grab}
.bus-room-row[draggable="true"]{cursor:grab}
.bus-device-row.drop-target-row{outline:2px solid rgba(111,190,68,.55);background:#f0faeb}
.bus-room-row.drop-target-row{outline:2px solid rgba(111,190,68,.55);background:#f0faeb}
.bus-settings{display:grid;grid-template-columns:1fr 42px;gap:6px;margin:6px 0 8px}
.bus-settings .bus-topology-field{grid-column:1/-1;width:100%;min-height:32px}
.bus-settings .bus-color-field{width:42px;height:34px;padding:2px;border:1px solid var(--border);border-radius:8px;background:#fff}
.bus-visible-toggle{grid-column:1/-1;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:800;color:var(--muted)}
.layer-actions{grid-column:1/-1;display:flex;gap:6px;flex-wrap:wrap}
.cabinet-module-list{display:grid;gap:7px;margin-top:6px}
.cabinet-module-group summary{display:grid!important;grid-template-columns:auto 1fr auto;gap:6px;align-items:center;padding:8px 9px}
.cabinet-module-group summary>span{font-size:12px;font-weight:800;line-height:1.2}
.cabinet-module-group summary>small{grid-column:2/3;color:var(--muted);font-size:10px;line-height:1.2}
.cabinet-module-group .cabinet-delete{grid-column:3;grid-row:1/span 2}
.cabinet-module-group .cabinet-port-list{display:grid;gap:4px;margin:0;padding:8px;border-top:1px solid var(--line)}
.cabinet-port-list .cabinet-port-row{display:grid;grid-template-columns:54px 1fr;gap:7px;align-items:start;padding:5px 6px;background:#f7faf5;border:1px solid var(--line);border-radius:5px;font-size:11px}
.cabinet-port-row.draggable-port{cursor:grab}
.cabinet-module-group.dragging,.cabinet-port-row.dragging{opacity:.45}
.cabinet-module-group.drop-target-row,.cabinet-port-row.drop-target-row{outline:2px solid rgba(111,190,68,.55);background:#eef7e8}
.din-rgbw-face .din-terminal-single-screw{width:2%!important;min-width:4px!important;height:12px!important;border-radius:2px!important}
.din-rgbw-face .din-terminal-single-screw i{width:3px!important;height:3px!important}
.din-rgbw-face .din-terminal-single-screw em{font-size:6px!important}
.room-poly{pointer-events:none!important}
.room-poly polygon,.room-poly .room-plan-label,.room-poly .poly-label{pointer-events:auto}
.room-poly polygon{fill:rgba(111,190,68,.12)!important;stroke:rgba(111,190,68,.9)!important;stroke-width:2px!important;vector-effect:non-scaling-stroke}
.room-poly.selected-room polygon{stroke:#1f7a14!important;stroke-width:3px!important;fill:rgba(111,190,68,.2)!important}
#addRelayOutputButton{display:none!important}
#treeBusButton,#treeTurboButton{display:none!important}
.offer-plan-page .p-plan{position:relative;border:1px solid #cfdcc9;overflow:hidden;background:#fff;margin-top:20px}
.offer-plan-page .p-plan.has-image>img,.offer-plan-page .p-plan.has-image>object{width:100%;height:auto;display:block;border:0}.offer-plan-page .p-plan.no-image{height:560px}.offer-plan-page .p-empty{height:100%;display:grid;place-items:center;color:#667064}
.offer-plan-page .p-room{position:absolute;border:1.5px solid rgba(111,190,68,.95);background:transparent;border-radius:4px}.offer-plan-page .p-room span,.offer-plan-page .p-label{position:absolute;background:#fff;border:1px solid #dfe6dc;border-radius:4px;padding:2px 5px;font-size:9px;font-weight:800}.offer-plan-page .p-room span{left:4px;top:4px}
.offer-plan-page .p-poly,.offer-plan-page .p-led-strip,.offer-plan-page .p-note-lines{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.offer-plan-page .p-poly polygon{fill:rgba(111,190,68,.12);stroke:rgba(111,190,68,.95);stroke-width:1.5px;vector-effect:non-scaling-stroke}.offer-plan-page .p-led-strip path{stroke:#f0a808;stroke-width:3px;fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.offer-plan-page .p-linear-label{position:absolute;transform:translate(-50%,-50%);background:#fff;color:#182017;border-radius:3px;padding:1px 4px;font-size:8px;font-weight:800;box-shadow:0 0 0 1px #fff,0 0 0 2px #dfe6dc;white-space:nowrap}.offer-plan-page .p-linear-label.led{color:#b26b00}.offer-plan-page .p-linear-label.curtain{color:#005cb2}
.offer-plan-page .p-marker{position:absolute;transform:translate(-50%,-50%);width:20px;height:20px;border-radius:7px;background:#f0a808;display:grid;place-items:center;box-shadow:0 0 0 2px #fff;color:#fff}.offer-plan-page .p-marker em{font-style:normal;font-size:11px;font-weight:900;line-height:1}.offer-plan-page .p-marker.control{background:#6fbe44}.offer-plan-page .p-marker.motion,.offer-plan-page .p-marker.smoke{background:#278be7;border-radius:50%}.offer-plan-page .p-marker.blind{background:#278be7}.offer-plan-page .p-marker.relay-output{background:#f5b94b}.offer-plan-page .p-marker.camera{background:#d63c2f}.offer-plan-page .p-marker.rack{background:#58616b}.offer-plan-page .p-marker.network{background:#1377b8}.offer-plan-page .p-marker.climate,.offer-plan-page .p-marker.actuator{background:#e07136}.offer-plan-page .p-marker.thermostat{background:#4bb7b0}.offer-plan-page .p-marker.valve{background:#e07136}
.offer-plan-page .p-marker span{position:absolute;top:18px;background:#fff;color:#182017;border-radius:3px;padding:1px 3px;font-size:8px;font-weight:800;display:grid;gap:0;line-height:1.05;text-align:center;white-space:nowrap}.offer-plan-page .p-marker span small{font-size:7px;font-weight:800;color:#667064}.offer-plan-page .p-note-lines path{fill:none;stroke:#182017;stroke-width:.14;stroke-dasharray:.7 .55;vector-effect:non-scaling-stroke}.offer-plan-page .p-marker-note-box{position:absolute;transform:translate(-50%,0);background:rgba(255,255,255,.94);color:#182017;border:1px solid #9fac99;border-radius:3px;padding:1px 4px;font-size:7.2px;font-weight:900;line-height:1.05;text-align:center;white-space:normal;z-index:5}
.offer-plan-page .p-legend{display:flex;flex-wrap:wrap;gap:5px 10px;align-items:center;margin:8px 0 6px;font-size:8.5px}.offer-plan-page .p-legend b{font-size:9px;margin-right:2px}.offer-plan-page .p-legend span{display:inline-flex;align-items:center;gap:4px}.offer-plan-page .p-legend-dot{width:9px;height:9px;border-radius:3px;background:var(--legend-color);display:inline-block;box-shadow:0 0 0 1px #fff,0 0 0 1.5px #dfe6dc}.offer-plan-page .p-legend-line{width:18px;border-top:2px solid var(--legend-color);display:inline-block}
.offer-plan-page .p-symbol-table{width:100%;border-collapse:collapse;margin:6px 0 5px;font-size:8.5px}.offer-plan-page .p-symbol-table th,.offer-plan-page .p-symbol-table td{border:1px solid #dfe6dc;padding:3px 5px;text-align:left}.offer-plan-page .p-symbol-table th{background:#eef7e8}.offer-plan-page .p-symbol-table td:first-child{width:70px;text-align:center}
