/* ── Base: modals ── */
.modal{background:var(--bg-surface);border:1px solid var(--border);border-radius:14px;
  max-width:96vw;max-height:88vh;display:flex;flex-direction:column;box-shadow:var(--shadow-lg)}
.modal-head{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;
  align-items:center;gap:10px;flex-shrink:0}
.modal-head h3,.modal-head .modal-title{font-size:13px;font-weight:700;color:var(--text-bright)}
.modal-body{flex:1;overflow-y:auto;padding:14px 18px}
.modal-foot{padding:12px 18px;border-top:1px solid var(--border);display:flex;
  justify-content:flex-end;gap:8px;flex-shrink:0}

/* ── Base: tables ── */
.tbl{width:100%;border-collapse:collapse;font-size:11px}
.tbl th{padding:5px 8px;text-align:left;font-size:9px;font-weight:600;color:var(--text-muted);
  text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);
  background:var(--bg-surface);position:sticky;top:0;white-space:nowrap}
.tbl td{padding:6px 8px;border-bottom:1px solid var(--row-border);vertical-align:middle}
.tbl tbody tr:hover td{background:var(--row-hover)}

/* ── generic modal (#modal) ── */
#modal-bg{position:fixed;inset:0;background:var(--overlay-heavy);z-index:var(--z-modal-bg);
          display:flex;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
#modal-bg.hidden{display:none}
#modal{border-radius:12px;padding:22px 24px;width:420px;max-width:90vw}
#modal h3{font-size:14px;font-weight:600;color:var(--text-bright);margin-bottom:14px}
.mbtn-row{/* uses modal-foot base */}

/* ── help modal ── */
#help-modal{position:fixed;inset:0;z-index:var(--z-help);display:flex;align-items:center;justify-content:center}
.help-backdrop{position:absolute;inset:0;background:var(--overlay-heavy);backdrop-filter:blur(4px)}
.help-content{position:relative;width:min(1100px,94vw);max-height:90vh;overflow-y:auto;
  background:var(--bg-inset);border:1px solid var(--border-subtle);border-radius:14px;padding:40px 48px;
  box-shadow:var(--shadow-lg);color:var(--text-light);line-height:1.65;font-size:14px;
  scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.help-content::-webkit-scrollbar{width:6px}
.help-content::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}
.help-close{position:sticky;top:0;float:right;background:none;border:none;color:var(--text-secondary);
  font-size:28px;cursor:pointer;padding:0 4px;line-height:1;z-index:var(--z-base)}
.help-close:hover{color:var(--edit-hover-color)}
.help-content h1{font-size:26px;color:var(--text-bright);margin-bottom:6px;letter-spacing:-.5px}
.help-subtitle{color:var(--text-muted);font-size:14px;margin-bottom:28px;border-bottom:1px solid var(--border-subtle);padding-bottom:16px}
.help-toc{background:var(--bg-elevated);border-radius:10px;padding:16px 24px;margin-bottom:28px}
.help-toc h3{color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}
.help-toc ol{columns:2;column-gap:24px;padding-left:20px;margin:0}
.help-toc li{color:var(--text-secondary);font-size:13px;margin-bottom:3px;break-inside:avoid}
.help-toc a{color:var(--accent-light);text-decoration:none}
.help-toc a:hover{text-decoration:underline}
.help-content h2{color:var(--text-bright);font-size:18px;margin:32px 0 12px;padding-top:16px;border-top:1px solid var(--border-subtle)}
.help-content h2:first-of-type{border-top:none}
.help-content h3{color:var(--text);font-size:15px;margin:16px 0 8px}
.help-content h4{color:var(--text-bright);font-size:14px;margin:0 0 8px}
.help-content section{margin-bottom:8px}
.help-content table{width:100%;border-collapse:collapse;margin:8px 0 12px}
.help-content td{padding:6px 10px;border:1px solid var(--border-subtle);vertical-align:top;font-size:13px}
.help-content td:first-child{white-space:nowrap;color:var(--text);font-weight:500;width:180px}
.help-content ul,.help-content ol{padding-left:22px;margin:6px 0}
.help-content li{margin-bottom:4px}
.help-content p{margin:6px 0}
.help-content code{background:var(--bg-elevated);color:var(--accent-light);padding:2px 6px;border-radius:4px;font-size:12.5px}
.help-key{display:inline-block;background:var(--bg-elevated);color:var(--text-secondary);padding:1px 6px;border-radius:3px;font-size:12px;font-weight:600}
.help-ai-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:12px 0}
.help-ai-card{background:var(--bg-elevated);border-radius:10px;padding:16px;border:1px solid var(--border-strong)}
.help-ai-card--highlight{grid-column:1/-1;background:linear-gradient(135deg,var(--bg-elevated),var(--bg-accent-subtle));border-color:var(--accent-dark)}
.help-prompt{margin:6px 0}
.help-prompt code{display:block;background:var(--bg-inset);color:var(--accent-muted);padding:8px 12px;border-radius:6px;
  font-size:12.5px;line-height:1.5;border-left:3px solid var(--accent-muted);white-space:pre-wrap}
