/*
  styles-ui-fixes.css — Layout- und Lesbarkeitskorrekturen
  Stand: 2026-09-04 · geprüft bei 390 / 700 / 820 / 1100 / 1440 / 1920 px Breite
  Einbinden NACH styles.css und styles-plan-visibility.css:
      <link rel="stylesheet" href="./styles-ui-fixes.css">
  Reine CSS-Ergänzung, kein HTML- oder JS-Eingriff. Jede Regel ist einzeln
  entfernbar; die Nummern verweisen auf den Prüfbericht.
*/

/* ---------------------------------------------------------------------------
   F1 · Sidebar wird abgeschnitten (blockierend)
   styles.css:16491 setzt height:100dvh + overflow:clip. Ist der Inhalt höher
   als das Fenster (gemessen 779 px Inhalt bei 720 px Fensterhöhe), sind
   Speicherstatus, „Erneut versuchen“ und die Versionszeile dauerhaft
   unerreichbar — ohne Scrollmöglichkeit.
--------------------------------------------------------------------------- */
body.app-shell .app-sidebar {
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: #4a4d55 transparent;
}

body.app-shell .app-sidebar::-webkit-scrollbar {
  width: 10px;
}

body.app-shell .app-sidebar::-webkit-scrollbar-thumb {
  border: 3px solid transparent;
  border-radius: 999px;
  background-clip: content-box;
  background-color: #4a4d55;
}

/* Unterer Rand: letzte Zeile klebt sonst am Fensterrand, sobald gescrollt wird. */
body.app-shell .app-sidebar > .site-footer {
  padding-bottom: 6px;
}

/* Ab 780 px Höhe passt die Spalte ohne eigenen Scroll (Gate 1440 x 780). */
@media (min-width: 1101px) and (min-height: 780px) and (max-height: 920px) {
  body.app-shell .app-sidebar > .site-footer {
    padding-bottom: 0;
  }
}

/* ---------------------------------------------------------------------------
   F2 · Plan: kompakte Zeilen (ab 721 px; darunter gilt die Kartenansicht)
   Ursachen, gemessen bei 1470x760: beide Tabellenspalten je 50 % breit
   (table-layout:fixed + colspan-Kopfzeile), app.js setzt eine Inline-Höhe
   (108 px) auf Konkurrenz/Runde/Notiz, Felder 44 px hoch mit 16 px Schrift.
   Vorher 203 px je Spiel, jetzt 45 px (ab 1440 px Breite) bzw. 81 px.
--------------------------------------------------------------------------- */
@media (min-width: 721px) {
  body.app-shell #planStep #planTable.schedule-table {
    table-layout: auto;
    width: 100%;
  }

  body.app-shell #planStep .schedule-table td.schedule-actions-col {
    width: 52px;
    padding: 0 8px 0 0;
  }

  body.app-shell #planStep .schedule-table td.schedule-game-cell {
    padding: 4px 8px;
  }

  body.app-shell #planStep .schedule-time-group-cell {
    padding: 0;
  }

  body.app-shell #planStep .schedule-time-group-button {
    min-height: 34px;
    padding-block: 6px;
  }

  body.app-shell #planStep .schedule-game-content {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px 14px;
    padding: 0;
  }

  /* !important: app.js schreibt die Höhe als Inline-Style. */
  body.app-shell #planStep :is(
    .schedule-competition-input,
    .schedule-round-input,
    .schedule-note-input,
    .schedule-player-input
  ) {
    field-sizing: content;
    height: auto !important;
    max-height: none;
    overflow-y: auto;
    overflow-wrap: break-word;
  }

  /* Kopfzeile und untere Leiste: weniger feste Höhe, mehr Platz für den Plan. */
  body.app-shell .topbar {
    min-height: 0;
    padding: 18px 32px 14px;
  }

  body.app-shell .topbar h1 {
    font-size: 30px;
    line-height: 1.1;
  }

  body.app-shell .topbar-tagline {
    margin: 2px 0 0;
    font-size: 14px;
    line-height: 1.35;
  }

  body.app-shell .workflow-footer {
    padding-block: 10px;
  }
}

