/* Q1 (BRIEF-2026-10-31-B): Eintrags-Menü (Q1.5), Header-Gruppen (Q1.4), Portal-Karten (Q1.6).
   Eigene Datei, weil style.css root-eigen war; wird nach style.css geladen und nutzt ausschließlich DESIGN.md-Tokens. Keine Schatten. */

/* ---------- Q1.5: „…“-Menü an Eintragszeilen ---------- */
.entry-menue { position: relative; }
.entry-menue > summary { list-style: none; cursor: pointer; }
.entry-menue > summary::-webkit-details-marker { display: none; }
.entry-menue-liste { position: absolute; right: 0; top: 100%; z-index: 60; min-width: 230px; display: flex; flex-direction: column; gap: var(--ztd-space-100);
  padding: var(--ztd-space-200); background: var(--ztd-surface-overlay); border: 1px solid var(--ztd-border-input); border-radius: var(--ztd-radius-sm); }
.entry-menue-liste .btn { justify-content: flex-start; }
.entry:has(.entry-menue[open]) .actions { opacity: 1; }

/* ---------- Q1.4: Header — e-card-Gruppe nebeneinander, Overflow unter 900 px ---------- */
.topbar-ecard { display: flex; align-items: center; gap: var(--ztd-space-200); flex: 0 0 auto; }
.topbar-ecard-huelle { position: relative; flex: 0 0 auto; }
.topbar-ecard-huelle > summary { display: none; list-style: none; cursor: pointer; }
.topbar-ecard-huelle > summary::-webkit-details-marker { display: none; }
.topbar .user, .topbar .cmd-trigger { flex: 0 1 auto; min-width: 0; }
@media (max-width: 1100px) { .topbar .cmd-trigger kbd, .topbar .user span { display: none; } }
@media (max-width: 899px) {
  .topbar-ecard-huelle > summary { display: inline-flex; }
  .topbar-ecard-huelle > .topbar-ecard { position: absolute; right: 0; top: 100%; z-index: 120; margin-top: var(--ztd-space-100); flex-direction: column; align-items: stretch;
    padding: var(--ztd-space-300); background: var(--ztd-surface-overlay); border: 1px solid var(--ztd-border-input); border-radius: var(--ztd-radius-md); }
  .topbar-ecard-huelle:not([open]) > .topbar-ecard { display: none; }
}

/* ---------- Q1.6: Portal-Karten (Radien: Karte 18 · Fläche/Feld 12 · Knöpfe Pill; Innenabstand symmetrisch; Rahmen statt Schatten) ---------- */
body.portal { background: var(--ztd-surface-sunken); }
.portal-main { padding: var(--ztd-space-400) var(--ztd-space-400) calc(var(--ztd-space-600) + env(safe-area-inset-bottom)); }
.portal-karte { background: var(--ztd-surface); border: 1px solid var(--ztd-border-input); border-radius: var(--ztd-radius-card); padding: var(--ztd-space-500); box-shadow: none; }
.portal-main .bubble, .portal-main .portal-willkommen, .portal-main .kap-abschnitt, .portal-main .kap-checkliste, .portal-main .empfang-ds-details,
.portal-main .empfang-liste li, .portal-main .kap-sig-bild, .portal-main .thread-liste { border-radius: var(--ztd-radius-sm); }
.portal-main .bubble { padding: var(--ztd-space-300); }
.portal-main .bubble-meta { padding-right: 36px; } /* Platz für „Löschen“ oben rechts, ohne den Innenabstand zu verschieben */
.portal-main .portal-willkommen { padding: var(--ztd-space-300); }
.portal-main .kap-text { padding: var(--ztd-space-300); }

/* Eine Schriftfamilie im Portal: Überschriften und Fließtext in Roboto (Serife nur für Zitate/Marker außerhalb des Portals) */
.portal-main :is(h1, h2, h3, h4), .portal-main :is(.kap-titel, .kap-untertitel, .kap-abschnitt > summary, .kap-text h4) { font-family: var(--ztd-font-family); font-style: normal; }
.portal-karte h1, .portal-seite h1, .portal-main .kap-titel { font: var(--ztd-type-hero); font-size: var(--ztd-font-size-2xl); line-height: 36px; font-weight: var(--ztd-font-weight-bold); }
.portal-main .kap-untertitel, .portal-main .kap-form h2, .portal-main .kap-abschnitt > summary { font-size: var(--ztd-font-size-xl); font-weight: var(--ztd-font-weight-medium); }

/* Felder: echtes <label> über dem Feld (kein schwebendes Label), Textarea ohne Resize-Griff */
.portal-main .field { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--ztd-space-100); }
.portal-main .field > label { position: static; grid-row: 1; transform: none !important; max-width: none; white-space: normal; overflow: visible; pointer-events: auto;
  font: var(--ztd-type-label); color: var(--ztd-body); }
.portal-main .field > :is(input, select, textarea) { grid-row: 2; min-height: 44px; padding: var(--ztd-space-300) var(--ztd-space-400); }
.portal-main .field > textarea { resize: none; min-height: 120px; padding-top: var(--ztd-space-300); }
.portal-main .field > .err { grid-row: 3; padding: 0; }
.portal-main .field > :is(input, textarea):focus + label, .portal-main .field > :is(input, textarea):focus ~ label { color: var(--ztd-brand); }

/* Klickziele ≥ 44 px */
.portal-main :is(.btn, summary, .check, .empfang-badge) { min-height: 44px; }
.portal-main .btn.--small { height: auto; min-height: 44px; }
.portal-main .btn-icon, .portal-kopf .btn-icon { min-width: 44px; min-height: 44px; }
.portal-main .check { display: flex; align-items: center; gap: var(--ztd-space-200); }
.portal-main .check input { width: 24px; height: 24px; flex: 0 0 auto; }

/* Aktionsleiste: unten klebend, eigene Fläche — der Hauptknopf liegt nie hinter der Browser-Leiste */
.portal-main :is(.kap-aktionen, .form-actions:has(> .btn:not(.--default):not(.--small))) {
  position: sticky; bottom: 0; z-index: 5; display: flex; flex-wrap: wrap; gap: var(--ztd-space-200); justify-content: flex-end;
  margin: var(--ztd-space-400) calc(-1 * var(--ztd-space-500)) calc(-1 * var(--ztd-space-500));
  padding: var(--ztd-space-300) var(--ztd-space-500) calc(var(--ztd-space-300) + env(safe-area-inset-bottom));
  background: var(--ztd-surface); border-top: 1px solid var(--ztd-border-input); border-radius: 0 0 var(--ztd-radius-card) var(--ztd-radius-card);
}
@media (max-width: 600px) { .portal-main { padding-inline: var(--ztd-space-300); } .portal-main :is(.kap-aktionen, .form-actions:has(> .btn:not(.--default):not(.--small))) > .btn { flex: 1 1 100%; } }