.help-ai-card p{font-size:13px;color:var(--text-secondary);margin:4px 0 8px}
.help-ai-card ul{margin:8px 0 0;padding-left:18px}
.help-ai-card li{font-size:13px;color:var(--text-secondary);margin-bottom:4px}
.help-footer{text-align:center;color:var(--text-dim);font-size:12px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border-subtle)}
@media(max-width:700px){.help-ai-grid{grid-template-columns:1fr}.help-toc ol{columns:1}.help-content{padding:24px 20px}}

/* ── SVG preview modal ── */
#svg-preview-bg{position:fixed;inset:0;background:var(--overlay-heavy);z-index:var(--z-toast);
  display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
#svg-preview-bg.hidden{display:none}
#svg-preview{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;
  display:flex;flex-direction:column;width:92vw;height:90vh;max-width:1500px;
  box-shadow:var(--shadow-lg);overflow:hidden}
#svg-preview-head{display:flex;align-items:center;justify-content:space-between;
  padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg-surface)}
#svg-preview-title{font-size:12px;font-weight:600;color:var(--text-secondary);letter-spacing:.04em}
#svg-preview-meta{display:flex;align-items:center;gap:10px;padding:6px 14px;
  border-bottom:1px solid var(--border);background:var(--bg-inset);flex-shrink:0;flex-wrap:wrap}
#svg-preview-meta label{font-size:10px;color:var(--text-muted);display:flex;align-items:center;gap:4px}
.svg-meta-notes-lbl{flex:1;min-width:160px;flex-direction:row!important;align-items:center!important}
#svg-meta-apply{margin-left:auto;flex-shrink:0}
#svg-preview-actions{display:flex;gap:7px;align-items:center}
.spbtn{padding:6px 12px;font-size:11px;border-radius:6px;border:1px solid var(--border);
  background:var(--bg-panel);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;gap:5px;transition:all .12s}
.spbtn svg.lucide{width:12px;height:12px}
.spbtn:hover{color:var(--text);border-color:var(--text-dim)}
.spbtn-dl{background:var(--bg-accent-subtle);color:var(--accent-light);border-color:var(--accent-dark)}
.spbtn-dl:hover{background:var(--bg-accent-strong)}
.spbtn-close{padding:6px 8px;color:var(--text-dim)}
.spbtn-close:hover{color:var(--danger);border-color:var(--danger-border)}
.sp-ab-btn{font-weight:700;min-width:28px;justify-content:center}
.sp-ab-btn.sp-ab-active{background:var(--bg-accent-subtle);color:var(--accent-light);border-color:var(--accent-dark)}
.sp-zoom{display:flex;align-items:center;gap:2px;margin-right:8px;border:1px solid var(--border);border-radius:6px;padding:2px 4px;background:var(--bg-inset)}
.sp-zoom-btn{padding:4px 6px!important;border:none!important;background:transparent!important;min-width:24px;justify-content:center}
.sp-zoom-btn:hover{color:var(--accent-light)!important}
.sp-zoom-real{font-size:10px!important;font-weight:700;letter-spacing:-.3px}
#sp-zoom-pct{font-size:11px;color:var(--text-secondary);min-width:42px;text-align:center;user-select:none}
#svg-preview-body{flex:1;overflow:hidden;display:flex;flex-direction:column;background:#e8edf2}
#svg-preview-scroll{flex:1;overflow:auto;padding:24px}
#svg-preview-content{background:#fff;box-shadow:0 4px 32px rgba(0,0,0,.25);border-radius:4px;overflow:hidden;
  transform-origin:0 0;display:inline-block}
#svg-preview-content svg{display:block}
.sp-print-wrap{position:relative}
.sp-print-menu{position:absolute;top:100%;right:0;margin-top:4px;background:var(--bg-panel);border:1px solid var(--border);
  border-radius:8px;padding:4px;z-index:var(--z-chrome);min-width:160px;box-shadow:0 8px 24px rgba(0,0,0,.6)}