/* Mit Maus/Trackpad: 34-px-Felder, 13,5/15-px-Schrift. Touch-Geräte behalten
   44 px und 16 px (Tippziel, kein Safari-Zoom beim Fokussieren). */
@media (min-width: 721px) and (pointer: fine) {
  body.app-shell #planStep :is(
    .schedule-player-input,
    .schedule-meta-input,
    .schedule-table-input,
    .schedule-note-input,
    .schedule-coach-select,
    .schedule-result-badge
  ) {
    min-height: 34px !important;
    padding-block: 4px;
    line-height: 1.25;
  }

  body.app-shell #planStep :is(
    .schedule-meta-input,
    .schedule-table-input,
    .schedule-note-input,
    .schedule-coach-select
  ) {
    font-size: 13.5px !important;
  }

  body.app-shell #planStep :is(.schedule-player-input, .schedule-result-badge) {
    font-size: 15px !important;
  }

  body.app-shell #planStep .schedule-coach-display {
    min-height: 34px;
  }
}

/* ---------------------------------------------------------------------------
   F3 · Zu kleine Schriften (10–11 px) in Plan, Übersicht und Betreuung
   In der Halle auf Laptop und Handy nicht mehr sicher lesbar. 12 px ist die
   Untergrenze, Trainerkürzel im Plan tragen die Betreuungsinformation und
   gehen auf 13 px.
--------------------------------------------------------------------------- */
body.app-shell .schedule-coach-code {
  font-size: calc(13px * var(--plan-scale));
}

body.app-shell .overview-next-label,
body.app-shell .source-option-kicker,
body.app-shell .assignment-load-count,
body.app-shell .assignment-load-copy span,
body.app-shell .assignment-conflict-item span,
body.app-shell .technical-error-details,
body.app-shell .schedule-association-badge {
  font-size: 12px;
}

body.app-shell :is(
  #exportScheduleBtn,
  #exportScheduleXlsxBtn,
  #printBtn,
  #exportPlayersBtn,
  #exportCoachesBtn
) {
  font-size: 14px;
}

/* ---------------------------------------------------------------------------
   F4 · Zu kleines Klickziel: „Alle Verbände/Nationen anzeigen“ war 19 px hoch
--------------------------------------------------------------------------- */
body.app-shell .source-association-details > summary {
  display: flex;
  align-items: center;
  box-sizing: border-box;
  min-height: 44px;
  padding-block: 8px;
}

/* ---------------------------------------------------------------------------
   F5 · Dialoge auf kleinen Fenstern: Aktionsknöpfe lagen unterhalb des
   sichtbaren Bereichs (gemessen: Karte 723 px bei 700 px Fensterhöhe).
   Karte scrollt in sich, die Knopfzeile bleibt unten stehen.
--------------------------------------------------------------------------- */
body.app-shell .project-dialog .project-dialog-card {
  box-sizing: border-box;
  max-height: calc(100dvh - 28px);
  overflow-y: auto;
}

body.app-shell .project-dialog .dialog-actions {
  position: sticky;
  bottom: -18px;
  z-index: 2;
  margin-bottom: -18px;
  padding-block: 12px 18px;
  background: #fff;
  box-shadow: 0 -1px 0 var(--line);
}

/* ---------------------------------------------------------------------------
   F6 · Lange Namen und Vereinsnamen dürfen nirgends aus ihrer Karte laufen
   Vorsorglich für Teilnehmerliste, Betreuungsliste und Chips: umbrechen
   statt überstehen. Keine Änderung, solange der Text passt.
--------------------------------------------------------------------------- */
body.app-shell :is(
  .participant-list,
  .assignment-list,
  .selected-player-chips,
  .coach-code-list,
  .tournament-trainer-list,
  .trainer-pool-list
) :is(strong, span, div, label) {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* ---------------------------------------------------------------------------
   F7 · Konto-Menü überlappt Überschrift und Sidebar-Titel auf schmalen
   Fenstern (gefunden 2026-09-04 beim Handy-Test der F1-Korrektur)
   account-collaboration-ui.js haengt das Menü per JS als
   position:fixed; top:18px; right:18px an document.body — ausserhalb von
   Topbar und Sidebar, ohne dass dort Platz reserviert wird. Mit vollem
   Namen ("Maya Kunats") ist die Pille auf schmalen Fenstern breit genug,
   um den Seitentitel bzw. den Sidebar-Header zu verdecken. Lösung: unter
   620px nur das Kürzel zeigen, dann bleibt genug Abstand.
   #accountMenuToggle ist eine ID (höhere Spezifität als die per JS
   injizierten .account-menu-toggle-Regeln), damit die Reihenfolge im
   <head> keine Rolle spielt.
