.auth-background{background:linear-gradient(135deg,var(--color-primary-100) 0%,var(--color-primary-200) 50%,var(--color-white) 100%);min-height:100vh;position:relative;overflow:hidden}.auth-background:before{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,var(--color-primary-300) 0%,transparent 70%);opacity:.3;animation:float 6s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0) rotate(0) scale(1)}33%{transform:translateY(-15px) rotate(2deg) scale(1.05)}66%{transform:translateY(-10px) rotate(-1deg) scale(.98)}}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:var(--spacing-5);position:relative;z-index:1}.login-card{background:var(--color-white);border-radius:var(--border-radius-2xl);box-shadow:var(--shadow-xl);padding:var(--spacing-12);width:100%;max-width:450px;border:1px solid var(--color-primary-200);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:relative}.login-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary-500),var(--color-primary-400),var(--color-primary-300));border-radius:var(--border-radius-2xl) var(--border-radius-2xl) 0 0}.login-header{text-align:center;margin-bottom:var(--spacing-8)}.login-header h1{color:var(--color-text-primary);margin-bottom:var(--spacing-2);font-weight:var(--font-weight-bold)}.login-header p{color:var(--color-text-secondary);margin:0}.login-form{display:flex;flex-direction:column;gap:var(--spacing-4)}.form-group{display:flex;flex-direction:column}.login-button{padding:var(--spacing-3);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.login-footer{text-align:center;margin-top:var(--spacing-6);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.change-password-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:var(--color-background-secondary);padding:var(--spacing-5)}.change-password-card{background:var(--color-white);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-md);border:1px solid var(--color-border-light);padding:var(--spacing-8);width:100%;max-width:500px}.change-password-header{text-align:center;margin-bottom:var(--spacing-8)}.change-password-header h1{color:var(--color-text-primary);margin-bottom:var(--spacing-2);font-weight:var(--font-weight-bold)}.change-password-header p{color:var(--color-text-secondary);margin:var(--spacing-2) 0}.username-display,.user-display{background-color:var(--color-background-tertiary);padding:var(--spacing-2);border-radius:var(--border-radius-base);margin-top:var(--spacing-4);color:var(--color-text-secondary);border:1px solid var(--color-border-light)}.change-password-form{display:flex;flex-direction:column;gap:var(--spacing-4)}.change-password-button{padding:var(--spacing-3);display:flex;align-items:center;justify-content:center;gap:var(--spacing-2)}.back-button{padding:var(--spacing-3)}.form-actions{display:flex;gap:var(--spacing-4);margin-top:var(--spacing-4)}.form-actions .back-button{flex:1}.form-actions .change-password-button{flex:2}.error-message{background-color:var(--color-error-100);color:var(--color-error-800);padding:var(--spacing-3);border-radius:var(--border-radius-md);border:1px solid var(--color-error-200);margin:var(--spacing-2) 0}.success-message{background-color:var(--color-success-100);color:var(--color-success-800);padding:var(--spacing-3);border-radius:var(--border-radius-md);border:1px solid var(--color-success-200);margin:var(--spacing-2) 0}.field-error{color:var(--color-error-500);font-size:var(--font-size-sm);margin-top:var(--spacing-1)}.redirect-message{font-size:var(--font-size-sm);margin-top:var(--spacing-2);opacity:.8}.password-validator{margin-top:var(--spacing-2);padding:var(--spacing-4);background-color:var(--color-background-tertiary);border-radius:var(--border-radius-md);border:1px solid var(--color-border-light)}.validator-title{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.validator-rules{list-style:none;margin:0;padding:0}.validator-rule{display:flex;align-items:center;margin-bottom:var(--spacing-1);font-size:var(--font-size-sm)}.validator-rule.valid .validator-text{color:var(--color-success-500)}.validator-rule.invalid .validator-text{color:var(--color-error-500)}.validator-icon{margin-right:var(--spacing-2);font-size:var(--font-size-xs)}.password-requirements{font-size:var(--font-size-sm);color:var(--color-text-tertiary);text-align:center;margin:var(--spacing-2) 0}.loading-spinner,.auth-loading{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;background-color:var(--color-background-secondary)}.spinner,.spinner-small{border:2px solid var(--color-border-light);border-top:2px solid var(--color-primary-500);border-radius:var(--border-radius-full);animation:spin 1s linear infinite}.spinner{width:40px;height:40px;margin-bottom:var(--spacing-4)}.spinner-small{width:16px;height:16px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.storage-dashboard{padding:var(--spacing-8);max-width:1200px;margin:0 auto}.dashboard-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--spacing-8);padding-bottom:var(--spacing-4);border-bottom:1px solid var(--color-border-light)}.dashboard-header h1{margin:0;color:var(--color-text-primary);font-weight:var(--font-weight-bold)}.user-info{text-align:right}.user-details{margin-bottom:var(--spacing-4)}.user-details p{margin:var(--spacing-1) 0;color:var(--color-text-secondary)}.user-actions{display:flex;gap:var(--spacing-4);align-items:center}.change-password-link{color:var(--color-text-link);text-decoration:none;font-size:var(--font-size-sm);transition:var(--transition-colors)}.change-password-link:hover{color:var(--color-text-link-hover);text-decoration:underline}.logout-button{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.dashboard-content{display:flex;flex-direction:column;gap:var(--spacing-8)}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--spacing-6)}.dashboard-card{background:var(--color-white);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-base);padding:var(--spacing-6);border:1px solid var(--color-border-light)}.dashboard-card h3{margin:0 0 var(--spacing-2) 0;color:var(--color-text-primary);font-weight:var(--font-weight-semibold)}.dashboard-card p{margin:0 0 var(--spacing-4) 0;color:var(--color-text-secondary)}.card-action{display:inline-block;text-decoration:none;padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.card-action:hover{text-decoration:none;color:var(--color-white)}.protected-route-demo{background:var(--color-success-100);border:1px solid var(--color-success-200);border-radius:var(--border-radius-lg);padding:var(--spacing-6);margin-top:var(--spacing-8)}.protected-route-demo h3{color:var(--color-success-800);margin:0 0 var(--spacing-4) 0;font-weight:var(--font-weight-semibold)}.protected-route-demo p{color:var(--color-success-800);margin:0 0 var(--spacing-4) 0}.protected-route-demo ul{margin:0;padding-left:var(--spacing-6);color:var(--color-success-800)}.protected-route-demo code{background-color:var(--color-background-tertiary);padding:var(--spacing-1) var(--spacing-2);border-radius:var(--border-radius-sm);font-family:var(--font-family-mono);color:var(--color-text-secondary)}@media (max-width: 768px){.dashboard-header{flex-direction:column;align-items:stretch;gap:var(--spacing-4)}.user-info{text-align:left}.user-actions{justify-content:flex-start;gap:var(--spacing-2)}.form-actions{flex-direction:column;gap:var(--spacing-2)}.form-actions .back-button,.form-actions .change-password-button{flex:none}.login-card{padding:var(--spacing-6);margin:var(--spacing-4)}.change-password-card{padding:var(--spacing-4);margin:var(--spacing-4)}.dashboard-grid{grid-template-columns:1fr;gap:var(--spacing-4)}}:root{--color-primary-50: #F0F8FF;--color-primary-100: #E0F2FE;--color-primary-200: #BAE6FD;--color-primary-300: #7DD3FC;--color-primary-400: #38BDF8;--color-primary-500: #0EA5E9;--color-primary-600: #0284C7;--color-primary-700: #0369A1;--color-primary-800: #075985;--color-primary-900: #0C4A6E;--color-secondary-50: #F8FAFC;--color-secondary-100: #F1F5F9;--color-secondary-200: #E2E8F0;--color-secondary-300: #CBD5E1;--color-secondary-400: #94A3B8;--color-secondary-500: #64748B;--color-secondary-600: #475569;--color-secondary-700: #334155;--color-secondary-800: #1E293B;--color-secondary-900: #0F172A;--color-success-50: #F0FDF4;--color-success-100: #DCFCE7;--color-success-200: #BBF7D0;--color-success-300: #86EFAC;--color-success-400: #4ADE80;--color-success-500: #22C55E;--color-success-600: #16A34A;--color-success-700: #15803D;--color-success-800: #166534;--color-success-900: #14532D;--color-error-50: #FEF2F2;--color-error-100: #FEE2E2;--color-error-200: #FECACA;--color-error-300: #FCA5A5;--color-error-400: #F87171;--color-error-500: #EF4444;--color-error-600: #DC2626;--color-error-700: #B91C1C;--color-error-800: #991B1B;--color-error-900: #7F1D1D;--color-warning-50: #FFFBEB;--color-warning-100: #FEF3C7;--color-warning-200: #FDE68A;--color-warning-300: #FCD34D;--color-warning-400: #FBBF24;--color-warning-500: #F59E0B;--color-warning-600: #D97706;--color-warning-700: #B45309;--color-warning-800: #92400E;--color-warning-900: #78350F;--color-white: #FFFFFF;--color-black: #000000;--color-background-primary: #FFFFFF;--color-background-secondary: #F8FAFC;--color-background-tertiary: #F1F5F9;--color-background-accent: #F0F8FF;--color-text-primary: #1E293B;--color-text-secondary: #475569;--color-text-tertiary: #64748B;--color-text-inverse: #FFFFFF;--color-text-link: #0EA5E9;--color-text-link-hover: #0284C7;--color-border-light: #E2E8F0;--color-border-medium: #CBD5E1;--color-border-dark: #94A3B8;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-size-5xl: 3rem;--font-size-6xl: 3.75rem;--font-weight-thin: 100;--font-weight-extralight: 200;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--font-weight-black: 900;--font-family-primary: "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", sans-serif;--font-family-secondary: "Inter", system-ui, sans-serif;--font-family-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;--spacing-px: 1px;--spacing-0: 0;--spacing-0-5: .125rem;--spacing-1: .25rem;--spacing-1-5: .375rem;--spacing-2: .5rem;--spacing-2-5: .625rem;--spacing-3: .75rem;--spacing-3-5: .875rem;--spacing-4: 1rem;--spacing-5: 1.25rem;--spacing-6: 1.5rem;--spacing-7: 1.75rem;--spacing-8: 2rem;--spacing-9: 2.25rem;--spacing-10: 2.5rem;--spacing-11: 2.75rem;--spacing-12: 3rem;--spacing-14: 3.5rem;--spacing-16: 4rem;--spacing-20: 5rem;--spacing-24: 6rem;--spacing-28: 7rem;--spacing-32: 8rem;--spacing-36: 9rem;--spacing-40: 10rem;--spacing-44: 11rem;--spacing-48: 12rem;--spacing-52: 13rem;--spacing-56: 14rem;--spacing-60: 15rem;--spacing-64: 16rem;--spacing-72: 18rem;--spacing-80: 20rem;--spacing-96: 24rem;--border-radius-none: 0;--border-radius-sm: .125rem;--border-radius-base: .25rem;--border-radius-md: .375rem;--border-radius-lg: .5rem;--border-radius-xl: .75rem;--border-radius-2xl: 1rem;--border-radius-3xl: 1.5rem;--border-radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06);--shadow-none: none;--z-index-auto: auto;--z-index-0: 0;--z-index-10: 10;--z-index-20: 20;--z-index-30: 30;--z-index-40: 40;--z-index-50: 50;--z-index-dropdown: 1000;--z-index-sticky: 1020;--z-index-fixed: 1030;--z-index-modal-backdrop: 1040;--z-index-modal: 1050;--z-index-popover: 1060;--z-index-tooltip: 1070;--transition-none: none;--transition-all: all .15s cubic-bezier(.4, 0, .2, 1);--transition-default: all .15s cubic-bezier(.4, 0, .2, 1);--transition-colors: color .15s cubic-bezier(.4, 0, .2, 1), background-color .15s cubic-bezier(.4, 0, .2, 1), border-color .15s cubic-bezier(.4, 0, .2, 1);--transition-opacity: opacity .15s cubic-bezier(.4, 0, .2, 1);--transition-shadow: box-shadow .15s cubic-bezier(.4, 0, .2, 1);--transition-transform: transform .15s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box}body{font-family:var(--font-family-primary);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:1.5;color:var(--color-text-primary);background-color:var(--color-background-primary);margin:0;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-2);padding:var(--spacing-3) var(--spacing-6);border:1px solid transparent;border-radius:var(--border-radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);font-family:inherit;line-height:1;text-decoration:none;transition:var(--transition-colors);cursor:pointer;-webkit-user-select:none;user-select:none}.btn:disabled{cursor:not-allowed;opacity:.6}.btn-primary{background-color:var(--color-primary-500);color:var(--color-white);border-color:var(--color-primary-500)}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-600);border-color:var(--color-primary-600)}.btn-primary:focus{outline:none;box-shadow:0 0 0 3px var(--color-primary-200)}.btn-secondary{background-color:var(--color-white);color:var(--color-primary-500);border-color:var(--color-primary-500)}.btn-secondary:hover:not(:disabled){background-color:var(--color-primary-50);border-color:var(--color-primary-600)}.btn-success{background-color:var(--color-success-500);color:var(--color-white);border-color:var(--color-success-500)}.btn-success:hover:not(:disabled){background-color:var(--color-success-600);border-color:var(--color-success-600)}.btn-danger{background-color:var(--color-error-500);color:var(--color-white);border-color:var(--color-error-500)}.btn-danger:hover:not(:disabled){background-color:var(--color-error-600);border-color:var(--color-error-600)}.btn-sm{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.btn-lg{padding:var(--spacing-4) var(--spacing-8);font-size:var(--font-size-lg)}.card{background-color:var(--color-white);border:1px solid var(--color-border-light);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-base);padding:var(--spacing-6)}.card-elevated{box-shadow:var(--shadow-lg)}.card-header{margin-bottom:var(--spacing-4);padding-bottom:var(--spacing-4);border-bottom:1px solid var(--color-border-light)}.card-title{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0}.card-subtitle{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:var(--spacing-1) 0 0 0}.form-group{margin-bottom:var(--spacing-4)}.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary);margin-bottom:var(--spacing-2)}.form-input{width:100%;padding:var(--spacing-3) var(--spacing-4);border:1px solid var(--color-border-medium);border-radius:var(--border-radius-md);font-size:var(--font-size-base);line-height:1.5;color:var(--color-text-primary);background-color:var(--color-white);transition:var(--transition-colors)}.form-input:focus{outline:none;border-color:var(--color-primary-500);box-shadow:0 0 0 3px var(--color-primary-200)}.form-input:disabled{background-color:var(--color-background-tertiary);color:var(--color-text-tertiary);cursor:not-allowed}.form-input.error{border-color:var(--color-error-500)}.form-input.error:focus{box-shadow:0 0 0 3px var(--color-error-200)}.form-error{display:block;font-size:var(--font-size-sm);color:var(--color-error-500);margin-top:var(--spacing-1)}.nav{background-color:var(--color-primary-600);color:var(--color-white);padding:var(--spacing-4) var(--spacing-6);box-shadow:var(--shadow-md)}.nav-brand{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-white);text-decoration:none}.nav-link{color:var(--color-primary-100);text-decoration:none;padding:var(--spacing-2) var(--spacing-4);border-radius:var(--border-radius-md);transition:var(--transition-colors)}.nav-link:hover,.nav-link.active{background-color:var(--color-primary-700);color:var(--color-white)}.table{width:100%;border-collapse:collapse;background-color:var(--color-white);border-radius:var(--border-radius-lg);overflow:hidden;box-shadow:var(--shadow-base)}.table th,.table td{padding:var(--spacing-3) var(--spacing-4);text-align:left;border-bottom:1px solid var(--color-border-light)}.table th{background-color:var(--color-background-secondary);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.table tbody tr:hover{background-color:var(--color-background-secondary)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.text-success{color:var(--color-success-500)}.text-error{color:var(--color-error-500)}.text-warning{color:var(--color-warning-500)}.bg-primary{background-color:var(--color-primary-500)}.bg-secondary{background-color:var(--color-secondary-500)}.bg-success{background-color:var(--color-success-500)}.bg-error{background-color:var(--color-error-500)}.bg-warning{background-color:var(--color-warning-500)}.border-light{border-color:var(--color-border-light)}.border-medium{border-color:var(--color-border-medium)}.border-dark{border-color:var(--color-border-dark)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-base{box-shadow:var(--shadow-base)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.shadow-xl{box-shadow:var(--shadow-xl)}.rounded-sm{border-radius:var(--border-radius-sm)}.rounded{border-radius:var(--border-radius-base)}.rounded-md{border-radius:var(--border-radius-md)}.rounded-lg{border-radius:var(--border-radius-lg)}.rounded-xl{border-radius:var(--border-radius-xl)}.rounded-full{border-radius:var(--border-radius-full)}