.sp-print-menu.hidden{display:none}
.sp-print-menu button{display:block;width:100%;text-align:left;padding:7px 12px;font-size:11px;
  color:var(--text-secondary);background:transparent;border:none;border-radius:4px;cursor:pointer}
.sp-print-menu button:hover{background:var(--bg-hover);color:var(--text)}

/* ── add connector modal ── */
.ac-overlay{position:fixed;inset:0;background:var(--overlay-heavy);z-index:var(--z-ac-overlay);
            display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.ac-modal{border-radius:12px;width:min(96vw,1100px)}
.ac-head{justify-content:space-between}
.ac-close{background:transparent;border:none;color:var(--text-muted);cursor:pointer;
          font-size:15px;padding:2px 7px;border-radius:4px;line-height:1}
.ac-close:hover{color:var(--danger);background:var(--danger-bg)}
.ac-body{display:flex;flex-direction:column;gap:12px}
.ac-top{display:flex;gap:8px;align-items:flex-end;flex-wrap:nowrap}
.ac-field-group{display:flex;gap:8px;align-items:flex-end}
.ac-field{display:flex;flex-direction:column;gap:3px}
.ac-note-row{flex:1 1 100%}
.ac-field label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.ac-from-lib-btn{background:var(--bg-accent-subtle) !important;border-color:var(--accent-dark) !important;color:var(--accent-muted) !important}
.ac-from-lib-btn:hover{background:var(--accent-dark) !important;color:var(--text-bright) !important}
.ac-st{max-width:150px}
.ac-pins-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px}
.ac-pin-table th{padding:6px 7px;color:var(--text-faint);background:var(--bg-panel)}
.ac-pin-table td{padding:4px 5px;border-bottom-color:var(--border-light);vertical-align:top}
.ac-pnum{font-size:10px;font-weight:700;color:var(--text-muted);text-align:center;
         width:26px;padding-top:7px !important}
.ac-gen-btn{padding:4px 13px;font-size:11px;border:1px solid var(--bg-accent-strong);border-radius:6px;
            background:var(--bg-accent-subtle);color:var(--accent-light);cursor:pointer;white-space:nowrap;
            height:28px;display:inline-flex;align-items:center;gap:4px}
