:root{--bg:#eef3f4;--surface:#fff;--fg:#10262d;--muted:#557079;--line:#cfdde0;--accent:#0b6e7a;--accent-fg:#fff;--ok:#2f7d3a;--err:#9a3434;--chip:#dcebee;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#0c1a1e;--surface:#132a30;--fg:#e4eff1;--muted:#90aab1;--line:#24434b;--accent:#3bb3c1;--accent-fg:#06262b;--ok:#6cc17a;--err:#e07b7b;--chip:#1b3a42}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.45 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
.wrap{max-width:640px;margin:0 auto;padding:20px 16px 48px;display:flex;flex-direction:column;gap:16px}
header .club{font-size:.8rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);font-weight:700}
header h1{margin:2px 0 0;font-size:2rem;line-height:1.1}
h2{margin:0;font-size:1.25rem}h3{margin:12px 0 4px;font-size:1rem}
.lead{margin:0;color:var(--muted)}.small{font-size:.88rem;color:var(--muted);margin:0}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;flex-direction:column;gap:12px}
.panel form{display:flex;flex-direction:column;gap:12px}
.done{border-left:5px solid var(--ok)}
label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:.92rem}
input,select{font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;min-width:0;width:100%}
input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.row{display:flex;gap:12px;flex-wrap:wrap}.row>label{flex:1 1 140px}.row.btns{align-items:center}
button,.btn{font:inherit;font-weight:700;border-radius:6px;border:1px solid var(--accent);padding:11px 16px;cursor:pointer;background:var(--accent);color:var(--accent-fg);text-decoration:none;display:inline-block;text-align:center}
.btn.ghost{background:transparent;color:var(--accent)}
button.link{background:none;border:0;padding:0;color:var(--err);font-weight:600;font-size:.85rem}
.msg{padding:10px 12px;border-radius:8px;background:var(--chip)}.msg.err{color:var(--err)}.msg.ok{color:var(--ok)}
.pill{font-size:.8rem;padding:1px 8px;border-radius:999px;background:var(--chip);color:var(--muted);vertical-align:middle}
.nav{font-size:.9rem}.nav a{color:var(--accent)}
.scroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:.95rem}
th,td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}th{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.num{font-variant-numeric:tabular-nums}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column}
.kpi b{font-size:1.6rem;font-variant-numeric:tabular-nums}.kpi span{font-size:.8rem;color:var(--muted)}
.kpi.warn b{color:#b46a00}
@media (max-width:480px){.kpis{grid-template-columns:repeat(2,1fr)}}
form.inline{display:flex;gap:6px;align-items:center}form.inline input{width:auto;padding:4px 6px;font-size:.9rem}
button.link.save{color:var(--accent)}
td a{color:var(--accent)}
.monat{display:flex;gap:10px;align-items:end}.monat label{flex:1}
fieldset.termine{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
fieldset.termine legend{font-weight:600;font-size:.92rem;margin-bottom:6px;padding:0}
.termin{display:grid;grid-template-columns:auto 1fr auto;gap:2px 10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer;font-weight:400}
.termin input{width:auto;grid-row:span 2;margin:0;accent-color:var(--accent)}
.termin:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
.termin .t-datum{font-weight:700}.termin .t-titel{grid-column:2;color:var(--muted);font-size:.9rem;min-width:0}
.termin .t-frei{grid-column:3;grid-row:1 / span 2;font-size:.8rem;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--chip);color:var(--ok);white-space:nowrap}
.termin.voll{opacity:.55;cursor:not-allowed}.termin.voll .t-frei{color:var(--err)}
.termin:not(:has(.t-datum)) .t-titel{grid-column:2;grid-row:1 / span 2;color:var(--fg);font-size:.95rem}
.row.tage{gap:6px 14px}.check{flex-direction:row;align-items:center;gap:6px;font-weight:400}.check input{width:auto}
[hidden]{display:none!important}
