:root{--color-primary: #2383E2;--color-primary-hover: #1a6bc7;--color-secondary: #6B7280;--color-success: #10B981;--color-warning: #F59E0B;--color-danger: #EF4444;--color-bg: #FFFFFF;--color-bg-secondary: #F9FAFB;--color-bg-tertiary: #F3F4F6;--color-border: #E5E7EB;--color-border-light: #F3F4F6;--color-text: #111827;--color-text-secondary: #6B7280;--color-text-tertiary: #9CA3AF;--border-radius: 8px;--border-radius-sm: 6px;--border-radius-lg: 12px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--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);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 48px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Helvetica Neue", sans-serif;--font-size-xs: 12px;--font-size-sm: 14px;--font-size-base: 15px;--font-size-lg: 16px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 32px;--transition: all .15s ease}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:8px 16px;border:1px solid transparent;border-radius:var(--border-radius-sm);font-family:var(--font-family);font-size:var(--font-size-sm);font-weight:500;cursor:pointer;transition:var(--transition);outline:none;text-align:center}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn--primary{background:var(--color-primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn--secondary{background:var(--color-bg-tertiary);color:var(--color-text);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-bg-secondary);border-color:var(--color-border)}.btn--ghost{background:transparent;color:var(--color-text-secondary)}.btn--ghost:hover:not(:disabled){background:var(--color-bg-secondary);color:var(--color-text)}.btn--danger{background:var(--color-danger);color:#fff}.btn--danger:hover:not(:disabled){background:#dc2626}.btn--sm{padding:6px 12px;font-size:var(--font-size-xs)}.btn--lg{padding:12px 24px;font-size:var(--font-size-base)}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--border-radius);padding:var(--spacing-lg);transition:var(--transition)}.card--hover{cursor:pointer}.card--hover:hover{border-color:var(--color-border);box-shadow:var(--shadow-sm)}.card--secondary{background:var(--color-bg-secondary);border-color:transparent}.input{width:100%;padding:10px 12px;border:1px solid var(--color-border);border-radius:var(--border-radius-sm);font-family:var(--font-family);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-bg);transition:var(--transition);outline:none}.input:hover{border-color:var(--color-border)}.input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2383e21a}.input::placeholder{color:var(--color-text-tertiary)}.input--error{border-color:var(--color-danger)}.input--error:focus{box-shadow:0 0 0 3px #ef44441a}.textarea{min-height:100px;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:16px;padding-right:40px}.label{display:block;margin-bottom:var(--spacing-xs);font-size:var(--font-size-sm);font-weight:500;color:var(--color-text)}.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:12px;font-size:var(--font-size-xs);font-weight:500;white-space:nowrap}.badge--primary{background:#2383e21a;color:var(--color-primary)}.badge--success{background:#10b9811a;color:var(--color-success)}.badge--warning{background:#f59e0b1a;color:var(--color-warning)}.badge--danger{background:#ef44441a;color:var(--color-danger)}.badge--secondary{background:var(--color-bg-tertiary);color:var(--color-text-secondary)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--spacing-lg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{position:relative;max-width:600px;width:100%;max-height:90vh;overflow-y:auto;overflow-x:hidden;background:var(--color-bg);border-radius:var(--border-radius-lg);box-shadow:var(--shadow-lg);padding:var(--spacing-xl);box-sizing:border-box}.modal>*{max-width:100%;word-wrap:break-word}.divider{height:1px;background:var(--color-border);margin:var(--spacing-lg) 0}.container{max-width:1400px;margin:0 auto;padding:0 var(--spacing-lg)}.grid{display:grid;gap:var(--spacing-lg)}.grid--2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid--3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.grid--4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.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-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.gap-xl{gap:var(--spacing-xl)}.mt-xs{margin-top:var(--spacing-xs)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-xs{margin-bottom:var(--spacing-xs)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.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)}.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-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)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-center{text-align:center}.text-secondary{color:var(--color-text-secondary)}.text-tertiary{color:var(--color-text-tertiary)}.skeleton{background:linear-gradient(90deg,var(--color-bg-tertiary) 0%,var(--color-bg-secondary) 50%,var(--color-bg-tertiary) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--border-radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 768px){.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--color-text);background:var(--color-bg-secondary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.3;color:var(--color-text)}h1{font-size:var(--font-size-3xl);margin-bottom:var(--spacing-lg)}h2{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-md)}h3{font-size:var(--font-size-xl);margin-bottom:var(--spacing-md)}p{margin-bottom:var(--spacing-md);line-height:1.6}a{color:var(--color-primary);text-decoration:none;transition:var(--transition)}a:hover{color:var(--color-primary-hover)}button{border:none;background:none;font:inherit;cursor:pointer}input,textarea,select{font:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-tertiary)}::selection{background:#2383e233;color:var(--color-text)}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top:2px solid var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
