body {
            display: flex;
            flex-direction: column;
            min-height: 100vh;
        }
        p {
            hyphens: auto;
            -webkit-hyphens: auto;
            -ms-hyphens: auto;
        }
        #portal-list-results .card-body {
            hyphens: auto;
            -webkit-hyphens: auto;
            -ms-hyphens: auto;
        }
        /* Semantic h2/h3 card titles; visual size matches former h5.card-title (1.25rem). */
        #portal-list-results h2.card-title,
        #portal-related-portals h3.card-title {
            font-size: 1.25rem;
        }
        #portal-list-results .portal-list-table td,
        #portal-list-results .portal-list-table th {
            vertical-align: middle;
        }
        #portal-list-results .portal-list-table .portal-operator-name {
            hyphens: auto;
            -webkit-hyphens: auto;
            -ms-hyphens: auto;
        }
        .portal-name-filter {
            background: linear-gradient(
                160deg,
                rgba(26, 58, 74, 0.06) 0%,
                rgba(255, 255, 255, 1) 72%
            );
            border: 1px solid rgba(26, 58, 74, 0.16);
            border-radius: 0.75rem;
            box-shadow: 0 2px 8px rgba(26, 58, 74, 0.08);
        }
        .portal-name-filter-input {
            background-color: transparent;
            border: 0;
            box-shadow: none;
        }
        .portal-name-filter-input:focus {
            background-color: transparent;
            border: 0;
            box-shadow: none;
        }
        .portal-name-filter-icon {
            position: absolute;
            top: 50%;
            left: 0;
            transform: translateY(-50%);
            margin-left: 1rem;
            color: #1a3a4a;
            opacity: 0.72;
            pointer-events: none;
            z-index: 4;
            font-size: 1.1rem;
        }
        .portal-name-filter:focus-within {
            border-color: rgba(26, 58, 74, 0.42);
            box-shadow: 0 0 0 0.2rem rgba(26, 58, 74, 0.12), 0 2px 8px rgba(26, 58, 74, 0.1);
        }
        .portal-name-filter-input::placeholder {
            color: rgba(26, 58, 74, 0.55);
        }
        @media (max-width: 991.98px) {
            #portal-list-results .portal-list-table thead {
                display: none;
            }
            #portal-list-results .portal-list-table-wrap {
                overflow-x: visible;
            }
            #portal-list-results .portal-list-table tbody tr {
                border-bottom: 1px solid var(--bs-border-color);
            }
            #portal-list-results .portal-list-table tbody tr:last-child {
                border-bottom: none;
            }
            #portal-list-results .portal-list-table td {
                border: 0;
                padding-top: 0.85rem;
                padding-bottom: 0.85rem;
            }
            #portal-list-results .portal-list-table .portal-list-cell-portal {
                padding-top: 1rem;
            }
        }
        .portal-advanced-filters summary {
            list-style: none;
            cursor: pointer;
        }
        .portal-advanced-filters summary::-webkit-details-marker {
            display: none;
        }
        .portal-advanced-filters[open] .portal-advanced-filters-icon {
            transform: rotate(180deg);
        }
        .portal-advanced-filters-icon {
            transition: transform 0.2s ease;
            display: inline-block;
        }
        .portal-header {
            background-color: #1a3a4a;
        }
        .portal-legal-bar {
            border-bottom: 1px solid rgba(255, 255, 255, 0.18);
        }
        .portal-legal-bar-links {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            gap: 0.35rem;
            padding: 0.15rem 0;
            font-size: 0.625rem;
            line-height: 1.2;
        }
        .portal-legal-bar-links a {
            color: rgba(255, 255, 255, 0.72);
            text-decoration: none;
            transition: color 0.2s ease-in-out;
        }
        .portal-legal-bar-links a:hover {
            color: #fff;
        }
        .portal-legal-bar-sep {
            color: rgba(255, 255, 255, 0.35);
            user-select: none;
        }
        .navbar {
            padding: 0.5rem 0;
        }
        .nav-link {
            transition: all 0.2s ease-in-out;
            border-radius: 4px;
            margin: 0 2px;
            padding: 0.5rem 1rem;
        }
        .nav-link:hover {
            background-color: rgba(255, 255, 255, 0.1);
        }
        .nav-link i {
            margin-right: 5px;
        }
        #userDropdown::after {
            display: none;
        }
        @media (min-width: 992px) {
            #userDropdown i {
                margin-right: 0;
            }
        }
        .footer {
            margin-top: auto;
        }
        .footer a {
            transition: color 0.2s ease-in-out;
        }
        .footer a:hover {
            color: #1a3a4a !important;
        }
        .footer .list-inline-item:not(:last-child) {
            margin-right: 1rem;
        }
        /* Bootstrap flex center sits slightly low vs. .small label; margin-based nudges jump too far. */
        #showOfflineSwitch {
            transform: translateY(-2px);
        }
        @media (max-width: 767.98px) {
            .footer .text-end {
                text-align: center !important;
                margin-top: 1rem;
            }
            .navbar-collapse {
                background-color: #1a3a4a;
                padding: 1rem;
                border-radius: 0 0 0.5rem 0.5rem;
            }
        }
        .navbar-toggler {
            border: none;
            padding: 0.5rem;
        }
        .navbar-toggler-icon-bars {
            display: inline-block;
            position: relative;
            width: 1.4rem;
            height: 1.2rem;
            color: inherit;
        }
        .navbar-toggler-icon-bars span {
            position: absolute;
            left: 0;
            top: 50%;
            width: 100%;
            height: 2px;
            border-radius: 999px;
            background-color: currentColor;
            transform-origin: center;
            transition: transform 0.25s ease, opacity 0.2s ease;
        }
        .navbar-toggler-icon-bars span:nth-child(1) {
            transform: translateY(-0.38rem);
        }
        .navbar-toggler-icon-bars span:nth-child(2) {
            transform: translateY(0);
        }
        .navbar-toggler-icon-bars span:nth-child(3) {
            transform: translateY(0.38rem);
        }
        .navbar-toggler:not(.collapsed) .navbar-toggler-icon-bars span:nth-child(1) {
            transform: translateY(0) rotate(45deg);
        }
        .navbar-toggler:not(.collapsed) .navbar-toggler-icon-bars span:nth-child(2) {
            transform: translateY(0) scaleX(0.2);
            opacity: 0;
        }
        .navbar-toggler:not(.collapsed) .navbar-toggler-icon-bars span:nth-child(3) {
            transform: translateY(0) rotate(-45deg);
        }
        .navbar-toggler:focus {
            box-shadow: none;
        }
        .form-control::placeholder {
            color: #adb5bd;
        }
        /* Operator client text: German „ … “ inline; line-height:0 keeps glyphs from growing the line */
        .portal-client-description-quote {
            min-width: 0;
        }
        .portal-client-description-quote-body {
            min-width: 0;
        }
        .portal-client-description-quote-body ul,
        .portal-client-description-quote-body ol,
        .portal-client-description ul,
        .portal-client-description ol,
        .portal-draft-change-markdown ul,
        .portal-draft-change-markdown ol {
            margin-top: 0;
            margin-bottom: 0;
            padding-left: 1.25rem;
        }
        .portal-client-description-quote-body li p,
        .portal-client-description li p,
        .portal-draft-change-markdown li p {
            margin-bottom: 0;
        }
        /* Leading newline in DB becomes <br>; would otherwise push the first line below the opening mark */
        .portal-client-description-quote-body > br:first-child {
            display: none;
        }
        .portal-client-description-quote-open,
        .portal-client-description-quote-close {
            font-family: Georgia, "Times New Roman", Times, serif;
            font-size: 2.35rem;
            font-weight: 600;
            line-height: 0;
            color: var(--bs-secondary-color);
            opacity: 0.42;
        }
        .portal-client-description-quote-open {
            vertical-align: 0.25em;
            margin-right: 0.05em;
        }
        .portal-client-description-quote-close {
            vertical-align: -0.28em;
            margin-left: 0.1em;
            white-space: nowrap;
        }
        .portal-description-empty {
            background: linear-gradient(
                160deg,
                rgba(var(--bs-primary-rgb), 0.04) 0%,
                rgba(var(--bs-light-rgb), 1) 70%
            );
            border-style: dashed !important;
        }
        .portal-description-empty-action {
            font-weight: 600;
            padding-inline: 1rem;
        }
        .portal-draft-description-format-hint summary {
            color: var(--bs-secondary-color);
            font-weight: 400;
            opacity: 0.72;
        }
        .portal-draft-description-format-hint summary:hover,
        .portal-draft-description-format-hint summary:focus-visible {
            opacity: 0.92;
        }
        .portal-screenshot-img--compact {
            max-width: 350px;
            width: auto !important;
        }
        .portal-classification-card {
            background: linear-gradient(
                160deg,
                rgba(var(--bs-primary-rgb), 0.05) 0%,
                rgba(var(--bs-light-rgb), 1) 48%
            );
        }
        .portal-classification-grid {
            display: flex;
            flex-direction: column;
            gap: 0.75rem;
        }
        .portal-classification-group {
            display: flex;
            flex-direction: column;
            gap: 0.5rem;
            padding: 0.75rem;
            border-radius: 0.75rem;
            background: rgba(255, 255, 255, 0.72);
            box-shadow: inset 0 0 0 1px rgba(var(--bs-secondary-rgb), 0.1);
        }
        .portal-classification-group-label {
            font-size: 0.75rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: var(--bs-secondary-color);
        }
        .portal-classification-tiles {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 0.5rem;
        }
        .portal-classification-tiles--single {
            grid-template-columns: minmax(0, 1fr);
            max-width: 50%;
        }
        .portal-classification-tile {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 0.45rem;
            min-height: 4.25rem;
            padding: 0.7rem 0.55rem;
            border-radius: 0.625rem;
            background: #fff;
            box-shadow: inset 0 0 0 1px rgba(var(--bs-secondary-rgb), 0.12);
            transition: box-shadow 0.15s ease, background-color 0.15s ease;
        }
        .portal-classification-tile-label {
            font-size: 0.8125rem;
            font-weight: 600;
            line-height: 1.2;
            text-align: center;
            color: var(--bs-body-color);
        }
        .portal-classification-tile--yes {
            background: rgba(var(--bs-success-rgb), 0.06);
            box-shadow: inset 0 0 0 1px rgba(var(--bs-success-rgb), 0.22);
        }
        .portal-classification-tile--unknown {
            background: rgba(var(--bs-secondary-rgb), 0.05);
        }
        .portal-classification-yes {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 1.75rem;
            height: 1.75rem;
            border-radius: 999px;
            background: var(--bs-success);
            color: #fff;
            font-size: 1rem;
            line-height: 1;
            box-shadow: 0 1px 2px rgba(var(--bs-success-rgb), 0.35);
        }
        .portal-classification-unknown {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 1.75rem;
            height: 1.75rem;
            border-radius: 999px;
            background: rgba(var(--bs-secondary-rgb), 0.14);
            color: var(--bs-secondary-color);
            font-size: 0.95rem;
            font-weight: 700;
            line-height: 1;
        }
        .portal-classification-no {
            display: inline-block;
            width: 1.75rem;
            height: 1.75rem;
        }
        .portal-draft-changes-card {
            overflow: hidden;
        }
        .portal-draft-change-row {
            padding-top: 1.1rem;
            padding-bottom: 1.1rem;
        }
        .portal-draft-change-box {
            border-radius: 0.5rem;
            padding: 0.75rem 0.9rem;
            min-height: 100%;
        }
        .portal-draft-change-box-label {
            font-size: 0.7rem;
            font-weight: 600;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            color: var(--bs-secondary-color);
            margin-bottom: 0.45rem;
        }
        .portal-draft-change-box--old {
            background: rgba(var(--bs-secondary-rgb), 0.08);
            border: 1px solid rgba(var(--bs-secondary-rgb), 0.12);
        }
        .portal-draft-change-box--new {
            background: rgba(var(--bs-success-rgb), 0.08);
            border: 1px solid rgba(var(--bs-success-rgb), 0.18);
        }
        .portal-draft-change-markdown {
            font-size: 0.95rem;
        }
        .portal-draft-change-text {
            font-size: 0.95rem;
            white-space: pre-wrap;
            word-break: break-word;
        }
        .portal-draft-diff-del {
            background: rgba(var(--bs-danger-rgb), 0.22);
            color: inherit;
            text-decoration: line-through;
            padding: 0 0.12em;
            border-radius: 0.15em;
        }
        .portal-draft-diff-ins {
            background: rgba(var(--bs-success-rgb), 0.22);
            color: inherit;
            padding: 0 0.12em;
            border-radius: 0.15em;
        }
        .portal-draft-change-markdown > :last-child {
            margin-bottom: 0;
        }
        .portal-draft-change-badge {
            display: inline-flex;
            align-items: center;
            border-radius: 999px;
            padding: 0.15rem 0.65rem;
            font-size: 0.85rem;
            font-weight: 600;
        }
        .portal-draft-change-badge--yes {
            background: rgba(var(--bs-success-rgb), 0.14);
            color: var(--bs-success);
        }
        .portal-draft-change-badge--no {
            background: rgba(var(--bs-danger-rgb), 0.12);
            color: var(--bs-danger);
        }
        .portal-draft-change-badge--unknown {
            background: rgba(var(--bs-secondary-rgb), 0.14);
            color: var(--bs-secondary-color);
        }
        .portal-quality-card {
            background: linear-gradient(
                160deg,
                rgba(var(--bs-success-rgb), 0.04) 0%,
                rgba(var(--bs-light-rgb), 1) 52%
            );
        }
        .portal-quality-badge {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 2.75rem;
            height: 2.75rem;
            border-radius: 0.75rem;
            font-size: 1.35rem;
            font-weight: 800;
            line-height: 1;
            flex-shrink: 0;
        }
        .portal-quality-badge--sm {
            width: 1.65rem;
            height: 1.65rem;
            border-radius: 0.45rem;
            font-size: 0.85rem;
        }
        .portal-quality-badge--a {
            background: rgba(var(--bs-success-rgb), 0.18);
            color: var(--bs-success);
        }
        .portal-quality-badge--b {
            background: rgba(var(--bs-warning-rgb), 0.22);
            color: var(--bs-warning-text-emphasis, #664d03);
        }
        .portal-quality-badge--c {
            background: rgba(var(--bs-danger-rgb), 0.14);
            color: var(--bs-danger);
        }
        .portal-quality-badge--unset {
            background: rgba(var(--bs-secondary-rgb), 0.14);
            color: var(--bs-secondary-color);
        }
        .portal-quality-beta-badge {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 0.1rem 0.45rem;
            border-radius: 0.35rem;
            font-size: 0.65rem;
            font-weight: 700;
            line-height: 1.2;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            vertical-align: middle;
            background: rgba(var(--bs-info-rgb), 0.16);
            color: var(--bs-info-text-emphasis, #055160);
            border: 1px solid rgba(var(--bs-info-rgb), 0.28);
        }
        .portal-quality-beta-badge--inline {
            font-size: 0.6rem;
            padding: 0.05rem 0.35rem;
            border-radius: 0.3rem;
        }
        .portal-quality-response-dot {
            width: 0.55rem;
            height: 0.55rem;
            border-radius: 50%;
            margin-top: 0.35rem;
            flex-shrink: 0;
        }
        .portal-quality-response--yes {
            background: var(--bs-success);
        }
        .portal-quality-response--partial {
            background: var(--bs-warning);
        }
        .portal-quality-response--no {
            background: var(--bs-danger);
        }
        .portal-quality-response--unknown {
            background: var(--bs-secondary);
        }
        .portal-quality-checklist-details summary {
            cursor: pointer;
        }
