    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
    :root{
      --P:#1B3A6B;--PDK:#0F2347;--PLT:#2E5FA3;
      --A:#E87722;--ALT:#F5A04A;
      --SF:#F2F5FA;--SDK:#E4EAF3;
      --W:#fff;--T:#1A1A2E;--MU:#6B7A8D;--BD:#D0D9EA;--R:7px;
      --OK:#1A7A4A;--OKB:#D4EDDA;--WN:#A05C00;--WNB:#FFF3CD;
      --ER:#B91C1C;--ERB:#FEE2E2;
      --SH:0 2px 8px rgba(27,58,107,.10);--SHL:0 8px 28px rgba(27,58,107,.14)
    }
    body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
      background:var(--SF);color:var(--T);min-height:100vh;font-size:14px;line-height:1.5}

    /* ─ HEADER ─ */
    .hdr{background:var(--P);color:#fff;height:52px;display:flex;align-items:center;
      padding:0 12px;position:sticky;top:0;z-index:300;
      box-shadow:0 2px 10px rgba(0,0,0,.28);gap:10px}
    .hbg-btn{width:36px;height:36px;background:rgba(255,255,255,.1);border:none;
      border-radius:8px;cursor:pointer;display:flex;flex-direction:column;
      align-items:center;justify-content:center;gap:5px;flex-shrink:0;
      transition:background .15s;padding:0}
    .hbg-btn:hover{background:rgba(255,255,255,.2)}
    .hbg-btn span{display:block;width:18px;height:2px;background:#fff;
      border-radius:2px;transition:all .25s}
    .hbg-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
    .hbg-btn.open span:nth-child(2){opacity:0;transform:scaleX(0)}
    .hbg-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
    .logo{display:flex;align-items:center;gap:8px;flex-shrink:0}
    .logo-ic{width:30px;height:30px;background:var(--A);border-radius:6px;
      display:flex;align-items:center;justify-content:center;font-size:16px}
    .logo-tx{font-size:15px;font-weight:700}
    .logo-sub{font-size:9px;font-weight:400;opacity:.6;display:block}
    @media(max-width:520px){.logo-tx,.logo-sub{display:none}}
    .hdr-right{display:flex;align-items:center;gap:6px;flex-shrink:0;margin-left:auto}
    /* ─ SIDEBAR PROJECT BAR ─ */
    .sb-proj-bar{display:flex;align-items:center;gap:8px;padding:10px 13px;
      background:var(--P);border-bottom:2px solid var(--A);flex-shrink:0}
    .sb-proj-icon{font-size:14px;flex-shrink:0;opacity:.75}
    .sb-proj-input{flex:1;background:transparent;border:none;color:#fff;
      font-size:13px;font-weight:600;outline:none;padding:2px 0;min-width:0;
      border-bottom:1.5px solid transparent;transition:border-color .15s}
    .sb-proj-input::placeholder{color:rgba(255,255,255,.4);font-weight:400}
    .sb-proj-input:focus{border-bottom-color:rgba(255,255,255,.55)}
    .hdr-btns{display:none} /* legado — oculto, IDs se movieron al nav */
    /* ─ NAV MENU ─ */
    .nav-ov{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:490;
      opacity:0;pointer-events:none;transition:opacity .25s}
    .nav-ov.open{opacity:1;pointer-events:all}
    .nav-menu{position:fixed;top:0;left:0;bottom:0;width:280px;background:var(--P);
      z-index:500;display:flex;flex-direction:column;
      transform:translateX(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
      box-shadow:4px 0 24px rgba(0,0,0,.35)}
    .nav-menu.open{transform:translateX(0)}
    .nav-hd{display:flex;align-items:center;justify-content:space-between;
      padding:14px 16px;border-bottom:1px solid rgba(255,255,255,.12);flex-shrink:0}
    .nav-close{background:rgba(255,255,255,.1);border:none;color:#fff;
      width:32px;height:32px;border-radius:7px;cursor:pointer;font-size:15px;
      display:flex;align-items:center;justify-content:center;transition:background .15s}
    .nav-close:hover{background:rgba(255,255,255,.2)}
    .nav-body{flex:1;overflow-y:auto;padding:8px 0}
    .nav-section{padding:8px 0}
    .nav-section+.nav-section{border-top:1px solid rgba(255,255,255,.08)}
    .nav-section-title{font-size:9px;font-weight:800;letter-spacing:.9px;
      color:rgba(255,255,255,.4);text-transform:uppercase;padding:6px 18px 4px}
    .nav-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 18px;
      background:none;border:none;color:rgba(255,255,255,.88);font-size:13px;
      font-weight:500;cursor:pointer;transition:background .12s;text-align:left;
      border-radius:0;font-family:inherit}
    .nav-item:hover{background:rgba(255,255,255,.1);color:#fff}
    .nav-item .ni-icon{font-size:15px;width:20px;text-align:center;flex-shrink:0}
    .nav-item .ni-badge{margin-left:auto;background:var(--A);color:#fff;
      font-size:9px;font-weight:800;padding:2px 7px;border-radius:10px}
    .nav-item-accent .ni-icon{color:#FCD34D}
    .nav-item-green .ni-icon{color:#6EE7B7}
    .nav-item-orange .ni-icon{color:var(--ALT)}
    .nav-footer{border-top:1px solid rgba(255,255,255,.12);padding:12px 16px;flex-shrink:0}
    .nav-user{display:flex;align-items:center;gap:10px;margin-bottom:10px}
    .nav-user-avatar{width:36px;height:36px;border-radius:50%;background:var(--A);
      display:flex;align-items:center;justify-content:center;font-size:16px;
      flex-shrink:0;overflow:hidden;border:2px solid rgba(255,255,255,.2)}
    .nav-user-avatar img{width:100%;height:100%;object-fit:cover}
    .nav-user-name{font-size:13px;font-weight:700;color:#fff;line-height:1.2}
    .nav-user-email{font-size:10px;color:rgba(255,255,255,.5);margin-top:1px}
    .nav-user-badge{display:inline-block;font-size:8px;font-weight:800;letter-spacing:.5px;
      color:#00B4FF;border:1px solid rgba(0,180,255,.4);padding:1px 6px;
      border-radius:6px;margin-top:3px}
    .nav-signout{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;
      background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);
      color:rgba(255,255,255,.7);font-size:12px;font-weight:500;cursor:pointer;
      border-radius:8px;transition:all .15s;font-family:inherit}
    .nav-signout:hover{background:rgba(255,255,255,.14);color:#fff}
    /* chip compacto de usuario en el header */
    .hdr-user-chip{display:flex;align-items:center;gap:6px;cursor:pointer;
      padding:4px 8px;border-radius:8px;transition:background .15s}
    .hdr-user-chip:hover{background:rgba(255,255,255,.12)}
    .hdr-user-chip img,.hdr-user-chip .uc-avatar{width:26px;height:26px;
      border-radius:50%;border:1.5px solid rgba(255,255,255,.3);flex-shrink:0;
      background:var(--A);display:flex;align-items:center;justify-content:center;
      font-size:12px;overflow:hidden}
    .hdr-user-chip img{object-fit:cover}
    .hdr-user-chip .uc-name{font-size:12px;font-weight:600;color:#fff;
      max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
    @media(max-width:600px){.hdr-user-chip .uc-name{display:none}}

    /* ─ LAYOUT ─ */
    .layout{display:grid;grid-template-columns:355px 1fr;height:calc(100vh - 52px);overflow:hidden}
    @media(max-width:768px){.layout{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto;overflow:auto}}

    /* ─ SIDEBAR ─ */
    .sb{background:var(--W);border-right:1px solid var(--BD);overflow-y:auto;display:flex;flex-direction:column}
    .sec{border-bottom:1px solid var(--BD)}
    .sec-hd{padding:9px 13px;background:var(--SF);display:flex;align-items:center;
      justify-content:space-between;cursor:pointer;user-select:none}
    .sec-ti{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;
      color:var(--P);display:flex;align-items:center;gap:5px}
    .sec-ar{color:var(--MU);font-size:11px;transition:transform .2s}
    .sec-hd.coll .sec-ar{transform:rotate(-90deg)}
    .sec-hd.coll+.sec-bd{display:none}
    .sec-bd{padding:11px 13px}

    /* ─ FORMS ─ */
    .fr2{display:grid;grid-template-columns:1fr 1fr;gap:7px}
    .fr3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px}
    .fg{display:flex;flex-direction:column;gap:3px;margin-bottom:8px}
    .fg:last-child{margin-bottom:0}
    .fg label{font-size:10px;font-weight:700;color:var(--MU);text-transform:uppercase;letter-spacing:.4px}
    input[type="number"],input[type="text"],select{
      width:100%;padding:6px 9px;border:1.5px solid var(--BD);border-radius:6px;
      font-size:13px;color:var(--T);background:var(--W);outline:none;transition:border-color .15s}
    input:focus,select:focus{border-color:var(--PLT);box-shadow:0 0 0 3px rgba(46,95,163,.12)}
    input.xs{padding:3px 5px;font-size:12px}
    .tip{font-size:11px;color:var(--MU);margin-top:2px}

    /* ─ TOGGLE ─ */
    .tgr{display:flex;align-items:center;justify-content:space-between;padding:5px 0}
    .tgr .lb{font-size:13px}
    .tg{position:relative;width:36px;height:20px;flex-shrink:0}
    .tg input{opacity:0;width:0;height:0}
    .sl{position:absolute;inset:0;background:var(--BD);border-radius:20px;cursor:pointer;transition:.2s}
    .sl::after{content:'';position:absolute;left:3px;top:3px;width:14px;height:14px;
      background:#fff;border-radius:50%;transition:.2s}
    .tg input:checked+.sl{background:var(--PLT)}
    .tg input:checked+.sl::after{transform:translateX(16px)}

    /* ─ SHEET TYPES ─ */
    .strow{display:grid;grid-template-columns:1fr 60px 60px 50px 26px;gap:4px;
      align-items:center;background:var(--SF);border:1px solid var(--BD);
      border-radius:6px;padding:5px 7px;margin-bottom:5px}
    .strow input{padding:3px 5px;font-size:12px}

    /* ─ PIECES ─ */
    .pl-wrap{display:flex;flex-direction:column;gap:5px;margin-bottom:9px;
      max-height:220px;overflow-y:auto}
    .pl-hdr{display:grid;grid-template-columns:16px 1fr 58px 58px 44px 24px;
      gap:4px;padding:0 7px 3px}
    .pl-hdr span{font-size:10px;font-weight:700;color:var(--MU);text-transform:uppercase;text-align:center}
    .pl-hdr span:nth-child(2){text-align:left}
    /* ── Autocomplete dropdown piezas ── */
    .ac-wrap{position:relative;width:100%}
    .ac-drop{position:fixed;z-index:9999;background:var(--W,#fff);border:1px solid var(--P,#4f8ef7);
      border-radius:6px;box-shadow:0 6px 20px rgba(0,0,0,.18);max-height:200px;overflow-y:auto;
      min-width:160px;display:none}
    .ac-drop.open{display:block}
    .ac-opt{padding:7px 10px;font-size:11px;color:var(--TX,#1a1a2e);cursor:pointer;
      border-bottom:1px solid var(--BD,#e0e3ef);white-space:nowrap}
    .ac-opt:last-child{border-bottom:none}
    .ac-opt b{color:var(--P,#4f8ef7)}
    .ac-opt:hover,.ac-opt.ac-active{background:var(--PLT,#EEF3FF);color:var(--P)}
    /* ── Piezas filas ── */
    .pr{display:grid;grid-template-columns:16px 1fr 58px 58px 44px 24px;gap:4px;
      align-items:center;background:var(--SF);border:1.5px solid var(--BD);
      border-radius:6px;padding:5px 7px;transition:border-color .15s,background .15s}
    .pr.pr-active{border-color:var(--PLT);background:#EEF3FF}
    .pr.pr-active input{border-color:transparent;background:rgba(255,255,255,.8)}
    .pc{width:13px;height:13px;border-radius:3px;flex-shrink:0}
    .pr input{padding:3px 5px;font-size:12px}
    .db{background:none;border:none;color:var(--MU);cursor:pointer;font-size:13px;
      padding:2px;border-radius:3px;display:flex;align-items:center;justify-content:center}
    .db:hover{color:var(--ER);background:var(--ERB)}

    /* ─ REMANENTES ─ */
    .rem-list{display:flex;flex-direction:column;gap:5px;max-height:180px;overflow-y:auto;margin-bottom:8px}
    .rem-item{display:flex;align-items:center;gap:6px;padding:6px 8px;
      background:var(--OKB);border:1px solid #6EE7B7;border-radius:6px}
    .rem-icon{font-size:14px;flex-shrink:0}
    .rem-info{flex:1}
    .rem-name{font-size:12px;font-weight:600;color:var(--OK)}
    .rem-dims{font-size:11px;color:var(--MU)}
    .rem-del{background:none;border:none;cursor:pointer;color:var(--MU);font-size:13px;
      padding:2px;border-radius:3px}
    .rem-del:hover{color:var(--ER);background:var(--ERB)}
    .rem-empty{text-align:center;color:var(--MU);font-size:12px;padding:12px;
      background:var(--SF);border-radius:6px;border:1px dashed var(--BD)}

    /* ─ BUTTONS ─ */
    .btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;
      padding:6px 11px;border-radius:6px;font-size:12px;font-weight:500;
      cursor:pointer;border:none;transition:all .15s;white-space:nowrap}
    .btn-P{background:var(--P);color:#fff}.btn-P:hover{background:var(--PDK)}
    .btn-O{background:transparent;border:1.5px solid var(--BD);color:var(--P)}.btn-O:hover{background:var(--SDK)}
    .btn-A{background:var(--A);color:#fff}.btn-A:hover{filter:brightness(.9)}
    .btn-G{background:var(--OK);color:#fff}.btn-G:hover{filter:brightness(.9)}
    .btn-R{background:var(--ER);color:#fff}.btn-R:hover{filter:brightness(.9)}
    .btn-W{background:var(--W);border:1.5px solid var(--BD);color:var(--T)}.btn-W:hover{background:var(--SF)}
    .btn-full{width:100%}
    .btn-calc{background:linear-gradient(135deg,var(--P) 0%,var(--PLT) 100%);color:#fff;
      padding:10px 14px;font-size:13px;font-weight:700;border-radius:8px;
      box-shadow:0 4px 14px rgba(27,58,107,.3)}
    .btn-calc:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(27,58,107,.4)}
    .btn-calc:active{transform:none}
    .btn-sm{padding:4px 9px;font-size:11px}
    .btn-xs{padding:3px 7px;font-size:11px}

    /* ─ RESULTS ─ */
    .res{display:flex;flex-direction:column;overflow:hidden;background:var(--SF)}
    .tb{background:var(--W);border-bottom:1px solid var(--BD);padding:7px 12px;
      display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
    .stats{display:flex;gap:11px;flex-wrap:wrap;align-items:center}
    .st{display:flex;flex-direction:column;align-items:center;min-width:52px}
    .st .v{font-size:18px;font-weight:800;line-height:1}
    .st .l{font-size:10px;color:var(--MU);text-transform:uppercase;letter-spacing:.4px;margin-top:1px}
    .st.g .v{color:var(--OK)}.st.o .v{color:var(--A)}.st.b .v{color:var(--P)}.st.r .v{color:var(--ER)}
    .pb2{height:5px;border-radius:3px;background:var(--SDK);overflow:hidden;margin-top:3px;width:64px}
    .pf{height:100%;border-radius:3px;transition:width .4s}

    /* ─ SHEET TABS ─ */
    .stabs-wrap{display:flex;align-items:stretch;background:var(--W);border-bottom:1px solid var(--BD);}
    .sh-nav-btn{background:none;border:none;border-right:1px solid var(--BD);cursor:pointer;padding:0 11px;font-size:15px;color:var(--MU);flex-shrink:0;transition:color .15s,background .15s;}
    .sh-nav-btn:last-child{border-right:none;border-left:1px solid var(--BD);}
    .sh-nav-btn:hover:not(:disabled){color:var(--P);background:var(--SDK);}
    .sh-nav-btn:disabled{opacity:0.3;cursor:default;}
    .stabs{background:var(--W);display:flex;
      gap:0;overflow-x:auto;padding:0 12px;flex:1;min-width:0;}
    .stab{padding:7px 13px;font-size:12px;font-weight:500;cursor:pointer;
      border-bottom:2px solid transparent;color:var(--MU);white-space:nowrap;transition:all .15s;
      display:flex;align-items:center;gap:4px}
    .stab:hover{color:var(--P)}
    .stab.active{color:var(--P);border-bottom-color:var(--P);font-weight:700}
    .stab .uc{font-size:10px;padding:1px 4px;border-radius:10px;background:var(--SF);color:var(--MU)}
    .stab.active .uc{background:var(--SDK);color:var(--P)}
    .stab.rem-tab{color:var(--OK)}
    .stab.rem-tab.active{color:var(--OK);border-bottom-color:var(--OK)}

    /* ─ CANVAS ─ */
    .cv-area{flex:1;overflow:auto;padding:14px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
    .svg-card{background:#fff;border-radius:9px;box-shadow:var(--SHL);overflow:hidden;display:inline-block}

    /* ─ SUMMARY BAR ─ */
    .sum-bar{background:var(--P);color:#fff;padding:7px 13px;display:flex;gap:14px;
      flex-wrap:wrap;align-items:center;flex-shrink:0}
    .sb-i{display:flex;flex-direction:column;align-items:center}
    .sb-v{font-size:15px;font-weight:800}
    .sb-l{font-size:10px;opacity:.7;text-transform:uppercase;letter-spacing:.4px}

    /* ─ LEGEND ─ */
    .leg{background:var(--W);border-top:1px solid var(--BD);padding:7px 12px;
      display:flex;flex-wrap:wrap;gap:7px;align-items:center}
    .leg-lbl{font-size:10px;font-weight:700;color:var(--MU);text-transform:uppercase;letter-spacing:.4px;margin-right:3px}
    .li{display:flex;align-items:center;gap:4px;font-size:11px}
    .ld{width:13px;height:13px;border-radius:3px;flex-shrink:0}

    /* ─ ALERT ─ */
    .alert{padding:7px 11px;border-radius:6px;font-size:12px}
    .alert-w{background:var(--WNB);color:var(--WN);border:1px solid #FBBF24}
    .alert-ok{background:var(--OKB);color:var(--OK);border:1px solid #6EE7B7}

    /* ─ EMPTY ─ */
    .emp{flex:1;display:flex;flex-direction:column;align-items:center;
      justify-content:center;color:var(--MU);gap:10px;text-align:center;padding:40px 20px}
    .emp-ic{font-size:52px;opacity:.22}
    .emp h3{font-size:16px;font-weight:600;color:var(--T)}
    .emp p{font-size:13px;max-width:250px}

    /* ─ MODAL ─ */
    .modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:400;
      opacity:0;pointer-events:none;transition:opacity .25s;display:flex;align-items:center;justify-content:center}
    .modal-overlay.open{opacity:1;pointer-events:all}
    .modal{background:var(--W);border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.3);
      width:90%;max-width:640px;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;
      transform:scale(.95);transition:transform .25s}
    .modal-overlay.open .modal{transform:scale(1)}
    .modal-hd{background:var(--P);color:#fff;padding:14px 16px;display:flex;align-items:center;justify-content:space-between}
    .modal-hd h2{font-size:15px;font-weight:700}
    .modal-body{flex:1;overflow-y:auto;padding:16px}

    /* ─ DRAWER ─ */
    .drw-ov{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:400;
      opacity:0;pointer-events:none;transition:opacity .25s}
    .drw-ov.open{opacity:1;pointer-events:all}
    .drw{position:fixed;top:0;right:0;bottom:0;width:340px;max-width:95vw;
      background:var(--W);z-index:401;box-shadow:-6px 0 30px rgba(0,0,0,.2);
      transform:translateX(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);
      display:flex;flex-direction:column}
    .drw.open{transform:none}
    .drw-hd{background:var(--P);color:#fff;padding:13px 15px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
    .drw-hd h2{font-size:14px;font-weight:700}
    .drw-bd{flex:1;overflow-y:auto;padding:11px;display:flex;flex-direction:column;gap:8px}
    .proj-card{border:1.5px solid var(--BD);border-radius:8px;padding:10px 12px;cursor:pointer;transition:all .15s}
    .proj-card:hover{border-color:var(--PLT);background:var(--SF)}
    .pc-name{font-size:13px;font-weight:600;color:var(--T)}
    .pc-meta{font-size:11px;color:var(--MU);margin-top:2px;display:flex;gap:7px;flex-wrap:wrap}
    .pc-acts{display:flex;gap:5px;margin-top:7px}
    .drw-empty{text-align:center;color:var(--MU);padding:36px 16px;font-size:13px}

    /* ═══════════════════════════════════════════════════════════
       MODO OPERARIO — Fullscreen overlay
    ═══════════════════════════════════════════════════════════ */
    .op-ov{position:fixed;inset:0;background:#0F2347;z-index:500;
      display:none;flex-direction:column}
    .op-ov.active{display:flex}
    .op-hdr{background:var(--P);color:#fff;padding:10px 16px;display:flex;
      align-items:center;justify-content:space-between;gap:12px;flex-shrink:0}
    .op-title{font-size:15px;font-weight:700}
    .op-prog{font-size:13px;background:rgba(255,255,255,.15);padding:4px 12px;border-radius:20px}
    .op-prog span{font-weight:700;color:#FFD700}
    .op-area{flex:1;overflow:auto;display:flex;align-items:flex-start;justify-content:center;
      padding:16px;background:#0F2347}
    .op-svg-wrap{background:#fff;border-radius:10px;overflow:hidden;
      box-shadow:0 8px 32px rgba(0,0,0,.5);display:inline-block}
    .op-foot{background:#1B3A6B;padding:10px 16px;display:flex;align-items:center;
      justify-content:space-between;gap:10px;flex-shrink:0;flex-wrap:wrap}
    .op-nav{display:flex;gap:8px;align-items:center}
    .op-info{color:rgba(255,255,255,.7);font-size:12px;text-align:center;flex:1}
    .op-piece-cut{opacity:.35}
    .op-piece-cut rect:first-child{fill:#555!important;fill-opacity:.5!important;stroke:#555!important}

    /* ─ DASHBOARD ─ */
    .dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}
    .dash-card{background:var(--SF);border:1px solid var(--BD);border-radius:8px;
      padding:14px;text-align:center}
    .dash-card .dc-v{font-size:26px;font-weight:800;color:var(--P)}
    .dash-card .dc-l{font-size:11px;color:var(--MU);text-transform:uppercase;letter-spacing:.4px;margin-top:3px}
    .dash-bar{height:8px;background:var(--SDK);border-radius:4px;overflow:hidden;margin-top:6px}
    .dash-fill{height:100%;background:var(--OK);border-radius:4px;transition:width .5s}
    .dash-mat-row{display:flex;align-items:center;justify-content:space-between;
      padding:7px 10px;background:var(--SF);border-radius:6px;margin-bottom:5px}
    .dash-mat-name{font-size:13px;font-weight:500}
    .dash-mat-count{font-size:12px;color:var(--MU)}

    /* ─ NOTIF ─ */
    .notif{position:fixed;bottom:18px;right:18px;background:var(--P);color:#fff;
      padding:8px 14px;border-radius:8px;font-size:13px;font-weight:500;
      box-shadow:var(--SHL);z-index:999;opacity:0;transition:opacity .25s;
      pointer-events:none;max-width:300px}
    .notif.show{opacity:1}

    /* ─ SPINNER DE CÁLCULO ─ */
    .calc-overlay{position:fixed;inset:0;background:rgba(15,35,71,.7);z-index:600;
      display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;
      backdrop-filter:blur(3px)}
    .calc-overlay.active{display:flex}
    .spinner{width:52px;height:52px;border:5px solid rgba(255,255,255,.2);
      border-top-color:#E87722;border-radius:50%;animation:spin .8s linear infinite}
    @keyframes spin{to{transform:rotate(360deg)}}
    .calc-msg{color:#fff;font-size:15px;font-weight:500;text-align:center}
    .calc-sub{color:rgba(255,255,255,.6);font-size:12px;text-align:center}
    .calc-progress-bar{width:220px;height:5px;background:rgba(255,255,255,.2);border-radius:3px;overflow:hidden}
    .calc-progress-fill{height:100%;background:#E87722;border-radius:3px;width:0%;transition:width .3s ease}

    /* ─ OFFLINE / ONLINE STATUS ─ */
    .status-bar{background:#B91C1C;color:#fff;text-align:center;font-size:12px;font-weight:500;
      padding:4px 12px;display:none;align-items:center;justify-content:center;gap:6px;
      position:sticky;top:52px;z-index:200}
    .status-bar.show{display:flex}
    .status-bar.online{background:var(--OK)}

    /* ─ BADGE TIEMPO CÁLCULO ─ */
    .calc-time{font-size:10px;color:var(--MU);margin-left:4px;font-style:italic}

    /* ─ PRINT ─ */
    @media print{
      .hdr,.sb,.tb,.leg,.btn,.alert,.stabs,.sum-bar,.notif,.drw,.drw-ov,.modal-overlay{display:none!important}
      .layout{display:block}.res{height:auto;overflow:visible}
      .cv-area{padding:0}.svg-card{box-shadow:none}body{background:#fff}
    }
    ::-webkit-scrollbar{width:5px;height:5px}
    ::-webkit-scrollbar-thumb{background:var(--BD);border-radius:3px}

    /* ─ CATÁLOGO DE MUEBLES ─ */
    .cat-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:10px 13px 6px}
    .cat-tab{padding:4px 9px;border-radius:20px;font-size:10px;font-weight:700;
      cursor:pointer;border:1.5px solid transparent;transition:all .15s;white-space:nowrap}
    .cat-tab:hover{opacity:.85}
    .cat-tab.active{color:#fff!important;border-color:transparent!important}
    .cat-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:0 13px 10px}
    .cat-card{border:1.5px solid var(--BD);border-radius:8px;cursor:pointer;overflow:hidden;
      transition:box-shadow .15s,border-color .15s;background:var(--W);position:relative}
    .cat-card:hover{box-shadow:var(--SHL);border-color:var(--PLT)}
    .cat-card svg,.cat-card img{width:100%;height:90px;display:block;background:var(--SF);padding:4px;object-fit:contain}
    .cat-card-num{position:absolute;top:6px;left:6px;background:rgba(15,35,71,.85);
      color:#fff;font-size:11px;font-weight:900;padding:2px 7px;border-radius:5px;
      pointer-events:none;line-height:1.5;letter-spacing:.5px;
      box-shadow:0 1px 4px rgba(0,0,0,.4)}
    .cat-card-info{padding:5px 7px}
    .cat-card-name{font-size:10px;font-weight:700;color:var(--T);line-height:1.2}
    .cat-card-dims{font-size:9px;color:var(--MU);margin-top:1px}
    .cat-card-btn{width:100%;padding:4px;background:var(--P);color:#fff;border:none;
      font-size:10px;font-weight:600;cursor:pointer;border-radius:0 0 6px 6px;
      transition:background .15s}
    .cat-card-btn:hover{background:var(--PDK)}

    /* Modal catálogo */
    #catModal{display:none;position:fixed;inset:0;z-index:900;align-items:center;justify-content:center}
    #catModal.open{display:flex}
    .cat-modal-ov{position:absolute;inset:0;background:rgba(0,0,0,.45)}
    .cat-modal-box{position:relative;background:var(--W);border-radius:12px;
      box-shadow:var(--SHL);width:min(680px,95vw);max-height:90vh;overflow:hidden;
      display:flex;flex-direction:column;z-index:1}
    .cat-modal-hd{padding:14px 18px 10px;border-bottom:1px solid var(--BD);display:flex;
      align-items:center;justify-content:space-between}
    .cat-modal-title{font-size:14px;font-weight:700;color:var(--P)}
    .cat-modal-dims{font-size:11px;color:var(--MU);margin-top:2px}
    .cat-modal-desc{font-size:11px;color:var(--T);margin-top:3px}
    .cat-modal-body{overflow-y:auto;padding:12px 18px;flex:1}
    .cat-modal-svg{text-align:center;margin-bottom:12px}
    .cat-modal-svg svg,.cat-modal-svg img{width:100%;height:260px !important;border-radius:8px;
      border:1px solid var(--BD);background:var(--SF);padding:8px;object-fit:contain;display:block}
    .cat-piece-tbl{width:100%;border-collapse:collapse;font-size:11px}
    .cat-piece-tbl th{background:var(--P);color:#fff;padding:5px 8px;text-align:left;font-size:10px}
    .cat-piece-tbl td{padding:5px 8px;border-bottom:1px solid var(--BD)}
    .cat-piece-tbl tr:last-child td{border-bottom:none}
    .cat-piece-tbl tr:nth-child(even) td{background:var(--SF)}
    .cat-modal-ft{padding:10px 18px;border-top:1px solid var(--BD);display:flex;gap:8px;justify-content:flex-end}
    .cat-total{font-size:11px;color:var(--MU);padding:6px 18px;text-align:right;
      border-top:1px solid var(--BD);background:var(--SF)}

