*{margin:0;padding:0;box-sizing:border-box}:root{--primary-color: #2563eb;--secondary-color: #1e40af;--success-color: #10b981;--danger-color: #ef4444;--warning-color: #f59e0b;--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}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;color:var(--gray-900);background-color:var(--gray-50)}#app{min-height:100vh}h1{font-size:2.5rem;font-weight:700;margin-bottom:1rem}h2{font-size:2rem;font-weight:600;margin-bottom:.75rem}h3{font-size:1.5rem;font-weight:600;margin-bottom:.5rem}p{margin-bottom:1rem}.btn{padding:.625rem 1.25rem;border:none;border-radius:.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s;text-decoration:none;display:inline-block}.btn-primary{background-color:var(--primary-color);color:#fff}.btn-primary:hover{background-color:var(--secondary-color)}.btn-secondary{background-color:var(--gray-200);color:var(--gray-800)}.btn-secondary:hover{background-color:var(--gray-300)}.btn-success{background-color:var(--success-color);color:#fff}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-sm{padding:.4rem .8rem;font-size:.875rem}.btn-lg{padding:.75rem 1.5rem;font-size:1.125rem}.form-group{margin-bottom:1.5rem}label{display:block;margin-bottom:.5rem;font-weight:500;color:var(--gray-700)}input,textarea,select{width:50%;padding:.625rem .875rem;border:1px solid var(--gray-300);border-radius:.5rem;font-size:1rem;font-family:inherit;transition:border-color .2s}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #2563eb1a}textarea{min-height:100px;resize:vertical}.card{background:#fff;border-radius:.75rem;padding:1.5rem;box-shadow:0 1px 3px #0000001a}.card-header{padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--gray-200)}.container{max-width:1200px;margin:0 auto;padding:0 1rem}nav{background:#fff;box-shadow:0 1px 3px #0000001a;padding:1rem 0;position:sticky;top:0;z-index:100}nav .container{display:flex;justify-content:space-between;align-items:center}nav a{text-decoration:none;color:var(--gray-700);font-weight:500;transition:color .2s}nav a:hover{color:var(--primary-color)}nav a.router-link-active{color:var(--primary-color)}.grid{display:grid;gap:1.5rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.text-center{text-align:center}.text-right{text-align:right}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.p-4{padding:2rem}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:1rem}.alert{padding:1rem;border-radius:.5rem;margin-bottom:1rem}.alert-success{background-color:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.alert-error{background-color:#fee2e2;color:#991b1b;border:1px solid #fca5a5}.alert-warning{background-color:#fef3c7;color:#92400e;border:1px solid #fcd34d}.spinner{border:3px solid var(--gray-200);border-top:3px solid var(--primary-color);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin:2rem auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}table{width:100%;border-collapse:collapse;background:#fff;border-radius:.5rem;overflow:hidden}th{background-color:var(--gray-100);padding:.75rem;text-align:left;font-weight:600;color:var(--gray-700)}td{padding:.75rem;border-top:1px solid var(--gray-200)}tr:hover{background-color:var(--gray-50)}@media (max-width: 768px){h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}.grid-2,.grid-3{grid-template-columns:1fr}nav .container{flex-direction:column;gap:1rem}input,textarea,select{width:100%}}