.ac-gen-btn:hover{background:var(--bg-accent-strong)}
.ac-connects{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.ac-conn-row{display:flex;gap:8px;align-items:center}
.ac-conn-row .ac-cto{flex:1;min-width:0}
.ac-conn-row .ac-cpin{flex:1;min-width:0}
.ac-rm-conn{background:var(--bg-panel);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;
            width:30px;height:30px;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center}
.ac-rm-conn:hover{color:var(--danger);border-color:var(--danger);background:var(--bg-surface)}
.ac-add-conn{width:100%;padding:8px;font-size:11px;border:1px dashed var(--border);border-radius:6px;
             background:transparent;color:var(--text-muted);cursor:pointer;margin-top:6px}
.ac-add-conn:hover{border-color:var(--accent);color:var(--accent-light)}
.ac-foot{/* uses modal-foot base */}

/* ── Shared library dot (color swatch in pickers and assign confirm) ── */
.ac-lib-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
/* shared hint text inside confirm action buttons */
.ac-lib-confirm-hint{color:var(--text-muted);font-size:10px;font-weight:400;margin-left:auto}

/* ── Connector assign-confirm panel (inline, top of .ac-body, edit mode) ── */
.ac-assign-confirm{
  background:var(--bg-inset);border-bottom:1px solid var(--border-subtle);
  padding:10px 14px;display:flex;flex-direction:column;gap:8px;
  border-radius:8px 8px 0 0;margin:-16px -16px 12px -16px}
.ac-assign-hdr{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ac-assign-hdr strong{color:var(--text-bright);font-size:13px}
.ac-assign-meta{color:var(--text-muted);font-size:11px;flex:1;min-width:0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ac-assign-x{margin-left:auto;background:none;border:none;cursor:pointer;
  color:var(--text-muted);padding:2px;border-radius:4px;display:flex;align-items:center}
.ac-assign-x:hover{color:var(--text-bright);background:var(--bg-hover)}
.ac-assign-x svg.lucide{width:14px;height:14px}
.ac-assign-warn{font-size:11px;color:#fbbf24;background:rgba(251,191,36,.08);
  border:1px solid rgba(251,191,36,.25);border-radius:6px;padding:5px 10px;line-height:1.4}
.ac-assign-warn b{color:#fde68a}
.ac-assign-actions{display:flex;gap:6px;flex-wrap:wrap}
.ac-assign-actions .mbtn{display:flex;align-items:center;gap:6px;
  padding:6px 11px;font-size:12px;flex:1;min-width:120px;justify-content:center}
.ac-assign-actions .mbtn svg.lucide{width:13px;height:13px;flex-shrink:0}
.ac-assign-actions .ac-lib-confirm-hint{color:var(--text-muted);font-size:10px;
  font-weight:400;white-space:nowrap}
.ac-assign-actions .mbtn.ok .ac-lib-confirm-hint{color:rgba(255,255,255,.7)}

/* ── Wire edit modal ── */
.we-endpoint{font-size:12px;color:var(--text-secondary);margin-bottom:10px;padding:6px 8px;
  background:var(--bg-inset);border-radius:6px;border:1px solid var(--border-subtle)}
.we-grid{display:grid;grid-template-columns:90px 1fr;gap:8px 10px;align-items:center;font-size:12px}
.we-grid label{color:var(--text-secondary);text-align:right}
.we-sz-row,.we-len-row{display:flex;align-items:center;gap:6px}
.we-hint{font-size:10px;color:var(--text-muted);white-space:nowrap}
.pe-section-title{font-size:11px;color:var(--text-muted);margin-bottom:8px;font-weight:600;
  text-transform:uppercase;letter-spacing:.5px}
.pe-divider{border-top:1px solid var(--border);margin:12px 0}
.we-info{margin-top:10px;padding:8px 10px;background:var(--bg-inset);border:1px solid var(--border-subtle);
  border-radius:6px;font-size:11px;color:var(--text-secondary);min-height:20px}
.we-info b{color:var(--text)}

/* ── FLRY modal ── */
.flry-modal{border-radius:12px;width:min(96vw,860px);max-height:90vh}
.flry-body{padding:16px 20px;display:flex;flex-direction:column;gap:14px}
.flry-inputs{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;
             background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:10px;padding:14px}
.flry-cards{display:flex;gap:10px;flex-wrap:wrap}
.flry-card{flex:1;min-width:180px;background:var(--bg-panel);border:2px solid var(--border);
           border-radius:10px;padding:14px 16px}
.flry-card.main{background:color-mix(in srgb,var(--success) 3%,transparent)}
.flry-card.smaller{border-color:var(--danger)}
.flry-card.larger{border-color:var(--warn)}
.fc-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:10px}
.fc-variant{font-size:10px;color:var(--text);font-weight:700;margin-bottom:2px}
.flry-card.main .fc-variant{color:var(--success-light)}
.fc-val{font-size:28px;font-weight:800;font-family:monospace;line-height:1;color:var(--text-bright)}
.flry-card:not(.main) .fc-val{font-size:22px;color:var(--text-bright)}
.fc-vunit{font-size:13px;color:var(--text);margin-left:3px}
.fc-sub{font-size:10px;color:var(--text);margin-left:5px}
.fc-badge{padding:4px 10px;border-radius:6px;font-size:12px;font-weight:700}
.fc-badge--ok{background:rgba(34,197,94,.12);color:#16a34a;border:1px solid rgba(34,197,94,.3)}
.fc-badge--err{background:rgba(239,68,68,.12);color:#dc2626;border:1px solid rgba(239,68,68,.3)}
.fc-rows{display:flex;flex-direction:column;gap:5px;margin-bottom:8px}
.fc-row{display:flex;justify-content:space-between;font-size:11px;color:var(--text);gap:8px}
.fc-row span:last-child{font-weight:700;font-family:monospace;white-space:nowrap;color:var(--text-bright)}
.fc-danger{color:var(--danger) !important}
.fc-bar-bg{height:4px;background:var(--bg-elevated);border-radius:2px;overflow:hidden}
.fc-bar{height:100%;border-radius:2px;transition:width .3s}
.flry-err{background:var(--danger-bg);border:2px solid var(--danger);border-radius:10px;
          padding:20px;text-align:center;color:var(--danger);font-size:14px;font-weight:700;line-height:1.6}
.flry-err small{font-size:11px;color:var(--text-secondary);font-weight:400}
.flry-hint-big{padding:30px;text-align:center;color:var(--text-dim);font-size:13px}
.flry-table-wrap{background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:10px;overflow:hidden}
.flry-table-hdr{padding:8px 14px;border-bottom:1px solid var(--border-subtle);
                font-size:11px;font-weight:700;color:var(--text-secondary)}
.flry-tbl th{padding:5px 10px;text-align:right;font-weight:700;background:var(--bg-panel)}
.flry-tbl th:first-child{text-align:left}
.flry-tbl td{padding:5px 10px;text-align:right;border-bottom-color:var(--border-subtle)}
.flry-tbl td:first-child{text-align:left}
.flry-params{font-size:11px;color:var(--text-bright);font-family:monospace;line-height:1.6;font-weight:600;
             background:var(--bg-panel);border:1px solid var(--accent);border-radius:6px;padding:10px 14px}

/* ── flry info section ── */
.flry-info-section{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.flry-info-toggle{width:100%;text-align:left;background:none;border:1px solid var(--border);
                  border-radius:6px;color:var(--accent-light);font-size:12px;font-weight:600;
                  padding:7px 12px;cursor:pointer;display:flex;align-items:center;
                  gap:6px;transition:background .15s}
.flry-info-toggle:hover{background:var(--bg-panel)}
.flry-info-arrow{margin-left:auto;font-size:14px}
.flry-info-content{padding-top:12px}
.ref-cols{display:flex;gap:20px;flex-wrap:wrap;margin-bottom:16px}
.ref-cols .ref-section{flex:1;min-width:260px}
.ref-section-full{width:100%;display:flex;flex-direction:column;gap:8px}

/* ── reference modal ── */
.ref-modal{background:var(--bg-panel);border:1px solid var(--border);border-radius:12px;
           width:min(96vw,920px);max-height:88vh;display:flex;flex-direction:column;
           box-shadow:var(--shadow-lg)}
.ref-body{padding:16px 20px;display:flex;gap:20px;flex-wrap:wrap}
.ref-section{flex:1;min-width:280px;display:flex;flex-direction:column;gap:8px}
.ref-title{font-size:11px;font-weight:700;color:var(--accent-light);text-transform:uppercase;
           letter-spacing:.05em;padding-bottom:4px;border-bottom:1px solid var(--border)}
.ref-table th{color:var(--text-faint);background:var(--bg-panel)}
.ref-table td{padding:4px 8px;color:var(--text-secondary)}
.ref-table td.hi{color:var(--accent-light);font-weight:600}
.ref-note{font-size:10px;color:var(--text-muted);line-height:1.5;margin-top:4px}
.calc-wrap{display:flex;gap:16px;align-items:stretch;flex-wrap:wrap}
.calc-inputs{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.calc-field{display:flex;flex-direction:column;gap:4px}
.calc-field label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}
.calc-result{flex:1;min-width:220px;background:var(--bg-panel);border:1px solid var(--border);
             border-radius:8px;padding:12px 16px;display:flex;align-items:center}
.calc-hint{font-size:11px;color:var(--text-faint)}
.calc-out{width:100%;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.calc-main{display:flex;flex-direction:column;gap:2px}
.calc-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}
.calc-val{font-size:28px;font-weight:800;color:var(--accent-light);line-height:1}
.calc-val.calc-warn{color:var(--warn-dark)}
.calc-val-small{font-size:16px;font-weight:600;color:var(--text-dim);line-height:1}
.calc-awg{font-size:10px;color:var(--text-muted);margin-top:2px}
.calc-arrow{font-size:20px;color:var(--text-faint)}
.calc-detail{margin-left:auto;display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--text-muted)}
.calc-detail strong{color:var(--accent-light)}
.calc-warn-msg{font-size:10px;color:var(--warn-dark);margin-top:6px;width:100%}

/* ── import dialog ── */
.imp-section{margin-bottom:14px}
.imp-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px}
.imp-diag-list{max-height:180px;overflow-y:auto;border:1px solid var(--border);border-radius:6px;background:var(--bg-inset)}
.imp-diag-item{display:flex;align-items:center;gap:8px;padding:7px 10px;cursor:pointer;border-bottom:1px solid var(--border-subtle);font-size:12px;color:var(--text)}
.imp-diag-item:last-child{border-bottom:none}
.imp-diag-item:hover{background:var(--bg-panel)}
.imp-diag-item input[type="checkbox"]{accent-color:var(--accent);flex-shrink:0}
.imp-diag-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.imp-diag-meta{font-size:10px;color:var(--text-muted);white-space:nowrap}
.imp-selall{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-secondary);margin-top:6px;cursor:pointer}
.imp-selall input{accent-color:var(--accent)}
.imp-target{display:flex;flex-direction:column;gap:8px}
.imp-target-opt{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text);cursor:pointer;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-inset)}
.imp-target-opt:hover{border-color:var(--accent)}
.imp-target-opt input[type="radio"]{accent-color:var(--accent);flex-shrink:0}
.imp-target-opt strong{color:var(--accent-light)}

/* ── import pinout modal ── */
.imp-modal{width:min(96vw,700px);max-height:90vh;overflow:hidden;box-shadow:var(--shadow)}
.imp-body{display:flex;flex-direction:column;gap:0;min-height:0}
.imp-meta{display:flex;gap:10px;padding:14px 16px 10px;flex-wrap:wrap;border-bottom:1px solid var(--border-subtle)}
.imp-paste-area{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border-subtle)}
.imp-paste-hdr{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.imp-paste-hdr label{font-size:11px;font-weight:600;color:var(--text-secondary)}
.imp-hint{font-size:10px;color:var(--text-dim)}
.imp-hint code{background:var(--bg-input);padding:1px 5px;border-radius:3px;color:var(--accent-bright);font-family:monospace}
.imp-parse-btn{align-self:flex-start;padding:7px 16px;font-size:12px;font-weight:600;
  background:var(--bg-accent-subtle);border:1px solid var(--border-accent);border-radius:7px;color:var(--accent-light);
  cursor:pointer;display:flex;align-items:center;gap:6px;transition:all .12s}
.imp-parse-btn:hover{background:var(--bg-active);border-color:var(--accent);color:var(--accent-muted)}
.imp-parse-btn svg.lucide{width:13px;height:13px}
.imp-preview{display:flex;flex-direction:column;padding:12px 16px;gap:8px}
.imp-preview.hidden{display:none}
.imp-preview-hdr{display:flex;align-items:center;gap:12px}
#imp-pin-count{font-size:12px;font-weight:700;color:var(--accent-bright)}
.imp-preview-hint{font-size:10px;color:var(--text-dim)}
.imp-table-wrap{max-height:280px;overflow-y:auto;border:1px solid var(--border-subtle);border-radius:8px}
.imp-table{width:100%;border-collapse:collapse;font-size:12px}
.imp-table thead tr{background:var(--bg-input);position:sticky;top:0}
.imp-table th{padding:7px 12px;text-align:left;font-size:10px;font-weight:700;
  color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--border-subtle)}
