:root{--color-primary: #0066cc;--color-primary-hover: #0052a3;--color-primary-light: #f0f7ff;--color-secondary: #2c3e50;--color-secondary-light: #34495e;--color-background-primary: #ffffff;--color-background-secondary: #f5f5f5;--color-background-tertiary: #f8f9fa;--color-background-dark: #242424;--color-text-primary: #333333;--color-text-secondary: #666666;--color-text-muted: #999999;--color-text-inverse: #ffffff;--color-border-light: #eeeeee;--color-border-medium: #dddddd;--color-border-focus: var(--color-primary);--color-success: #155724;--color-success-bg: #d4edda;--color-success-border: #c3e6cb;--color-error: #721c24;--color-error-bg: #f8d7da;--color-error-border: #f5c6cb;--color-warning: #856404;--color-warning-bg: #fff3cd;--color-warning-border: #ffeaa7;--color-info: #0c5460;--color-info-bg: #d1ecf1;--color-info-border: #b6d4da;--color-hover-light: #f8f9fa;--color-hover-primary: var(--color-primary-light);--font-family-primary: system-ui, Avenir, Helvetica, Arial, sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: .95rem;--font-size-md: 1rem;--font-size-lg: 1.1rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--font-size-4xl: 2.5rem;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-tight: 1.25;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--spacing-3xl: 3rem;--spacing-4xl: 4rem;--container-sm: 576px;--container-md: 768px;--container-lg: 992px;--container-xl: 1200px;--content-width-narrow: 400px;--content-width-medium: 600px;--content-width-wide: 800px;--radius-none: 0;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 50%;--border-width-thin: 1px;--border-width-medium: 2px;--border-width-thick: 4px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 2px 4px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 8px rgba(0, 0, 0, .1);--shadow-xl: 0 8px 16px rgba(0, 0, 0, .1);--shadow-focus: 0 0 0 2px rgba(0, 102, 204, .2);--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--transition-colors: color var(--transition-normal), background-color var(--transition-normal), border-color var(--transition-normal);--transition-transform: transform var(--transition-normal);--transition-opacity: opacity var(--transition-normal);--z-dropdown: 1000;--z-sticky: 1020;--z-fixed: 1030;--z-modal-backdrop: 1040;--z-modal: 1050;--z-popover: 1060;--z-tooltip: 1070;--z-toast: 1080;--media-max-width: 100%;--media-max-height-desktop: 400px;--media-max-height-mobile: 300px;--form-element-height: 2.75rem;--form-element-padding: var(--spacing-md);--progress-height: 4px;--progress-bg: var(--color-background-tertiary);--progress-fill: var(--color-primary);--flow-content-max-width: var(--content-width-wide);--question-option-spacing: var(--spacing-sm)}.text-xs{font-size:var(--font-size-xs)}.text-sm{font-size:var(--font-size-sm)}.text-base{font-size:var(--font-size-base)}.text-md{font-size:var(--font-size-md)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-2xl{font-size:var(--font-size-2xl)}.text-3xl{font-size:var(--font-size-3xl)}.text-4xl{font-size:var(--font-size-4xl)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.m-xs{margin:var(--spacing-xs)}.m-sm{margin:var(--spacing-sm)}.m-md{margin:var(--spacing-md)}.m-lg{margin:var(--spacing-lg)}.m-xl{margin:var(--spacing-xl)}.m-2xl{margin:var(--spacing-2xl)}.p-xs{padding:var(--spacing-xs)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.p-xl{padding:var(--spacing-xl)}.p-2xl{padding:var(--spacing-2xl)}.btn-base{padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-sm);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-colors),var(--transition-transform);border:var(--border-width-thin) solid transparent;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}.btn-base:hover{transform:translateY(-1px)}.btn-base:active{transform:translateY(0)}.card-base{background-color:var(--color-background-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-2xl);border:var(--border-width-thin) solid var(--color-border-light)}.input-base{width:100%;padding:var(--spacing-md);border:var(--border-width-thin) solid var(--color-border-medium);border-radius:var(--radius-sm);font-size:var(--font-size-base);font-family:var(--font-family-primary);transition:var(--transition-colors);background-color:var(--color-background-primary);color:var(--color-text-primary)}.input-base:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}html,body,#root{height:100%;margin:0;padding:0}:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;width:100%;height:100%}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.user-profile{position:relative;display:inline-block}.user-profile-button{background:none;border:none;cursor:pointer;padding:var(--spacing-sm);border-radius:var(--radius-full);transition:var(--transition-colors);display:flex;align-items:center;justify-content:center}.user-profile-button:hover{background-color:#fafafa}.user-profile-button:focus{outline:none;background-color:#f0f7ff}.user-profile-avatar{width:48px;height:48px;border-radius:var(--radius-full);background-color:#3498db;color:#fff;border:none}.user-profile-avatar .anticon{font-size:24px}.user-profile-dropdown{position:absolute;top:calc(100% + var(--spacing-sm));right:0;background:#fff;border:var(--border-width-thin) solid #eeeeee;border-radius:var(--radius-md);min-width:220px;z-index:var(--z-dropdown);overflow:hidden;animation:dropdownSlideIn .2s ease-out;box-shadow:0 2px 8px #00000014}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-table{width:100%;border-collapse:collapse;table-layout:fixed}.dropdown-item{cursor:pointer;transition:var(--transition-colors);color:#2c3e50;font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:1.5;height:48px}.dropdown-item:hover{background-color:#fafafa}.dropdown-item .icon-col{width:32px;padding:var(--spacing-lg) 0 var(--spacing-lg) var(--spacing-xl);text-align:left;vertical-align:middle}.dropdown-item .icon-col .anticon{font-size:16px;color:#7f8c8d}.dropdown-item .text-col{padding:var(--spacing-lg) var(--spacing-lg);text-align:left;vertical-align:middle;font-weight:var(--font-weight-normal)}.dropdown-item .action-col{width:60px;padding:var(--spacing-lg) var(--spacing-xl) var(--spacing-lg) 0;text-align:right;vertical-align:middle}.dropdown-divider{height:var(--border-width-thin);background-color:#eee;padding:var(--spacing-sm) 0;border:none}.logout-item{color:#721c24}.logout-item:hover{background-color:#f8d7da}.logout-item:hover .anticon,.logout-item .anticon{color:#721c24}*{margin:0;padding:0;box-sizing:border-box}.page-container{height:100%;width:100%;margin:0;padding:0;display:flex;justify-content:center;align-items:center;background-color:var(--color-background-secondary)}.centered-content{text-align:center;background-color:var(--color-background-primary);padding:var(--spacing-2xl);border-radius:var(--radius-none);box-shadow:var(--shadow-md);width:100%;height:100%;overflow-y:auto;margin:0}.centered-content h1{color:var(--color-secondary);font-size:var(--font-size-4xl);margin-bottom:var(--spacing-lg)}.centered-content p{color:var(--color-text-secondary);font-size:var(--font-size-xl);margin-bottom:var(--spacing-2xl)}.centered-content .primary-button{max-width:200px;margin:0 auto}.auth-form{background-color:var(--color-background-primary);padding:var(--spacing-2xl);border-radius:var(--radius-none);box-shadow:var(--shadow-md);max-width:var(--content-width-narrow);width:90%;overflow-y:auto;margin:0 auto}.error-message{color:var(--color-error);margin-bottom:var(--spacing-lg);padding:var(--spacing-sm);border:var(--border-width-thin) solid var(--color-error-border);border-radius:var(--radius-sm);background-color:var(--color-error-bg)}h2{text-align:center;margin-bottom:var(--spacing-xl);color:var(--color-secondary)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);font-weight:var(--font-weight-medium);color:var(--color-text-primary)}.form-input{width:100%;padding:var(--spacing-md);border:var(--border-width-thin) solid var(--color-border-medium);border-radius:var(--radius-sm);font-size:var(--font-size-base)}.form-input:focus{outline:none;border-color:var(--color-border-focus);box-shadow:var(--shadow-focus)}.button-group{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-top:var(--spacing-xl)}.primary-button,.secondary-button{padding:var(--spacing-md) var(--spacing-xl);border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;transition:var(--transition-colors);width:100%}.primary-button{background-color:var(--color-primary);color:var(--color-text-inverse);border:none}.primary-button:hover{background-color:var(--color-primary-hover)}.secondary-button{background-color:var(--color-background-primary);color:var(--color-primary);border:var(--border-width-thin) solid var(--color-primary)}.secondary-button:hover{background-color:var(--color-primary-light)}.dashboard-content{background-color:var(--color-background-primary);width:100%;height:100%;display:flex;flex-direction:column;overflow-y:auto;margin:0}.dashboard-header{display:flex;justify-content:flex-end;align-items:center;padding:var(--spacing-lg) var(--spacing-2xl);background-color:var(--color-background-primary);border-bottom:var(--border-width-thin) solid var(--color-border-light)}.dashboard-main{flex:1;padding:var(--spacing-2xl);overflow-y:auto;max-width:var(--container-xl);margin:0 auto}.dashboard-main h1{color:var(--color-text-primary);font-size:var(--font-size-3xl);margin-bottom:var(--spacing-2xl);text-align:center}.character-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:var(--spacing-2xl);margin-top:var(--spacing-2xl)}.character-item{display:flex;gap:var(--spacing-xl);padding:var(--spacing-xl);background-color:var(--color-background-tertiary);border-radius:var(--radius-lg);transition:var(--transition-transform),var(--transition-colors)}.character-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.character-image{width:120px;height:120px;object-fit:cover;border-radius:var(--radius-sm)}.character-description{flex:1;display:flex;flex-direction:column;justify-content:center;text-align:left}.character-description h3{margin-bottom:var(--spacing-sm);color:var(--color-text-primary)}.character-description p{color:var(--color-text-secondary);line-height:var(--line-height-normal);margin:0}.dashboard-header .primary-button{width:auto;margin:0}.theme-toggle-container{position:fixed;top:var(--spacing-lg);right:var(--spacing-lg);z-index:var(--z-fixed)}@media (max-width: 768px){.dashboard-main{padding:var(--spacing-lg)}.character-list{grid-template-columns:1fr;gap:var(--spacing-xl)}.theme-toggle-container{top:var(--spacing-md);right:var(--spacing-md)}}
