:root{--bg: #f5f5f7;--panel: #ffffff;--elev: #f0f0f2;--inset: #f5f5f7;--text: #1d1d1f;--text2: #6e6e73;--muted: #8e8e93;--border: #e3e3e6;--border2: #d2d2d7;--accent: #34c759;--accent-ink: #ffffff;--accent-hover: #2fb350;--accent-soft: #e7f8ec;--accent-soft-ink: #0b6b2c;--blue: #0071e3;--ok-bg: #e7f8ec;--ok-ink: #0b6b2c;--err-bg: #ffe9e7;--err-ink: #b3261e;--warn-bg: #fff4e0;--warn-ink: #8a5300;--prog-bg: #eaf1ff;--prog-ink: #1f5fd6;--sidebar: rgba(246, 246, 248, .72);--shadow-card: 0 1px 2px rgba(0,0,0,.04), 0 8px 24px -12px rgba(0,0,0,.12);--shadow-pop: 0 12px 40px -12px rgba(0,0,0,.22);--radius: 14px;--radius-sm: 10px}:root[data-theme=dark]{--bg: #000000;--panel: #1c1c1e;--elev: #2c2c2e;--inset: #2c2c2e;--text: #f5f5f7;--text2: #aeaeb2;--muted: #8e8e93;--border: #38383a;--border2: #48484a;--accent: #30d158;--accent-ink: #06230f;--accent-hover: #3ee06a;--accent-soft: #123420;--accent-soft-ink: #7ee89a;--blue: #0a84ff;--ok-bg: #123420;--ok-ink: #7ee89a;--err-bg: #3a1613;--err-ink: #ff6b62;--warn-bg: #3a2f00;--warn-ink: #ffd60a;--prog-bg: #10233f;--prog-ink: #7aa9ff;--sidebar: rgba(30, 30, 32, .72);--shadow-card: 0 1px 2px rgba(0,0,0,.3), 0 8px 24px -12px rgba(0,0,0,.5);--shadow-pop: 0 16px 48px -16px rgba(0,0,0,.6)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;letter-spacing:-.01em}.num,.tabla-wrap td,.chip b,.mcard .val{font-variant-numeric:tabular-nums}.center{min-height:100vh;display:grid;place-items:center}.muted{color:var(--text2)}h2{font-size:1.4rem;font-weight:600;margin:0 0 4px;letter-spacing:-.02em}h3{font-size:.95rem;font-weight:600;margin:20px 0 10px;color:var(--text)}.btn{border:.5px solid var(--border2);cursor:pointer;font-family:inherit;font-size:.9rem;font-weight:500;padding:10px 18px;border-radius:var(--radius-sm);background:var(--panel);color:var(--text);transition:background .15s,transform .1s,filter .15s;letter-spacing:-.01em}.btn:hover{background:var(--elev)}.btn:active{transform:scale(.98)}.btn.full{width:100%}.btn.sm{padding:7px 13px;font-size:.82rem}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:transparent}.btn-primary:hover{background:var(--accent);filter:brightness(1.05)}.btn-ghost{background:var(--panel);color:var(--text)}.btn-blue{background:var(--blue);color:#fff;border-color:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.theme-btn{background:var(--panel);border:.5px solid var(--border2);color:var(--text);width:36px;height:36px;border-radius:9px;cursor:pointer;font-size:1rem}.theme-btn.abs{position:absolute;top:18px;right:18px}label{display:block;font-size:.78rem;font-weight:500;color:var(--text2);margin:14px 0 6px}input,select{width:100%;padding:10px 13px;border:.5px solid var(--border2);border-radius:var(--radius-sm);font-size:.92rem;background:var(--inset);color:var(--text);font-family:inherit}select{cursor:pointer}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3.5px color-mix(in srgb,var(--accent) 22%,transparent)}input::placeholder{color:var(--muted)}.input-eye{position:relative}.input-eye input{padding-right:44px}.eye-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:transparent;border:none;cursor:pointer;padding:8px;line-height:0;color:var(--text2);border-radius:8px}.eye-btn:hover{color:var(--text);background:var(--elev)}.eye-btn svg{width:18px;height:18px;display:block}.switch{width:44px;height:26px;border-radius:20px;background:var(--border2);position:relative;border:none;cursor:pointer;padding:0;transition:background .22s;flex-shrink:0}.switch.on{background:var(--accent)}.switch .knob{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .22s;box-shadow:0 1px 3px #0000004d}.switch.on .knob{transform:translate(18px)}.switch:focus-visible{outline:none;box-shadow:0 0 0 3.5px color-mix(in srgb,var(--accent) 30%,transparent)}.tgl-row{display:flex;align-items:center;gap:10px;font-size:.9rem;color:var(--text);cursor:pointer;-webkit-user-select:none;user-select:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:grid;place-items:center;z-index:100;padding:20px;animation:fadein .15s ease}.modal{background:var(--panel);border:.5px solid var(--border);border-radius:18px;padding:26px 24px 22px;max-width:380px;width:100%;box-shadow:var(--shadow-pop);text-align:center;animation:pop .18s ease}.modal .modal-ic{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin:0 auto 14px}.modal .modal-ic svg{width:24px;height:24px}.modal .modal-ic.danger{background:var(--err-bg);color:var(--err-ink)}.modal .modal-ic.accent{background:var(--accent-soft);color:var(--accent-soft-ink)}.modal h3{margin:0 0 8px;font-size:1.1rem;font-weight:600}.modal p{color:var(--text2);font-size:.9rem;margin:0 0 20px;white-space:pre-line;line-height:1.55}.modal-actions{display:flex;gap:10px}.modal-actions .btn{flex:1;justify-content:center;text-align:center;padding:11px}.btn-danger{background:var(--err-ink);color:#fff;border-color:transparent}.btn-danger:hover{filter:brightness(1.05);background:var(--err-ink)}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.modal,.modal-backdrop{animation:none}}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;position:relative}.auth-card{width:100%;max-width:380px;background:var(--panel);border:.5px solid var(--border);border-radius:20px;padding:34px;text-align:center;box-shadow:var(--shadow-pop)}.auth-logo{width:54px;height:54px;border-radius:15px;background:var(--accent);display:grid;place-items:center;font-size:27px;margin:0 auto 14px}.auth-card h1{margin:0 0 4px;font-size:1.45rem;font-weight:600;letter-spacing:-.02em}.auth-card form{text-align:left;margin-top:20px}.auth-card .btn.full{margin-top:20px}.divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--muted);font-size:.8rem}.divider:before,.divider:after{content:"";flex:1;height:.5px;background:var(--border2)}.switch-modo{margin-top:18px;font-size:.88rem;color:var(--text2)}.switch-modo a{color:var(--blue);cursor:pointer;font-weight:500}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-right:.5px solid var(--border);padding:16px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh}.brand-row{display:flex;align-items:center;gap:9px;padding:6px 8px 16px}.brand-row .logo{width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:16px}.brand-row .brand{font-weight:600;font-size:1rem;letter-spacing:-.01em}.nav-lbl{font-size:.68rem;font-weight:600;color:var(--muted);letter-spacing:.04em;text-transform:uppercase;padding:12px 8px 4px}.nav{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;font-size:.9rem;font-weight:500;color:var(--text);cursor:pointer;border:none;background:transparent;width:100%;text-align:left;letter-spacing:-.01em;font-family:inherit}.nav .ic{font-size:1.05rem;width:20px;text-align:center}.nav:hover{background:color-mix(in srgb,var(--text2) 12%,transparent)}.nav.active{background:var(--accent);color:var(--accent-ink)}.nav .count{margin-left:auto;font-size:.7rem;background:color-mix(in srgb,var(--text2) 20%,transparent);color:var(--text2);padding:1px 8px;border-radius:20px}.nav.active .count{background:#ffffff40;color:#fff}.grow{flex:1}.user-chip{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px;margin-top:6px;border:.5px solid var(--border);background:color-mix(in srgb,var(--panel) 55%,transparent);transition:background .15s,border-color .15s}.user-chip:hover{background:var(--elev);border-color:var(--border2)}.user-chip .avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(140deg,var(--accent-hover),var(--accent));color:#fff;display:grid;place-items:center;font-size:.74rem;font-weight:700;letter-spacing:.01em;flex-shrink:0;box-shadow:inset 0 0 0 .5px #ffffff47,0 1px 3px #0003}.user-chip .u-name{font-size:.83rem;font-weight:600;line-height:1.25;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-chip small{display:block;color:var(--muted);font-size:.7rem;font-weight:400;margin-top:1px}.main{min-width:0}.topbar{display:flex;align-items:center;gap:12px;padding:12px 26px;height:54px;border-bottom:.5px solid var(--border);background:var(--sidebar);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);position:sticky;top:0;z-index:5}.topbar .page-title{font-weight:600;font-size:.95rem;letter-spacing:-.01em}.topbar .right{margin-left:auto;display:flex;align-items:center;gap:10px}.content{max-width:920px;margin:0 auto;padding:28px 26px 48px}@media (max-width: 720px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;height:auto;position:sticky;overflow-x:auto;padding:8px 10px;gap:4px}.sidebar .nav-lbl,.brand-row .brand,.user-chip .u-name,.user-chip small{display:none}.brand-row{padding:6px}.nav{width:auto;white-space:nowrap}}.spinner-lg{width:32px;height:32px;border-radius:50%;border:3px solid var(--border2);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.card{background:var(--panel);border:.5px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:16px;box-shadow:var(--shadow-card)}.row{display:flex;gap:12px;align-items:center;margin-top:18px;flex-wrap:wrap}.sm{font-size:.82rem}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px}@media (max-width: 560px){.grid2,.grid3{grid-template-columns:1fr}}.tgl{display:flex;align-items:center;gap:8px;font-size:.88rem;cursor:pointer;color:var(--text2)}.file-btn{display:inline-flex;align-items:center}.spacer{flex:1}.steps{display:flex;align-items:center;margin:4px auto 22px;max-width:480px}.step{display:flex;align-items:center;gap:9px}.step .n{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;font-size:.8rem;font-weight:600;background:var(--inset);color:var(--muted);flex-shrink:0;border:.5px solid var(--border2)}.step.done .n{background:var(--accent);color:#fff;border-color:transparent}.step.cur .n{background:var(--text);color:var(--panel);border-color:transparent}.step .lbl{font-size:.85rem;font-weight:500;color:var(--text2);white-space:nowrap}.step.cur .lbl,.step.done .lbl{color:var(--text)}.step .line{flex:1;height:2px;background:var(--border);border-radius:2px;margin:0 6px;min-width:24px}.step.done .line{background:var(--accent)}.drop{border:1.5px dashed var(--border2);border-radius:var(--radius);padding:30px;text-align:center;background:var(--inset);cursor:pointer;transition:border-color .15s,background .15s;display:block}.drop:hover{border-color:var(--accent)}.drop .drop-ic{width:46px;height:46px;border-radius:12px;background:var(--accent-soft);display:grid;place-items:center;margin:0 auto 12px;font-size:22px}.drop h3{font-size:.95rem;font-weight:600;margin:0 0 3px;color:var(--text)}.drop p{color:var(--text2);font-size:.85rem;margin:0}.drop .file-tag{margin-top:14px;display:inline-flex;align-items:center;gap:8px;background:var(--panel);border:.5px solid var(--border);padding:7px 13px;border-radius:9px;font-size:.85rem}.subtabs{display:inline-flex;background:var(--inset);border-radius:11px;padding:3px;gap:2px;margin-bottom:20px}.subtabs button{background:transparent;border:none;color:var(--text2);padding:6px 16px;border-radius:9px;font-family:inherit;font-size:.85rem;font-weight:500;cursor:pointer;letter-spacing:-.01em}.subtabs button.on{background:var(--panel);color:var(--text);box-shadow:0 1px 3px #0000001f}.chips{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.chip{background:var(--inset);border-radius:var(--radius-sm);padding:14px 16px}.chip b{display:block;font-size:1.5rem;font-weight:600;letter-spacing:-.02em}.chip span{font-size:.75rem;color:var(--text2)}.chip.ok b{color:var(--accent-soft-ink)}.chip.err b{color:var(--err-ink)}.problemas{list-style:none;padding:0;margin:14px 0;font-size:.85rem}.problemas li{padding:9px 13px;border-radius:9px;margin-bottom:6px}.problemas li.error{background:var(--err-bg);color:var(--err-ink)}.problemas li.aviso{background:var(--warn-bg);color:var(--warn-ink)}.filtros{display:flex;gap:12px 14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}.filtros>div{display:flex;flex-direction:column}.filtros label{margin:0 0 5px}.filtros select,.filtros input{width:auto;min-width:120px}.metricas{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}@media (max-width: 640px){.metricas{grid-template-columns:1fr 1fr}}.mcard{background:var(--panel);border:.5px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:7px;box-shadow:var(--shadow-card);min-width:0}.mcard .lbl{font-size:.76rem;color:var(--text2)}.mcard .val{font-size:1.55rem;font-weight:600;letter-spacing:-.02em;white-space:nowrap}@media (max-width: 900px){.mcard .val{font-size:1.3rem}}@media (max-width: 480px){.mcard .val{font-size:1.1rem}}.acciones{display:flex;gap:6px;justify-content:flex-end;flex-wrap:nowrap;margin-top:0}.btn.icon{padding:6px;line-height:0}.pill.icon{padding:5px}.pill.icon .d{display:none}td.cliente{max-width:160px;overflow:hidden;text-overflow:ellipsis}.mcard .val.ok{color:var(--accent-soft-ink)}.mcard .val.err{color:var(--err-ink)}.mcard .val.prog{color:var(--prog-ink)}.tabla-wrap{margin-top:14px;overflow-x:auto;border:.5px solid var(--border);border-radius:var(--radius)}table{width:100%;border-collapse:collapse;font-size:.85rem}th,td{padding:11px 13px;text-align:left;border-bottom:.5px solid var(--border);white-space:nowrap}th{color:var(--muted);font-size:.68rem;font-weight:500;text-transform:uppercase;letter-spacing:.03em}tbody tr:last-child td{border-bottom:none}td.detalle{white-space:normal;min-width:180px}.pill{display:inline-flex;align-items:center;gap:5px;font-size:.73rem;font-weight:500;padding:2px 9px;border-radius:20px}.pill .d{width:6px;height:6px;border-radius:50%;background:currentColor}.pill.ok{background:var(--ok-bg);color:var(--ok-ink)}.pill.err{background:var(--err-bg);color:var(--err-ink)}.pill.prog{background:var(--prog-bg);color:var(--prog-ink)}.detalle-row td{padding-top:0;border-top:none}.err-badge{display:inline-flex;align-items:center;gap:7px;background:var(--err-bg);color:var(--err-ink);padding:6px 11px;border-radius:8px;font-size:.8rem;white-space:normal}.status{margin-top:14px;font-size:.88rem;padding:11px 14px;border-radius:11px}.status.ok{background:var(--ok-bg);color:var(--ok-ink)}.status.err{background:var(--err-bg);color:var(--err-ink)}.status.loading{background:var(--inset);color:var(--text2)}.box-inner{margin-top:22px;padding:18px;border-radius:var(--radius);background:var(--inset);border:.5px solid var(--border)}.box-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:6px}.aviso{font-size:.83rem;margin:12px 0;padding:10px 13px;border-radius:var(--radius-sm);background:var(--warn-bg);color:var(--warn-ink);display:flex;align-items:center;gap:8px}.hintbar{display:flex;align-items:center;gap:9px;background:var(--accent-soft);border-radius:var(--radius-sm);padding:10px 14px;font-size:.83rem;color:var(--accent-soft-ink);margin-top:14px}.prod-banner{display:flex;align-items:center;gap:9px;background:var(--err-bg);color:var(--err-ink);border:.5px solid var(--err-ink);border-radius:var(--radius-sm);padding:11px 15px;font-size:.88rem;margin-bottom:16px}.save-box{margin-top:16px;padding:16px 18px;border-radius:var(--radius);background:var(--inset);border:.5px solid var(--border)}.save-box b{font-size:.92rem}.save-box a{color:var(--blue)}.prod-banner .dot{width:9px;height:9px;border-radius:50%;background:var(--err-ink);flex-shrink:0;animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@media (prefers-reduced-motion: reduce){.prod-banner .dot{animation:none}}
