body { margin: 0; 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; background-color: #f5f7fa; } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } * { box-sizing: border-box; } .container { max-width: 1200px; margin: 0 auto; padding: 20px; } .card { background: white; border-radius: 12px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); padding: 24px; margin-bottom: 20px; } .btn { background: #3b82f6; color: white; border: none; padding: 12px 24px; border-radius: 8px; cursor: pointer; font-size: 14px; font-weight: 500; transition: background-color 0.2s; } .btn:hover { background: #2563eb; } .btn:disabled { background: #9ca3af; cursor: not-allowed; } .btn-secondary { background: #6b7280; } .btn-secondary:hover { background: #4b5563; } .input { width: 100%; padding: 12px; border: 2px solid #e5e7eb; border-radius: 8px; font-size: 14px; transition: border-color 0.2s; } .input:focus { outline: none; border-color: #3b82f6; } .textarea { min-height: 120px; resize: vertical; } .loading { display: inline-block; width: 20px; height: 20px; border: 3px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top-color: #fff; animation: spin 1s ease-in-out infinite; } @keyframes spin { to { transform: rotate(360deg); } } .alert { padding: 12px 16px; border-radius: 8px; margin-bottom: 16px; font-size: 14px; } .alert-error { background: #fef2f2; border: 1px solid #fecaca; color: #dc2626; } .alert-success { background: #f0fdf4; border: 1px solid #bbf7d0; color: #166534; } .alert-warning { background: #fffbeb; border: 1px solid #fed7aa; color: #d97706; }