/* oeffentlich.css — die Seite ohne Anmeldung (DEVELOP-18).
   PP-941: die Seite steht im RAHMEN des Rahmenwerks (Kopf, Menue, Fuss,
   Theme wie jede oeffentliche Seite). Darum gilt hier alles NUR unter
   .dev-oeffentlich — keine Regel fuer body, main, a oder h1 der ganzen
   Seite, und keine eigene Kopfleiste mehr.
   ⚠ Eigenstaendig von develop.css: die gehoert in den Shadow-DOM der
     Widgets und setzt den Admin-Rahmen voraus. */
/* PP-996: die eigenen Kurznamen zeigen nur noch auf die Token des Designs. */
.dev-oeffentlich { --rand: var(--pp-border); --leise: var(--pp-text-muted); --an: var(--pp-primary);
  font-size: var(--pp-font-size); line-height: 1.5; }
.dev-oeffentlich * { box-sizing: border-box; }
.dev-oeffentlich a { color: var(--an); text-decoration: var(--pp-link-deco); }
.dev-oeffentlich a:hover { text-decoration: underline; }
.dev-oeffentlich h1 { font-size: 20px; margin: 0 0 6px; }
.dev-oeffentlich h2 { font-size: 15px; margin: 26px 0 8px; }
.dev-oeffentlich h3 { font-size: 13px; margin: 14px 0 6px; }
.dev-oeffentlich .leise { color: var(--leise); font-size: 12px; }
.dev-oeffentlich .meldung { background: var(--pp-danger-soft); border: var(--pp-border-w) solid color-mix(in srgb, var(--pp-danger) 40%, var(--pp-surface)); color: var(--pp-danger);
           padding: 10px 12px; border-radius: var(--pp-radius); }
.dev-oeffentlich .leer { border: var(--pp-border-w) dashed var(--rand); border-radius: var(--pp-radius); padding: 30px 20px;
        text-align: center; background: var(--pp-surface-2); }
.dev-oeffentlich .leer h2 { margin: 0 0 6px; }
.dev-oeffentlich span.marke { display: inline-block; background: var(--pp-primary-soft); color: var(--pp-primary);
             border-radius: 999px; padding: 1px 8px; font-size: 11px; vertical-align: 2px; }
.dev-oeffentlich .liste { list-style: none; margin: 0; padding: 0; }
.dev-oeffentlich .liste li { padding: 12px 0; border-bottom: var(--pp-border-w) solid var(--pp-border); }
.dev-oeffentlich .liste .name { font-weight: 600; font-size: 15px; }
.dev-oeffentlich .beschreibung { color: var(--pp-text); margin: 3px 0 0; }
.dev-oeffentlich .repokopf { border-bottom: var(--pp-border-w) solid var(--rand); padding-bottom: 14px; }
.dev-oeffentlich .klon { display: flex; gap: 8px; align-items: center; margin-top: 10px; }
.dev-oeffentlich .klon label { font-size: 12px; color: var(--leise); }
.dev-oeffentlich .klon input { flex: 1 1 auto; max-width: 720px; font-family: var(--pp-font-mono);
              font-size: 12px; padding: 5px 8px; border: var(--pp-border-w) solid var(--rand); border-radius: var(--pp-radius);
              background: var(--pp-surface-2); }
