:root{--bg:#f4f6fb;--card:#fff;--ink:#1b2236;--muted:#6b7489;--line:#dde2ec;--accent:#3d5afe;--accent-ink:#fff;--night:#0f1530;--danger:#d43c3c;--warn-bg:#fff6e0;--warn-line:#f0c36d;--k-main_light:#f5b400;--k-sconce:#ff7a45;--k-led_strip:#b44dff;--k-light_other:#e6c86e;--k-blind:#1e88e5;--k-curtain:#00acc1;--k-socket:#43a047;--k-binary_input:#8d6e63;--k-other:#78909c;color:var(--ink);background:var(--bg);font-family:system-ui,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}h1,h2,h3,h4{margin:0 0 .5rem}h2{font-size:1.3rem}h3{margin-top:1rem;font-size:1.05rem}.card h3{margin-top:0}h4{font-size:.95rem}button,.file-btn{font:inherit;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:6px;align-items:center;gap:.3rem;padding:.35rem .75rem;display:inline-flex}button:hover:not(:disabled),.file-btn:hover{border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary,.file-btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}button.danger{color:var(--danger)}button.icon{padding:.15rem .45rem}input,select,textarea{font:inherit;border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:5px;padding:.3rem .45rem}input[type=checkbox]{width:auto}.invalid{background:#fff0f0;border-color:var(--danger)!important}label{color:var(--muted);flex-direction:column;gap:.2rem;margin-bottom:.5rem;font-size:.85rem;display:flex}label>input,label>select,label>textarea{color:var(--ink)}label.check,label.inline{flex-direction:row;align-items:center;gap:.4rem}label.inline{margin:0}.cards label>input:not([type=checkbox]),.cards label>select{width:100%}.app-header{background:radial-gradient(ellipse at 20% 0%, #26326e 0%, var(--night) 70%);color:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.brand{align-items:center;gap:.7rem;display:flex}.brand h1{letter-spacing:.08em;margin:0;font-size:1.4rem}.brand small{color:#aab4dd}.logo{color:#ffd76a;text-shadow:0 0 12px #ffd76a88;font-size:1.8rem}.project-bar{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.project-bar button{color:#fff;background:0 0;border-color:#ffffff40}.project-name{color:#fff;background:#ffffff14;border-color:#ffffff40;min-width:14rem}.tabs{border-bottom:1px solid var(--line);background:#fff;gap:.25rem;padding:0 1.25rem;display:flex;overflow-x:auto}.tabs button{white-space:nowrap;border:none;border-bottom:3px solid #0000;border-radius:0;padding:.75rem .9rem}.tabs button.active{border-bottom-color:var(--accent);color:var(--accent);font-weight:600}.badge{color:#fff;background:#f0a500;border-radius:999px;padding:0 .4rem;font-size:.7rem}main{max-width:1600px;margin:0 auto;padding:1rem 1.25rem 3rem}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:.9rem;padding:.85rem 1rem}.card.warn{background:var(--warn-bg);border-color:var(--warn-line)}.cards{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.9rem;display:grid}.row{align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.row>label{margin-bottom:0}.gap{gap:.6rem}.gap-s{gap:.3rem}.spacer{flex:1}.muted{color:var(--muted)}.small{font-size:.8rem}.hint{color:var(--muted);font-size:.85rem;line-height:1.4}.empty{color:var(--muted);text-align:center;background:var(--card);border:1px dashed var(--line);border-radius:10px;padding:2rem}.mono{font-family:ui-monospace,Consolas,monospace;font-size:.85em}.center{text-align:center}.nowrap{white-space:nowrap}ul.plain{padding:0;list-style:none}.chips{flex-wrap:wrap;gap:.3rem;display:flex}.chip{border-left:4px solid var(--k,#aaa);background:#eef0f6;border-radius:999px;padding:.1rem .5rem;font-size:.75rem}.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow-x:auto}table.grid{border-collapse:collapse;width:100%}table.grid th,table.grid td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:.3rem .45rem}table.grid th{color:var(--muted);background:#f8f9fc;font-size:.78rem;font-weight:600;position:sticky;top:0}table.grid.compact td{padding:.18rem .4rem;font-size:.85rem}tr.free td{opacity:.55}.w-name{width:100%;min-width:15rem}.w-num{width:5rem}.kind-main_light{--k:var(--k-main_light)}.kind-sconce{--k:var(--k-sconce)}.kind-led_strip{--k:var(--k-led_strip)}.kind-light_other{--k:var(--k-light_other)}.kind-blind{--k:var(--k-blind)}.kind-curtain{--k:var(--k-curtain)}.kind-socket{--k:var(--k-socket)}.kind-binary_input{--k:var(--k-binary_input)}.kind-other{--k:var(--k-other)}select[class*=kind-]{border-left:5px solid var(--k)}.dot{background:var(--k,#999);vertical-align:middle;border-radius:50%;width:.7rem;height:.7rem;display:inline-block}.stats{flex-wrap:wrap;gap:.6rem;margin-bottom:.5rem;display:flex}.stat{background:var(--card);border:1px solid var(--line);border-radius:10px;flex-direction:column;min-width:7rem;padding:.5rem 1rem;display:flex}.stat b{font-size:1.4rem}.stat span{color:var(--muted);font-size:.8rem}.rcd-grid,.module-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:.9rem;display:grid}.rcd h4 small,.module h4 small{color:var(--muted);font-weight:400}.fuse{border-left:4px solid var(--accent);background:#f8f9fc;border-radius:0 6px 6px 0;margin:.4rem 0;padding:.3rem .6rem}.fuse.group-motor{border-left-color:var(--k-blind)}.fuse.group-socket{border-left-color:var(--k-socket)}.fuse.group-other{border-left-color:var(--k-other)}.fuse.group-lighting{border-left-color:var(--k-main_light)}.fuse ul{margin:.2rem 0 0;padding-left:.2rem;font-size:.85rem;list-style:none}.occ{align-items:center;gap:.4rem;font-size:.8rem;display:inline-flex}.occ-bar{background:#e8ebf2;border-radius:3px;width:60px;height:6px;display:inline-block;overflow:hidden}.occ-bar span{background:var(--accent);height:100%;display:block}.cabinet{background:#d9dde6;border:2px solid #9aa3b5;border-radius:8px;flex-direction:column;gap:.7rem;padding:.6rem .6rem .6rem 2rem;display:flex}.rail{background:repeating-linear-gradient(0deg,#0000 0 30px,#b6bcc9 30px 40px,#0000 40px 70px);gap:1px;min-height:70px;display:grid;position:relative}.rail-no{color:var(--muted);font-size:.8rem;position:absolute;top:50%;left:-1.5rem;transform:translateY(-50%)}.din{text-align:center;background:#fdfdfd;border:1px solid #8f98ab;border-radius:3px;justify-content:center;align-items:center;padding:2px;font-size:.68rem;line-height:1.1;display:flex;overflow:hidden}.din span{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.din-rcd{background:#e3ecff}.din-fuse{writing-mode:vertical-rl;background:#f4f4f4;font-size:.6rem}.din-module{background:#fffbe6}.din-psu{background:#e8f5e9}.din-terminals{color:#111;background:repeating-linear-gradient(90deg,#c9ccd3 0 3px,#9aa0ad 3px 4px);font-weight:600}.din-terminals span{background:#fffc;border-radius:3px;padding:0 .3rem}.pdf-layout{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:.9rem;display:grid}.pdf-view{border:1px solid var(--line);background:#e7eaf1;border-radius:10px;min-height:400px;max-height:calc(100vh - 220px);overflow:auto}.pdf-stage{position:relative}.pdf-stage canvas{background:#fff;display:block}.overlay{-webkit-user-select:none;user-select:none;touch-action:none;width:100%;height:100%;position:absolute;inset:0}.overlay.mode-template,.overlay.mode-add,.overlay.mode-room{cursor:crosshair}.overlay.mode-delete .det{cursor:not-allowed}.overlay.mode-select .det{cursor:pointer}.det{fill:color-mix(in srgb, var(--k) 25%, transparent);stroke:var(--k);stroke-width:1px;vector-effect:non-scaling-stroke}.det.sel{stroke:#000;stroke-width:3px}.tpl-rect{fill:none;stroke:#e91e63;stroke-dasharray:4 2;vector-effect:non-scaling-stroke}.drag-rect{fill:#3d5afe22;stroke:var(--accent);vector-effect:non-scaling-stroke}.room-label circle{fill:#e91e63}.room-zone{fill:#e91e6310;stroke:#e91e63;stroke-dasharray:6 3;vector-effect:non-scaling-stroke;pointer-events:none}.room-label text{fill:#c2185b;paint-order:stroke;stroke:#fff;stroke-width:2px;pointer-events:none;font-size:9px;font-weight:700}.pdf-side .card button{margin:0 .3rem .4rem 0}.seg{display:inline-flex}.seg button{border-radius:0;margin-left:-1px}.seg button:first-child{border-radius:6px 0 0 6px}.seg button:last-child{border-radius:0 6px 6px 0}.seg button.active{background:var(--accent);color:#fff;border-color:var(--accent)}.status{background:#eef2ff;border-radius:6px;margin-bottom:.6rem;padding:.4rem .8rem}.status.busy:before{content:"⏳ "}.templates{flex-direction:column;gap:.35rem;margin-bottom:.6rem;display:flex}.tpl{border-left:4px solid var(--k);align-items:center;gap:.4rem;padding-left:.4rem;display:flex}.tpl img{object-fit:contain;border:1px solid var(--line);background:#fff;width:40px;height:40px}.tpl select{flex:1}.legend{flex-wrap:wrap;gap:.6rem;margin:.5rem 0;font-size:.78rem;display:flex}.rules summary{cursor:pointer;margin:.4rem 0}.rule{align-items:center;gap:.3rem;margin-bottom:.3rem;display:flex}.rule input:not([type=checkbox]){flex:1;min-width:0}.rule select{width:8.5rem}.rules textarea{width:100%;font-family:ui-monospace,Consolas,monospace;font-size:.75rem}@media (width<=1000px){.pdf-layout{grid-template-columns:1fr}}@media print{.no-print,.tabs,button{display:none!important}body,:root{background:#fff}main{padding:0}.card,.table-wrap{break-inside:avoid}}