.imp-table tr:nth-child(even){background:var(--bg-inset)}
.imp-td-n{width:48px;padding:5px 12px;color:var(--text-muted);font-weight:600;font-family:monospace;white-space:nowrap}
.ai-note-cell{padding:5px 12px;color:var(--text-muted);font-size:11px;max-width:260px}
.imp-footer{padding:12px 16px;border-top-color:var(--border-subtle)}
.imp-file-row{display:flex;align-items:center;gap:6px}
.imp-file-btn{padding:5px 12px;font-size:11px;font-weight:600;background:var(--bg-accent-subtle);
  border:1px solid var(--border-accent);border-radius:6px;color:var(--accent-light);cursor:pointer;
  display:flex;align-items:center;gap:5px;transition:all .12s;white-space:nowrap}
.imp-file-btn:hover{background:var(--bg-active);border-color:var(--accent);color:var(--accent-muted)}
.imp-file-btn svg.lucide{width:12px;height:12px}
.imp-shortcut{font-size:9px;color:var(--text-dim);font-weight:400;margin-left:4px}
.imp-divider{display:flex;align-items:center;gap:10px;padding:10px 16px;
  font-size:10px;color:var(--border-strong);text-transform:uppercase;letter-spacing:.06em}
.imp-divider::before,.imp-divider::after{content:"";flex:1;height:1px;background:var(--border-subtle)}

