/* shared.css — Solvulator unified design tokens + base reset */
:root {
  --bg:#07070a; --s1:#0c0c12; --s2:#12121c; --s3:#1a1a28;
  --border:#22222e; --border-hi:#3a3a4e;
  --gold:#c9a84c; --red:#e05252; --green:#3db87a; --blue:#4a8fe8;
  --orange:#e0803a; --purple:#9b6ee0; --teal:#3db8a0;
  --text:#d4cfc7; --mid:#9a9490; --dim:#6a6460; --faint:#3a3632;
  --mono:'SF Mono','Menlo','Courier New',monospace;
  --sans:system-ui,-apple-system,'Segoe UI',sans-serif;
  --safe-t:env(safe-area-inset-top,0px);
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-l:env(safe-area-inset-left,0px);
  --safe-r:env(safe-area-inset-right,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{background:var(--bg);color:var(--text);font-family:var(--sans);
  -webkit-font-smoothing:antialiased}
::-webkit-scrollbar{width:2px}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
button{cursor:pointer;font-family:var(--mono);background:none;border:none;
  color:inherit;-webkit-touch-callout:none;min-height:44px}
input,textarea{font-family:inherit;color:var(--text);background:var(--bg);
  border:1px solid var(--border);border-radius:8px;padding:10px;
  font-size:12px;outline:none}
input:focus,textarea:focus{border-color:var(--gold)}
a{color:var(--gold);text-decoration:none}
a:hover{text-decoration:underline}

/* glass panel */
.glass{backdrop-filter:blur(12px);background:rgba(255,255,255,.05)}

/* toast notification */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  background:var(--s1);border:1px solid var(--border);color:var(--text);
  padding:10px 20px;border-radius:8px;font-size:12px;font-family:var(--mono);
  opacity:0;transition:opacity .3s;pointer-events:none;z-index:100}
.toast.show{opacity:1}

/* animations */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.fade-in{animation:fadeIn .25s ease}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.slide-up{animation:slideUp .3s ease}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}
.pulse{animation:pulse 1.5s ease infinite}
