:root{--navy:#222C3A;--dark:#172130;--steel:#4C5669;--yellow:#FFD236;--orange:#FF851F;--bg:#f4f6f9;--white:#fff;--text:#253246;--muted:#748094;--stroke:#e2e8ef;--green:#13855c;--red:#bf3d48;--radius:15px;--shadow:0 9px 30px #2430480c}
*{box-sizing:border-box}html,body{padding:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}input,textarea,select{border:1px solid #dce3eb;border-radius:9px;background:#fff;padding:11px 12px;width:100%;outline:0;color:var(--text)}input:focus,textarea:focus,select:focus{border-color:#8894a6;box-shadow:0 0 0 3px #ffd2363a}input[type=checkbox]{width:auto;accent-color:var(--orange)}a{color:inherit;text-decoration:none}h1,h2,h3,p{margin:0}h1{font-size:27px;letter-spacing:-.7px}h2{font-size:18px}h3{font-size:15px}small{font-size:11px;color:var(--muted)}.muted{color:var(--muted)}.strong{font-weight:750}.money{font-variant-numeric:tabular-nums}.start-screen{height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:var(--steel)}.spinner{border:3px solid #dae0e8;border-top-color:var(--orange);width:38px;height:38px;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.auth{min-height:100vh;display:grid;grid-template-columns:minmax(330px,1fr) minmax(310px,540px)}.auth-left{background:linear-gradient(140deg,var(--navy),#172130);padding:65px 9%;color:#fff;display:flex;flex-direction:column;justify-content:center;gap:20px}.auth-left img{width:225px;border-radius:15px;background:#fff;padding:10px}.auth-left h1{font-size:clamp(32px,4vw,55px);line-height:1.06;max-width:560px}.auth-left h1 span{color:var(--yellow)}.auth-left p{max-width:460px;color:#cbd3df;line-height:1.7}.auth-right{padding:50px 8%;background:#fff;display:flex;flex-direction:column;justify-content:center}.auth-box{max-width:410px;width:100%;margin:auto}.auth-box h2{font-size:26px;margin-bottom:10px}.auth-box p{line-height:1.7;margin-bottom:26px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:#627087}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.full{grid-column:1/-1}.gap12{display:grid;gap:12px}.alert{padding:13px 15px;border-radius:11px;background:#fff5e5;color:#935018;font-size:13px;line-height:1.5}.alert.error{background:#ffedef;color:#a83440}.alert.success{background:#e4f5eb;color:#117448}.auth .btn{margin-top:14px}
.btn{border:1px solid var(--stroke);border-radius:10px;padding:11px 16px;background:#fff;color:var(--navy);font-weight:730;display:inline-flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;min-height:41px}.btn:hover{filter:brightness(.97)}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff}.btn.yellow{background:var(--yellow);border-color:var(--yellow);color:#202b3a}.btn.soft{background:#f1f3f7;color:#38455b}.btn.danger{color:#bd404b}.btn.sm{padding:7px 11px;min-height:31px;font-size:12px}.btn-block{width:100%}.icon{font-size:17px;line-height:1}.shell{display:flex;min-height:100vh}.sidebar{position:fixed;left:0;top:0;bottom:0;width:244px;background:var(--navy);padding:25px 14px;color:#c9d2df;z-index:40;display:flex;flex-direction:column}.brand{background:white;border-radius:11px;min-height:96px;margin:0 9px 26px;display:flex;justify-content:center;align-items:center}.brand img{width:164px;max-height:83px;object-fit:contain}.nav-label{font-size:10px;font-weight:800;letter-spacing:1.7px;color:#8897a9;padding:0 15px;margin:0 0 11px}.nav-link{padding:13px 15px;display:flex;align-items:center;gap:13px;width:100%;text-align:left;color:#c0cad8;border:0;background:none;border-radius:10px;font-weight:690;font-size:13px}.nav-link:hover{background:#2b394c;color:#fff}.nav-link.active{background:#3a485b;box-shadow:inset 3px 0 var(--yellow);color:#fff}.nav-link i{font-size:19px;font-style:normal;width:23px;text-align:center}.sidebar-bottom{margin-top:auto;border-top:1px solid #4b5766;padding:18px 12px;display:flex;gap:10px;align-items:center}.avatar{width:37px;height:37px;flex:none;background:var(--yellow);color:var(--navy);border-radius:11px;display:grid;place-items:center;font-weight:900}.sidebar-bottom .person{flex:1;min-width:0}.sidebar-bottom .person strong,.sidebar-bottom .person small{display:block;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.sidebar-bottom small{color:#a3b0c2}.content{margin-left:244px;min-width:0;flex:1;padding:30px 38px 65px;max-width:1840px}.top{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:26px}.eyebrow{font-size:10px;letter-spacing:1.5px;color:var(--muted);font-weight:850;margin-bottom:8px;text-transform:uppercase}.top .actions{display:flex;gap:10px;align-items:center}.panel{background:white;border:1px solid var(--stroke);box-shadow:var(--shadow);border-radius:var(--radius);padding:22px}.panel+.panel{margin-top:17px}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:19px}.panel-head h2{font-size:17px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:19px}.kpi{background:#fff;border:1px solid var(--stroke);border-radius:var(--radius);padding:21px;box-shadow:var(--shadow)}.kpi .num{font-size:28px;letter-spacing:-.8px;font-weight:850;margin:12px 0 5px}.kpi .pill{font-size:10px;padding:4px 7px;background:#edf1f6;color:#637188;border-radius:30px}.kpi .caption{color:var(--muted);font-size:11px}.kpi .iconbox{height:36px;width:36px;display:grid;place-items:center;border-radius:11px;background:#fff5d3}.table-wrap{width:100%;overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:650px}.table th{background:#f5f7fa;text-align:left;color:#69778c;padding:12px 13px;font-size:10px;letter-spacing:.4px;text-transform:uppercase}.table td{border-bottom:1px solid #edf0f4;padding:13px;font-size:12px;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#fbfcff}.tag{display:inline-block;border-radius:6px;background:#f0f3f7;color:#637184;padding:5px 9px;font-size:10px;font-weight:800;white-space:nowrap}.tag.aceptada{background:#def5e7;color:#197950}.tag.emitida,.tag.enviada{background:#edf2ff;color:#3153a0}.tag.borrador{background:#fff3d4;color:#946200}.tag.rechazada,.tag.cancelada{background:#ffe9eb;color:#ad3944}.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.filters>*{max-width:340px}.filters .btn{flex:none}.two-col{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.8fr);gap:19px;align-items:start}.editor-main,.editor-aside{display:grid;gap:17px}.product-line{display:grid;grid-template-columns:62px minmax(170px,1fr) 78px 116px 101px 30px;align-items:center;gap:10px;border:1px solid var(--stroke);border-radius:11px;padding:12px;margin-bottom:11px}.product-line img{width:62px;height:62px;object-fit:contain;background:#f5f6f8;border-radius:8px}.placeholder-image{width:62px;height:62px;border-radius:9px;display:grid;place-items:center;background:#f4f6f8;color:#9ba5b3;font-size:25px}.product-line input{padding:9px;font-size:12px}.product-line .remove{border:0;color:#be525b;background:none;font-size:22px}.product-name{font-size:12px;font-weight:780;line-height:1.4}.product-sku{font-size:10px;color:var(--muted);margin-top:4px}.product-price-change{color:#b16b12;font-size:10px;margin-top:4px}.totals{display:grid;gap:13px}.totals>div{display:flex;align-items:center;justify-content:space-between;gap:15px;font-size:12px}.totals strong{font-size:13px}.grand{margin:5px -22px -22px;padding:19px 22px;background:var(--navy);color:#fff;border-radius:0 0 14px 14px;display:flex;justify-content:space-between;align-items:center;font-weight:850}.grand span{font-size:24px}.quote-preview{background:white;border:1px solid var(--stroke);border-radius:12px;padding:23px;max-width:760px;margin:auto;box-shadow:var(--shadow)}.quote-preview .head{display:flex;justify-content:space-between;align-items:center;border-bottom:3px solid var(--orange);padding-bottom:15px;margin-bottom:19px}.quote-preview img{width:160px}.quote-preview .head h2{font-size:23px}.quote-preview .columns{display:grid;grid-template-columns:1fr 1fr;gap:12px;background:#f2f4f7;padding:15px;border-radius:9px;margin-bottom:15px}.quote-preview .section-label{font-size:11px;font-weight:850;color:var(--muted);margin-bottom:7px}.quote-preview .line-item{padding:9px 0;border-bottom:1px solid #edf1f5;display:flex;justify-content:space-between;gap:14px}.quote-preview .end{text-align:right;font-size:23px;font-weight:900;margin-top:20px}.empty{padding:36px 16px;text-align:center;color:var(--muted);line-height:1.7}.notice{font-size:12px;color:#92591a;background:#fff7e6;border-radius:10px;padding:13px;margin:12px 0}.side-mini{background:#f8f9fb;padding:12px;border-radius:9px;font-size:12px}.actions-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.list-item{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:11px;border:1px solid var(--stroke);margin:7px 0;border-radius:11px}.list-item img{width:44px;height:44px;object-fit:contain}.modal-backdrop{position:fixed;inset:0;background:#142236a8;z-index:90;display:flex;align-items:center;justify-content:center;padding:15px}.modal{background:#fff;max-width:760px;width:100%;max-height:90vh;overflow:auto;border-radius:18px;padding:24px;box-shadow:0 20px 100px #10172355}.modal .head{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.modal .results{max-height:55vh;overflow:auto}.hide{display:none!important}#toast{position:fixed;bottom:24px;right:24px;z-index:110;max-width:380px}.toast{padding:13px 17px;background:var(--navy);color:white;border-radius:11px;margin-top:8px;box-shadow:0 15px 40px #14223645}.toast.error{background:#ab3a43}.mobile-menu{display:none}.product-catalog-card{display:flex;align-items:center;gap:13px;border-bottom:1px solid var(--stroke);padding:13px 0}.product-catalog-card img{height:62px;width:62px;object-fit:contain;border-radius:9px;background:#f5f6f7}.product-catalog-card .info{flex:1;min-width:0}.product-catalog-card strong{display:block}.config-edit{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:1250px){.content{padding:26px 23px 50px}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.editor-aside{grid-template-columns:1fr 1fr;align-items:start}}@media(max-width:900px){.sidebar{transform:translateX(-101%);transition:transform .2s ease}.sidebar.open{transform:translateX(0)}.content{margin-left:0;padding:22px 16px 50px}.mobile-menu{display:inline-flex}.top{align-items:center}.top h1{font-size:23px}.top .actions .btn:not(.mobile-menu){display:none}.auth{grid-template-columns:1fr}.auth-left{padding:24px;text-align:center;align-items:center}.auth-left img{width:155px}.auth-left h1{font-size:26px}.auth-left p{display:none}.auth-right{min-height:55vh;padding:35px 20px}.product-line{grid-template-columns:50px 1fr 76px 95px 34px;gap:8px}.product-line .discount-col{grid-column:3/5}.product-line img,.placeholder-image{width:50px;height:50px}.product-line .remove{grid-column:5;grid-row:1}.product-line input{min-width:0}}
@media(max-width:600px){.kpi-grid{gap:9px}.kpi{padding:15px}.kpi .num{font-size:22px}.panel{padding:16px}.form-grid,.form-grid.three,.editor-aside{grid-template-columns:1fr}.product-line{grid-template-columns:48px 1fr 34px;gap:9px}.product-line .qty-col,.product-line .price-col,.product-line .discount-col{grid-column:auto;min-width:0}.product-line .qty-col{grid-column:1}.product-line .price-col{grid-column:2}.product-line .discount-col{grid-column:3;grid-column:1/4}.product-line .remove{grid-column:3;grid-row:1}.product-line input{max-width:100%}.top .actions{gap:5px}.btn{padding:10px 12px}.auth-left{padding:17px}.quote-preview{padding:15px}.quote-preview img{width:100px}.quote-preview .columns{grid-template-columns:1fr}.modal{padding:16px}h1{font-size:22px}}

/* V1.1: la vista previa muestra el PDF real, no una maqueta HTML. */
.preview-pdf-dialog{max-width:980px!important;width:min(96vw,980px)!important;height:min(94vh,1000px);display:flex;flex-direction:column;overflow:hidden}
.preview-pdf-dialog .head{flex:0 0 auto}
.preview-pdf-frame{width:100%;height:100%;min-height:400px;flex:1;border:0;background:#f1f3f6;border-radius:8px}
@media(max-width:650px){.preview-pdf-dialog{width:98vw!important;height:94vh}.preview-pdf-frame{min-height:350px}}

.preview-actions{display:flex;align-items:center;gap:8px}.preview-actions a{text-decoration:none}
