*{margin:0;padding:0;box-sizing:border-box}:root{--color-primary: #2563eb;--color-primary-dark: #1e40af;--color-text: #1f2937;--color-text-light: #6b7280;--color-bg: #ffffff;--color-bg-alt: #f9fafb;--color-border: #e5e7eb;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 2rem;--spacing-lg: 4rem;--max-width: 1200px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.6;color:var(--color-text);background-color:var(--color-bg-alt);min-height:100vh;display:flex;flex-direction:column}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--spacing-md)}.header{background-color:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--spacing-sm) 0}.header .container{display:flex;justify-content:space-between;align-items:center}.logo{font-size:1.5rem;font-weight:700;color:var(--color-primary)}.nav{display:flex;gap:var(--spacing-md);align-items:center}.nav a{color:var(--color-text);text-decoration:none;font-weight:500;transition:color .2s}.nav a:hover{color:var(--color-primary)}.user-info{color:var(--color-text-light);font-size:.875rem}main{flex:1;padding:var(--spacing-lg) 0}.login-section{display:flex;align-items:center;justify-content:center;min-height:60vh}.login-card{background-color:var(--color-bg);padding:var(--spacing-lg);border-radius:8px;border:1px solid var(--color-border);box-shadow:0 4px 6px #0000001a;max-width:400px;width:100%}.login-card h2{font-size:2rem;margin-bottom:var(--spacing-xs);color:var(--color-text)}.login-subtitle{color:var(--color-text-light);margin-bottom:var(--spacing-md)}.login-form{margin-top:var(--spacing-md)}.form-group{margin-bottom:var(--spacing-md)}.form-group label{display:block;margin-bottom:var(--spacing-xs);font-weight:500;color:var(--color-text)}.form-group input{width:100%;padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:4px;font-size:1rem;font-family:inherit}.form-group input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.submit-button{width:100%;padding:var(--spacing-sm);background-color:var(--color-primary);color:#fff;border:none;border-radius:4px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .2s}.submit-button:hover{background-color:var(--color-primary-dark)}.login-note{margin-top:var(--spacing-md);font-size:.875rem;color:var(--color-text-light);padding:var(--spacing-sm);background-color:var(--color-bg-alt);border-radius:4px}.form-message{display:none;padding:var(--spacing-sm);border-radius:4px;margin-bottom:var(--spacing-md);font-size:.875rem}.form-message.error{display:block;background-color:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.form-message.success{display:block;background-color:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.page-title{font-size:2rem;margin-bottom:var(--spacing-md);color:var(--color-text)}.expedientes-list{display:grid;gap:var(--spacing-md)}.expediente-card{background-color:var(--color-bg);padding:var(--spacing-md);border-radius:8px;border:1px solid var(--color-border);transition:box-shadow .2s}.expediente-card:hover{box-shadow:0 2px 8px #0000001a}.expediente-header{display:flex;justify-content:space-between;align-items:start;margin-bottom:var(--spacing-sm)}.expediente-id{font-weight:600;color:var(--color-primary)}.expediente-status{padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500}.status-inicial{background-color:#dbeafe;color:#1e40af}.status-documentacion{background-color:#fef3c7;color:#92400e}.status-revision{background-color:#fce7f3;color:#9f1239}.status-firma,.status-cerrado{background-color:#d1fae5;color:#065f46}.status-cancelado{background-color:#fee2e2;color:#991b1b}.expediente-info{color:var(--color-text-light);font-size:.875rem}.loading,.empty-state{text-align:center;padding:var(--spacing-lg);color:var(--color-text-light)}.footer{background-color:var(--color-text);color:#fff;padding:var(--spacing-md) 0;text-align:center;margin-top:auto}@media (max-width: 768px){.login-card{padding:var(--spacing-md)}.nav{flex-direction:column;gap:var(--spacing-xs)}}
