:root{--background:#0f172a;--background-secondary:#1e293b;--foreground:#f8fafc;--primary:#9ca3af;--border:#334155}@media (prefers-color-scheme:light){:root{--background:#fff;--background-secondary:#f3f4f6;--foreground:#0f172a;--primary:#545454;--border:#e2e8f0}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--background);color:var(--foreground);font-family:system-ui,-apple-system,sans-serif;line-height:1.5}.container{max-width:800px;margin:0 auto;padding:2rem 1rem}.title{text-align:center;background:linear-gradient(to right,var(--primary),#71717a);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:2rem;font-size:2.5rem;font-weight:800}.search-box{border:1px solid var(--border);background:var(--background-secondary);width:100%;color:var(--foreground);border-radius:1rem;margin-bottom:2rem;padding:1rem 1.5rem;font-size:1.1rem;transition:all .2s;box-shadow:0 4px 6px -1px #0000001a}.search-box:focus{ring:2px solid var(--primary);border-color:var(--primary);outline:none}.search-container{max-width:600px;margin:0 auto 3rem;position:relative}.grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;padding:1rem 0;display:grid}.card{background:var(--background-secondary);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a}.badge{background:var(--primary);color:#fff;border-radius:9999px;margin-bottom:.5rem;padding:.25rem .75rem;font-size:.8rem;font-weight:600;display:inline-block}.consumable-item{background:var(--background);border-radius:.5rem;justify-content:space-between;align-items:center;margin-top:.5rem;padding:.5rem;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:24px;height:24px;animation:1s linear infinite spin}.btn{cursor:pointer;border:none;border-radius:.5rem;padding:.5rem 1rem;font-weight:500;transition:all .2s}.btn:hover{opacity:.9;transform:translateY(-1px)}.input{background:var(--background-secondary);color:var(--foreground);border:1px solid var(--border);transition:all .2s}.input:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #3b82f633}@keyframes spin{to{transform:rotate(360deg)}}.spin-slow{animation:3s linear infinite spin}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
