.header{background:var(--bg-elevated);border-bottom:1px solid var(--border-default);padding:var(--spacing-md) 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;display:flex;align-items:center;gap:.75rem}.logo-text{font-size:1.35rem;font-weight:800;color:var(--primary);letter-spacing:-.02em}.logo-divider{color:var(--border-default);font-weight:300;font-size:1.2rem}.tagline{font-size:.85rem;color:var(--text-secondary);font-weight:500}.nav{display:flex;gap:var(--spacing-sm)}.nav-link{padding:.35rem .7rem;background:transparent;border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-secondary);font-size:.8rem;font-weight:600;text-decoration:none;transition:all .2s ease}.nav-link:hover{background:var(--primary);color:#fff;border-color:var(--primary)}.locale-toggle,.theme-toggle{padding:.35rem .7rem;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:600;cursor:pointer;transition:all .2s ease;min-width:2.2rem;text-align:center}.locale-toggle:hover,.theme-toggle:hover{background:var(--primary);color:#fff;border-color:var(--primary)}@media(max-width:768px){.logo-text{font-size:1.1rem}.logo-divider,.tagline{display:none}.nav{gap:var(--spacing-xs)}}.footer{border-top:1px solid var(--border-default);background:var(--bg-elevated);padding:var(--spacing-md) 0;margin-top:auto}.footer-content{display:flex;flex-direction:column;align-items:center;gap:.5rem}.footer-links{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;justify-content:center}.footer-links a{color:var(--text-secondary);text-decoration:none;font-size:.82rem;font-weight:500;transition:color .2s ease}.footer-links a:hover{color:var(--primary);text-decoration:underline}.footer-sep{color:var(--border-default);font-size:.75rem;-webkit-user-select:none;user-select:none}.footer-copy{color:var(--text-secondary);font-size:.75rem;margin:0;opacity:.7}@media(max-width:480px){.footer-links{gap:.4rem}.footer-links a{font-size:.78rem}}.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;--error: #ef4444;--error-light: rgba(239, 68, 68, .1);--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;--success-light: rgba(52, 211, 153, .12);--success-dark: #6ee7b7;--warning: #fbbf24;--warning-light: rgba(251, 191, 36, .12);--danger: #f87171;--error: #f87171;--error-light: rgba(248, 113, 113, .15);--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:#1a1a2e}.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}}.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}.skeleton-block{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)}.skeleton-text{height:1em;margin-bottom:.5em}.skeleton-text--lg{height:1.5em;width:60%}.skeleton-text--md{height:1em;width:80%}.skeleton-text--sm{height:1em;width:45%}.skeleton-avatar{width:48px;height:48px;border-radius:50%}.skeleton-card{background:var(--bg-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-card);margin-bottom:var(--spacing-lg)}.error-retry{text-align:center;padding:var(--spacing-2xl);background:var(--bg-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.error-retry h2{color:var(--error);margin-bottom:var(--spacing-sm)}.error-retry p{color:var(--text-secondary);margin-bottom:var(--spacing-md)}.error-retry__detail{color:var(--text-muted);font-size:.85rem;margin-bottom:var(--spacing-lg)}.btn-retry{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);cursor:pointer;transition:background .2s}.btn-retry:hover{background:var(--primary-dark)}.btn-retry:focus-visible{outline:3px solid var(--primary);outline-offset:2px}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.skip-link{position:absolute;top:-100%;left:0;background:var(--primary);color:#fff;padding:.5rem 1rem;z-index:1000;font-weight:600;border-radius:0 0 var(--radius-md) 0}.skip-link:focus{top: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}table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}.card{padding:var(--spacing-md)}.flex-mobile-col{flex-direction:column}.btn-mobile-full{width:100%;justify-content:center}.hide-mobile{display:none}.badges{gap:4px}.badge{font-size:.75rem;padding:.15rem .5rem}}@media(max-width:480px){h1{font-size:1.5rem}h2{font-size:1.25rem}h3{font-size:1.1rem}.container{padding:0 var(--spacing-sm)}.btn{padding:.5rem 1rem;font-size:.875rem}.input{padding:.625rem .75rem;font-size:.875rem}}
