.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(145deg,var(--color-primary, #5b6ae8) 0%,color-mix(in srgb,var(--color-primary, #5b6ae8) 75%,black) 100%);padding:2rem}.login-card{background:var(--surface-elevated);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);padding:2.5rem 3rem;width:100%;max-width:420px}.login-state-container{text-align:center}.login-state-card p{margin:0}.login-state-card .btn-login{margin-top:1rem}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{margin:0 0 .5rem;color:var(--text-primary);font-size:1.75rem;font-weight:700;letter-spacing:-.02em}.login-header .login-logo{max-height:68px;width:auto;margin-bottom:1rem;display:block;margin-left:auto;margin-right:auto}.login-header p{margin:0;color:var(--text-secondary);font-size:.95rem}.login-version{margin-top:.5rem;color:var(--text-muted);font-size:.85rem}.login-form{display:flex;flex-direction:column;gap:1.35rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-weight:600;color:var(--text-secondary);font-size:.9rem}.form-group input{padding:.75rem 1rem;border:2px solid var(--border);border-radius:var(--radius-sm);font-size:1rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.form-group input:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--color-primary-soft)}.form-group input:disabled{background-color:var(--surface);cursor:not-allowed;opacity:.8}.error-message{background-color:#fef2f2;color:#991b1b;padding:.75rem 1rem;border-radius:var(--radius-sm);font-size:.9rem;text-align:center;border:1px solid #fecaca}.btn-login{padding:.875rem 1.5rem;background:linear-gradient(135deg,var(--color-primary, #5b6ae8) 0%,color-mix(in srgb,var(--color-primary, #5b6ae8) 82%,black) 100%);color:#fff;border:none;border-radius:var(--radius-md);font-size:1rem;font-weight:600;cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast),opacity var(--transition-fast)}.btn-login:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px var(--color-primary-shadow)}.btn-login:active:not(:disabled){transform:translateY(0)}.btn-login:disabled{opacity:.65;cursor:not-allowed;transform:none}.login-footer{margin-top:1.75rem;padding-top:1.35rem;border-top:1px solid var(--border);text-align:center;font-size:.85rem;color:var(--text-muted)}.login-footer strong{color:var(--text-secondary)}.layout{height:100vh;max-height:100vh;min-height:100vh;display:flex;flex-direction:column;background-color:var(--surface);overflow:hidden}:root{--topbar-height: 56px}.layout-body{display:flex;flex:1;min-height:0;overflow:hidden}@media(min-width:769px){.layout-body{margin-top:var(--topbar-height)}}@media(min-width:769px){.topbar{position:fixed;top:0;left:0;right:0;z-index:1001}}.topbar{background:linear-gradient(135deg,var(--color-primary, #5b6ae8) 0%,color-mix(in srgb,var(--color-primary, #5b6ae8) 85%,black) 100%);color:#fff;padding:.6rem 1rem .6rem .5rem;box-shadow:var(--shadow-md);display:flex;align-items:center;gap:.75rem;flex-shrink:0}.topbar-toggle{display:flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border:none;background:#ffffff26;color:#fff;border-radius:var(--radius-sm);cursor:pointer;transition:background-color var(--transition-fast);flex-shrink:0}.topbar-toggle:hover{background:#ffffff40}.topbar-left{display:flex;align-items:center;gap:.75rem;min-width:0}.topbar-logo img{height:44px;width:auto;display:block;border-radius:var(--radius-sm)}.topbar-brand{margin:0;font-size:1.15rem;font-weight:700;white-space:nowrap;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis}.topbar-right{display:flex;align-items:center;gap:1rem;margin-left:auto;flex-shrink:0}.user-block{display:flex;flex-direction:column;align-items:flex-end;gap:.05rem}.user-info{font-size:.85rem;color:#fffffff2}.app-version{font-size:.7rem;color:#ffffffbf;font-weight:500}.btn-logout{padding:.45rem .9rem;background-color:#fff3;color:#fff;border:1px solid rgba(255,255,255,.35);border-radius:var(--radius-sm);cursor:pointer;font-weight:500;font-size:.85rem;transition:background-color var(--transition-fast),border-color var(--transition-fast)}.btn-logout:hover{background-color:#ffffff4d;border-color:#ffffff80}.sidebar{width:260px;flex-shrink:0;background:linear-gradient(180deg,color-mix(in srgb,var(--color-primary, #5b6ae8) 92%,black),color-mix(in srgb,var(--color-primary, #5b6ae8) 88%,black));color:#fff;display:flex;flex-direction:column;overflow:hidden;transition:width var(--transition-normal),min-width var(--transition-normal);box-shadow:var(--shadow-md)}.sidebar-closed{width:0;min-width:0;overflow:hidden;box-shadow:none}@media(min-width:769px){.sidebar{position:fixed;top:var(--topbar-height);left:0;bottom:0;height:auto;z-index:1000}.sidebar-closed{width:0;min-width:0}.layout--sidebar-open .main-content{margin-left:260px}.main-content{margin-left:0;transition:margin-left var(--transition-normal)}}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:1rem .5rem .5rem}.sidebar .nav-group{margin-bottom:.5rem}.sidebar .nav-group-title{color:#fffc;padding:.5rem .75rem .25rem;font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;display:block}.sidebar .nav-group-toggle{width:100%;text-align:left;background:none;border:none;cursor:pointer;font:inherit;color:inherit;display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.5rem .75rem .25rem;transition:background-color var(--transition-fast)}.sidebar .nav-group-toggle:hover{background-color:#ffffff1a;color:#fff}.sidebar .nav-group-chevron{font-size:.6rem;transition:transform var(--transition-fast)}.sidebar .nav-group-toggle.expanded .nav-group-chevron{transform:rotate(180deg)}.sidebar .nav-group-items{list-style:none;margin:0;padding:0;max-height:0;overflow:hidden;transition:max-height var(--transition-normal)}.sidebar .nav-group-items.expanded{max-height:500px}.sidebar .nav-group-items li{margin:0}.sidebar .nav-group-items a,.sidebar .nav-link-single{display:block;color:#fffffff2;text-decoration:none;padding:.5rem .75rem;border-radius:var(--radius-sm);font-weight:500;font-size:.9rem;transition:background-color var(--transition-fast),color var(--transition-fast)}.sidebar .nav-group-items a:hover,.sidebar .nav-link-single:hover{background-color:#ffffff26;color:#fff}.sidebar .nav-group-items a.active,.sidebar .nav-link-single.active{background-color:#ffffff40;font-weight:600;color:#fff}.sidebar .nav-link-single{margin:0 .25rem .25rem}.main-content{flex:1;min-width:0;min-height:0;padding:.75rem 1rem;overflow:hidden;display:flex;flex-direction:column;background-color:var(--surface)}.main-content>*{flex:1;min-height:0;display:flex;flex-direction:column;overflow:auto}.main-content>.lista-socios,.main-content>.listado-pagos{overflow:hidden}.main-content--full>*{max-width:100%}.main-content--full .lista-socios,.main-content--full .lista-categorias,.main-content--full .lista-liquidaciones,.main-content--full .lista-cajas,.main-content--full .lista-usuarios,.main-content--full .lista-backups,.main-content--full .lista-auditoria,.main-content--full .listado-pagos,.main-content--full .lista-egresos,.main-content--full .lista-medios-pago,.main-content--full .lista-tesoreria,.main-content--full .tabla-socios-container,.main-content--full .resumen-caja,.main-content--full .configuracion-club-page,.main-content--full .backup-page{max-width:100%}@media(max-width:768px){.topbar{padding:.5rem .75rem .5rem .35rem;gap:.5rem;position:relative;z-index:1001}.topbar-logo img{height:38px}.topbar-brand{font-size:1rem}.user-block{display:none}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:1000;height:100vh}.sidebar.sidebar-open{width:280px;max-width:85vw;box-shadow:var(--shadow-xl)}.sidebar-closed{width:0;pointer-events:none}.sidebar-overlay{display:block;position:fixed;inset:0;background:var(--surface-overlay);z-index:999;cursor:pointer}.main-content{padding:1rem}}@media(min-width:769px){.sidebar-overlay{display:none!important}}.error-boundary{padding:2rem;text-align:center;max-width:480px;margin:2rem auto}.error-boundary h2{margin:0 0 .5rem;font-size:1.25rem;color:var(--text-primary, #1a1a1a)}.error-boundary p{margin:0 0 1rem;color:var(--text-muted, #666)}.error-boundary-retry{min-height:44px;min-width:120px;padding:.5rem 1rem;font-size:1rem;cursor:pointer;border-radius:6px;border:1px solid var(--border, #ddd);background:var(--bg-secondary, #f5f5f5);color:var(--text-primary, #1a1a1a)}.error-boundary-retry:hover{background:var(--bg-hover, #eee)}.error-boundary-compact{padding:1rem;text-align:center;font-size:.9rem;color:var(--text-muted, #666)}.error-boundary-compact button{margin-top:.5rem;min-height:44px;min-width:100px;padding:.35rem .75rem;cursor:pointer;border-radius:4px;border:1px solid var(--border, #ddd);background:var(--bg-secondary, #f5f5f5)}:root{--color-primary: #5b6ae8;--color-primary-hover: #4a5ad4;--color-primary-soft: rgba(91, 106, 232, .12);--color-primary-shadow: rgba(91, 106, 232, .35);--surface: #f8f9fc;--surface-elevated: #ffffff;--surface-overlay: rgba(0, 0, 0, .5);--text-primary: #1a202c;--text-secondary: #4a5568;--text-muted: #718096;--border: #e2e8f0;--border-focus: var(--color-primary);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06);--shadow-md: 0 4px 12px rgba(15, 23, 42, .08);--shadow-lg: 0 12px 32px rgba(15, 23, 42, .12);--shadow-xl: 0 20px 50px rgba(15, 23, 42, .15);--transition-fast: .15s ease;--transition-normal: .25s ease;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:var(--text-primary);background-color:var(--surface);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#root{width:100%;min-height:100vh}h1,.page-title{color:var(--text-primary);font-weight:700;letter-spacing:-.02em}.main-content .lista-header,.main-content .header,.main-content .tesoreria-header,.main-content .backups-header{position:sticky;top:0;z-index:10;background:var(--surface);padding:.12rem 0 .2rem;margin-bottom:.24rem;flex-shrink:0;display:flex;align-items:center;flex-wrap:nowrap;gap:.5rem;min-height:0}.main-content .lista-header h1,.main-content .header h1,.main-content .tesoreria-header h1,.main-content .backups-header h2{font-size:1.05rem;font-weight:700;margin:0;line-height:1.15;flex-shrink:0}.main-content .lista-actions,.main-content .header-actions,.main-content .backups-actions{gap:.5rem;display:flex;align-items:center;flex-wrap:nowrap;margin-left:auto}.main-content .acciones-filtros{gap:.5rem}.main-content table th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .2s}.main-content table th.sortable:hover{background-color:#fff3}.main-content table th.sortable .sort-indicator{margin-left:.2rem;font-weight:700;opacity:.9}.main-content .btn-agregar,.main-content .btn-imprimir,.main-content .btn-filtros,.main-content .btn-eliminar,.main-content .btn-exportar,.main-content .btn-imprimir-tesoreria{padding:.4rem .85rem;font-size:.8rem;font-weight:600;border-radius:var(--radius-sm)}.main-content .btn-exportar-excel{background:#0d9488;color:#fff}.main-content .btn-exportar-excel:hover{filter:brightness(1.1)}.main-content .filtros-socios,.main-content .filtros-pagos,.main-content .filtros-tesoreria,.main-content .filtros-auditoria,.main-content .filtros-fecha,.main-content .filtros-grid{gap:.5rem;padding:.4rem 0 .5rem}.main-content .filtro label,.main-content .filtro-item label{font-size:.75rem;margin-bottom:.15rem}.main-content .filtro input,.main-content .filtro select,.main-content .filtro-item input,.main-content .filtro-item select{padding:.35rem .5rem;font-size:.85rem;border-radius:var(--radius-sm)}.main-content .btn-limpiar,.main-content .btn-mes-rapido,.main-content .btn-limpiar-filtros{padding:.35rem .65rem;font-size:.8rem}.main-content .lista-info,.main-content .resumen{font-size:.8rem;margin-bottom:.5rem;padding:.2rem 0}.main-content .filtros-socios,.main-content .filtros-pagos,.main-content .filtros-tesoreria{position:sticky;top:2.4rem;z-index:9;background:var(--surface);padding-bottom:.4rem;margin-bottom:.4rem}.main-content .filtros-auditoria{position:sticky;top:2.4rem;z-index:9;background:var(--surface);padding:.5rem;margin-bottom:.4rem}.btn-primary{background-color:var(--color-primary, #5b6ae8);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast),box-shadow var(--transition-fast)}.btn-primary:hover{background-color:var(--color-primary-hover, #4a5ad4)}.btn-primary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{border:2px solid var(--border);border-radius:var(--radius-sm);padding:.65rem .9rem;font-size:1rem;font-family:inherit;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--border-focus);box-shadow:0 0 0 3px var(--color-primary-soft)}
