:root{--bg: #f4f5f7;--card: #ffffff;--border: #d9dce1;--text: #1f2430;--muted: #6b7280;--accent: #2563eb;--accent-hover: #1d4ed8;--error: #b91c1c;color-scheme:light}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.center,.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--border);border-radius:12px;padding:28px;box-shadow:0 1px 3px #0000000f;display:flex;flex-direction:column;gap:16px}.card h1{margin:0;font-size:20px}label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}input,select{font:inherit;padding:9px 11px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text)}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}input[readonly]{background:#f3f4f6;color:var(--muted)}button{font:inherit;font-weight:600;padding:10px 14px;border:none;border-radius:8px;background:var(--accent);color:#fff;cursor:pointer}button:hover:not(:disabled){background:var(--accent-hover)}button:disabled{opacity:.6;cursor:default}.error{margin:0;color:var(--error);font-size:13px}.muted{color:var(--muted);font-weight:400}.shell{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:20px;padding:0 20px;height:52px;background:var(--card);border-bottom:1px solid var(--border)}.brand{font-weight:800;letter-spacing:.5px;font-size:16px}.topnav{display:flex;gap:4px;flex:1}.navlink{background:transparent;color:var(--muted);font-weight:600;padding:8px 12px;border-radius:8px}.navlink:hover:not(:disabled){background:#eef1f5;color:var(--text)}.navlink.active{background:#e7edfd;color:var(--accent)}.navdrop{position:relative}.navdrop-menu{position:absolute;top:calc(100% + 4px);left:0;z-index:20;min-width:180px;display:flex;flex-direction:column;padding:4px;background:var(--card);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0000001f}.navdrop-item{text-align:left;background:transparent;color:var(--text);font-weight:600;padding:8px 10px;border-radius:6px}.navdrop-item:hover:not(:disabled){background:#eef1f5}.navdrop-item.active{background:#e7edfd;color:var(--accent)}.topbar-right{display:flex;align-items:center;gap:12px;font-size:13px}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);padding:7px 12px}.btn-ghost:hover:not(:disabled){background:#f0f2f5;color:var(--text)}.content{flex:1;padding:24px;max-width:1000px;width:100%;margin:0 auto}.page h1{margin:0 0 12px;font-size:20px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:8px}.page-actions{display:flex;gap:8px}.search{min-width:260px}.count{margin:4px 0 12px;font-size:13px}.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:12px;font-size:13px}.inline-field{display:flex;flex-direction:column;font-size:12px}.inline-check{display:flex;align-items:center;gap:4px;font-size:13px}.link{background:transparent;border:none;color:var(--accent);font-weight:600;font-size:13px;padding:2px 4px}.link:hover:not(:disabled){background:transparent;text-decoration:underline}.de-badge,.de-chip{display:inline-block;border:1px solid transparent;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:600}.de-chip{margin-top:10px;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500}.de-ok{background:#e7f6ec;color:#1a7f37;border-color:#b7e0c2}.de-warn{background:#fff4e5;color:#9a6700;border-color:#f3d9a8}.de-error{background:#fdecec;color:#b91c1c;border-color:#f5c2c2}.de-pending{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}.toast-host{position:fixed;right:16px;bottom:16px;z-index:100;display:flex;flex-direction:column;gap:10px;max-width:min(360px,calc(100vw - 32px))}.toast{position:relative;background:var(--card);border:1px solid var(--border);border-left:4px solid var(--border);border-radius:10px;padding:12px 34px 12px 14px;box-shadow:0 10px 30px #00000024;font-size:13px;animation:toast-in .16s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.toast strong{display:block;margin-bottom:2px}.toast p{margin:0;color:var(--muted)}.toast-ok{border-left-color:#1a7f37}.toast-error{border-left-color:#b91c1c}.toast-info{border-left-color:var(--accent)}.toast-x{position:absolute;top:6px;right:8px;background:transparent;border:none;color:var(--muted);font-size:16px;line-height:1;padding:2px 4px}.toast-action{margin-top:8px;background:var(--accent);color:#fff;border:none;border-radius:6px;padding:5px 10px;font-size:12px;font-weight:600}.busy-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;background:#0f172a59}.busy-box{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 18px;font-size:14px;box-shadow:0 10px 30px #0000002e}.busy-spinner{width:18px;height:18px;flex:none;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:busy-spin .7s linear infinite}@keyframes busy-spin{to{transform:rotate(360deg)}}.pager .btn-ghost{padding:6px 12px}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:10px;background:var(--card)}.grid{border-collapse:collapse;width:100%;font-size:14px}.grid th,.grid td{text-align:left;padding:9px 14px;border-bottom:1px solid var(--border);white-space:nowrap}.grid thead th{background:#f7f8fa;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.grid tbody tr:last-child td{border-bottom:none}.grid tbody tr:hover td{background:#f9fafb}.grid .num{text-align:right}.grid .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px}.grid .wrap{white-space:normal;overflow-wrap:anywhere;min-width:160px}.factura-form .form-section{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:18px;margin-bottom:16px}.form-section>h2{margin:0 0 14px;font-size:14px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 18px}.form-grid label{font-size:12px}.field-error{display:block;margin-top:4px;color:var(--error);font-size:12px}.input-error{border-color:var(--error)}.input-error:focus{outline-color:var(--error)}.item-add{align-items:end;margin-bottom:12px}.link-danger{background:transparent;border:none;color:var(--error);padding:2px 4px;font-size:13px;font-weight:600}.link-danger:hover{background:transparent;text-decoration:underline}.totales{margin-top:16px;margin-left:auto;max-width:320px;display:flex;flex-direction:column;gap:6px;font-size:14px}.totales>div{display:flex;justify-content:space-between;gap:24px}.totales .grand{border-top:1px solid var(--border);padding-top:6px;font-size:16px}.notice{background:#eef2ff;border:1px solid #c7d2fe;color:#3730a3;border-radius:8px;padding:10px 12px;font-size:13px}.form-actions{display:flex;align-items:center;gap:14px;margin-top:8px}.producto-pick{display:flex;align-items:center;gap:8px}.field-with-btn{display:flex;gap:6px;align-items:stretch}.field-with-btn>input{flex:1;min-width:0}.btn-icon{flex:0 0 34px;display:inline-flex;align-items:center;justify-content:center;padding:0;background:transparent;color:var(--muted);border:1px solid var(--border);border-radius:8px}.btn-icon:hover:not(:disabled){background:#f0f2f5;color:var(--text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:50}.modal{background:var(--card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:640px;max-height:82vh;display:flex;flex-direction:column;padding:16px;box-shadow:0 12px 40px #00000038}.modal-head{display:flex;gap:8px}.modal-head .search{flex:1;min-width:0}.modal-body{overflow-y:auto;margin-top:4px}.grid tbody tr.pickable{cursor:pointer}.grid tbody tr.pickable:hover td{background:#e7edfd}
