:root{color-scheme:light dark;--brand: #4f46e5;--brand-hover: #4338ca;--brand-active: #3730a3;--brand-contrast: #ffffff;--brand-soft: #eef2ff;--brand-soft-border: #c7d2fe;--brand-text: #4338ca;--bg: #f3f4f8;--bg-grad: radial-gradient(1200px 600px at 100% -10%, #e8eaff 0%, transparent 60%), radial-gradient(900px 500px at -10% 0%, #eef2ff 0%, transparent 55%);--surface: #ffffff;--surface-muted: #f7f8fb;--surface-hover: #f3f4f8;--border: #e6e8ee;--border-strong: #d3d7e0;--text: #11131a;--text-muted: #687085;--text-subtle: #99a0b2;--success: #16a34a;--success-soft: #dcfce7;--success-text: #15803d;--warning: #c2740a;--warning-soft: #fef3c7;--warning-text: #b45309;--danger: #dc2626;--danger-hover: #b91c1c;--danger-soft: #fee2e2;--danger-text: #b91c1c;--shadow-xs: 0 1px 2px rgba(16, 19, 34, .04);--shadow-sm: 0 1px 3px rgba(16, 19, 34, .06), 0 1px 2px rgba(16, 19, 34, .04);--shadow-md: 0 4px 12px rgba(16, 19, 34, .08), 0 2px 4px rgba(16, 19, 34, .04);--shadow-lg: 0 12px 32px rgba(16, 19, 34, .12), 0 4px 8px rgba(16, 19, 34, .05);--shadow-brand: 0 6px 18px color-mix(in srgb, var(--brand) 38%, transparent);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--radius-full: 999px;--ring: 0 0 0 3px color-mix(in srgb, var(--brand) 30%, transparent)}@media(prefers-color-scheme:dark){:root{--brand: #6366f1;--brand-hover: #818cf8;--brand-active: #a5b4fc;--brand-contrast: #0b0d14;--brand-soft: color-mix(in srgb, #6366f1 18%, transparent);--brand-soft-border: color-mix(in srgb, #818cf8 45%, transparent);--brand-text: #a5b4fc;--bg: #0b0d14;--bg-grad: radial-gradient(1200px 600px at 100% -10%, #1a1f3a 0%, transparent 60%), radial-gradient(900px 500px at -10% 0%, #15182b 0%, transparent 55%);--surface: #141823;--surface-muted: #1a1f2c;--surface-hover: #1e2433;--border: #262c3a;--border-strong: #353d50;--text: #e9ebf2;--text-muted: #9aa2b6;--text-subtle: #6b7385;--success: #22c55e;--success-soft: color-mix(in srgb, #22c55e 16%, transparent);--success-text: #4ade80;--warning: #f59e0b;--warning-soft: color-mix(in srgb, #f59e0b 16%, transparent);--warning-text: #fbbf24;--danger: #ef4444;--danger-hover: #f87171;--danger-soft: color-mix(in srgb, #ef4444 16%, transparent);--danger-text: #fca5a5;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .5);--shadow-md: 0 6px 16px rgba(0, 0, 0, .5);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .6);--shadow-brand: 0 6px 20px color-mix(in srgb, var(--brand) 45%, transparent)}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.55;color:var(--text);background-color:var(--bg);background-image:var(--bg-grad);background-attachment:fixed;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4{line-height:1.2;letter-spacing:-.018em;margin:0 0 .5rem;font-weight:700}h1{font-size:1.6rem}h2{font-size:1.28rem;margin-top:.25rem}h3{font-size:1.02rem;font-weight:650}p{margin:0 0 .75rem}a{color:var(--brand-text);text-decoration:none;font-weight:500;transition:color .15s ease}a:hover{color:var(--brand-hover);text-decoration:underline}::selection{background:color-mix(in srgb,var(--brand) 25%,transparent)}.stack{display:grid;gap:.85rem}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.1rem;margin-bottom:1.75rem;background:color-mix(in srgb,var(--surface) 72%,transparent);-webkit-backdrop-filter:saturate(160%) blur(10px);backdrop-filter:saturate(160%) blur(10px);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.topbar-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.user-chip{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .7rem .3rem .35rem;border:1px solid var(--border);border-radius:var(--radius-full);background:var(--surface);font-size:.85rem;color:var(--text-muted);max-width:60vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{display:grid;place-items:center;width:26px;height:26px;flex:0 0 auto;border-radius:50%;background:linear-gradient(135deg,var(--brand),color-mix(in srgb,var(--brand) 60%,#22d3ee));color:#fff;font-size:.72rem;font-weight:700;text-transform:uppercase}.brand{display:inline-flex;align-items:center;gap:.65rem;color:var(--text);font-weight:700;font-size:1.15rem;letter-spacing:-.02em;text-decoration:none}.brand:hover{text-decoration:none;color:var(--text)}.brand-logo{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;color:#fff;background:linear-gradient(135deg,var(--brand) 0%,color-mix(in srgb,var(--brand) 55%,#06b6d4) 100%);box-shadow:var(--shadow-brand)}.brand-logo svg{width:21px;height:21px}.brand-name{display:flex;flex-direction:column;line-height:1.1}.brand-sub{font-size:.7rem;font-weight:500;color:var(--text-muted);letter-spacing:0}button,.btn{font:inherit;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem .95rem;border-radius:var(--radius-sm);border:1px solid var(--brand);background:var(--brand);color:var(--brand-contrast);line-height:1.2;box-shadow:var(--shadow-xs);transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .05s ease,color .15s ease}button:hover,.btn:hover{background:var(--brand-hover);border-color:var(--brand-hover);box-shadow:var(--shadow-brand)}button:active,.btn:active{background:var(--brand-active);border-color:var(--brand-active);transform:translateY(1px);box-shadow:var(--shadow-xs)}button:disabled,.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}:focus-visible{outline:none;box-shadow:var(--ring)}button.secondary,.btn.secondary,button.ghost,.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--border-strong);box-shadow:var(--shadow-xs)}button.secondary:hover,.btn.secondary:hover,button.ghost:hover,.btn.ghost:hover{background:var(--surface-hover);border-color:var(--border-strong);box-shadow:var(--shadow-sm);color:var(--text)}button.secondary:active,button.ghost:active{background:var(--surface-muted);transform:translateY(1px)}button.danger,.btn.danger{background:var(--danger-soft);color:var(--danger-text);border-color:color-mix(in srgb,var(--danger) 35%,transparent);box-shadow:none}button.danger:hover,.btn.danger:hover{background:var(--danger);color:#fff;border-color:var(--danger);box-shadow:0 6px 16px color-mix(in srgb,var(--danger) 35%,transparent)}button.danger:active{background:var(--danger-hover);border-color:var(--danger-hover)}button.link,.btn.link{background:transparent;border:none;color:var(--brand-text);padding:0;box-shadow:none;font-weight:600;text-decoration:none}button.link:hover,.btn.link:hover{background:transparent;color:var(--brand-hover);text-decoration:underline;box-shadow:none}.btn-block{width:100%}.btn-lg{padding:.72rem 1.3rem;font-size:1rem}input,select,textarea{font:inherit;width:100%;padding:.55rem .7rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input::placeholder,textarea::placeholder{color:var(--text-subtle)}input:hover,select:hover,textarea:hover{border-color:color-mix(in srgb,var(--brand) 35%,var(--border-strong))}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:var(--ring)}input[type=file]{padding:.4rem .5rem;color:var(--text-muted);cursor:pointer}input[type=file]::file-selector-button{font:inherit;font-weight:600;margin-right:.7rem;padding:.35rem .7rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-muted);color:var(--text);cursor:pointer;transition:background .15s ease}input[type=file]::file-selector-button:hover{background:var(--surface-hover)}label{display:grid;gap:.3rem;font-size:.88rem;font-weight:500;color:var(--text-muted)}.card-block{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:1rem 1.15rem;margin-bottom:1.1rem;box-shadow:var(--shadow-sm)}.cards{list-style:none;margin:0 0 1.25rem;padding:0;display:grid;gap:.85rem;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.cards li,.stat{display:grid;gap:.15rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);font-size:.78rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);position:relative;overflow:hidden;transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}.cards li:before,.stat:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,var(--brand),color-mix(in srgb,var(--brand) 50%,#06b6d4));opacity:.85}.cards li:hover,.stat:hover{box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--brand-soft-border)}.stat .num{display:block;font-size:1.7rem;font-weight:750;letter-spacing:-.02em;text-transform:none;color:var(--text);margin-bottom:.1rem}.tile-grid{list-style:none;margin:0;padding:0;display:grid;gap:.85rem;grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}.tile{display:flex;align-items:center;gap:.85rem;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);color:var(--text);text-decoration:none;transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease}.tile:hover{text-decoration:none;color:var(--text);box-shadow:var(--shadow-md);transform:translateY(-2px);border-color:var(--brand-soft-border)}.tile:hover .tile-chevron{transform:translate(3px);color:var(--brand)}.tile-ic{display:grid;place-items:center;width:44px;height:44px;flex:0 0 auto;border-radius:var(--radius-sm);background:var(--brand-soft);color:var(--brand-text)}.tile-ic svg{width:22px;height:22px}.tile-body{display:grid;gap:.1rem;min-width:0;flex:1}.tile-title{font-size:1rem;font-weight:650;letter-spacing:-.01em}.tile-chevron{color:var(--text-subtle);font-size:1.2rem;transition:transform .18s ease,color .18s ease}.list{list-style:none;padding:0;margin:0;display:grid;gap:.6rem}.list li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.8rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-xs);transition:box-shadow .15s ease,border-color .15s ease}.list li:hover{box-shadow:var(--shadow-sm);border-color:var(--border-strong)}.list li.muted{background:transparent;box-shadow:none;border-style:dashed;justify-content:center;color:var(--text-muted)}.list li>div{display:grid;gap:.1rem;min-width:0}.list li strong{font-weight:600}.tag{font-size:.76rem;font-weight:600;padding:.2rem .6rem;border-radius:var(--radius-full);border:1px solid var(--border-strong);background:var(--surface-muted);color:var(--text-muted);white-space:nowrap}.tag.admin{background:var(--brand-soft);border-color:var(--brand-soft-border);color:var(--brand-text)}.tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin:1.25rem 0 1.5rem;padding:.35rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-xs);overflow-x:auto}.tabs a{padding:.45rem .85rem;border-radius:var(--radius-sm);color:var(--text-muted);font-weight:600;font-size:.9rem;white-space:nowrap;text-decoration:none;transition:background .15s ease,color .15s ease}.tabs a:hover{background:var(--surface-hover);color:var(--text);text-decoration:none}.tabs a.active{background:var(--brand);color:var(--brand-contrast);font-weight:600;text-decoration:none;box-shadow:var(--shadow-xs)}.tabs a.active:hover{color:var(--brand-contrast);background:var(--brand-hover)}.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.74rem;font-weight:600;padding:.18rem .6rem;border-radius:var(--radius-full);text-transform:capitalize;border:1px solid transparent}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.pendiente,.badge.parcial{color:var(--warning-text);background:var(--warning-soft);border-color:color-mix(in srgb,var(--warning) 30%,transparent)}.badge.aprobado,.badge.pagado{color:var(--success-text);background:var(--success-soft);border-color:color-mix(in srgb,var(--success) 30%,transparent)}.badge.rechazado,.badge.vencido{color:var(--danger-text);background:var(--danger-soft);border-color:color-mix(in srgb,var(--danger) 30%,transparent)}.badge.anulado{color:var(--text-muted);background:var(--surface-muted);border-color:var(--border-strong)}.tabla{width:100%;border-collapse:separate;border-spacing:0;font-size:.9rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);margin-bottom:1rem}.tabla th,.tabla td{text-align:left;padding:.65rem .85rem;border-bottom:1px solid var(--border);vertical-align:middle}.tabla thead th{font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted);background:var(--surface-muted)}.tabla tbody tr{transition:background .12s ease}.tabla tbody tr:hover{background:var(--surface-muted)}.tabla tbody tr:last-child td{border-bottom:none}.tabla td.muted{color:var(--text-muted)}.rowform{display:grid;grid-template-columns:1.4fr 1fr .8fr .7fr 1.4fr auto auto;gap:.5rem;align-items:center;margin-bottom:.5rem}.rowform.head{font-size:.74rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-top:.75rem;padding:0 .2rem}.acciones{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.inline{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.inline input{width:auto}.muted{color:var(--text-muted);font-size:.9rem}.error{color:var(--danger-text);font-weight:500}.ok{color:var(--success-text);font-weight:500}.aviso{display:flex;gap:.65rem;align-items:baseline;border:1px solid color-mix(in srgb,var(--warning) 35%,transparent);background:var(--warning-soft);color:var(--warning-text);border-radius:var(--radius);padding:.8rem 1rem;margin:0 0 1.1rem;box-shadow:var(--shadow-xs)}.aviso:before{content:"⚠";font-size:1rem;line-height:1.4}.aviso a{color:inherit;text-decoration:underline;font-weight:700}.ok-box{border:1px solid color-mix(in srgb,var(--success) 40%,transparent);background:var(--success-soft);color:var(--success-text);border-radius:var(--radius);padding:.9rem 1.1rem;margin:.85rem 0;box-shadow:var(--shadow-xs)}.ok-box p{margin:0 0 .4rem;color:var(--text)}.ok-box p:first-child{font-weight:600}.ok-box code{font-size:1.05rem;font-weight:700;padding:.15rem .5rem;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--success) 18%,transparent);color:var(--success-text)}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:1.85rem 1.75rem}.auth-card h1{font-size:1.4rem;margin-top:1rem}.auth-head{text-align:center;margin-bottom:1.4rem}.auth-head .brand{justify-content:center}.auth-foot{margin:1.1rem 0 0;text-align:center;color:var(--text-muted);font-size:.92rem}.hero{max-width:640px;margin:0 auto;padding:clamp(3rem,12vh,7rem) 1.25rem 4rem;text-align:center}.hero .brand{justify-content:center;margin-bottom:1.75rem;transform:scale(1.1)}.hero h1{font-size:clamp(2rem,6vw,3rem);letter-spacing:-.03em;margin-bottom:.75rem}.hero .lead{font-size:1.12rem;color:var(--text-muted);max-width:30rem;margin:0 auto 2rem}.hero-actions{display:flex;gap:.75rem;justify-content:center;flex-wrap:wrap}.page{max-width:980px;margin:0 auto;padding:2rem 1.25rem 4rem}.page-narrow{max-width:760px}.back-link{display:inline-flex;align-items:center;gap:.35rem;font-size:.9rem;color:var(--text-muted);margin-bottom:.85rem}.back-link:hover{color:var(--brand-text);text-decoration:none}.page-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.25rem}.page-head h1{margin:0}@media(max-width:560px){.grid2{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:stretch}.topbar-actions{justify-content:space-between}.user-chip{max-width:none}.rowform{grid-template-columns:1fr 1fr}.rowform.head{display:none}}@media print{body{background:#fff}.topbar,.tabs,.back-link,button,.btn{display:none!important}.tabla,.card-block,.stat,.cards li{box-shadow:none}}
