:root{--color-primary: #1a2744;--color-primary-hover: #243460;--color-accent: #0ea5e9;--color-accent-hover: #0284c7;--color-bg: #f8fafc;--color-surface: #ffffff;--color-text: #0f172a;--color-text-muted: #64748b;--color-text-light: #94a3b8;--color-border: #e2e8f0;--color-border-focus: #0ea5e9;--color-success: #10b981;--color-success-bg: #ecfdf5;--color-success-text: #065f46;--color-warning: #f59e0b;--color-warning-bg: #fffbeb;--color-warning-text: #92400e;--color-error: #ef4444;--color-error-bg: #fef2f2;--color-error-text: #991b1b;--color-info: #3b82f6;--color-info-bg: #eff6ff;--color-info-text: #1e40af;--font-heading: "IBM Plex Serif", Georgia, serif;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", "Courier New", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 1px 3px rgba(0,0,0,.07), 0 1px 2px rgba(0,0,0,.04);--shadow-md: 0 4px 12px rgba(0,0,0,.07), 0 2px 4px rgba(0,0,0,.04);--shadow-lg: 0 8px 24px rgba(0,0,0,.09), 0 4px 8px rgba(0,0,0,.04);--transition-fast: .15s ease;--transition-base: .25s ease}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);background-color:var(--color-bg);color:var(--color-text);line-height:1.6;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.25;color:var(--color-text);font-weight:700}a{color:var(--color-accent);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-accent-hover)}button,input,select,textarea{font-family:var(--font-body)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade-in{animation:fadeIn .4s ease-out both}.animate-fade-up{animation:fadeInUp .5s ease-out both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
