/* geaendert 2026-10-16 21:09:42: Native Sortierlinks auf die gesamte Portal-Kopfzelle erweitern. */
/* geaendert 2026-10-16 13:02: Gemeinsame gruene Portalnavigation auf allen neuen Seiten. */
.portal-main-nav { background: #a9cfa4; border-bottom-color: rgba(24,53,31,.25) !important; font-family: var(--bs-body-font-family); }
.portal-main-nav .navbar-brand, .portal-main-nav .nav-link { color: #18351f; }
.portal-main-nav .nav-link:hover, .portal-main-nav .nav-link:focus,
.portal-main-nav .nav-link[aria-current="page"] { color: #0b2412; text-decoration: underline; }
.portal-main-nav .navbar-brand { flex-shrink: 0; max-width: calc(100% - 4rem); white-space: normal; overflow-wrap: anywhere; }
.portal-main-nav .navbar-collapse { flex-wrap: wrap; gap: .25rem .75rem; min-width: 0; }
.portal-main-nav .navbar-nav { flex-wrap: wrap; min-width: 0; max-width: 100%; }
.portal-main-nav .portal-nav-account .nav-link { white-space: normal; overflow-wrap: anywhere; }
/* geaendert 2026-10-15 20:57: Klickbare Portal-Spaltenkoepfe. */
/* geaendert 2026-10-15 20:43: Frontendblau und eigene Organisation. */
/* geaendert 2026-10-09: Neuigkeiten mit Portal-Gruen und Farbgliederung des Backends. */
.portal-news-page { --portal-brand: #a9cfa4; --portal-brand-text: #18351f; }
.portal-news-page .navbar { background: var(--portal-brand); border-bottom-color: rgba(24,53,31,.25) !important; }
.portal-news-page .navbar .navbar-brand,
.portal-news-page .navbar .nav-link { color: var(--portal-brand-text); }
.portal-news-page .navbar .nav-link:hover,
.portal-news-page .navbar .nav-link:focus,
.portal-news-page .navbar .nav-link[aria-current="page"] { color: #0b2412; text-decoration: underline; }
.portal-news-page .table > thead { --bs-table-bg: #f8f9fa; }
/* geaendert 2026-10-09: Tabellenueberschriften im Tabellen- und Seitenlauf sichtbar halten. */
.portal-table-wrap > .table > thead > tr > th,
.portal-floating-table-header th {
    --bs-table-bg: #f8f9fa;
    background-color: #f8f9fa;
    box-shadow: inset 0 -1px 0 #adb5bd;
}
.portal-table-wrap > .table > thead > tr > th { position: sticky; top: 0; z-index: 3; }
.portal-floating-table-header { position: fixed; top: 0; z-index: 1020; overflow: hidden; background: #f8f9fa; box-shadow: 0 2px 4px rgba(0,0,0,.12); }
.portal-floating-table-header[hidden] { display: none; }
.portal-floating-table-header > .table { table-layout: fixed; margin: 0 !important; }
.portal-floating-table-header th { white-space: nowrap; }
/* geaendert 2026-10-09: Kontogebundene Spaltenauswahl im Portal bedienbar machen. */
/* geaendert 2026-10-09: Bewerbungs-/Anmeldungsspalte verbreitert und Aktionen je Wunsch zusammengehalten. */
/* geaendert 2026-10-06 13:38:00: Kompakte Werkzeugzeile, aufklappbare Hilfe und dezente Bewerbungstrennung. */
:root {
    --portal-control-border: #d5d9dc;
    --portal-control-background: #f8f9fa;
    --portal-control-text: #343a40;
    --portal-control-gap: .4rem;
}
.portal-record-views { margin-bottom: .6rem; }
.portal-control-label { display: block; margin-bottom: .25rem; color: #495057; font-size: .85rem; font-weight: 600; }
.portal-control-section, .portal-action-toolbar { margin: .6rem 0; padding: .6rem .75rem; border: 1px solid var(--portal-control-border); border-radius: .375rem; background: #fff; }
.portal-control-title { margin: 0 0 .5rem; color: var(--portal-control-text); font-size: .9rem; font-weight: 600; }
.portal-filter-fields { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem .75rem; }
.portal-filter-field { min-width: 0; }
.portal-filter-field .form-label { font-size: .875rem; }
.portal-filter-field .form-text { font-size: .8rem; }
.portal-filter-field .form-control, .portal-filter-field .form-select { padding-top: .25rem; padding-bottom: .25rem; font-size: .875rem; }
.portal-filter-actions, .portal-display-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--portal-control-gap); }
.portal-filter-actions { margin-top: .5rem; }
.portal-active-filters { margin-top: .5rem; }
.portal-display-actions form, .portal-action-group form { margin: 0; }
.portal-column-picker { max-width: 100%; }
.portal-column-picker > summary { cursor: pointer; list-style: none; }
.portal-column-picker > summary::-webkit-details-marker { display: none; }
.portal-column-picker[open] { flex: 1 1 100%; border: 1px solid var(--portal-control-border); border-radius: .375rem; padding: .5rem; }
.portal-column-options { display: grid; grid-template-columns: repeat(auto-fit,minmax(14rem,1fr)); gap: .35rem .75rem; max-height: 20rem; overflow-y: auto; padding: .25rem; }
.portal-column-option { display: flex; align-items: flex-start; gap: .45rem; font-size: .875rem; cursor: pointer; }
.portal-column-option input { flex: 0 0 auto; margin-top: .2rem; }
.portal-control-section .btn, .portal-action-group .btn { min-height: 2rem; padding: .22rem .5rem; font-size: .875rem; line-height: 1.35; white-space: normal; }
.portal-disclosure { margin: .4rem 0; padding: .4rem .75rem; }
.portal-disclosure > summary { margin: 0; cursor: pointer; }
.portal-disclosure[open] > summary { margin-bottom: .5rem; }
.portal-disclosure > summary:focus-visible { outline: 2px solid #0d6efd; outline-offset: 3px; }
.portal-action-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .65rem; }
.portal-action-group { display: inline-flex; flex: 0 1 auto; flex-wrap: wrap; align-items: center; gap: .4rem; min-width: 0; max-width: 100%; padding-right: .65rem; border-right: 1px solid var(--portal-control-border); }
.portal-action-group:last-child { border-right: 0; padding-right: 0; }
.portal-selection-count { display: inline-flex; align-items: center; min-height: 2rem; font-size: .85rem; color: #495057; }
.portal-selection-count strong { margin-right: .25rem; }
.portal-action-status { flex: 0 1 16rem; }
.portal-action-status .input-group { min-width: 0; }
.portal-action-status .form-select { min-width: 0; padding: .22rem 2rem .22rem .5rem; font-size: .875rem; border-top-left-radius: .375rem !important; border-bottom-left-radius: .375rem !important; }
.portal-action-group .btn-group { display: flex; flex-wrap: wrap; gap: .4rem; }
.portal-action-group .btn-group .btn { margin-left: 0; border-radius: .375rem !important; }
.portal-application-entry + .portal-application-entry { margin-top: .45rem; padding-top: .45rem; border-top: 1px solid rgba(0,0,0,.16); }
.portal-application-column { min-width: 365px; width: 365px; }
.portal-application-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .35rem; margin-bottom: .3rem; }
.portal-wish-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: .2rem .5rem; padding: .2rem 0; }
.portal-wish-row + .portal-wish-row { border-top: 1px solid rgba(0,0,0,.08); }
.portal-wish-description { flex: 1 1 170px; min-width: 0; overflow-wrap: anywhere; }
.portal-wish-actions { display: inline-flex; flex: 0 0 auto; align-items: center; gap: .3rem; white-space: nowrap; }
.portal-wish-actions .badge, .portal-wish-actions .portal-wish-note-btn { margin-left: 0 !important; }
@media (min-width: 1200px) { .portal-filter-fields { grid-template-columns: 1.3fr 1.3fr 1fr 1fr; } }
@media (max-width: 767.98px) {
    .portal-filter-fields { grid-template-columns: minmax(0,1fr); }
    .portal-action-group { padding-right: 0; border-right: 0; }
    .portal-action-status { flex-basis: 100%; max-width: 20rem; }
}

/* geaendert 2026-10-09: Personenversorgung und Wunschstatus nebeneinander. */
.portal-status-split { display:inline-flex; align-items:stretch; max-width:100%; overflow:hidden; border:1px solid #d5ddd5; border-radius:.375rem; font-size:.75rem; font-weight:700; line-height:1.3; vertical-align:middle; }
.portal-status-person, .portal-status-wish { padding:.35em .65em; }
.portal-status-person { background:#198754; color:#fff; }
.portal-status-wish { white-space:normal; }
.portal-student-subject-hint { display:block; margin-top:.3rem; max-width:15rem; font-size:.75rem; color:#465448; line-height:1.35; }

.portal-own-organisation { color:#212529; overflow-wrap:anywhere; }
.portal-identification-button { --bs-btn-bg:#337ab7; --bs-btn-border-color:#2e6da4; --bs-btn-hover-bg:#286090; --bs-btn-hover-border-color:#204d74; --bs-btn-active-bg:#286090; --bs-btn-color:#fff; }

/* Die positionierte Kopfzelle begrenzt die Klickflaeche, auch in der mitlaufenden Kopie. */
.portal-sort-heading { position:relative; cursor:pointer; }
.portal-sort-heading > .portal-sort-link::after { content:""; position:absolute; inset:0; }
.portal-sort-link { color:inherit; display:inline-flex; align-items:center; gap:.3rem; text-decoration:none; }
.portal-sort-link:hover { color:#0758bd; text-decoration:underline; }
.portal-sort-link:focus-visible { outline:2px solid #0758bd; outline-offset:3px; }
.portal-sort-arrow { color:#6c757d; font-size:.9em; }
.portal-sort-arrow.is-active { color:#c00000; font-weight:700; }
