:root{--cyan-50: #ecfeff;--cyan-100: #cffafe;--cyan-200: #a5f3fc;--cyan-400: #22d3ee;--cyan-500: #06b6d4;--cyan-600: #0891b2;--cyan-700: #0e7490;--cyan-800: #155e75;--cyan-900: #164e63;--cyan-950: #083344;--navy-0: #071a23;--navy-1: #0b2632;--navy-2: #103041;--navy-3: #173e54;--bg-0: #fafcfd;--bg-1: #ffffff;--bg-2: #f4f7f9;--bg-3: #e8eef2;--line: #dde5ea;--line-soft: #eef2f5;--ink-0: #0b1a24;--ink-1: #2c3e4d;--ink-2: #617484;--ink-3: #8fa0ae;--red: #dc2626;--red-bg: #fef2f2;--green: #16a34a;--amber: #d97706;--amber-dim: var(--cyan-700);--dark-0: var(--navy-0);--dark-1: var(--navy-1);--dark-2: var(--navy-2);--font-serif: "Fraunces", Georgia, "Times New Roman", serif;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--shadow-sm: 0 1px 2px rgba(11, 26, 36, .06);--shadow-md: 0 4px 12px rgba(11, 26, 36, .08);--shadow-lg: 0 24px 48px -12px rgba(11, 26, 36, .18);--r-sm: 4px;--r-md: 8px;--r-lg: 12px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg-0);color:var(--ink-0);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01"}a{color:var(--cyan-700);text-decoration:none}a:hover{color:var(--cyan-600)}::selection{background:var(--cyan-200);color:var(--cyan-950)}button{font-family:inherit;font-size:13px;font-weight:500;cursor:pointer;border:1px solid var(--line);background:var(--bg-1);color:var(--ink-0);padding:9px 16px;border-radius:var(--r-md);transition:all .14s cubic-bezier(.4,0,.2,1);display:inline-flex;align-items:center;gap:8px;justify-content:center}button:hover:not(:disabled){border-color:var(--cyan-600);color:var(--cyan-700);background:var(--cyan-50)}button:focus-visible{outline:2px solid var(--cyan-600);outline-offset:2px}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--ink-0);border-color:var(--ink-0);color:#fff;font-weight:600;box-shadow:var(--shadow-sm)}button.primary:hover:not(:disabled){background:var(--navy-0);border-color:var(--navy-0);color:#fff;box-shadow:var(--shadow-md)}button.accent{background:var(--cyan-600);border-color:var(--cyan-600);color:#fff;font-weight:600}button.accent:hover:not(:disabled){background:var(--cyan-700);border-color:var(--cyan-700)}button.danger{color:var(--red);border-color:#fecaca;background:transparent}button.danger:hover:not(:disabled){background:var(--red-bg);border-color:var(--red);color:var(--red)}input,select,textarea{font-family:inherit;font-size:14px;color:var(--ink-0);background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-md);padding:10px 12px;width:100%;transition:all .14s}input::placeholder{color:var(--ink-3)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cyan-600);box-shadow:0 0 0 3px #0891b21f}.input-with-icon{position:relative;display:flex;align-items:center}.input-with-icon .ic{position:absolute;left:12px;display:flex;color:var(--ink-3);pointer-events:none}.input-with-icon input{padding-left:38px}.field{margin-bottom:16px}.field label{display:block;font-size:12px;font-weight:500;color:var(--ink-1);margin-bottom:6px;letter-spacing:.01em}.hint{font-size:11px;color:var(--ink-2);margin-top:4px}.login-wrap{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-left{background:radial-gradient(ellipse at top left,rgba(8,145,178,.22),transparent 55%),radial-gradient(ellipse at bottom right,rgba(34,211,238,.08),transparent 60%),linear-gradient(135deg,var(--navy-0) 0%,var(--navy-1) 50%,var(--navy-2) 100%);color:#eaf4f7;padding:56px 64px;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-left:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.03;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.7'/></svg>")}.login-left:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%);mask-image:radial-gradient(ellipse at center,black 40%,transparent 80%)}.login-brand-box{display:flex;align-items:center;gap:14px;position:relative;z-index:1}.login-brand-badge{width:40px;height:40px;border-radius:var(--r-md);background:var(--cyan-600);color:#fff;font-family:var(--font-serif);font-weight:600;font-size:22px;display:grid;place-items:center;box-shadow:0 6px 16px #0891b259}.login-brand-lbl{font-family:var(--font-mono);font-size:11px;letter-spacing:.24em;font-weight:600;color:#fff}.login-brand-sub{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--cyan-200);opacity:.65;margin-top:2px}.login-headline{font-family:var(--font-serif);font-size:clamp(40px,4.4vw,56px);line-height:1.02;font-weight:400;letter-spacing:-.02em;color:#fff;position:relative;z-index:1;max-width:14ch}.login-headline span{font-style:italic;color:var(--cyan-400);font-weight:400}.login-subline{margin-top:20px;font-size:14px;line-height:1.6;color:#eaf4f7a6;max-width:42ch;position:relative;z-index:1}.login-divider{margin-top:28px;width:56px;height:1px;background:linear-gradient(90deg,var(--cyan-400),transparent);position:relative;z-index:1}.login-footline{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:#eaf4f759;position:relative;z-index:1}.login-right{display:grid;place-items:center;padding:32px;background:var(--bg-1)}.login-form{width:100%;max-width:380px}.login-heading{font-family:var(--font-serif);font-size:32px;font-weight:500;letter-spacing:-.02em;color:var(--ink-0);margin-bottom:6px}.login-sub{color:var(--ink-2);font-size:13px;margin-bottom:28px}.login-form button.primary{width:100%;padding:12px 16px;font-size:14px;margin-top:8px;border-radius:var(--r-md)}.login-form button.primary svg{transition:transform .2s}.login-form button.primary:hover:not(:disabled) svg{transform:translate(4px)}.login-foot{margin-top:28px;padding-top:20px;border-top:1px solid var(--line-soft);text-align:center;font-family:var(--font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}@media (max-width: 860px){.login-wrap{grid-template-columns:1fr}.login-left{padding:28px 24px}.login-headline{font-size:32px}.login-subline,.login-footline{display:none}.login-right{padding:24px}}.app-shell{display:flex;flex-direction:column;min-height:100vh;background:var(--bg-0)}.topbar{height:56px;background:var(--bg-1);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:10px}.brand-mark{font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:.2em;color:var(--ink-0);padding:5px 10px;background:var(--cyan-50);border:1px solid var(--cyan-200);border-radius:var(--r-sm)}.brand-sub{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2)}.user-chip{display:flex;align-items:center;gap:10px;font-size:12px;color:var(--ink-1)}.user-chip .dot{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px #16a34a26}.main-layout{display:grid;grid-template-columns:240px 1fr;flex:1;min-height:0}.sidebar{background:var(--bg-1);border-right:1px solid var(--line);padding:20px 0;overflow-y:auto}.sidebar-section{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);padding:16px 20px 8px;font-weight:600}.sidebar nav a{display:block;padding:8px 20px;font-size:13px;color:var(--ink-1);border-left:2px solid transparent;transition:all .12s}.sidebar nav a:hover{background:var(--bg-2);color:var(--cyan-700)}.sidebar nav a.active{background:var(--cyan-50);color:var(--cyan-700);border-left-color:var(--cyan-600);font-weight:500}.content{padding:28px 32px;overflow-x:auto}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.page-title{font-family:var(--font-serif);font-size:28px;font-weight:500;letter-spacing:-.02em;color:var(--ink-0)}.page-sub{font-size:12px;color:var(--ink-2);margin-top:2px;letter-spacing:.02em}.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-lg);padding:20px 24px;margin-bottom:16px;box-shadow:var(--shadow-sm)}.card-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin-bottom:16px;font-weight:600}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}table{width:100%;border-collapse:collapse;font-size:13px}thead th{text-align:left;padding:10px 12px;background:var(--bg-2);color:var(--ink-2);font-weight:500;font-size:11px;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--line)}tbody td{padding:11px 12px;border-bottom:1px solid var(--line-soft);color:var(--ink-1)}tbody tr:hover{background:var(--bg-2)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.flag{display:inline-block;padding:2px 7px;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.08em;border:1px solid var(--line);border-radius:3px;color:var(--ink-2);background:var(--bg-2);margin-right:4px;margin-bottom:3px}.flag.on{color:var(--cyan-700);border-color:var(--cyan-600);background:var(--cyan-50)}.status-badge{display:inline-block;padding:3px 10px;font-size:11px;font-weight:500;border-radius:999px;letter-spacing:.02em}.status-abierto{background:#fef3c7;color:#a16207}.status-pendiente{background:#dbeafe;color:#1d4ed8}.status-cerrado{background:#dcfce7;color:#166534}.status-eliminar{background:#fee2e2;color:var(--red)}.flags-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.flag-check{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;font-size:12px;color:var(--ink-1);transition:all .14s}.flag-check input{width:auto;margin:0}.flag-check:hover{background:var(--bg-2)}.flag-check.on{background:var(--cyan-50);border-color:var(--cyan-600);color:var(--cyan-800)}.flag-check-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}.flag-check-desc{font-size:11px;color:var(--ink-3);margin-left:auto}.file-drop{position:relative;border:2px dashed var(--line);border-radius:var(--r-lg);padding:40px 20px;text-align:center;color:var(--ink-2);cursor:pointer;transition:all .16s;font-size:13px}.file-drop:hover,.file-drop.over{border-color:var(--cyan-600);color:var(--cyan-700);background:var(--cyan-50)}.file-drop input{display:none}.err-msg{background:var(--red-bg);border:1px solid #fecaca;color:var(--red);padding:10px 14px;border-radius:var(--r-md);font-size:13px;margin-bottom:12px}.ok-msg{background:#f0fdf4;border:1px solid #bbf7d0;color:#15803d;padding:10px 14px;border-radius:var(--r-md);font-size:13px;margin-bottom:12px}.row{display:flex;gap:12px;align-items:center}.spinner{width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.empty{display:grid;place-items:center;padding:60px 20px;color:var(--ink-2);font-size:13px}.fade-in{animation:fade-in .28s cubic-bezier(.4,0,.2,1)}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}*::-webkit-scrollbar{width:8px;height:8px}*::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:4px}*::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}code{font-family:var(--font-mono);background:var(--bg-2);padding:1px 6px;border-radius:3px;font-size:12px;color:var(--cyan-800);border:1px solid var(--line-soft)}
