*{box-sizing:border-box}:root{--bg:#f4f6f7;--panel:#fff;--panel-2:#f5f7f8;--text:#0f172a;--text-muted:#64748b;--border:#e5e7eb;--accent:#168452;--accent-dark:#106d43;--accent-light:#e5f4eb;--danger:#b91c1c;--danger-light:#fecaca;--warning:#f59e0b;--warning-light:#fef3c7;--warning-contrast:#92400e;--info:#2563eb;--info-light:#dbeafe;--success:#168452;--success-light:#e5f4eb;--sidebar-bg:linear-gradient(165deg, #259666 0%, #16764f 52%, #0f5d40 100%);--sidebar-text:#f0fdf4;--sidebar-text-muted:#bbf7d0;--sidebar-active:#ffffff24;--shadow:0 1px 2px #1018280d;--radius:14px}:root[data-theme=dark]{--bg:#080d0b;--panel:#121a16;--panel-2:#19231e;--text:#f8fafc;--text-muted:#94a3b8;--border:#29352e;--accent:#1b9a5a;--accent-dark:#26b86b;--accent-light:#153b29;--danger:#f87171;--danger-light:#3d1a1a;--warning:#fbbf24;--warning-light:#3a2e0d;--warning-contrast:#fcd34d;--info:#60a5fa;--info-light:#14243d;--success:#34c77b;--success-light:#123821;--sidebar-bg:linear-gradient(165deg, #176a47 0%, #0d442e 48%, #08271c 100%);--sidebar-active:#ffffff14}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:Segoe UI,system-ui,-apple-system,Roboto,Helvetica,Arial,sans-serif}a{color:inherit}button{font-family:inherit}.card{background:var(--panel);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border)}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:600;transition:filter .15s,transform .1s,box-shadow .15s;display:inline-flex}.btn:hover{filter:brightness(.97)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 2px color-mix(in srgb, var(--accent) 25%, transparent)}.btn-primary:hover{background:var(--accent-dark);border-color:var(--accent-dark);filter:none}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--panel-2);filter:none}input,select,textarea{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:8px;outline:none;max-width:100%;padding:9px 11px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}input:disabled,select:disabled,textarea:disabled{opacity:.6;cursor:not-allowed}input[type=checkbox],input[type=radio]{width:15px;height:15px;accent-color:var(--accent);cursor:pointer}::placeholder{color:var(--text-muted);opacity:.7}@media print{.no-print{display:none!important}}.badge{border-radius:999px;align-items:center;gap:4px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-flex}.badge-success,:root[data-theme=dark] .badge-success{background:var(--success-light);color:var(--success)}.badge-danger{background:var(--danger-light);color:var(--danger)}.badge-warning{background:var(--warning-light);color:var(--warning-contrast)}.badge-info{background:var(--info-light);color:var(--info)}.badge-green{color:#15803d;background:#dcfce7}.badge-gray{color:#374151;background:#e5e7eb}.badge-purple{color:#6d28d9;background:#ede9fe}.badge-teal{color:#0f766e;background:#ccfbf1}.badge-orange{color:#c2410c;background:#ffedd5}:root[data-theme=dark] .badge-orange{color:#fb923c;background:#431407}:root[data-theme=dark] .badge-green{color:#4ade80;background:#123821}:root[data-theme=dark] .badge-gray{color:#d1d5db;background:#2a2e37}:root[data-theme=dark] .badge-purple{color:#c4b5fd;background:#2e1a47}:root[data-theme=dark] .badge-teal{color:#5eead4;background:#0f2e2b}table{border-collapse:collapse;width:100%}th{text-align:left;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);border-bottom:1px solid var(--border);padding:10px 12px;font-size:12px}td{border-bottom:1px solid var(--border);padding:12px;font-size:14px}tr:last-child td{border-bottom:none}.skeleton{background:linear-gradient(90deg, var(--panel-2) 25%, var(--border) 37%, var(--panel-2) 63%);background-size:400% 100%;border-radius:6px;width:100%;max-width:140px;height:14px;animation:1.4s infinite skeleton-loading;display:inline-block}@keyframes skeleton-loading{0%{background-position:100%}to{background-position:0}}.modal-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:100;background:#0f172a8c;justify-content:center;align-items:center;padding:20px;animation:.15s ease-out overlay-in;display:flex;position:fixed;inset:0}.modal{flex-direction:column;width:100%;max-width:100%;max-height:min(90vh,900px);animation:.18s cubic-bezier(.16,1,.3,1) modal-in;display:flex;overflow:hidden;box-shadow:0 20px 25px -5px #00000026,0 8px 10px -6px #0000001a}.modal__header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:18px 22px;display:flex}.modal__header h3{margin:0;font-size:17px;font-weight:700}.modal__header .btn{border-radius:8px;padding:6px 10px}.modal__body{flex-direction:column;flex:auto;gap:12px;min-height:0;padding:22px;display:flex;overflow:auto}.modal--payment-receipt .modal__body>.boleta{flex:none}.form-row{flex-direction:column;gap:5px;min-width:0;display:flex}.form-row label{color:var(--text-muted);font-size:12px;font-weight:600}.form-row input,.form-row select,.form-row textarea{width:100%}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:10px;margin-top:4px;padding-top:14px;display:flex}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=640px){.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:16px 16px 0 0;max-height:92vh;animation:.2s cubic-bezier(.16,1,.3,1) modal-in-mobile}.form-grid{grid-template-columns:1fr}}@keyframes modal-in-mobile{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@media print{.modal-overlay{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;padding:0;animation:none;display:block;position:static}.modal{max-width:none;max-height:none;box-shadow:none;border-radius:0;animation:none;overflow:visible}.modal__header{display:none}.modal__body{padding:0;overflow:visible}}.toast-stack{z-index:200;flex-direction:column;gap:10px;display:flex;position:fixed;top:20px;right:20px}.toast{color:#fff;box-shadow:var(--shadow);border-radius:10px;align-items:flex-start;gap:10px;max-width:320px;padding:12px 12px 12px 18px;font-size:14px;font-weight:600;animation:.2s ease-out toast-in;display:flex}.toast__mensaje{flex:1}.toast__cerrar{color:#fff;opacity:.75;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 2px;font-size:18px;line-height:1}.toast__cerrar:hover{opacity:1}.toast--success{background:var(--accent-dark)}.toast--error{background:var(--danger)}@media print{.toast-stack{display:none!important}}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.caja-banner{background:var(--warning-light,#f59e0b1f);border:1px solid var(--warning,#f59e0b);color:var(--text);border-radius:12px;align-items:center;gap:14px;margin-bottom:18px;padding:12px 18px;font-size:13.5px;line-height:1.4;animation:.2s both caja-banner-fade;display:flex}@keyframes caja-banner-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.caja-banner__icon{color:var(--warning,#f59e0b);flex-shrink:0;display:flex}.caja-banner__texto{flex:1;min-width:200px}.caja-banner__accion{white-space:nowrap;flex-shrink:0}@media (width<=640px){.caja-banner{flex-wrap:wrap}.caja-banner__accion{justify-content:center;width:100%}}.aviso-vencido-banner{background:var(--danger-light,#ef44441f);border:1px solid var(--danger,#ef4444);color:var(--text);border-radius:12px;align-items:flex-start;gap:14px;margin-bottom:18px;padding:12px 18px;font-size:13.5px;line-height:1.4;animation:.2s both aviso-vencido-banner-fade;display:flex}@keyframes aviso-vencido-banner-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.aviso-vencido-banner__icon{color:var(--danger,#ef4444);flex-shrink:0;margin-top:2px;display:flex}.aviso-vencido-banner__lista{flex-direction:column;flex:1;gap:6px;min-width:200px;display:flex}.aviso-vencido-banner__item{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.aviso-vencido-banner__texto{text-overflow:ellipsis;min-width:0;overflow:hidden}.aviso-vencido-banner__silenciar{flex-shrink:0;padding:4px 10px;font-size:12.5px}.aviso-vencido-banner__ir{white-space:nowrap;flex-shrink:0}@media (width<=640px){.aviso-vencido-banner{flex-wrap:wrap}.aviso-vencido-banner__ir{justify-content:center;width:100%}}.layout{height:100vh;display:flex;overflow:hidden}.sidebar{background:var(--sidebar-bg);width:260px;height:100vh;color:var(--sidebar-text);flex-direction:column;flex-shrink:0;padding:18px 14px;transition:width .2s;display:flex;overflow:hidden}.layout--collapsed .sidebar{width:76px}@media (width>=901px){.layout--collapsed .sidebar__brand-text,.layout--collapsed .sidebar__labels{display:none}}.sidebar__brand{align-items:center;gap:10px;padding:8px 10px 20px;display:flex}.sidebar__logo{background:#ffffff1a;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;font-weight:800;display:flex;overflow:hidden}.sidebar__logo img{object-fit:contain;width:100%;height:100%}.sidebar__brand-text{flex-direction:column;line-height:1.25;display:flex}.sidebar__brand-text strong{font-size:13px}.sidebar__brand-text span{color:var(--sidebar-text-muted);letter-spacing:.04em;font-size:10px}.sidebar__nav{scrollbar-width:thin;scrollbar-color:#ffffff2e transparent;flex-direction:column;flex:1;gap:2px;min-height:0;display:flex;overflow-y:auto}.sidebar__nav::-webkit-scrollbar{width:6px}.sidebar__nav::-webkit-scrollbar-track{background:0 0}.sidebar__nav::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:999px}.sidebar__nav::-webkit-scrollbar-thumb:hover{background:#ffffff52}.sidebar__item{color:var(--sidebar-text-muted);border-radius:10px;align-items:center;gap:12px;padding:10px 12px;text-decoration:none;display:flex}.sidebar__item:hover{color:var(--sidebar-text);background:#ffffff0f}.sidebar__item--active{background:var(--sidebar-active);color:#fff}.sidebar__item{cursor:grab}.sidebar__item--dragging{opacity:.4}.sidebar__item--drop-target{box-shadow:inset 0 2px #fff9}.sidebar__item--vencido{animation:1s ease-in-out infinite sidebar-pulso}.sidebar__item--vencido .sidebar__labels,.sidebar__item--vencido .sidebar__icon{z-index:1;position:relative}@keyframes sidebar-pulso{0%,to{color:var(--sidebar-text-muted);background:0 0}50%{color:#b91c1c;background:#fff}}@media (prefers-reduced-motion:reduce){.sidebar__item--vencido{box-shadow:0 0 0 2px var(--danger);animation:none}}.sidebar__icon{flex-shrink:0}.sidebar__alerta{background:var(--danger);color:#fff;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:10px;font-weight:700;display:flex}.sidebar__labels{flex-direction:column;line-height:1.25;display:flex}.sidebar__labels strong{font-size:13.5px;font-weight:600}.sidebar__labels small{opacity:.75;font-size:11px}.content{flex-direction:column;flex:1;min-width:0;height:100vh;display:flex;overflow:hidden}.topbar{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:14px;padding:14px 24px;display:flex}.topbar__title{font-size:18px;font-weight:700}.topbar__empresa-info{color:var(--text-muted);flex-wrap:wrap;gap:16px;margin-top:2px;font-size:12px;font-weight:400;display:flex}.topbar__empresa-info span{align-items:center;gap:5px;display:inline-flex}.topbar__empresa-info svg{flex-shrink:0;width:14px;height:14px}@media (width<=900px){.topbar__empresa-info{display:none}}.topbar__actions{align-items:center;gap:12px;margin-left:auto;display:flex}.theme-toggle{border:1px solid var(--border);background:var(--panel-2);color:var(--text);letter-spacing:.04em;cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:11px;font-weight:700;display:inline-flex}.topbar__user{align-items:center;display:flex;position:relative}.topbar__user-btn{border:1px solid var(--border);color:inherit;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-family:inherit;font-size:12px;font-weight:600;display:flex}.topbar__user-popover{background:var(--panel);border:1px solid var(--border);white-space:nowrap;z-index:70;border-radius:10px;flex-direction:column;gap:2px;min-width:160px;padding:10px 14px;animation:.12s ease-out overlay-in;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 25px #0000002e}.topbar__user-popover-name{color:var(--text);font-size:13px;font-weight:700}.topbar__user-popover-empresa{color:var(--text-muted);font-size:11px}.page{scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex:1;min-width:0;min-height:0;padding:24px;overflow:auto}.page::-webkit-scrollbar{width:8px}.page::-webkit-scrollbar-track{background:0 0}.page::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.page::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.sidebar-backdrop{display:none}@media (width<=900px){.sidebar{z-index:60;transition:transform .22s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);width:260px!important}.layout--collapsed .sidebar{transform:translate(0)}.sidebar-backdrop{z-index:55;background:#0f172a80;animation:.15s ease-out overlay-in;display:block;position:fixed;inset:0}.topbar{gap:8px;padding:12px 14px}.topbar__title{font-size:16px}.theme-toggle span,.topbar__user-btn span{display:none}.topbar__user-popover{right:-8px}.page{padding:14px}}@media (width<=480px){.topbar .btn span{display:none}}@media print{.sidebar,.sidebar-backdrop,.topbar{display:none!important}.layout,.content{display:block;height:auto!important;overflow:visible!important}.page{padding:0;height:auto!important;overflow:visible!important}.page:has(.modal-overlay)>:not(.modal-overlay):not(:has(.modal-overlay)){display:none!important}}