/* ── audit modal ── */
.audit-modal{width:860px;max-height:82vh}
.audit-title{font-size:14px}
.audit-summary{font-size:11px;padding:3px 8px;border-radius:5px;margin-left:4px}
.sum-ok    {background:var(--sum-ok-bg);color:var(--sum-ok-text)}
.sum-warn  {background:var(--sum-warn-bg);color:var(--sum-warn-text)}
.sum-danger{background:var(--sum-danger-bg);color:var(--sum-danger-text)}
.sum-info{background:var(--sum-info-bg);color:var(--sum-info-text)}
.audit-body{overflow-x:auto}
.audit-hint{font-size:11px;color:var(--text-dim);margin-bottom:10px}
.audit-empty{font-size:13px;color:var(--text-dim);padding:24px;text-align:center}
.audit-section-title{font-size:11px;font-weight:700;color:var(--text-secondary);text-transform:uppercase;
  letter-spacing:.06em;margin:16px 0 6px;padding-bottom:4px;border-bottom:1px solid var(--border-subtle)}
.audit-section-title:first-child{margin-top:0}
.au-ext-msg{font-size:11px;color:var(--text-light)}
.au-ext-info td{opacity:.8}
.au-ext-warn td{background:rgba(251,191,36,.04)}
.au-ext-warn .au-ext-msg{color:var(--warn)}
.au-row td{cursor:pointer}
.au-conn-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;vertical-align:middle}
.au-sz-cur {color:var(--text-secondary)}
.au-sz-rec {color:var(--success);font-weight:600}
.au-warn  .au-status{color:var(--warn)}
.au-danger .au-status{color:var(--danger)}
.au-warn  .au-sz-cur{color:var(--warn)}
.au-danger .au-sz-cur{color:var(--danger)}
.au-apply-btn{padding:3px 8px;font-size:10px;background:var(--success-bg);border:1px solid var(--success);
  border-radius:5px;cursor:pointer;color:var(--success);white-space:nowrap}