--------------------------------------------------------------------------- */
@media (max-width: 620px) {
  #accountMenuToggle .account-menu-label {
    display: none;
  }

  #accountMenuToggle {
    gap: 0;
    padding: 8px;
  }
}

/* ---------------------------------------------------------------------------
   F8 · Handy (bis 720 px): Maßstab angleichen
   Gemessen bei 390x844: Spielkarte 228 px, Fußleiste 159 px, Navigation
   71 px, Spielerkarte 91 px (44-px-Checkbox), Kopf 97 px. Fußleiste und
   Navigation sind dauerhaft sichtbar und nahmen über ein Viertel der Höhe.
   Tippziele (44 px) und 16-px-Eingaben bleiben unverändert.
--------------------------------------------------------------------------- */
@media (max-width: 720px) {
  body.app-shell .topbar { padding: 10px 14px; gap: 10px; }
  body.app-shell .topbar h1 { font-size: 24px; line-height: 1.1; }
  body.app-shell .topbar-tagline { margin: 2px 0 0; font-size: 13px; line-height: 1.35; }
  body.app-shell .layout { row-gap: 16px; padding-top: 12px; padding-bottom: calc(190px + env(safe-area-inset-bottom)); }

  body.app-shell .workflow-footer { padding: 10px 14px; }
  body.app-shell .workflow-footer .step-guidance { gap: 8px; }
  body.app-shell .workflow-footer .step-guidance-copy { gap: 2px; }
  body.app-shell .workflow-footer .step-guidance-copy strong { font-size: 15px; line-height: 1.3; }
  body.app-shell .workflow-footer .step-guidance-copy span { font-size: 13px; line-height: 1.35; }
  body.app-shell .mobile-bottom-nav { padding-block: 3px; }
  body.app-shell .mobile-bottom-nav button { padding-block: 6px; }

  body.app-shell :is(.source-card, .source-import-preview) { padding-block: 18px; }
  body.app-shell :is(.source-grid, .source-alternative-grid) { gap: 12px; }
  body.app-shell #mobileSchedule .mobile-schedule-card { padding: 10px 12px; gap: 4px; }
  body.app-shell #mobileSchedule .mobile-schedule-details { flex: 0 0 auto; }
  body.app-shell #mobileSchedule .mobile-match-coach-display { display: flex; align-items: center; }

  body.app-shell .participant-item { padding-block: 8px; }
  body.app-shell .participant-item > input[type="checkbox"] { grid-row: 1 / span 2; align-self: center; min-height: 0; }
  body.app-shell .participant-mobile-list { gap: 8px; padding: 8px 8px 12px; }
  body.app-shell .participant-toolbar-actions { flex-direction: row; }
  body.app-shell #playersStep .participant-toolbar-actions > button { flex: 1 1 140px; }
}