.dev-oeffentlich .leiste { display: flex; gap: 12px; align-items: center; margin: 16px 0 10px; flex-wrap: wrap; }
.dev-oeffentlich .leiste .archiv { margin-left: auto; font-size: .9em; color: var(--leise); }
.dev-oeffentlich .leiste select { padding: 4px 8px; border: var(--pp-border-w) solid var(--rand); border-radius: var(--pp-radius); }
.dev-oeffentlich .krumen { font-family: var(--pp-font-mono); font-size: 13px; }
.dev-oeffentlich table { width: 100%; border-collapse: collapse; }
.dev-oeffentlich .baum td { padding: 6px 8px; border-bottom: var(--pp-border-w) solid var(--pp-border); font-family: var(--pp-font-mono); font-size: 13px; }
.dev-oeffentlich .baum td.re { text-align: right; width: 90px; }
.dev-oeffentlich .commits { list-style: none; margin: 0; padding: 0; }
.dev-oeffentlich .commits li { padding: 7px 0; border-bottom: var(--pp-border-w) solid var(--pp-border); display: flex; gap: 10px; flex-wrap: wrap; align-items: baseline; }
.dev-oeffentlich .commits code { font-size: 12px; color: var(--leise); }
.dev-oeffentlich .commits .nachricht { flex: 1 1 320px; }
.dev-oeffentlich .code { border: var(--pp-border-w) solid var(--rand); border-radius: var(--pp-radius); overflow: hidden; }
.dev-oeffentlich .code td { font-family: var(--pp-font-mono); font-size: 12.5px; padding: 0 8px; white-space: pre; }
.dev-oeffentlich .code td.nr { width: 52px; text-align: right; color: var(--leise); background: var(--pp-surface-2);
              user-select: none; border-right: var(--pp-border-w) solid var(--rand); }
.dev-oeffentlich .code td.zl { white-space: pre-wrap; overflow-wrap: anywhere; }
@media (max-width: 600px) { .dev-oeffentlich .code td.nr { width: 40px; } }

/* ─── README (DEVELOP-61) ─────────────────────────────────────────── */
.dev-oeffentlich .readme { margin: 1.5rem 0; border: var(--pp-border-w) solid var(--pp-border); border-radius: var(--pp-radius); }
.dev-oeffentlich .readme-kopf { margin: 0; padding: .5rem .75rem; border-bottom: var(--pp-border-w) solid var(--pp-border);
               background: var(--pp-surface-2); font-size: .9rem; font-weight: 600; }
.dev-oeffentlich .readme-inhalt { padding: .75rem 1rem; overflow-x: auto; }
.dev-oeffentlich .readme-inhalt h1 { font-size: 1.5rem; } .dev-oeffentlich .readme-inhalt h2 { font-size: 1.2rem; }
.dev-oeffentlich .readme-inhalt pre { background: var(--pp-surface-2); padding: .6rem; border-radius: var(--pp-radius-sm); overflow-x: auto; }
.dev-oeffentlich .readme-inhalt table { border-collapse: collapse; }
.dev-oeffentlich .readme-inhalt th, .dev-oeffentlich .readme-inhalt td { border: var(--pp-border-w) solid var(--pp-border); padding: .3rem .6rem; }
/* Ein Verweis, dem entschaerfen() das Ziel genommen hat: er soll aussehen
   wie das, was er ist — Text, der einmal ein Verweis sein wollte. */
.dev-oeffentlich .readme-inhalt .ohne-ziel { color: var(--pp-text-muted); text-decoration: line-through; cursor: not-allowed; }

/* ─── Commit mit Diff (DEVELOP-62) ────────────────────────────────── */
.dev-oeffentlich .commits li a.hash { text-decoration: none; }
.dev-oeffentlich .commits li a.nachricht { color: inherit; text-decoration: none; }
.dev-oeffentlich .commits li a.nachricht:hover { text-decoration: underline; }
.dev-oeffentlich .blaettern { display: flex; gap: 1rem; margin: 1rem 0; }
.dev-oeffentlich .commitkopf h1 { font-size: 1.3rem; margin: .3rem 0; }
.dev-oeffentlich .commitrest { background: var(--pp-surface-2); padding: .6rem; border-radius: var(--pp-radius-sm); white-space: pre-wrap; }
.dev-oeffentlich .dateiliste { list-style: none; padding: 0; margin: 1rem 0; }
.dev-oeffentlich .dateiliste li { padding: .3rem 0; border-bottom: var(--pp-border-w) solid var(--pp-border); display: flex; gap: .6rem; align-items: baseline; }
.dev-oeffentlich .art { display: inline-block; width: 1.3rem; text-align: center; border-radius: var(--pp-radius-sm);
       font-size: .75rem; font-weight: 700; color: var(--pp-primary-contrast); background: var(--pp-text-muted); }