.au-apply-btn:hover{background:var(--success-bg-hover);color:var(--success-light)}
.au-fix-pick{font-size:11px;padding:2px 4px;height:auto}
.au-also{font-size:9px;color:var(--text-dim)}
.au-also-none{font-size:9px;color:var(--border-subtle)}
#audit-apply-all{background:var(--bg-accent-strong);border:1px solid var(--accent);color:var(--accent-bright);
  padding:6px 14px;border-radius:7px;cursor:pointer;font-size:12px}
#audit-apply-all:hover{background:var(--bg-accent-active)}
.au-over .au-status{color:var(--accent-light)}
.au-over .au-sz-cur{color:var(--accent-light)}
.au-over .au-sz-rec{color:var(--accent-light)}
.au-over .au-apply-btn{background:var(--aw-over-bg);border-color:var(--badge-over-border);color:var(--aw-over-text)}
.au-over .au-apply-btn:hover{background:var(--bg-accent-strong)}

/* ── editor warnings panel ── */
.ac-warn-panel{display:flex;flex-wrap:wrap;gap:5px;padding:7px 12px;
  background:var(--bg-panel);border-bottom:1px solid var(--border);align-items:center}
.aw-title{font-size:10px;font-weight:600;color:var(--text-dim);margin-right:2px;flex-shrink:0}
.aw-item{font-size:10px;padding:2px 7px;border-radius:4px;white-space:nowrap}
.aw-item strong{font-weight:700}
.aw-danger{background:var(--aw-danger-bg);color:var(--aw-danger-text);border:1px solid var(--aw-danger-border)}
.aw-warn  {background:var(--warn-bg);color:var(--warn-light);border:1px solid var(--warn-border)}
.aw-over  {background:var(--aw-over-bg);color:var(--aw-over-text);border:1px solid var(--aw-over-border)}

/* ── shopping list modal ── */
.sl-modal{width:620px;max-height:85vh}
.sl-warn{background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn-light);border-radius:6px;
  padding:8px 12px;font-size:11px;margin-bottom:12px}
.sl-table{table-layout:fixed}
.sl-table th{padding:6px 10px;color:var(--text-dim)}
.sl-table th:nth-child(1){width:auto}
.sl-table th:nth-child(2){width:62px}
.sl-table th:nth-child(3){width:52px}
.sl-table th:nth-child(4){width:80px}
.sl-table th:nth-child(5){width:80px}
.sl-table td{padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sl-table tfoot td{padding:8px 10px;border-top:1px solid var(--border);font-weight:600;color:var(--text)}
.sl-num{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}
.sl-mar{color:var(--success) !important;font-weight:600}
.sl-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;flex-shrink:0}
.sl-miss{font-size:9px;color:var(--warn-dark);margin-left:4px}
.sl-section td{padding:10px 10px 5px !important;font-size:9px;font-weight:700;text-transform:uppercase;
  letter-spacing:.5px;color:var(--text-muted);border-bottom:1px solid var(--border) !important;background:none !important}
.sl-cable-row td{background:rgba(37,99,235,.04)}
.sl-cable-icon{margin-right:5px}
.sl-cable-label{font-size:9px;color:var(--text-muted);margin-left:4px}