/* Scoped entry screens: keep app button/label overrides out of the auth layout. */
#authPanel .auth-card {
  box-sizing: border-box;
  width: min(440px, 100%);
  gap: 24px;
  padding: clamp(20px, 4vw, 32px);
  border-radius: 16px;
}
#authPanel .account-auth-view:not([hidden]) {
  display: grid;
  gap: 16px;
  min-width: 0;
}
#authPanel .auth-card label { gap: 6px; font-size: 14px; font-weight: 500; }
#authPanel .auth-card input:not([type="checkbox"]) {
  box-sizing: border-box;
  min-width: 0;
  min-height: 48px;
  font-size: 16px;
  font-weight: 400;
}
#authPanel .auth-card button[type="submit"] { width: 100%; min-height: 48px; font-size: 16px; }
#authPanel .auth-copy h2 { margin: 0; font-size: 26px; line-height: 1.2; }
#authPanel .auth-copy p:not(.eyebrow) { font-size: 14px; line-height: 1.5; }
#authPanel .auth-copy .eyebrow { font-size: 11px; letter-spacing: 0.08em; font-weight: 600; }
#authPanel .auth-remember { min-height: 44px; font-size: 14px; font-weight: 400; line-height: 1.4; }
#authPanel .auth-link-row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; }
#authPanel .auth-link-row button {
  min-height: 44px;
  padding: 8px 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-size: 14px;
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 3px;
}
#authPanel .auth-error:empty { display: none; }
#authPanel .auth-help { padding-top: 16px; border-top: 1px solid var(--color-border); text-align: left; font-size: 12px; }
@media (max-width: 1100px) {
  body.auth-required > #authPanel:not([hidden]) { padding: 20px 16px calc(20px + env(safe-area-inset-bottom)) !important; }
}