.dev-oeffentlich .art-A { background: var(--pp-ok); } .dev-oeffentlich .art-M { background: var(--pp-warn); }
.dev-oeffentlich .art-D { background: var(--pp-danger); } .dev-oeffentlich .art-R, .dev-oeffentlich .art-C { background: var(--pp-primary); }
.dev-oeffentlich .plus { color: var(--pp-ok); } .dev-oeffentlich .minus { color: var(--pp-danger); }
.dev-oeffentlich .diffdatei { margin: 1rem 0; border: var(--pp-border-w) solid var(--pp-border); border-radius: var(--pp-radius); overflow: hidden; }
.dev-oeffentlich .diffkopf { padding: .4rem .75rem; background: var(--pp-surface-2); border-bottom: var(--pp-border-w) solid var(--pp-border);
            font-family: var(--pp-font-mono); font-size: .8rem; }
.dev-oeffentlich table.diff { width: 100%; border-collapse: collapse; font-family: var(--pp-font-mono); font-size: .8rem; }
.dev-oeffentlich table.diff td.zl { padding: 0 .75rem; white-space: pre-wrap; word-break: break-word; }
.dev-oeffentlich table.diff tr.plus { background: var(--pp-ok-soft); } .dev-oeffentlich table.diff tr.minus { background: var(--pp-danger-soft); }
.dev-oeffentlich table.diff tr.lage { background: var(--pp-primary-soft); color: var(--pp-primary); }
.dev-oeffentlich table.diff tr.meta { color: var(--pp-text-muted); }
/* Paketquelle (28.09.2026): Befehle und die .repo/.list zum Kopieren */
.dev-oeffentlich pre.befehl { background: var(--pp-header); color: var(--pp-header-text); padding: 12px 14px; border-radius: var(--pp-radius); overflow-x: auto;
  font-family: var(--pp-font-mono); font-size: .85rem; white-space: pre; }
.dev-oeffentlich .paketliste th, .dev-oeffentlich .paketliste td { text-align: left; padding: 6px 10px; }
.dev-oeffentlich .paketliste th { font-weight: 600; border-bottom: var(--pp-border-w) solid var(--rand); }
.dev-oeffentlich .paketliste td { border-bottom: var(--pp-border-w) solid var(--pp-border); }
.dev-oeffentlich .paketliste .re { text-align: right; }

/* ─── Repo-Browser (28.09.2026): Einbinden aufklappbar, Index wie ein Spiegel ─── */
.dev-oeffentlich details.einbinden { margin: 14px 0 6px; border: var(--pp-border-w) solid var(--rand); border-radius: var(--pp-radius); padding: 0 12px; }
.dev-oeffentlich details.einbinden > summary { cursor: pointer; padding: 9px 0; font-weight: 600; }
.dev-oeffentlich details.einbinden[open] { padding-bottom: 10px; }
.dev-oeffentlich .index-titel { font-size: 15px; font-weight: 600; }
.dev-oeffentlich table.index { width: auto; min-width: 60%; border-collapse: collapse; }
.dev-oeffentlich table.index th, .dev-oeffentlich table.index td { padding: 4px 22px 4px 0; text-align: left; white-space: nowrap; }
.dev-oeffentlich table.index th { border-bottom: var(--pp-border-w) solid var(--pp-text-muted); font-weight: 600; }
.dev-oeffentlich table.index th a { color: inherit; }
.dev-oeffentlich table.index .re { text-align: right; }
.dev-oeffentlich table.index td:first-child { font-family: var(--pp-font-mono); font-size: 13px; }
@media (max-width: 600px) { .dev-oeffentlich table.index { min-width: 0; width: 100%; } .dev-oeffentlich table.index td:first-child { white-space: normal; word-break: break-all; } }
.dev-oeffentlich details.fassungen { margin: 2px 0 4px 1.6em; font-family: var(--pp-font); }
.dev-oeffentlich details.fassungen > summary { cursor: pointer; color: var(--leise); font-size: 12px; }
.dev-oeffentlich details.fassungen ul { list-style: none; margin: 4px 0 0; padding: 0; }
.dev-oeffentlich details.fassungen li { padding: 1px 0; font-size: 12.5px; }
.dev-oeffentlich details.fassungen li a { font-family: var(--pp-font-mono); }
.dev-oeffentlich table.index td { vertical-align: top; }
