/* Fortsetzung von css/app.css – aufgeteilt wegen der Dateigröße (Verbesserungs-Backlog
   Punkt 8), wird direkt danach eingebunden; Reihenfolge der Regeln unverändert. */
  /* =====================================================================
     DESIGN SYSTEM v2 -- "Court & Ink"
     Ruhige, warme Neutraltöne + EIN Akzent (Court-Grün) + ein winziger
     Lime-Punkt (der Ball) als Markenzeichen. Typografie: Bricolage Grotesque
     für Überschriften/Zahlen, Geist für die Oberfläche (beide eingebettet,
     laufen also auch ohne Internet). Farbe wird nur für Status genutzt.
     Diese Schicht steht bewusst NACH den Basisregeln und überschreibt sie.
     ===================================================================== */
  :root{
    --font-ui:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
    --font-display:"Bricolage Grotesque","Geist",ui-sans-serif,system-ui,sans-serif;
    --accent:#0d6b5c;
    --accent-strong:#0a564a;
    --accent-soft:#e5f1ee;
    --lime:#c8f13f;
    --ink:#0d1512;
    --bg:#f3f2ec;
    --card:#ffffff;
    --text:#15201b;
    --muted:#66716b;
    --line:#e3e1d8;
    --border:#e3e1d8;
    --danger:#b42318;
    --ring:rgba(13,107,92,.24);
    --shadow:0 1px 0 rgba(13,21,18,.04),0 1px 3px rgba(13,21,18,.05);
    --shadow-lg:0 12px 40px rgba(13,21,18,.14),0 2px 6px rgba(13,21,18,.06);
  }
  /* Sticky-Kopf (oben) und Erzeugen-Leiste (unten) dürfen fokussierte/angesprungene
     Elemente nie verdecken -- scroll-padding hält dafür Platz frei. */
  html{overflow-x:hidden;scroll-padding-top:172px;scroll-padding-bottom:120px;}
  body{
    font-family:var(--font-ui);letter-spacing:-.006em;font-size:14px;line-height:1.5;
    background:
      radial-gradient(900px 300px at 50% -140px, rgba(13,107,92,.10), transparent 70%),
      var(--bg);
    font-feature-settings:"cv11","ss01";
  }
  .wrap{max-width:1040px;padding:0 20px 96px;}
  .ic{flex:none;vertical-align:-3px;}

  /* ---------- App-Kopf (voll breit, klebt oben) ---------- */
  .appHeader{position:sticky;top:0;z-index:40;width:100vw;margin-left:calc(50% - 50vw);background:rgba(255,255,255,.88);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line);}
  .hdrInner{max-width:1040px;margin:0 auto;padding:0 20px;}
  .hdrTop .hdrInner{display:flex;align-items:center;justify-content:space-between;gap:16px;height:60px;}
  .brandMark{display:flex;align-items:center;gap:11px;min-width:0;border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;}
  .brandMark:hover .wordmark{text-decoration:underline;text-underline-offset:3px;}
  .abPreview{display:flex;align-items:center;gap:10px;}
  .abLogo{width:44px;height:44px;border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--surface-soft, #f4f3ee);}
  .abLogo img,.abLogo svg{width:100%;height:100%;object-fit:contain;}
  .brandMark .dot{width:34px;height:34px;border-radius:10px;background:none;overflow:visible;font-size:0;display:flex;align-items:center;justify-content:center;}
  .brandMark .dot img{width:100%;height:100%;object-fit:contain;padding:0;border-radius:inherit;}
  .brandMark .dot:has(img){overflow:hidden;}
  .brandMark .dot svg{display:block;}
  .brandMark .dot img{width:34px;height:34px;object-fit:contain;padding:4px;background:var(--ink);border-radius:10px;}
  .brandMark h1,.brandMark .wordmark{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.1;}
  .brandMark .sub{font-size:11.5px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:38vw;}
  .hdrActions{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;}
  .hdrTournaments{border-top:1px solid var(--line);background:rgba(250,249,245,.7);}
  .hdrTournaments .hdrInner{padding-top:8px;padding-bottom:8px;}
  .hdrNav .hdrInner{display:flex;align-items:flex-end;}
  .exportBtn{gap:7px;background:var(--ink);border-radius:9px;padding:0 12px;height:32px;font-family:var(--font-ui);font-size:12.5px;font-weight:600;box-shadow:0 1px 0 rgba(255,255,255,.14) inset,0 1px 2px rgba(13,21,18,.25);transition:transform .12s,background .12s;}
  .exportBtn:hover{background:#1c2823;}
  .exportBtn:active{transform:translateY(1px);}
  .exportBtn .ic{color:var(--lime);}
  .podiumActiveBadge{border-color:#bfe3d6;background:var(--accent-soft);color:var(--accent);}
  .menuPop{border-radius:14px;box-shadow:var(--shadow-lg);border-color:var(--line);padding:6px;width:290px;}
  .menuPop .menuItem{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;background:none;padding:9px 10px;border-radius:9px;font-size:13px;font-weight:500;color:var(--text);cursor:pointer;font-family:inherit;}
  .menuPop .menuItem:hover{background:var(--surface-soft, #f4f3ee);}
  .menuPop .menuItem .ic{color:var(--muted);}
  .menuPop .menuSep{height:1px;background:var(--line);margin:6px 4px;}
  .menuPop .menuHint{font-size:11.5px;color:var(--muted);padding:6px 10px 8px;line-height:1.45;}

  /* ---------- Tabs: Unterstreichung + Schritt-Nummer ---------- */
  .tabNavWrap{width:100%;}
  .tabNav{display:flex;gap:2px;margin:0;background:none;border:0;border-radius:0;padding:0;box-shadow:none;overflow-x:auto;scrollbar-width:none;}
  .tabNav::-webkit-scrollbar{display:none;}
  .tabBtn{flex:none;display:inline-flex;align-items:center;gap:8px;position:relative;background:none;border:0;border-radius:0;padding:13px 14px 12px;font-family:var(--font-ui);font-size:13.5px;font-weight:500;color:var(--muted);white-space:nowrap;}
  .tabBtn .tabNum{display:inline-flex;align-items:center;justify-content:center;width:19px;height:19px;border-radius:50%;font-size:10.5px;font-weight:700;background:#ecebe4;color:var(--muted);font-family:var(--font-display);}
  .tabBtn::after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transition:transform .2s cubic-bezier(.2,.7,.2,1);}
  .tabBtn:hover:not(.active){background:none;color:var(--text);}
  .tabBtn.active{background:none;color:var(--ink);font-weight:650;}
  .tabBtn.active .tabNum{background:var(--accent);color:#fff;}
  .tabBtn.active::after{transform:scaleX(1);}

  /* ---------- Turnier-Wechsler ---------- */
  .tournamentBar{margin:0;flex-wrap:nowrap;}
  /* Eine einzige, horizontal scrollbare Zeile: der Kopf klebt oben und darf mit
     vielen Turnieren nicht beliebig hoch werden. */
  .tournamentTabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin;padding-bottom:2px;}
  .tournamentTab,.tournamentTabAdd{flex:none;white-space:nowrap;}
  .tournamentTab{border:1px solid var(--line);background:#fff;color:var(--text);border-radius:9px;padding:5px 8px 5px 11px;font-size:12.5px;font-weight:600;box-shadow:var(--shadow);}
  .tournamentTab.active{background:var(--ink);border-color:var(--ink);color:#fff;}
  .tournamentTabAdd{display:inline-flex;align-items:center;gap:5px;border:1px dashed #cfcdc3;border-radius:9px;padding:5px 11px;font-size:12.5px;font-weight:600;}
  .tournamentTabAdd:hover{border-color:var(--accent);color:var(--accent);}
  .tournamentTabs{flex:1 1 auto;min-width:0;}
  .tournamentActions{flex:none;display:flex;align-items:center;gap:6px;}
  .tbAction{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border:1px solid var(--line);background:#fff;color:var(--text);border-radius:9px;font-family:inherit;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap;}
  .tbAction:hover{border-color:var(--accent);color:var(--accent);}
  .tbAction .ic{color:var(--muted);}
  .tbAction:hover .ic{color:var(--accent);}
  @media (max-width:700px){.tbAction{padding:0 9px;}.tbAction span{display:none;}}

  /* ---------- Seitenkopf mit Kennzahlen ---------- */
  .pageHead{padding:30px 0 20px;}
  .eyebrow{font-size:11.5px;font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);display:flex;align-items:center;gap:8px;}
  .pageHead h1.pageTitle{font-family:var(--font-display);font-size:clamp(26px,4.2vw,40px);line-height:1.05;font-weight:700;letter-spacing:-.03em;margin:8px 0 14px;word-break:break-word;}
  .chipRow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
  .chip{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 11px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:12.5px;font-weight:550;color:var(--text);box-shadow:var(--shadow);}
  .chip .ic{color:var(--muted);}
  .chip b{font-family:var(--font-display);font-weight:700;font-size:13.5px;letter-spacing:-.01em;}
  .statusPill{display:inline-flex;align-items:center;gap:7px;height:30px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:650;letter-spacing:.01em;}
  .statusPill::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;}
  .statusPill.draft{background:#f0efe8;color:#6b6a5f;}
  .statusPill.live{background:var(--accent-soft);color:var(--accent);}
  .statusPill.live::before{animation:pulse 1.6s ease-in-out infinite;}
  .statusPill.done{background:#fdf3d7;color:#8a5a00;}
  @keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}

  /* ---------- Karten ---------- */
  .card{border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow);padding:24px 26px 26px;margin-bottom:16px;}
  .cardHead{gap:12px;margin-bottom:6px;}
  .stepNum{width:26px;height:26px;border-radius:50%;background:var(--ink);color:#fff;font-family:var(--font-display);font-size:12.5px;font-weight:700;}
  .card h2{font-family:var(--font-display);font-size:19px;font-weight:650;letter-spacing:-.02em;}
  .card h3{font-size:11px;font-weight:650;letter-spacing:.09em;margin:26px 0 12px;}
  .card .desc{font-size:13px;line-height:1.55;margin:0 0 18px 38px;max-width:68ch;}
  #app.enter .card,#app.enter .pageHead{animation:rise .42s cubic-bezier(.2,.7,.2,1) both;}
  #app.enter .card:nth-of-type(2){animation-delay:.04s}#app.enter .card:nth-of-type(3){animation-delay:.08s}#app.enter .card:nth-of-type(4){animation-delay:.12s}#app.enter .card:nth-of-type(5){animation-delay:.16s}
  @keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){#app.enter .card,#app.enter .pageHead{animation:none}.tabBtn::after{transition:none}}

  /* ---------- Formulare ---------- */
  label{font-size:12.5px;font-weight:600;color:#3d4842;margin-bottom:6px;}
  input[type=text],input[type=url],input[type=email],input[type=tel],input[type=date],input[type=datetime-local],input[type=number],input[type=time],select,textarea{height:40px;padding:0 12px;border:1px solid #d9d7cd;border-radius:10px;font-size:14px;font-family:var(--font-ui);background:#fff;transition:border-color .14s,box-shadow .14s;}
  textarea{height:auto;padding:10px 12px;}
  input:hover:not(:disabled):not(:focus),select:hover:not(:disabled):not(:focus),textarea:hover:not(:focus){border-color:#bdbbb0;}
  input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3.5px var(--ring);}
  input:disabled,select:disabled{background:#f6f5f0;color:#9a9a90;cursor:not-allowed;}
  input[type=number]{width:96px;text-align:left;font-variant-numeric:tabular-nums;}
  input::placeholder,textarea::placeholder{color:#a6a69b;}
  select{appearance:none;-webkit-appearance:none;padding-right:34px;background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2366716b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>") no-repeat right 12px center;}
  input[type=checkbox],input[type=radio]{accent-color:var(--accent);}
  .checkOpt input[type=checkbox]{accent-color:var(--accent);width:17px;height:17px;}
  input[type=color]{height:40px;border-radius:10px;border-color:#d9d7cd;}
  .row{gap:18px;margin-bottom:18px;}
  .timeStepBtn{height:40px;border-radius:9px;border-color:#d9d7cd;font-family:var(--font-ui);}
  .timeStepBtn:hover{border-color:var(--accent);color:var(--accent);}

  /* Auswahl-Karten (Format, Modus, Anzeige-Optionen) */
  .formatChoice{gap:10px;}
  .formatChoice label{border:1px solid #d9d7cd;border-radius:13px;padding:13px 14px;font-size:13.5px;font-weight:600;background:#fff;align-items:flex-start;gap:11px;transition:border-color .14s,box-shadow .14s,background .14s;}
  .formatChoice label:hover{border-color:#a9a79b;}
  .formatChoice label.selected{border-color:var(--accent);background:linear-gradient(180deg,#f2f9f7,#fff);box-shadow:0 0 0 3px var(--ring);}
  .formatChoice input[type=radio]{margin-top:2px;}
  .fcIcon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:#f0efe8;color:var(--muted);flex:none;transition:background .14s,color .14s;}
  .formatChoice label.selected .fcIcon{background:var(--accent);color:#fff;}
  .fcText{display:flex;flex-direction:column;gap:2px;line-height:1.25;}
  .fcText small{font-size:11.5px;font-weight:450;color:var(--muted);}
  .manualPickRow{border-radius:11px;border-color:#d9d7cd;padding:9px 12px;}
  .manualPickRow:hover{border-color:#a9a79b;}

  /* ---------- Buttons ---------- */
  .btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 18px;border-radius:10px;font-family:var(--font-ui);font-size:13.5px;font-weight:600;letter-spacing:-.005em;background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 1px 0 rgba(255,255,255,.16) inset,0 1px 2px rgba(10,86,74,.35);transition:background .12s,transform .1s,box-shadow .12s;}
  .btn:hover{background:var(--accent-strong);}
  .btn:active:not(:disabled){transform:translateY(1px);}
  .btn:disabled{opacity:.4;box-shadow:none;}
  .btn.secondary{background:#fff;color:var(--text);border-color:#d9d7cd;box-shadow:var(--shadow);}
  .btn.secondary:hover{background:#f7f6f1;border-color:#bdbbb0;}
  .btn.ghost{background:transparent;border-color:transparent;color:var(--text);box-shadow:none;}
  .btn.ghost:hover{background:#efeee7;}
  .btn.small{height:34px;padding:0 13px;font-size:12.5px;border-radius:9px;}
  .btn.danger{border-color:#f1c4bf;}
  .btnRow{gap:8px;align-items:center;}
  .linkBtn{color:var(--accent);font-weight:600;}
  .linkBtn:hover{color:var(--accent-strong);}
  .genderPills button{height:40px;border-radius:9px;}
  .genderPills button.active{background:var(--accent);border-color:var(--accent);}
  .hdrActions .btn.small{height:36px;}

  /* ---------- Hinweise ---------- */
  .note{background:#f7f6f1;border:0;border-left:3px solid #d9d7cd;border-radius:0 10px 10px 0;padding:10px 14px;color:#59635d;font-size:12.5px;}
  .noteWarn{background:#fdf6df;border:0;border-left:3px solid #e6b422;border-radius:0 10px 10px 0;color:#7a4f00;font-weight:550;}
  .helpDetails > summary{color:var(--accent);}
  .collapsibleSection{border-radius:13px;border-color:var(--line);box-shadow:var(--shadow);}
  .collapsibleSection .sectionHead{padding:14px 18px;font-size:13.5px;font-weight:600;}
  .collapsibleSection .sectionHead:hover{background:#faf9f5;}
  .collapsibleSection .sectionBody{padding:0 18px 18px;}
  .collapsibleSection.subSection{border-style:solid;background:#fbfaf6;box-shadow:none;}
  .collapsibleSection.subSection .sectionHead{font-size:11.5px;font-weight:650;letter-spacing:.06em;}
  .collapsibleSection.banner{box-shadow:none;}

  /* ---------- Teamliste ---------- */
  .playerList{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:8px;}
  .playerList li{flex-wrap:nowrap;gap:6px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:5px 8px 5px 10px;min-height:46px;box-shadow:var(--shadow);transition:border-color .14s,box-shadow .14s;}
  .playerList li:hover,.playerList li:focus-within{border-color:#c7c5ba;}
  .playerList .seedNum{background:none;color:#a2a196;font-family:var(--font-display);font-size:13px;font-weight:700;min-width:24px;padding:0;}
  .playerList input.playerNameEdit{flex:1 1 auto;width:auto !important;min-width:0;height:34px;font-size:14px;font-weight:550;padding:0 8px;border-radius:8px;text-overflow:ellipsis;}
  .playerList input.playerNameEdit:hover{background:var(--surface-soft, #f4f3ee);}
  .playerList button{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;color:#8a9490;font-size:0;line-height:1;transition:opacity .14s,background .14s,color .14s;}
  .playerList button:hover{background:#f0efe8;color:var(--text);}
  .playerList button[title="Entfernen"]:hover{background:#fdecea;color:var(--danger);}
  button.akToggle{width:auto;min-width:30px;height:24px;padding:0 8px;border-radius:7px;font-family:var(--font-ui);font-size:10.5px;font-weight:700;letter-spacing:.03em;color:#8a9490;background:var(--surface-soft, #f4f3ee);opacity:1;}
  button.akToggle.active{background:#fdf3d7;color:#8a5a00;}
  /* Playtomic-Niveau (v39, js/playtomic-level.js): Pille wie AK; Spezifität über .playerList button (font-size:0) */
  .playerList button.ptLevel{flex:none;width:auto;min-width:30px;height:24px;padding:0 8px;border-radius:7px;font-family:var(--font-ui);font-size:10.5px;font-weight:700;letter-spacing:.02em;white-space:nowrap;color:#1f5f8b;background:#e6f2fb;}
  .playerList button.ptLevel.empty{font-weight:600;color:#a2a196;background:transparent;border:1px dashed #d9d7cd;}
  .playerList button.ptLevel:hover{background:#d6e9f7;color:#1f5f8b;}
  .ptSortRow{margin-top:8px;}
  .playerList input.seedPosInput{width:52px;height:28px;padding:0 6px;border-radius:8px;text-align:center;}
  .playerLogoAdd{width:26px;height:26px;border-radius:8px;border:1px dashed #c9c7bc;color:#a2a196;font-size:0;display:inline-flex;align-items:center;justify-content:center;background:#fff;}
  .playerLogoThumb{width:26px;height:26px;border-radius:8px;}
  .count{font-size:12.5px;margin-top:14px;color:var(--muted);}
  .emptyState{display:flex;flex-direction:column;align-items:center;gap:6px;padding:34px 16px;border:1px dashed #d9d7cd;border-radius:13px;background:#fbfaf6;font-size:13.5px;}
  .emptyIcon{width:44px;height:44px;border-radius:13px;background:#efeee7;color:var(--muted);display:flex;align-items:center;justify-content:center;margin-bottom:4px;}
  .emptyState strong{font-family:var(--font-display);font-size:16px;color:var(--text);}
  .emptyState span{max-width:44ch;}
  .bulkBox{border-radius:13px;background:#faf9f5;border-color:#d9d7cd;}
  .playerForm{gap:8px;}
  .playerForm .formOr{color:#a2a196;}

  /* ---------- Runden / Spiele ---------- */
  .round{border-radius:14px;border-color:var(--line);padding:16px 18px;box-shadow:var(--shadow);background:#fff;}
  .round .roundTitle{font-family:var(--font-display);font-size:15px;font-weight:650;letter-spacing:-.01em;}
  .roundTime{font-family:var(--font-ui);font-weight:500;font-size:12px;font-variant-numeric:tabular-nums;}
  .pill{font-size:10.5px;font-weight:650;padding:4px 10px;letter-spacing:.06em;background:#efeee7;color:#77776b;}
  .pill.done{background:#e4f2ec;color:#186b48;}
  .pill.live{background:var(--accent);color:#fff;}
  .match{padding:10px 0;border-top:1px solid #efeee7;gap:10px 12px;}
  .match .court{background:#f2f1ea;border-radius:7px;padding:4px 9px;min-width:0;color:#59635d;font-size:10.5px;font-weight:650;letter-spacing:.05em;}
  .match .team{font-weight:550;font-size:14px;}
  .match input{width:50px;height:40px;padding:0;text-align:center;font-family:var(--font-display);font-size:17px;font-weight:700;font-variant-numeric:tabular-nums;border-radius:10px;}
  .groupTag{background:var(--accent-soft);color:var(--accent);border-radius:7px;padding:4px 8px;font-size:10.5px;letter-spacing:.05em;}
  .walkoverToggle{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;}
  .breakCard{background:#fdf8e8;border-color:#ecd48a;}
  .koMatch{border-radius:13px;border-color:var(--line);box-shadow:var(--shadow);background:#fff;}
  .koMatch.koTerminal{border-color:var(--accent);box-shadow:0 0 0 3px var(--ring);}
  .koRoundTitle{font-family:var(--font-display);font-size:13px;letter-spacing:.06em;}

  /* ---------- Tabellen ---------- */
  table.standings th{font-size:10.5px;font-weight:650;letter-spacing:.07em;}
  table.standings td,table.standings th{border-bottom-color:#efeee7;}
  table.standings td.rankNum{font-family:var(--font-display);font-weight:700;}
  table.standings tbody tr:hover{background:#faf9f5;}
  table.standings tr.groupQualified{background:#eef7f3;}
  .groupStandingsBlock{border-radius:13px;border-color:var(--line);background:#fff;}
  .groupStandingsBlock h4{font-family:var(--font-display);font-size:12.5px;letter-spacing:.08em;color:var(--accent);}

  /* ---------- Sticky-Erzeugen-Leiste ---------- */
  .card.genCard{border-color:transparent;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);box-shadow:var(--shadow-lg),0 0 0 1px var(--line);padding:14px 20px 12px;bottom:16px;}
  .genCard .stepNum{background:var(--accent);}
  .genCard h2{font-size:17px;}
  #genScheduleBtn{height:44px;padding:0 24px;font-size:14px;}

  /* ---------- Toasts ---------- */
  #toastHost{position:fixed;left:50%;bottom:104px;transform:translateX(-50%);z-index:100;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;width:max-content;max-width:92vw;}
  .toast{display:flex;align-items:center;gap:10px;background:var(--ink);color:#fff;padding:11px 16px;border-radius:12px;font-size:13px;font-weight:550;box-shadow:var(--shadow-lg);opacity:0;transform:translateY(10px);transition:opacity .25s,transform .25s;}
  .toast.show{opacity:1;transform:none;}
  .toast .ic{color:var(--lime);}
  .toast.warn .ic{color:#ffb84d;}

  /* ---------- Sonstiges ---------- */
  /* Zeilen-Steuerung (↑ ↓, Gruppe, AK, ×): sitzt fest am Zeilenende (kein Überlagern
     des Namens), ist aber nur dezent sichtbar und wird bei Hover/Fokus voll
     deckend -- so bleibt die Liste ruhig, jede Aktion aber ohne Suchen greifbar.
     Das Positionsfeld ist ausgeblendet (die Pfeile reichen; setTeamSeedPosition()
     bleibt für Tastatur/Skripte erhalten). */
  .playerList li{position:relative;}
  .rowCtl{display:inline-flex;align-items:center;gap:2px;margin-left:auto;flex:none;opacity:.32;transition:opacity .14s;}
  .playerList li:hover .rowCtl,.playerList li:focus-within .rowCtl{opacity:1;}
  .playerList .seedPosInput{display:none !important;}
  .playerList .akTag{display:inline-block;margin:0;background:#fdf3d7;border:0;color:#8a5a00;border-radius:6px;padding:2px 7px;font-size:10.5px;letter-spacing:.04em;}
  button.akToggle.active{opacity:1;}
  @media (hover:none){.rowCtl{opacity:1;}.playerList li{flex-wrap:wrap;}}
  .cardHead:not(:has(.stepNum)) + .desc{margin-left:0;}
  .formatChoice.formats{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));}
  .genInfo{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1;}
  .genCard .note{padding:0;background:none;border:0;font-size:12.5px;}
  .genCard .cardHead{gap:10px;}
  .tournamentTab.active{background:var(--accent-soft);border-color:#b9d8cf;color:var(--accent-strong);}
  .tournamentTab .tFormat{color:#7a8a84;}
  .tournamentTab.active .tFormat{color:#4f7d72;}

  .heroPosBtn{border-radius:8px;}
  .heroAutoBadge{background:var(--accent-soft);color:var(--accent);border-color:#c5e0d8;}
  .sponsorList li{border-radius:11px;background:#fff;box-shadow:var(--shadow);}
  .tournamentTab .tClose{font-size:0;width:20px;height:20px;}
  footer.appFooter{margin-top:28px;padding-top:18px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);display:flex;gap:14px;align-items:center;flex-wrap:wrap;}
  @media (max-width:820px){
    .hdrActions .btn .lbl,.exportBtn .lbl{display:none;}
    .hdrActions .btn.small{padding:0 10px;}
    .brandMark .sub{display:none;}
    .card{padding:18px 16px 20px;}
    .card .desc{margin-left:0;}
    .pageHead{padding:22px 0 14px;}
    .playerList{grid-template-columns:1fr;}
  }
  .row{align-items:flex-end;}
  @media (max-width:520px){
    .brandMark > div:last-child{display:none;}
    .hdrTop .hdrInner{height:56px;}
    .timeCol{flex:1 1 100%;min-width:0;}
    .genCard .note{display:none;}
    .genRow{flex-direction:row !important;align-items:center !important;flex-wrap:nowrap;}
    .genCard h2{font-size:15px;}
    #genScheduleBtn{width:auto !important;height:42px;padding:0 16px;font-size:13px;}
    .card.genCard{padding:10px 14px;bottom:10px;}
    .wrap{padding:0 12px 96px;}
    .hdrInner{padding:0 12px;}
    .exportBtn{padding:0 11px;}
    .tabBtn{padding:12px 11px 11px;font-size:13px;}
  }

  /* Organisator-Oberfläche ist eher für Laptop/Tablet gedacht, wird aber
     erfahrungsgemäß auch mal schnell vom Handy aus bedient (z.B. um während
     des Turniers am Platz ein Ergebnis einzutragen) — rein additiv, ändert
     am Desktop-Layout (>640px) nichts. */
  #standingsBody{overflow-x:auto;}
  @media (max-width:640px){
    .wrap{padding:0 10px 56px;}
    .topbar{padding:12px 0;gap:8px;}
    .brandMark h1{font-size:14px;}
    .brandMark .sub{font-size:10.5px;}
    .exportBtn{padding:9px 12px;font-size:12.5px;}
    .card{padding:16px 14px 18px;border-radius:13px;}
    .card .desc{margin-left:0;}
    .tabNav{overflow-x:auto;-webkit-overflow-scrolling:touch;gap:3px;}
    .tabBtn{flex:none;white-space:nowrap;padding:10px 12px;font-size:12px;}
    .tabNavWrap{position:relative;}
    .tabNavWrap::after{content:"";position:absolute;top:0;right:0;bottom:0;width:26px;border-radius:0 12px 12px 0;background:linear-gradient(to right, transparent, #fff 70%);pointer-events:none;}
    .row{gap:10px;}
    .row > div{min-width:130px;}
    .brandRow > div{min-width:140px;}
    .match{gap:8px 10px;}
    .match .team{min-width:84px;font-size:12.5px;}
    .match input{width:38px;padding:6px 4px;}
    .playerForm{flex-wrap:wrap;}
    .playerForm input[type=text]{min-width:160px;}
    .sponsorForm{align-items:stretch;}
    table.standings{font-size:12px;}
    table.standings th,table.standings td{padding:7px 5px;}
  }

  /* Handy: Ergebniseingabe als Anzeigetafel -- Gruppe/Platz klein oben, je
     Team eine Zeile mit seinem Ergebnis rechts daneben, bei Sätzen eine Spalte
     je Satz (siehe renderRoundsOnly()/renderKOBracketHtml()/matchScoreInputHtml()). */
  @media (max-width:640px){
    .round .match,.koMatch .match{display:grid;grid-template-columns:minmax(0,1fr);grid-auto-columns:auto;align-items:center;gap:6px 6px;padding:10px 0;}
    .match .matchMeta{display:flex;align-items:center;gap:6px;grid-row:1;grid-column:1;min-width:0;}
    .match .matchMeta .groupTag,.match .matchMeta .court{padding:2px 7px;font-size:10px;}
    .match .walkoverToggle{grid-row:1;grid-column:2;justify-self:end;width:32px;height:26px;}
    .match:has(.setPair:nth-child(2):last-child) .walkoverToggle{grid-column:3;}
    .match:has(.setPair:nth-child(3):last-child) .walkoverToggle{grid-column:4;}
    .match:has(.setPair:nth-child(4):last-child) .walkoverToggle{grid-column:5;}
    .match:has(.setPair:nth-child(5):last-child) .walkoverToggle{grid-column:6;}
    .match input::-webkit-outer-spin-button,.match input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
    .match input[type=number]{-moz-appearance:textfield;}
    .match .team{min-width:0;font-size:14px;text-align:left !important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
    .match .team.t1{grid-row:2;grid-column:1;}
    .match .team.t2{grid-row:3;grid-column:1;}
    .match > .vs{display:none;}
    .match > input{width:46px;height:38px;font-size:16px;}
    .match > input:nth-of-type(1){grid-row:2;grid-column:2;}
    .match > input:nth-of-type(2){grid-row:3;grid-column:2;}
    .match .setsInputs,.match .setPair{display:contents;}
    .match .setColon{display:none;}
    .match .setPair.ctb::before{display:none;}
    .match .setPair input{width:40px;height:38px;padding:0;font-size:15px;}
    .match .setPair:nth-child(1) input:nth-of-type(1){grid-row:2;grid-column:2;}
    .match .setPair:nth-child(1) input:nth-of-type(2){grid-row:3;grid-column:2;}
    .match .setPair:nth-child(2) input:nth-of-type(1){grid-row:2;grid-column:3;}
    .match .setPair:nth-child(2) input:nth-of-type(2){grid-row:3;grid-column:3;}
    .match .setPair:nth-child(3) input:nth-of-type(1){grid-row:2;grid-column:4;}
    .match .setPair:nth-child(3) input:nth-of-type(2){grid-row:3;grid-column:4;}
    .match .setPair:nth-child(4) input:nth-of-type(1){grid-row:2;grid-column:5;}
    .match .setPair:nth-child(4) input:nth-of-type(2){grid-row:3;grid-column:5;}
    .match .setPair:nth-child(5) input:nth-of-type(1){grid-row:2;grid-column:6;}
    .match .setPair:nth-child(5) input:nth-of-type(2){grid-row:3;grid-column:6;}
    .match > .walkoverTag{grid-row:2 / span 2;grid-column:2;}
    .match > .note{grid-row:4;grid-column:1 / -1;margin:0 !important;font-size:11.5px;}
    .round .koWalkoverRow.open{padding:0 0 8px;}
    .timerDock{padding:7px 10px;gap:6px 10px;font-size:12px;margin-bottom:12px;}
    .timerDock .tdRound{display:none;}
    .timerDock .tdSeg button{padding:4px 8px;}
    .timerDock .tdReadout{min-width:0;}
  }

  /* Druckansicht (z.B. Spielplan/Tabelle für den Aushang am Verein): blendet
     Bedienelemente aus, die auf Papier nichts bringen, und verhindert, dass
     eine Runden-Karte mitten über eine Seite geschnitten wird. */
  @media print{
    body{background:#fff;}
    .topbar,.tabNav,.saveBar,.banner,.btn,.btnRow,.linkBtn,.playerForm,.bulkBox,
    .sponsorForm,.exportBtn,.genderPills,.playerList button,.fileUploadBtn,
    .koWalkoverRow,input[type=file],#loadFileInput{display:none !important;}
    .wrap{max-width:100%;padding:0;}
    .card{box-shadow:none;border:1px solid #ccc;break-inside:avoid;page-break-inside:avoid;margin-bottom:12px;}
    .round{break-inside:avoid;page-break-inside:avoid;}
    .koRound{break-inside:avoid;page-break-inside:avoid;}
    .koMatch{break-inside:avoid;page-break-inside:avoid;}
    .groupStandingsBlock{break-inside:avoid;page-break-inside:avoid;}
    .match input{border:1px solid #999;background:#fff;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
    table.standings{font-size:12px;}
  }

/* Einstiegs-Hilfe (js/onboarding.js) */
.obCard{border-color:var(--accent);}
.obHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;}
.obCount{font-size:12px;font-weight:700;color:var(--muted);margin-left:6px;}
.obSteps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
.obSteps li{display:flex;align-items:center;gap:12px;}
.obSteps li.done .obTxt b{text-decoration:line-through;color:var(--muted);}
.obNo{width:26px;height:26px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;background:var(--accent-soft,#eeebf7);color:var(--accent);}
.obSteps li.done .obNo{background:var(--accent);color:#fff;}
.obTxt{flex:1;display:flex;flex-direction:column;}
.obTxt small{color:var(--muted);font-size:12.5px;}
.obMore{margin:12px 0 0;font-size:12.5px;color:var(--muted);}
.obSteps.start{max-width:520px;margin:14px auto 18px;text-align:left;}
