@tailwind base;@tailwind components;@tailwind utilities;:root{--color-primary: #2563EB;--color-primary-dark: #1D4ED8;--color-primary-light: #3B82F6;--color-secondary: #059669;--color-accent: #F59E0B;--color-error: #DC2626;--color-surface: #FFFFFF;--color-background: #F9FAFB;--color-text: #111827;--color-text-secondary: #6B7280;--color-border: #E5E7EB}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--color-background);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input,select,textarea{font-family:inherit}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}.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}.container{width:100%;max-width:480px;margin:0 auto;padding:0 16px}@media (min-width: 640px){.container{max-width:100%}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;border-radius:8px;font-weight:600;font-size:16px;border:none;cursor:pointer;transition:all .2s ease;text-decoration:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-dark)}.btn-secondary{background-color:var(--color-secondary);color:#fff}.btn-secondary:hover:not(:disabled){background-color:#047857}.btn-outline{background-color:transparent;border:2px solid var(--color-primary);color:var(--color-primary)}.btn-outline:hover:not(:disabled){background-color:var(--color-primary);color:#fff}.btn-ghost{background-color:transparent;color:var(--color-text)}.btn-ghost:hover:not(:disabled){background-color:var(--color-background)}.btn-danger{background-color:var(--color-error);color:#fff}.btn-danger:hover:not(:disabled){background-color:#b91c1c}.btn-full{width:100%}.input-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.input-label{font-size:14px;font-weight:500;color:var(--color-text)}.input-field{padding:12px 16px;border:1px solid var(--color-border);border-radius:8px;font-size:16px;background:var(--color-surface);transition:border-color .2s,box-shadow .2s}.input-field:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.input-field::placeholder{color:var(--color-text-secondary)}.input-field:disabled{background:var(--color-background);cursor:not-allowed}.input-error{border-color:var(--color-error)}.input-error:focus{box-shadow:0 0 0 3px #dc26261a}.input-hint{font-size:12px;color:var(--color-text-secondary)}.input-error-text{font-size:12px;color:var(--color-error)}.card{background:var(--color-surface);border-radius:12px;box-shadow:0 1px 3px #0000001a;padding:16px}.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:9999px;font-size:12px;font-weight:600}.badge-primary{background:#2563eb1a;color:var(--color-primary)}.badge-success{background:#0596691a;color:var(--color-secondary)}.badge-warning{background:#f59e0b1a;color:#d97706}.badge-error{background:#dc26261a;color:var(--color-error)}.badge-gray{background:var(--color-background);color:var(--color-text-secondary)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);padding:12px 24px;border-radius:8px;background:var(--color-text);color:#fff;font-weight:500;z-index:1000;animation:slideUp .3s ease}.toast-success{background:var(--color-secondary)}.toast-error{background:var(--color-error)}.toast-warning{background:var(--color-accent);color:var(--color-text)}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.loading-spinner{width:24px;height:24px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.page-transition{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}
