:root { --max: 760px; }
* { box-sizing: border-box; }
body { font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif; line-height: 1.45; margin: 0; }
.container { max-width: var(--max); margin: 2rem auto; padding: 0 1rem; }

h1 { margin: 0 0 1rem; }
.cards { display: grid; grid-template-columns: repeat(auto-fit,minmax(220px,1fr)); gap: 1rem; }
.card { display: grid; place-items: center; border: 1px solid #ddd; padding: 2rem; text-decoration: none; color: inherit; border-radius: 12px; }
.card.secondary { opacity: .7; }

form { display: grid; gap: 1rem; }
fieldset { border: 1px solid #ddd; border-radius: 12px; padding: 1rem; }
legend { padding: 0 .5rem; }
.grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit,minmax(200px,1fr)); }
.row { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
label { display: grid; gap: .25rem; font-size: .95rem; }
input[type="text"], input[type="number"], input[type="search"], input[type="email"], input[name="geburtsjahr"], input[name="verein"], input[name="name"], input[name="vorname"], input[name="teamname"] {
  padding: .6rem .7rem; border: 1px solid #ccc; border-radius: 10px;
}
.checkbox { display: inline-grid; grid-auto-flow: column; gap: .5rem; align-items: center; }
.hidden { display: none; }
.err { color: #b00020; display: block; }
.alert { background: #fff4f4; color: #b00020; padding: .75rem 1rem; border-radius: 8px; border: 1px solid #ffd8d8; }
.actions { display: flex; gap: .75rem; }
button { padding: .6rem 1rem; border: 0; border-radius: 10px; background: #111; color: #fff; cursor: pointer; }
button:hover { opacity: .9; }
.link { align-self: center; }