.header{background:var(--bg-elevated);border-bottom:1px solid var(--border-default);padding:var(--spacing-lg) 0;box-shadow:var(--shadow-sm);position:sticky;top:0;z-index:100}.header-content{display:flex;justify-content:space-between;align-items:center}.logo{text-decoration:none;color:inherit}.logo h1{font-size:1.5rem;margin:0;color:var(--primary)}.tagline{font-size:.875rem;color:var(--text-secondary);margin:0}.nav{display:flex;gap:var(--spacing-lg)}.nav-link{color:var(--text-secondary);font-weight:500;transition:color .2s ease}.nav-link:hover{color:var(--primary)}.theme-toggle{padding:.375rem .75rem;background:var(--bg-surface-hover);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s ease}.theme-toggle:hover{background:var(--primary);color:#fff;border-color:var(--primary)}@media (max-width: 768px){.logo h1{font-size:1.25rem}.tagline{display:none}.nav{gap:var(--spacing-md)}.nav-link{font-size:.875rem}}.app{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;padding-top:var(--spacing-xl);padding-bottom:var(--spacing-2xl)}*{margin:0;padding:0;box-sizing:border-box}:root{--primary: #2563eb;--primary-dark: #1d4ed8;--primary-light: #3b82f6;--secondary: #64748b;--success: #22c55e;--danger: #ef4444;--warning: #f59e0b;--info: #06b6d4;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-600: #4b5563;--gray-700: #374151;--gray-800: #1f2937;--gray-900: #111827;--bg-primary: #f8fafc;--bg-surface: #ffffff;--bg-surface-hover: #f1f5f9;--bg-elevated: #ffffff;--bg-input: #ffffff;--border-default: #e2e8f0;--border-subtle: #f1f5f9;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--shadow-card: 0 1px 3px rgb(0 0 0 / .1);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans KR", "Malgun Gothic", sans-serif;--font-mono: "SF Mono", "Consolas", "Liberation Mono", monospace;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .1)}[data-theme=dark]{--bg-primary: #0f1117;--bg-surface: #1a1d27;--bg-surface-hover: #252836;--bg-elevated: #1e2130;--bg-input: #252836;--border-default: #2d3148;--border-subtle: #232639;--text-primary: #e4e6ef;--text-secondary: #9ca3b4;--text-muted: #6b7280;--shadow-card: 0 1px 3px rgb(0 0 0 / .3);--primary: #3b82f6;--primary-dark: #60a5fa;--primary-light: rgba(59, 130, 246, .15);--gray-50: #1a1d27;--gray-100: #232639;--gray-200: #2d3148;--gray-300: #3d4260;--gray-400: #6b7280;--gray-500: #9ca3b4;--gray-600: #b0b5c4;--gray-700: #b0b5c4;--gray-800: #d1d5e0;--gray-900: #e4e6ef;--success: #34d399;--warning: #fbbf24;--danger: #f87171;--info: #22d3ee;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .2);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .3);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .3);--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / .3)}body{font-family:var(--font-sans);color:var(--text-primary);background-color:var(--bg-primary);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.2;margin-bottom:var(--spacing-md)}h1{font-size:2.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1.25rem}h5{font-size:1.125rem}h6{font-size:1rem}p{margin-bottom:var(--spacing-md)}a{color:var(--primary);text-decoration:none;transition:color .2s ease}a:hover{color:var(--primary-dark)}.container{max-width:1200px;margin:0 auto;padding:0 var(--spacing-lg)}.text-center{text-align:center}.text-right{text-align:right}.text-muted{color:var(--text-muted)}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.font-bold{font-weight:700}.font-semibold{font-weight:600}.font-medium{font-weight:500}.mt-1{margin-top:var(--spacing-xs)}.mt-2{margin-top:var(--spacing-sm)}.mt-4{margin-top:var(--spacing-md)}.mt-6{margin-top:var(--spacing-lg)}.mt-8{margin-top:var(--spacing-xl)}.mb-1{margin-bottom:var(--spacing-xs)}.mb-2{margin-bottom:var(--spacing-sm)}.mb-4{margin-bottom:var(--spacing-md)}.mb-6{margin-bottom:var(--spacing-lg)}.mb-8{margin-bottom:var(--spacing-xl)}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:var(--spacing-sm)}.gap-4{gap:var(--spacing-md)}.gap-6{gap:var(--spacing-lg)}.card{background:var(--bg-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-card);margin-bottom:var(--spacing-lg)}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.625rem 1.25rem;font-size:1rem;font-weight:500;border-radius:var(--radius-md);border:none;cursor:pointer;transition:all .2s ease;gap:.5rem}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-secondary{background:var(--gray-200);color:var(--gray-800)}.btn-secondary:hover:not(:disabled){background:var(--gray-300)}.input{width:100%;padding:.75rem 1rem;font-size:1rem;border:2px solid var(--border-default);border-radius:var(--radius-md);background:var(--bg-input);color:var(--text-primary);transition:border-color .2s ease}.input:focus{outline:none;border-color:var(--primary)}.input::placeholder{color:var(--text-muted)}.badge{display:inline-flex;align-items:center;padding:.25rem .75rem;font-size:.875rem;font-weight:500;border-radius:var(--radius-md)}.badge-primary{background:var(--primary-light);color:#fff}.badge-success{background:var(--success);color:#fff}.badge-warning{background:var(--warning);color:#fff}.badge-danger{background:var(--danger);color:#fff}.spinner{border:3px solid var(--gray-200);border-top-color:var(--primary);border-radius:50%;width:2rem;height:2rem;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--gray-200) 0%,var(--gray-100) 50%,var(--gray-200) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 768px){.container{padding:0 var(--spacing-md)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}}