/* A separate mobile backup view; the original controls keep their bindings. */
#backupDialog:not([open]) { display: none; }
#backupDialog[open] {
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  width: min(620px, calc(100vw - 32px));
  max-width: none;
  height: min(760px, calc(100dvh - 32px));
  max-height: calc(100dvh - 32px);
  margin: auto;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--color-border);
  border-radius: 16px;
  background: var(--color-surface);
  color: var(--color-text);
}
#backupDialog::backdrop { background: rgba(15, 35, 43, 0.48); }
#backupDialog .backup-dialog-header {
  display: grid;
  gap: 12px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
}
#backupDialogBackBtn { justify-self: start; min-height: 44px; padding: 8px 0; border: 0; background: transparent; box-shadow: none; font-size: 14px; }
#backupDialogTitle { margin: 0; font-size: 22px; line-height: 1.25; }
#backupDialogContent { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
#backupDialog .project-backup-panel { display: grid; gap: 16px; padding: 20px; }
.backup-section-title { margin: 0; font-size: 16px; }
#backupDialog .compact-action-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; }
#backupDialog .project-backup-panel button { min-height: 44px; font-size: 15px; white-space: normal; }
#backupDialog .action-helper, #backupDialog .auto-backup-title span { font-size: 13px; line-height: 1.5; color: var(--color-text-muted); }
#backupDialog .auto-backup-panel { margin: 0; padding: 16px 0 0; border: 0; border-top: 1px solid var(--color-border); border-radius: 0; background: transparent; }
#backupDialog .auto-backup-head { display: grid; gap: 12px; }
#backupDialog .auto-backup-toggle { justify-self: start; }
#backupDialog .auto-backup-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
#backupDialog .auto-backup-actions button { padding-inline: 8px; font-size: 14px; }
@media (max-width: 359px) { #backupDialog .auto-backup-actions { grid-template-columns: minmax(0, 1fr); } }
#backupDialog .action-group-source-update { padding-top: 16px; border-top: 1px solid var(--color-border); }
@media (max-width: 600px) {
  #backupDialog[open] { inset: 0; width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border: 0; border-radius: 0; }
  #backupDialog .backup-dialog-header { padding-top: max(12px, env(safe-area-inset-top)); }
  #backupDialog .project-backup-panel { padding-bottom: calc(24px + env(safe-area-inset-bottom)); }
}
#backupDialogStatus { margin: 0; padding: 12px 20px; border-top: 1px solid var(--color-border); font-size: 13px; line-height: 1.4; }
#backupDialogStatus:empty { display: none; }
#backupDialogStatus[role="alert"] { color: var(--color-danger-text); }

/* Source cards must shrink around long file names, errors and actions. */
body.app-shell #playersStep .participant-search-disclosure { flex: 1 1 260px; min-width: 0; border: 0; margin: 0; padding: 0; }
body.app-shell #playersStep .participant-search-disclosure > summary { display: none; }
body.app-shell #playersStep .participant-search-disclosure .field { margin: 0; }
body.app-shell #assignmentsStep .assignment-help { margin-top: 12px; border: 0; color: var(--color-text-muted); font-size: 13px; }
body.app-shell #assignmentsStep .assignment-help > summary { min-height: 44px; padding-block: 10px; cursor: pointer; }
body.app-shell #sourceStep :is(.source-option-head, .source-path-content > *, .pdf-file-selection-list) { min-width: 0; overflow-wrap: anywhere; }
body.app-shell #pdfFileInput { box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; }
body.app-shell #sourceStep .pdf-file-actions button { height: auto; white-space: normal; overflow-wrap: anywhere; line-height: 1.4; }
@media (max-width: 900px) {
  body.app-shell #sourceStep .source-alternative-grid { grid-template-columns: minmax(0, 1fr); }
  body.app-shell #sourceStep .source-alternative-grid > .source-card { padding: 20px; }
}
/* Help is a separate view, including entry from a direct hash link. */
body.app-shell.is-help-view #kurzanleitung { display: block; width: 100%; }
body.app-shell.is-help-view :is(.step-accordion-list, .import-review, .welcome-banner, .trust-section, .workflow-footer) { display: none; }
body.app-shell #associationStep .association-impact { white-space: normal; overflow-wrap: anywhere; }
/* Account actions stay reachable in shallow windows. */
body.app-shell .account-menu-popover { box-sizing: border-box; max-height: calc(100dvh - 96px); overflow-y: auto; overscroll-behavior: contain; overflow-wrap: anywhere; }
/* Utility pages share the normal content edge without a second page heading or nested panel. */
body.app-shell.is-utility-view .layout { padding-top: 20px; }
body.app-shell #trainerManagement { width: 100%; max-width: none; margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
body.app-shell .utility-view:focus { outline: none; }
@media (max-width: 1300px) {
  body.app-shell #trainerManagement .trainer-form { grid-template-columns: minmax(0, 1fr) minmax(80px, 120px); }
  body.app-shell #trainerManagement .trainer-item { grid-template-columns: 28px minmax(0, 1fr) 80px; }
  body.app-shell #trainerManagement .trainer-item > input { grid-column: auto; }
  body.app-shell #trainerManagement .trainer-item > :nth-child(n+4) { grid-column: 2 / -1; }
  body.app-shell #trainerManagement button { white-space: normal; overflow-wrap: anywhere; }
}
@media (max-width: 640px) {
  body.app-shell #trainerManagement .trainer-form, body.app-shell #trainerManagement .trainer-item { grid-template-columns: minmax(0, 1fr); }
  body.app-shell #trainerManagement .trainer-item > :nth-child(n) { grid-column: 1; }
}

/* Single-page workflow: reserve only the fixed controls that are visible. */
body.app-shell .layout { padding-bottom: calc(var(--fixed-bottom-reserve, 0px) + 32px); }
body.app-shell.is-overview-view :is(.quick-guide, .trust-section) { display: none; }
body.app-shell.is-help-view:not(.is-overview-view) .trust-section { display: block; }
body.app-shell.is-export-in-view:has(#planStep.is-open) #workflowFooter { display: none; }
body.app-shell #sourceStep #sourceImportPreview { display: block; padding: 12px 16px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); }
body.app-shell #sourceStep #sourceImportPreview > summary { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 20px; min-height: 44px; cursor: pointer; }
body.app-shell #sourceStep #sourceImportPreview > summary span { color: var(--color-text-muted); font-size: 14px; }
body.app-shell #sourceStep #sourceImportPreview:not([open]) > :not(summary) { display: none; }
body.app-shell #sourceStep #sourceImportPreview[open] > summary { margin-bottom: 16px; }
body.app-shell #playersStep .participant-table th { white-space: normal; }

body.app-shell #associationStep .association-scope { min-width: 0; margin: 0; padding: 0; border: 0; }
body.app-shell #associationStep .association-scope legend { font-weight: 700; }
body.app-shell #associationStep .association-scope p { font-size: 14px; color: var(--color-text-muted); }
body.app-shell #associationScopeChoices { display: grid; gap: 6px; max-height: 360px; overflow-y: auto; padding: 4px; }
body.app-shell #associationScopeChoices label { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 6px 8px; border: 1px solid var(--color-border); border-radius: 6px; font-size: 15px; font-weight: 500; text-align: left; text-transform: none; letter-spacing: normal; line-height: 1.4; overflow-wrap: anywhere; }
body.app-shell #associationScopeChoices input { flex: none; width: 20px; height: 20px; min-height: 0; }
body.app-shell #planStep #planEmptyState:not([hidden]) { display: grid; gap: 16px; max-width: 760px; margin-block: 24px; }
body.app-shell #planStep #planEmptyState h2 { margin: 0; font-size: 26px; }
body.app-shell #planStep #planEmptyState p { margin: 0; color: var(--color-text-muted); }
body.app-shell.is-plan-empty #planStep :is(.plan-work-actions, .plan-refresh-source, .plan-mobile-filter-actions) { display: none; }
body.app-shell #planStep #exportStep { padding: 24px; }
body.app-shell #planStep #recommendedExportTitle { font-size: 30px; }
body.app-shell #playersStep .participant-tools { margin-bottom: 16px; }

body.app-shell #playersStep .participant-tools { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; }
body.app-shell #playersStep .participant-tools > .field { flex: 1 1 260px; }
body.app-shell #playersStep .participant-table td { padding-block: 12px; }
body.app-shell #playersStep .participant-table-row { height: auto; }

body.app-shell.is-plan-empty #planStep #planToolbar .plan-mobile-filter-actions { display: none; }
body.app-shell #sourceStep #sourcePreviewMetrics { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }

body.app-shell #associationDisplayValue { font-size: clamp(24px, 3vw, 40px); overflow-wrap: anywhere; }

body.app-shell #associationStep .association-picker-card { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; max-width: 1000px; }
body.app-shell #associationStep .association-edit-details { justify-self: stretch; width: 100%; }
body.app-shell #associationScopeChoices { grid-template-columns: repeat(auto-fit, minmax(min(360px, 100%), 1fr)); }
body.app-shell #associationScopeChoices label:first-child { grid-column: 1 / -1; }

body.app-shell #sourceImportPreview > summary::after { content: "▾"; margin-left: auto; }
body.app-shell #sourceImportPreview[open] > summary::after { content: "▴"; }
body.app-shell #planEmptyState button { white-space: normal; overflow-wrap: anywhere; height: auto; min-height: 48px; }

/* Auswahl am Schreibtisch: alle Verbände und acht Spieler gemeinsam überblicken. */
@media (min-width: 901px) {
  body.app-shell :is(#associationStep, #playersStep).workflow-step-panel { padding-block: 12px; }
  body.app-shell #associationStep .association-picker-card { gap: 8px; padding-block: 8px; }
  body.app-shell #associationStep .association-current-value strong { font-size: 28px; }
  body.app-shell #associationStep .association-edit-details[open] { grid-column: 1 / -1; }
  body.app-shell #associationStep .association-edit-details[open] > summary { min-height: 44px; margin-bottom: 8px; }
  body.app-shell #associationStep .association-scope p { margin-block: 4px 8px; }
  body.app-shell #associationScopeChoices { grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); max-height: none; overflow: visible; gap: 4px; }
  body.app-shell #associationScopeChoices label { padding: 4px 8px; font-size: 14px; line-height: 1.3; }
  body.app-shell #playersStep .participant-tools { gap: 8px; margin-bottom: 8px; }
  body.app-shell #playersStep .participant-picker { margin-top: 8px; }
  body.app-shell #playersStep .participant-picker > summary { min-height: 36px; padding: 4px 12px; font-size: 15px; }
  body.app-shell #playersStep .participant-table th { padding: 6px 12px; font-size: 12px; }
  body.app-shell #playersStep .participant-table td { height: 44px; padding: 4px 12px; line-height: 1.3; }
  body.app-shell #playersStep .participant-table input[type="checkbox"] { width: 20px; height: 20px; min-height: 0; padding: 0; }
}

body.app-shell #planStep :is(.schedule-coach-control, .mobile-match-coach).is-internal::after { display: none; }

/* Betreuung am Schreibtisch: Name, Spielanzahl, Auswahl und Schloss in einer Zeile.
   Lange Namen und Abgleichaktionen dürfen die Zeile weiterhin vergrößern. */
@media (min-width: 901px) {
  body.app-shell:not(.is-overview-view, .is-utility-view, .has-mobile-tabbar):has(:is(#assignmentsStep, #playersStep).is-open) .layout { padding-top: 16px; }
  body.app-shell #assignmentsStep .assignment-action-line { gap: 8px; margin-bottom: 8px; }
  body.app-shell #assignmentsStep .assignment-action-line > #autoCoachBtn { min-height: 44px; padding: 6px 12px; }
  body.app-shell #assignmentsStep .assignment-auto-options > summary { min-height: 44px; padding-block: 6px; }
  body.app-shell #assignmentsStep .assignment-guidance,
  body.app-shell #assignmentsStep .assignment-guidance[data-tone] { margin-bottom: 6px; font-size: 14px; line-height: 1.35; }
  body.app-shell #assignmentsStep .assignment-lock-help { margin-bottom: 6px; padding: 3px 8px; line-height: 1.35; }
  body.app-shell #assignmentsStep .assignment-unscheduled-note { margin-bottom: 6px; padding: 0; border: 0; background: transparent; }
  body.app-shell #assignmentsStep .assignment-table-row { gap: 4px 10px; padding: 3px 12px; }
  body.app-shell #assignmentsStep .assignment-table-row:not(:has(.assignment-manual-note)) { grid-template-columns: minmax(0, 1fr) max-content minmax(160px, 220px) 44px; grid-template-rows: auto; }
  body.app-shell #assignmentsStep .assignment-table-row:not(:has(.assignment-manual-note)) .assignment-count-cell { grid-column: 2; grid-row: 1; }
  body.app-shell #assignmentsStep .assignment-table-row:not(:has(.assignment-manual-note)) .assignment-coach-cell { grid-column: 3; grid-row: 1; }
  body.app-shell #assignmentsStep .assignment-table-row:not(:has(.assignment-manual-note)) .assignment-lock-cell { grid-column: 4; grid-row: 1; }
  body.app-shell #assignmentsStep .assignment-player-cell { font-size: 14px; line-height: 1.35; }
  body.app-shell #assignmentsStep .assignment-count-badge { font-size: 13px; white-space: nowrap; }
  body.app-shell #assignmentsStep .assignment-coach-select { width: 100%; max-width: none; min-height: 44px; padding: 6px 8px; font-size: 16px; line-height: 1.35; }
  body.app-shell #playersStep .participant-picker > summary { min-height: 44px; }
}

@media (min-width: 901px) and (pointer: fine) {
  body.app-shell #assignmentsStep .assignment-action-line > #autoCoachBtn,
  body.app-shell #assignmentsStep .assignment-auto-options > summary { min-height: 36px; padding-block: 4px; }
  body.app-shell #assignmentsStep .assignment-table-row:not(:has(.assignment-manual-note)) { grid-template-columns: minmax(0, 1fr) max-content minmax(160px, 220px) 36px; }
  body.app-shell #assignmentsStep .assignment-coach-select { min-height: 36px; padding-block: 4px; font-size: 14px; }
  body.app-shell #assignmentsStep .assignment-lock { width: 36px; min-width: 36px; height: 36px; min-height: 36px; }
  body.app-shell #playersStep .participant-picker > summary { min-height: 36px; }
  body.app-shell #playersStep .participant-name-cell { font-size: 14px; }
}

/* Im Plan scrollt das Konto wie die Topbar mit; die Handy-Kontoansicht bleibt fest. */
body.app-shell:not(.is-overview-view, .is-utility-view, .has-mobile-tabbar):has(#planStep.is-open) > .account-menu { position: absolute; }