/* ── project BOM modal ── */
.pb-modal{width:820px;max-height:90vh}
.pb-body{overflow:auto}
.pb-meta{font-size:11px;color:var(--text-muted);margin-left:8px;font-weight:400}
.pb-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;
  color:var(--text-muted);margin:4px 0 6px}
.pb-diag-tag{display:inline-block;background:var(--border);color:var(--text-muted);
  font-size:9px;padding:1px 6px;border-radius:8px;margin-left:4px;font-weight:500}
.pb-insul-tag{display:inline-block;background:rgba(16,185,129,.12);color:var(--success);
  font-size:9px;padding:1px 6px;border-radius:8px;margin-left:4px;font-weight:600}
.pb-zone-chip{display:inline-block;background:rgba(245,158,11,.12);color:var(--warn-dark);
  font-size:10px;padding:2px 8px;border-radius:10px;margin-right:6px;font-weight:500}
.pb-zones{margin:8px 0 6px;font-size:11px;color:var(--text-dim)}
.pb-zones strong{color:var(--text);margin-right:6px}
.pb-diag-table{margin-bottom:8px}
.pb-diag-table th:nth-child(1){width:auto}
.pb-diag-table th:nth-child(2),
.pb-diag-table th:nth-child(3),
.pb-diag-table th:nth-child(4),
.pb-diag-table th:nth-child(5){width:90px}
.pb-empty{padding:30px;text-align:center;color:var(--text-muted);font-size:13px}

/* ── Pre-flight modal ── */
.pf-modal{width:620px;max-height:85vh}
.pf-body{overflow:auto;padding:12px 14px}
.pf-summary{padding:10px 12px;border-radius:6px;margin-bottom:12px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:8px}
.pf-sum-crit{color:var(--danger);display:inline-flex;align-items:center;gap:6px}
.pf-sum-warn{color:var(--warn-dark);display:inline-flex;align-items:center;gap:6px}
.pf-summary:has(.pf-sum-crit){background:var(--danger-bg);border:1px solid var(--danger-border)}
.pf-summary:has(.pf-sum-warn){background:var(--warn-bg);border:1px solid var(--warn-border)}
.pf-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:6px;margin-bottom:6px;border:1px solid var(--border)}
.pf-row.pf-ok{background:rgba(16,185,129,.05);border-color:rgba(16,185,129,.25)}
.pf-row.pf-crit{background:var(--danger-bg);border-color:var(--danger-border)}
.pf-row.pf-warn{background:var(--warn-bg);border-color:var(--warn-border)}
.pf-icon{flex-shrink:0;margin-top:2px}
.pf-row.pf-ok  .pf-icon svg{color:var(--success)}
.pf-row.pf-crit .pf-icon svg{color:var(--danger)}
.pf-row.pf-warn .pf-icon svg{color:var(--warn-dark)}
.pf-row-body{flex:1;min-width:0}
.pf-label{font-size:12px;font-weight:600;color:var(--text)}
.pf-sev{font-size:9px;font-weight:700;text-transform:uppercase;margin-left:6px;padding:1px 6px;border-radius:8px;letter-spacing:.5px}
.pf-row.pf-ok  .pf-sev{background:rgba(16,185,129,.15);color:var(--success)}
.pf-row.pf-crit .pf-sev{background:var(--danger);color:#fff}
.pf-row.pf-warn .pf-sev{background:var(--warn-dark);color:#fff}
.pf-details{font-size:10px;color:var(--text-muted);margin-top:4px;line-height:1.4;word-break:break-word}
.pf-count{flex-shrink:0;background:var(--border);color:var(--text);font-size:11px;font-weight:700;padding:2px 10px;border-radius:10px;align-self:center}
.pf-foot{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--border)}
.pf-skip{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim);cursor:pointer}
.pf-skip input{margin:0}
.mbtn.pf-override{background:var(--danger);border-color:var(--danger);color:#fff}
.mbtn.pf-override:hover{filter:brightness(1.1)}

/* ── Wire Labels chooser ── */
.wl-chooser{width:480px}
.wl-opts{display:flex;flex-direction:column;gap:10px;padding:6px 0}
.wl-opt{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;text-align:left;cursor:pointer;transition:all .12s}
.wl-opt:hover{background:var(--bg-accent-subtle);border-color:var(--accent-dark)}
.wl-opt-head{font-size:13px;font-weight:700;color:var(--text);display:flex;align-items:center;gap:8px;margin-bottom:4px}
.wl-opt-head svg.lucide{width:16px;height:16px}
.wl-opt-desc{font-size:11px;color:var(--text-dim);line-height:1.4}
