/* Entwurf D. Gemeinsamer Rahmen nach den Fachstilen, Raster und Editoren bleiben erhalten. */
body::before { content: none; }
h1 { font-weight: var(--fw-semibold); }
.vw-title { font-size: var(--text-2xl); }
.topbar { gap: var(--space-4); padding-inline: max(var(--space-6), calc((100% - var(--shell-max)) / 2 + var(--space-6))); }
.userbox { flex-wrap: wrap; justify-content: flex-end; }
.brand { flex-shrink: 0; }
.portal-home { display: inline-flex; align-items: center; min-height: var(--touch-target); text-decoration: none; font-weight: var(--fw-semibold); }
.portal-menu { position: relative; }
.portal-menu > summary { display: flex; align-items: center; justify-content: center; gap: var(--space-2); min-height: var(--touch-target); padding: var(--space-2) var(--space-3); border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); color: var(--ink); cursor: pointer; list-style: none; }
.portal-menu > summary::-webkit-details-marker { display: none; }
.portal-menu[open] > summary { background: var(--green-tint); color: var(--green-ink); }
.portal-menu-panel { position: absolute; top: calc(100% + var(--space-2)); right: 0; width: var(--portal-menu-width); max-width: calc(100vw - var(--space-8)); max-height: 70vh; overflow-y: auto; padding: var(--space-3); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); box-shadow: var(--shadow-pop); z-index: var(--z-topbar); }
.portal-menu-panel a { display: flex; gap: var(--space-2); align-items: center; padding: var(--space-2) var(--space-3); min-height: var(--touch-target); border-radius: var(--radius); color: var(--ink); text-decoration: none; font-weight: var(--fw-semibold); }
.portal-menu-panel a:hover, .portal-menu-panel a[aria-current] { background: var(--green-tint); color: var(--green-ink); }
.portal-menu-group { border-top: 1px solid var(--line); margin-top: var(--space-2); padding-top: var(--space-2); }
.portal-menu-panel .portal-menu-sub { color: var(--text-muted); font-weight: var(--fw-normal); padding-left: var(--space-8); }
.card { border-color: var(--line); box-shadow: var(--shadow-sm); }
.card-title { font-weight: var(--fw-semibold); }
.linkbtn { border-radius: var(--radius); text-decoration: none; }
.crumbs { font-size: var(--text-sm); margin-bottom: var(--space-3); }
.head-actions { flex-wrap: wrap; }
/* Ein gemeinsames Reitermuster. Dichte Fachraster behalten Maße und Bedienung. */
.pe-nav, .vw-tabs, .bg-tabs { display: flex; flex-wrap: wrap; gap: var(--space-1); padding: var(--space-1); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.pe-nav { margin-top: var(--space-4); }
.pe-nav a, .vw-tabs a, .bg-tabs a { display: inline-flex; align-items: center; min-height: var(--touch-target); padding: var(--space-2) var(--space-3); border: 0; border-radius: var(--radius); font-weight: var(--fw-semibold); color: var(--text-muted); }
.pe-nav a.is-active, .vw-tabs a.is-active, .bg-tabs a.is-active { color: var(--green-ink); background: var(--green-tint); box-shadow: none; }
.pe-nav a:hover, .vw-tabs a:hover, .bg-tabs a:hover { background: var(--green-tint); color: var(--green-ink); }
.pe h1 { color: var(--green-dark); }
/* Bordeaux kennzeichnet Vertraulichkeit, keine zweite Navigationssprache. */
.pe, .mitglieder-pruefung { --confidential: var(--green-ink); --confidential-strong: var(--green-dark); --confidential-tint: var(--green-tint); --confidential-line: var(--line); }
.pe-conf-badge { color: var(--kah-bordeaux-600); background: var(--kah-bordeaux-050); border-color: var(--kah-bordeaux-100); }
.zt-nav a.is-active { border-color: var(--green-ink); }
.kal-year.is-active { background: var(--green-ink); border-color: var(--green-ink); }
.kal-year { border-radius: var(--radius); }
.head-actions .linkbtn[aria-current="page"] { color: var(--green-ink); background: var(--green-tint); border-color: var(--green-ink); }
/* Startseite: vertraute Karten, nach Aufgaben gruppiert. */
.portal-intro { min-height: var(--portal-hero-height); padding: var(--space-8); border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--portal-hero-wash), url('/static/img/hof-luftbild.jpg') center 47% / cover; display: flex; flex-direction: column; justify-content: center; }
.portal-intro h1 { margin: var(--space-2) 0; }
.portal-intro p { margin: 0; color: var(--text-muted); font-size: var(--text-md); }
.portal-intro .portal-eyebrow { text-transform: uppercase; letter-spacing: var(--tracking-caps); font-size: var(--text-xs); }
.portal-personal { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2) var(--space-6); padding: var(--space-3) 0; margin-bottom: var(--space-6); border-bottom: 1px solid var(--line); }
.portal-personal > span { color: var(--text-muted); font-size: var(--text-sm); }
.portal-personal a { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--touch-target); text-decoration: none; font-weight: var(--fw-semibold); }
.portal-section { margin-bottom: var(--space-6); }
.portal-section h2 { font-weight: var(--fw-semibold); margin: 0 0 var(--space-3); }
.portal-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4); }
.portal-card { position: relative; display: flex; flex-direction: column; border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow-sm); }
.portal-card:has(.portal-card-main:hover) { border-color: var(--green-ink); }
.portal-card-main { display: block; padding: var(--space-5); color: var(--ink); text-decoration: none; border-radius: var(--radius-lg); flex: 1; }
.portal-card-main h3 { font-size: var(--text-lg); font-weight: var(--fw-semibold); margin: var(--space-4) 0 var(--space-1); }
.portal-card-main p { font-size: var(--text-sm); color: var(--text-muted); margin: 0; }
.portal-card-icon { display: inline-flex; align-items: center; justify-content: center; width: var(--portal-icon-size); height: var(--portal-icon-size); background: var(--green-tint); border-radius: var(--radius); color: var(--green-ink); font-size: var(--text-lg); }
.portal-card-arrow { position: absolute; right: var(--space-5); top: var(--space-6); color: var(--green-ink); }
.portal-card-links { display: flex; flex-wrap: wrap; gap: 0 var(--space-3); padding: 0 var(--space-5) var(--space-3); }
.portal-card-links a { display: inline-flex; align-items: center; min-height: var(--touch-target); font-size: var(--text-sm); }
.portal-organisation { padding: var(--space-4) var(--space-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.portal-organisation > summary, .portal-geplant > summary { cursor: pointer; font-weight: var(--fw-semibold); }
/* Breite Rechte-Matrix bleibt lokal scrollbar, nicht die gesamte Seite. */
.vw, .pe, .zt, .table-wrap { min-width: 0; max-width: 100%; }
@media (max-width: 760px) {
  .shell { padding: var(--space-6) var(--space-4); }
  .topbar { padding: var(--space-3) var(--space-4); gap: var(--space-2); }
  .userbox { gap: var(--space-2); }
  .userbox > .portal-home { display: none; }
  .userbox > .linkbtn, .userbox > form { font-size: var(--text-xs); }
  .userbox > form .linkbtn { font-size: var(--text-xs); padding-inline: var(--space-2); }
  .portal-menu { position: static; }
  .portal-menu-panel { top: auto; right: var(--space-4); margin-top: var(--space-2); }
  .portal-grid { grid-template-columns: 1fr; gap: var(--space-3); }
  .portal-intro { padding: var(--space-6); background-image: var(--portal-hero-mobile), url('/static/img/hof-luftbild.jpg'); }
  .portal-card-main { display: grid; grid-template-columns: var(--portal-icon-size) minmax(0, 1fr); gap: var(--space-1) var(--space-3); padding: var(--space-4); }
  .portal-card-icon { grid-row: 1 / 3; }
  .portal-card-main h3 { margin: 0; padding-right: var(--space-6); }
  .portal-card-main p { grid-column: 2; }
  .portal-card-links { padding-left: calc(var(--space-4) + var(--portal-icon-size) + var(--space-3)); }
  .portal-card-arrow { right: var(--space-4); top: var(--space-5); }
  .vw-toolbar .addform { flex-wrap: wrap; max-width: 100%; }
  .vw-toolbar .addform input { max-width: 100%; }
  .vw-head { gap: var(--space-3); }
  .vw-tabs { max-width: 100%; }
  .vw-tabs a { white-space: normal; }
}
@media print {
  .portal-menu, .portal-home { display: none; }
}

.portal-menu-panel .portal-mobile-admin { display: none; }
@media (max-width: 760px) {
  .userbox > a.linkbtn { display: none; }
  .portal-menu-panel .portal-mobile-admin { display: flex; border-top: 1px solid var(--line); }
  .portal-personal { column-gap: var(--space-4); }
  .portal-personal > span { flex-basis: 100%; }
  .portal-personal a { font-size: var(--text-sm); }
  .portal-personal a > .icon:last-child { display: none; }
}

/* Seltene administrative Zuordnung im bestehenden Kartenstil. */
.person-reference { max-width: 48rem; margin-inline: auto; }
