:root {
  --bg:#f7f7f8; --fg:#1f2328; --muted:#6b7280; --card:#ffffff; --stroke:#e5e7eb;
  --primary:#0f766e; --primary-press:#0b5b56; --ok:#16a34a; --bad:#dc2626;
  --card-soft:#f0f2f5;
}
body.dark-mode {
  --bg:#0f1115; --fg:#e5e7eb; --muted:#9aa4af; --card:#151922; --stroke:#2b3240;
  --primary:#0ea5a5; --primary-press:#098b8b; --ok:#22c55e; --bad:#f87171;
  --card-soft:#0e131b;
}
* { box-sizing: border-box }
body {
  margin: 0; background: var(--bg); color: var(--fg);
  font: 16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,"Helvetica Neue",Arial;
  transition: background .25s, color .25s;
}

header {
  position: sticky; top: 0; z-index: 10;
  display: flex; justify-content: flex-end; align-items: center;
  gap: 12px; padding: 12px 20px; background: var(--card);
  border-bottom: 1px solid var(--stroke);
}
.toggle { border: 1px solid var(--stroke); background: var(--card-soft); color: var(--fg) }
.btn { padding: 10px 14px; border-radius: 10px; border: none; cursor: pointer; font-weight: 600 }
.btn:hover { filter: brightness(0.98) }

.wrap { max-width: 820px; margin: 36px auto; padding: 0 18px }
h1 { margin: 0 0 20px; text-align: center; font-size: 28px; letter-spacing: .2px }

.card {
  background: var(--card); border: 1px solid var(--stroke);
  border-radius: 16px; padding: 20px; box-shadow: 0 6px 16px rgba(0,0,0,.05);
}
.grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.field { display: flex; flex-direction: column; gap: 6px }
label { font-weight: 600 }
.hint { font-size: 12px; color: var(--muted) }
input {
  width: 100%; padding: 12px 12px; border-radius: 10px;
  border: 1px solid var(--stroke); background: transparent; color: var(--fg);
  font-size: 16px;
}
.actions { display: flex; justify-content: center; margin-top: 16px }
.primary { background: var(--primary); color: #fff }
.primary:active { background: var(--primary-press) }

.result {
  margin-top: 18px; display: grid; gap: 10px; justify-items: center; text-align: center;
}
.final { font-size: 42px; font-weight: 800; letter-spacing: .5px }
.state { font-size: 18px; font-weight: 700 }
.ok { color: var(--ok) } 
.bad { color: var(--bad) }
.subtle { font-size: 14px; color: var(--muted) }
.pill {
  margin-top: 4px; padding: 6px 10px; border: 1px solid var(--stroke);
  border-radius: 999px; font-size: 12px; color: var(--muted); background: var(--card-soft);
}
.need {
  font-size: 15px; font-weight: 600; margin-top: 6px;
}
