:root{--primary:#e91e8c;--primary-dark:#c2166f;--accent:#29abe2;--accent-dark:#1b8fc4;--amarillo:#ffe600;--ink:#23262b;--ink2:#3a3f47;--bg:#f4f5f7;--card:#fff;--border:#e3e5e9;--green:#1b8a4c;--greenBg:#e5f6ec;--red:#c0392b;--redBg:#fdeceb;--yellow:#a9720b;--yellowBg:#fdf3dc;--muted:#6b7280;--radius:12px}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;padding-bottom:70px;font-family:Segoe UI,Arial,sans-serif}header.topbar{background:var(--ink);color:#fff;z-index:50;border-bottom:3px solid;border-image:linear-gradient(90deg,var(--accent),var(--amarillo),var(--primary)) 1;justify-content:space-between;align-items:center;gap:10px;padding:8px 20px;display:flex;position:sticky;top:0}header.topbar .brand{white-space:nowrap;align-items:center;display:flex}header.topbar .brand .logo-h{height:44px;display:block}nav.desktop-nav{flex-wrap:wrap;gap:4px;display:flex}nav.desktop-nav a{color:#cfd3e0;border-radius:8px;padding:8px 14px;font-size:14px;font-weight:600;text-decoration:none}nav.desktop-nav a.active{background:var(--primary);color:#fff}.user-chip{color:#cfd3e0;align-items:center;gap:8px;font-size:12.5px;display:flex}.user-chip button{color:#cfd3e0;cursor:pointer;background:0 0;border:1px solid #3a4258;border-radius:6px;padding:4px 8px;font-size:11.5px}main{max-width:1100px;margin:0 auto;padding:20px}h2.section-title{align-items:center;gap:8px;margin:0 0 16px;font-size:20px;display:flex}h2.section-title .bar{background:linear-gradient(180deg,var(--primary),var(--accent));border-radius:3px;width:5px;height:20px}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:24px;display:grid}.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.kpi .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.kpi .value{margin-top:4px;font-size:22px;font-weight:700}.kpi.orange .value{color:var(--primary-dark)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:16px;padding:16px}.card h3{margin:0 0 10px;font-size:15px}table{border-collapse:collapse;width:100%;font-size:13px}table th{text-align:left;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);background:#f8f8fb;padding:8px 10px;font-size:11px}table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 10px}.badge{white-space:nowrap;border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.badge.green{background:var(--greenBg);color:var(--green)}.badge.red{background:var(--redBg);color:var(--red)}.badge.yellow{background:var(--yellowBg);color:var(--yellow)}.badge.gray{color:#555;background:#eee}.badge.orange{color:var(--accent-dark);background:#e3ecfc}.order-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;display:grid}.ticket{background:var(--card);border:1px solid var(--border);border-left:6px solid var(--muted);border-radius:var(--radius);padding:14px 16px;position:relative}.ticket.st-Abierta{border-left-color:#8a90a3}.ticket.st-Enproduccion{border-left-color:var(--accent)}.ticket.st-Enrevision{border-left-color:var(--yellow)}.ticket.st-Entregada{border-left-color:var(--green)}.ticket.st-Cancelada{border-left-color:var(--red)}.ticket .ot-id{color:var(--primary-dark);font-size:13px;font-weight:700}.ticket .cliente{margin:4px 0 2px;font-size:16px;font-weight:700}.ticket .servicio{color:var(--muted);margin-bottom:8px;font-size:13px}.ticket .row{color:var(--ink2);justify-content:space-between;margin:3px 0;font-size:12.5px;display:flex}.ticket .row b{color:var(--ink)}.ticket .stamp{position:absolute;top:12px;right:12px}.ticket .obs{color:var(--ink2);border:1px solid var(--border);white-space:pre-wrap;background:#f8f8fb;border-radius:8px;margin:6px 0;padding:7px 9px;font-size:12px}.factura-box{background:#f6f9fe;border:1px dashed #b9ccf0;border-radius:8px;margin-top:10px;padding:8px 10px}.archivos-box{border:1px dashed var(--border);background:#fafbfd;border-radius:8px;margin-top:8px;padding:6px 10px}.archivo-link{color:var(--accent-dark);cursor:pointer;text-align:left;background:0 0;border:none;padding:2px 0;font-size:12.5px;text-decoration:underline}.archivo-x{color:var(--red);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:12px}.ticket .actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}button{cursor:pointer;font-family:inherit}.btn{background:var(--primary);color:#fff;border:none;border-radius:8px;padding:7px 12px;font-size:12.5px;font-weight:600}.btn:hover{background:var(--primary-dark)}.btn.secondary{color:var(--accent-dark);background:#fff;border:1px solid #b9ccf0}.btn.danger{background:var(--red)}.btn.small{padding:5px 9px;font-size:11.5px}.btn:disabled{opacity:.6;cursor:default}.form-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:10px;display:grid}label{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:600;display:block}input,select{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;padding:8px 10px;font-family:inherit;font-size:13px}input:focus,select:focus{outline:2px solid var(--accent);border-color:var(--accent)}.toolbar{flex-wrap:wrap;align-items:flex-end;gap:10px;margin-bottom:16px;display:flex}.quote-result{background:var(--ink);color:#fff;border-radius:var(--radius);margin-top:14px;padding:18px 20px}.quote-result .line{justify-content:space-between;gap:12px;padding:4px 0;font-size:14px;display:flex}.quote-result .line.total{color:var(--amarillo);border-top:1px solid #fff3;margin-top:8px;padding-top:10px;font-size:22px;font-weight:800}.note{color:var(--muted);background:#fdf3dc;border:1px solid #f0dca3;border-radius:8px;margin:8px 0;padding:8px 10px;font-size:12px}.error-note{color:var(--red);background:var(--redBg);border:1px solid #f0b9b3;border-radius:8px;margin:8px 0;padding:8px 10px;font-size:12.5px}.warn-flag{color:var(--yellow);cursor:help;font-weight:700}.tramos{color:var(--muted);margin-top:2px;font-size:11px}.verde{color:var(--green)}.rojo{color:var(--red)}.fin-botones{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.charts-row{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;display:grid}.chart-box{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;overflow-x:auto}.chart-box h4{margin:0 0 8px;font-size:13.5px}.chart-svg{width:100%;min-width:260px;height:auto;max-height:230px}.chart-valor{fill:var(--ink2);font-size:11px;font-weight:600}.chart-mes{fill:var(--muted);font-size:11px}.doc-overlay{z-index:120;background:#0b142899;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow:auto}.doc-paper{background:#fff;border-radius:12px;width:100%;max-width:420px;padding:24px;box-shadow:0 10px 40px #00000059}.doc-head{text-align:center;border-bottom:2px solid var(--primary);margin-bottom:14px;padding-bottom:12px}.doc-brand{color:var(--ink);font-size:22px;font-weight:800}.doc-brand-sub{letter-spacing:.4em;color:#666;margin-top:2px;font-size:10px}.doc-tipo{letter-spacing:.25em;color:var(--muted);margin-top:6px;font-size:12px}.doc-item{padding:4px 0;font-size:13px}.doc-item>div:first-child{font-weight:600}.doc-pie{text-align:center;color:var(--muted);margin-top:14px;font-size:11px}.doc-row{justify-content:space-between;gap:12px;padding:5px 0;font-size:13.5px;display:flex}.doc-row span{color:var(--muted)}.doc-row.doc-destacado{font-size:16px}.doc-row.doc-destacado b{color:var(--primary)}.doc-obs{color:var(--ink2);background:#f6f7fa;border-radius:8px;margin:6px 0;padding:8px 10px;font-size:12.5px}.doc-sep{border-top:1px dashed var(--border);margin:10px 0}.doc-firma{color:var(--muted);text-align:center;justify-content:space-between;gap:14px;margin-top:34px;font-size:11.5px;display:flex}@media print{@page{size:80mm auto;margin:0}html,body{background:#fff;width:80mm;margin:0;padding:0}#root{display:none!important}.doc-overlay{background:0 0;padding:0;display:block;position:static;overflow:visible}.doc-paper{width:72mm;max-width:72mm;box-shadow:none;border-radius:0;margin:0 auto;padding:3mm 2mm;font-size:11px}.doc-head{border-color:#000;border-bottom-width:1px;margin-bottom:8px;padding-bottom:6px}.doc-brand{color:#000;font-size:16px}.doc-brand-sub{color:#000;font-size:8px}.doc-tipo{letter-spacing:.2em;color:#000;font-size:9px}.doc-row{padding:2px 0;font-size:10.5px}.doc-row span{color:#000}.doc-row.doc-destacado{font-size:12.5px}.doc-row.doc-destacado b{color:#000}.doc-item{padding:2px 0;font-size:10.5px}.doc-obs{background:0 0;border:1px dashed #999;padding:4px 6px;font-size:9.5px}.doc-sep{border-color:#000;margin:6px 0}.doc-firma{color:#000;margin-top:20px;font-size:9px}.doc-pie{color:#000;margin-top:10px;font-size:9px}.no-print{display:none!important}}.empty{text-align:center;color:var(--muted);padding:30px;font-size:13px}.search-row{flex-wrap:wrap;gap:10px;margin-bottom:14px;display:flex}.search-row input,.search-row select{flex:1;width:auto;min-width:160px}.mobile-tabs{background:var(--ink);z-index:60;justify-content:space-around;padding:6px 0;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #00000026}.mobile-tabs a{color:#cfd3e0;flex-direction:column;flex:1;align-items:center;gap:2px;padding:4px 6px;font-size:10.5px;text-decoration:none;display:flex}.mobile-tabs a.active{color:var(--primary)}.mobile-tabs .icon{font-size:18px}@media (width<=768px){nav.desktop-nav{display:none}.mobile-tabs{display:flex}main{padding:12px}.table-scroll{overflow-x:auto}}.table-scroll{overflow-x:auto}.login-wrap{background:radial-gradient(ellipse 45% 60% at 12% 80%, #29abe24d, transparent 70%), radial-gradient(ellipse 45% 60% at 88% 20%, #e91e8c47, transparent 70%), var(--ink);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-col{flex-direction:column;align-items:center;gap:14px;width:100%;max-width:380px;display:flex}.login-logo{filter:drop-shadow(0 4px 18px #00000073);width:210px;max-width:62%;margin-bottom:6px;display:block}.login-card{background:#fff;border-radius:16px;width:100%;padding:28px}.login-card p.sub{color:var(--muted);text-align:center;margin:0 0 20px;font-size:13px}.login-card .field{margin-bottom:14px}.login-card .btn{width:100%;margin-top:6px;padding:10px;font-size:14px}
