:root{--color-brand: #47162a;--color-brand-light: #6b2340;--color-brand-dark: #2e0f1c;--color-gold: #b49b57;--color-gold-light: #d4bc7d;--color-gold-dark: #8a7340;--color-bg-page: #faf8f3;--color-bg-surface: #ffffff;--color-bg-input: #f5f3ef;--color-bg-sidebar: #47162a;--color-text-primary: #1a1a1a;--color-text-secondary: #4a4a4a;--color-text-tertiary: #6b6b6b;--color-text-muted: #9a9a9a;--color-text-inverse: #ffffff;--color-border-subtle: rgba(71, 22, 42, .08);--color-border-default: rgba(71, 22, 42, .15);--color-border-emphasis: rgba(71, 22, 42, .25);--color-border-focus: #b49b57;--color-success: #2d7a4e;--color-warning: #b8860b;--color-error: #c43c3c;--color-info: #3a6ea5;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--font-bold: 700;--leading-tight: 1.25;--leading-normal: 1.5;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 2px rgba(71, 22, 42, .05);--shadow-md: 0 4px 6px -1px rgba(71, 22, 42, .07);--sidebar-width: 260px;--header-height: 64px;--transition-fast: .15s ease;--transition-normal: .25s ease}*{box-sizing:border-box}body{margin:0;font-family:var(--font-family);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-primary);background-color:var(--color-bg-page)}a{color:var(--color-brand);text-decoration:none}a:hover{color:var(--color-brand-light)}h1,h2,h3,h4,h5,h6{margin:0;font-weight:var(--font-semibold);line-height:var(--leading-tight);color:var(--color-text-primary)}h1{font-size:var(--text-3xl)}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}button{font-family:inherit;font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;border:none;border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);transition:all var(--transition-fast)}button:focus-visible{outline:2px solid var(--color-border-focus);outline-offset:2px}input,select,textarea{font-family:inherit;font-size:var(--text-base);border:1px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);background:var(--color-bg-input);color:var(--color-text-primary);transition:border-color var(--transition-fast)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-border-focus)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:var(--space-3) var(--space-4)}.layout{display:flex;min-height:100vh;background:var(--color-bg-page)}.sidebar{width:var(--sidebar-width);background:var(--color-brand);color:var(--color-text-inverse);display:flex;flex-direction:column;position:fixed;height:100vh;z-index:100;transition:transform var(--transition-normal)}.sidebar-header{padding:var(--space-6) var(--space-4);border-bottom:1px solid rgba(255,255,255,.1);text-align:center}.sidebar-header h2{margin:0;font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text-inverse)}.nav-section{padding:var(--space-2) 0}.nav-section-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-4);background:transparent;border:none;color:#ffffff80;cursor:pointer;transition:all var(--transition-fast)}.nav-section-toggle:hover{background:#ffffff0d}.nav-section-toggle.active{color:#ffffffe6}.nav-section-title{display:block;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:1.5px;font-weight:var(--font-semibold)}.nav-section-icon{font-size:var(--text-xs);opacity:.6}.nav-menu{list-style:none;padding:0;margin:0}.nav-menu li{padding:0}.nav-menu a{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);padding-left:var(--space-8);color:#ffffffb3;font-size:var(--text-sm);transition:all var(--transition-fast)}.nav-menu a:hover{background:#ffffff1a;color:var(--color-text-inverse)}.nav-menu a.active{background:#ffffff26;color:var(--color-text-inverse);border-left:3px solid var(--color-gold);padding-left:calc(var(--space-8) - 3px)}.main-content{flex:1;margin-left:var(--sidebar-width);padding:var(--space-6);width:calc(100% - var(--sidebar-width))}.menu-toggle{display:none;position:fixed;top:var(--space-4);left:var(--space-4);z-index:200;background:var(--color-brand);color:var(--color-text-inverse);padding:var(--space-3);border-radius:var(--radius-md)}@media (max-width: 768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0)}.main-content{margin-left:0;width:100%;padding-top:var(--space-12)}.menu-toggle{display:block}}.sidebar-footer{margin-top:auto;padding:var(--space-4);border-top:1px solid rgba(255,255,255,.1)}.user-info{display:flex;flex-direction:column;margin-bottom:var(--space-3);color:#ffffffe6}.user-info span{font-size:var(--text-sm);font-weight:var(--font-medium)}.user-info small{font-size:var(--text-xs);color:#fff9}.btn-logout{width:100%;padding:var(--space-2) var(--space-3);background:#ffffff1a;color:#ffffffe6;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);font-size:var(--text-xs)}.btn-logout:hover{background:#fff3}.login-container{display:flex;min-height:100vh;background-image:url(/portada.jpg);background-size:cover;background-position:center;background-repeat:no-repeat}.login-left{flex:1;display:flex;justify-content:center;align-items:center;padding:var(--space-8)}.login-logo-left{max-width:400px;width:100%;height:auto;object-fit:contain}.login-right{flex:1;display:flex;justify-content:center;align-items:center;padding:var(--space-8);background:#fff}.login-box{background:transparent;padding:var(--space-6);border-radius:var(--radius-xl);width:100%;max-width:400px;box-shadow:none}.login-box h1{text-align:center;color:var(--color-brand);margin-bottom:var(--space-2);font-size:2rem;font-weight:700}.login-box h2{text-align:center;color:var(--color-text-secondary);margin-bottom:var(--space-6);font-size:var(--text-lg);font-weight:var(--font-normal)}.login-form .form-group{margin-bottom:var(--space-4)}.login-form .form-group label{display:block;margin-bottom:var(--space-2);color:var(--color-text-secondary);font-weight:var(--font-medium);font-size:var(--text-sm);text-align:left}.login-form .form-group input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--color-border-default);border-radius:var(--radius-md);font-size:var(--text-base);box-sizing:border-box;background:#fff;transition:all var(--transition-fast)}.login-form .form-group input:focus{outline:none;border-color:var(--color-brand);box-shadow:0 0 0 3px #47162a1a}.login-button-container{display:flex;justify-content:center;margin-top:var(--space-6)}.login-box button{width:100%;max-width:200px;padding:var(--space-3) var(--space-8);background:var(--color-brand);color:var(--color-text-inverse);border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.login-box button:hover:not(:disabled){background:var(--color-brand-light)}.login-box button:disabled{background:var(--color-text-muted);cursor:not-allowed;opacity:.6}.login-error{background:#c43c3c1a;color:var(--color-error);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin-bottom:var(--space-4);text-align:center;font-size:var(--text-sm);border:1px solid rgba(196,60,60,.2)}@media (max-width: 768px){.login-container{flex-direction:column}.login-left{padding:var(--space-4)}.login-logo-left{max-width:200px}.login-right{padding:var(--space-4)}}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-bottom:var(--space-6)}.stat-card{background:var(--color-bg-surface);border:2px solid var(--color-brand);border-radius:var(--radius-lg);padding:var(--space-6);text-align:center;box-shadow:var(--shadow-sm);transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.stat-label{font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-2)}.dashboard-sections{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-4)}.dashboard-section{background:var(--color-bg-surface);border:2px solid var(--color-brand);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-sm);transition:transform var(--transition-normal),box-shadow var(--transition-normal)}.dashboard-section:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}.dashboard-section h2{font-size:var(--text-lg);margin-bottom:var(--space-4);padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.stats-list{display:flex;flex-direction:column;gap:var(--space-2)}.stat-item{display:flex;justify-content:space-between;align-items:center;padding:var(--space-2) var(--space-3);background:var(--color-bg-input);border-radius:var(--radius-md)}.stat-item-label{font-weight:var(--font-medium)}.stat-item-value{font-weight:var(--font-bold);color:var(--color-brand)}.crud-page{padding:var(--space-4);max-width:1400px;margin:0 auto}.crud-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-6);flex-wrap:wrap;gap:var(--space-4)}.crud-header h1{margin:0;color:var(--color-brand);font-size:var(--text-2xl);font-weight:var(--font-bold)}.btn-primary{padding:var(--space-3) var(--space-5);background:linear-gradient(135deg,var(--color-brand) 0%,#5c1f38 100%);color:var(--color-text-inverse);border:2px solid var(--color-gold);border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium);transition:all var(--transition-fast)}.btn-primary:hover{box-shadow:0 4px 8px #47162a4d}.btn-secondary{padding:var(--space-3) var(--space-5);background:linear-gradient(135deg,var(--color-gold) 0%,var(--color-gold-dark) 100%);color:var(--color-brand);border:2px solid var(--color-brand);border-radius:var(--radius-md);cursor:pointer;font-size:var(--text-sm);font-weight:var(--font-medium)}.btn-edit{padding:var(--space-2) var(--space-3);background:linear-gradient(135deg,var(--color-gold) 0%,var(--color-gold-dark) 100%);color:var(--color-brand);border:1px solid var(--color-brand);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-xs);font-weight:var(--font-medium);margin-right:var(--space-2)}.btn-delete{padding:var(--space-2) var(--space-3);background:linear-gradient(135deg,#6b2340 0%,var(--color-brand) 100%);color:var(--color-text-inverse);border:1px solid var(--color-gold);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-xs);font-weight:var(--font-medium)}.error-message{background:#fee;color:var(--color-error);padding:var(--space-3);border-radius:var(--radius-md);margin-bottom:var(--space-4)}.search-container{margin-bottom:var(--space-4)}.search-box{display:flex;gap:var(--space-2);max-width:400px}.search-input{flex:1;padding:var(--space-2) var(--space-3)}.search-clear{background:none;border:none;font-size:var(--text-xl);cursor:pointer;color:var(--color-text-muted)}.search-results{display:block;margin-top:var(--space-2);color:var(--color-text-secondary);font-size:var(--text-sm)}.crud-table{background:var(--color-bg-surface);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.crud-table thead{background:var(--color-brand);color:var(--color-text-inverse)}.crud-table th{padding:var(--space-3) var(--space-4);text-align:left;font-weight:var(--font-medium)}.crud-table tbody tr{border-bottom:1px solid var(--color-border-subtle)}.crud-table tbody tr:hover{background:var(--color-bg-input)}.crud-table td{padding:var(--space-3) var(--space-4)}.no-results{text-align:center;color:var(--color-text-muted);padding:var(--space-8)!important}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--space-2);margin-top:var(--space-6)}.btn-pagination{padding:var(--space-2) var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border-default);color:var(--color-text-primary)}.btn-pagination:disabled{opacity:.5;cursor:not-allowed}.btn-pagination:not(:disabled):hover{border-color:var(--color-brand);color:var(--color-brand)}.page-numbers{display:flex;gap:var(--space-1)}.btn-page-number{padding:var(--space-2) var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border-default);min-width:40px}.btn-page-number.active{background:var(--color-brand);color:var(--color-text-inverse);border-color:var(--color-brand)}.pagination-info{text-align:center;margin-top:var(--space-4);color:var(--color-text-secondary);font-size:var(--text-sm)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal{background:var(--color-bg-surface);border-radius:var(--radius-lg);padding:var(--space-6);max-width:500px;width:90%;max-height:90vh;overflow-y:auto}.modal h2{margin-bottom:var(--space-4);color:var(--color-brand)}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;margin-bottom:var(--space-2);font-weight:var(--font-medium);color:var(--color-text-secondary)}.form-group input,.form-group select{width:100%}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-4);margin-top:var(--space-6)}.stat-card{background:var(--color-bg-surface);padding:var(--space-6);border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-sm)}.stat-number{font-size:2.5rem;font-weight:var(--font-bold);color:var(--color-brand)}.stat-label{color:var(--color-text-secondary);margin-top:var(--space-2)}.filters-row{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4);padding:var(--space-4);background:var(--color-bg-surface);border-radius:var(--radius-md)}.filters-row select{min-width:150px}.user-foto{width:40px;height:40px;border-radius:50%;overflow:hidden;cursor:pointer;display:flex;align-items:center;justify-content:center;background:var(--color-bg-input)}.user-foto img{width:100%;height:100%;object-fit:cover}.foto-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;color:var(--color-text-muted)}.foto-preview-large{width:200px;height:200px;margin:0 auto var(--space-4);border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--color-bg-input)}.foto-preview-large img{width:100%;height:100%;object-fit:cover}.foto-placeholder-large{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:var(--text-lg)}.user-type-selection{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-4);margin-bottom:var(--space-4)}.user-type-card{background:var(--color-bg-input);border:2px solid var(--color-border-default);border-radius:var(--radius-md);padding:var(--space-4);text-align:center;cursor:pointer;transition:all var(--transition-fast)}.user-type-card:hover{border-color:var(--color-gold);box-shadow:0 4px 8px #47162a33}.user-type-icon{font-size:2.5rem;margin-bottom:var(--space-2)}.user-type-card h3{margin:0 0 var(--space-2);color:var(--color-brand)}.user-type-card p{margin:0;font-size:var(--text-sm);color:var(--color-text-secondary)}.foto-preview{width:100px;height:100px;margin-top:var(--space-2);border-radius:50%;overflow:hidden}.foto-preview img{width:100%;height:100%;object-fit:cover}.apps-roles-container{display:flex;flex-direction:column;gap:var(--space-3);max-height:200px;overflow-y:auto;padding:var(--space-3);background:var(--color-bg-input);border-radius:var(--radius-md)}.app-role-item{padding:var(--space-2);border-bottom:1px solid var(--color-border-subtle)}.app-role-item:last-child{border-bottom:none}.app-role-header{font-weight:var(--font-medium);color:var(--color-brand);margin-bottom:var(--space-2)}.app-name{font-size:var(--text-sm)}.roles-list{display:flex;flex-wrap:wrap;gap:var(--space-2)}.role-checkbox{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer}.role-checkbox input{width:auto}
