:root{--g:#2f7d4f;--gd:#245f3c;--bg:#f4f6f4;--t:#1d2a22;--m:#5c6b61;--b:#d8dfd9;--r:#b3261e}
*{box-sizing:border-box}
body{margin:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--t)}
.top{display:flex;justify-content:space-between;align-items:center;padding:.8rem 1.2rem;background:#fff;border-bottom:1px solid var(--b)}
.brand{font-weight:700;color:var(--g);text-decoration:none;font-size:1.15rem}.brand span{color:var(--t);font-weight:500}
main{max-width:980px;margin:1.2rem auto;padding:0 1rem}
.card{background:#fff;border:1px solid var(--b);border-radius:12px;padding:1.2rem 1.4rem;margin-bottom:1.2rem}
.card.narrow{max-width:420px;margin:3rem auto}
h1{margin:.2rem 0 1rem;font-size:1.5rem}h2{font-size:1.15rem;margin:.2rem 0 .8rem}
fieldset{border:0;padding:0;margin:0 0 1rem}legend{font-weight:600;margin-bottom:.4rem}
.choice{display:flex;gap:.7rem;align-items:flex-start;padding:.7rem .9rem;border:1px solid var(--b);border-radius:10px;margin-bottom:.5rem;cursor:pointer}
.choice:has(input:checked){border-color:var(--g);background:#eef6f0}
.choice small{display:block;color:var(--m);font-size:.82rem;margin-top:.15rem}
label{display:block;margin-bottom:.8rem;font-weight:500}
input:not([type=radio]),textarea{display:block;width:100%;margin-top:.25rem;padding:.55rem .7rem;border:1px solid var(--b);border-radius:8px;font:inherit}
textarea{font-family:ui-monospace,Menlo,monospace;font-size:.82rem}
button{font:inherit;padding:.55rem 1rem;border-radius:8px;border:1px solid var(--b);background:#fff;cursor:pointer}
button:hover:not(:disabled){border-color:var(--g)}button:disabled{opacity:.5;cursor:not-allowed}
button.primary{background:var(--g);border-color:var(--g);color:#fff}button.primary:hover:not(:disabled){background:var(--gd)}
button.big{width:100%;padding:.9rem;font-size:1.1rem;font-weight:600}
button.danger{color:var(--r)}button.link{border:0;background:none;color:var(--g)}
.inline{display:inline-block;margin:.6rem .4rem 0 0}.row{display:flex;gap:.5rem;flex-wrap:wrap;margin:.6rem 0}
.grid{display:grid;gap:.8rem;grid-template-columns:1fr 1fr auto;align-items:end;margin-top:.8rem}
@media(max-width:640px){.grid{grid-template-columns:1fr}}
.hint{color:var(--m);font-size:.85rem}.warn{background:#fdecea;border:1px solid #f3c1bd;color:#7a1a14;padding:.6rem .8rem;border-radius:8px}
.flash{background:#eef6f0;border:1px solid #bcd9c5;border-radius:8px;padding:.1rem .9rem;margin-bottom:1rem}
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--b);white-space:nowrap}td.path{white-space:normal;word-break:break-all;color:var(--m)}
td.empty{color:var(--m);text-align:center;padding:1.2rem}
.badge{display:inline-block;padding:.05rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600;background:#eee}
.badge.ok{background:#d9f0e0;color:#17613a}.badge.fehler,.badge.abgebrochen{background:#fadbd8;color:#8a1c14}
.badge.teilweise{background:#fdebc8;color:#7a5200}.badge.läuft{background:#dbe8fb;color:#1c4a8a}
pre{background:#101713;color:#d6e6da;padding:1rem;border-radius:8px;overflow:auto;max-height:420px;font-size:.8rem}
code{background:#eef1ee;padding:.1rem .35rem;border-radius:4px;font-size:.85em}
details summary{cursor:pointer;font-weight:600;margin:.6rem 0}.steps{color:var(--m);font-size:.92rem;padding-left:1.2rem}
