:root{--font-family: "Inter", system-ui, Avenir, Helvetica, Arial, sans-serif;--color-bg: #0f172a;--color-card: #1e293b;--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-text: #f8fafc;--color-text-muted: #94a3b8;--color-success: #10b981;--color-danger: #ef4444;--color-border: #334155;--gradient-primary: linear-gradient(135deg, #3b82f6 0%, #2dd4bf 100%)}body{margin:0;font-family:var(--font-family);background-color:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}.container{max-width:600px;margin:0 auto;padding:2rem;flex:1;display:flex;flex-direction:column}.btn{background:var(--color-primary);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:.5rem;font-weight:600;cursor:pointer;transition:all .2s;font-size:1rem}.btn:hover{background:var(--color-primary-hover);transform:translateY(-1px)}.btn-lg{width:100%;padding:1rem;font-size:1.1rem}.btn-secondary{background:var(--color-card);border:1px solid var(--color-border)}.btn-secondary:hover{background:#2b384d}.card{background:var(--color-card);padding:1.5rem;border-radius:1rem;border:1px solid var(--color-border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;margin-bottom:1rem}.input{background:#0f172a;border:1px solid var(--color-border);color:#fff;padding:.75rem;border-radius:.5rem;width:100%;box-sizing:border-box;margin-bottom:1rem;font-size:1rem}.input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 2px #3b82f633}h1,h2,h3{margin-top:0}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.small{font-size:.875rem}.flex-center{display:flex;justify-content:center;align-items:center}.loader{border:4px solid var(--color-card);border-top:4px solid var(--color-primary);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)}}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.9)}to{opacity:1;transform:scale(1)}}
