/* PrismCSE unified authenticated UI — 0.3.197-dev
   InternalMessaging is the visual reference: neutral surfaces, restrained accent,
   consistent radii/borders/shadows, and neutral grey cards in dark mode. */

html[data-prism-authenticated="1"] {
    --pcse-ui-surface: #ffffff;
    --pcse-ui-surface-soft: #f8fafc;
    --pcse-ui-surface-muted: #f1f5f9;
    --pcse-ui-border: rgba(148, 163, 184, .26);
    --pcse-ui-shadow: 0 18px 46px rgba(15, 23, 42, .10);
    --pcse-ui-shadow-soft: 0 10px 28px rgba(15, 23, 42, .07);
    --pcse-ui-radius-xl: 24px;
    --pcse-ui-radius-lg: 18px;
    --pcse-ui-radius-md: 14px;
}

/* Bootstrap's neutral dark palette is also the palette used by the messaging
   module. Keep page chrome theme-specific, but make all application surfaces
   use these neutral greys instead of blue-tinted cards. */
html[data-prism-authenticated="1"][data-bs-theme="dark"] {
    --pcse-ui-surface: #2b3035;
    --pcse-ui-surface-soft: #343a40;
    --pcse-ui-surface-muted: #30363c;
    --pcse-ui-border: rgba(222, 226, 230, .16);
    --pcse-ui-shadow: 0 20px 54px rgba(0, 0, 0, .34);
    --pcse-ui-shadow-soft: 0 10px 30px rgba(0, 0, 0, .24);

    --bs-body-bg: #212529;
    --bs-secondary-bg: #343a40;
    --bs-tertiary-bg: #2b3035;
    --bs-border-color: rgba(222, 226, 230, .16);
    --bs-border-color-translucent: rgba(222, 226, 230, .16);
    --bs-body-color: #f1f3f5;
    --bs-secondary-color: #adb5bd;
    --bs-tertiary-color: #868e96;
    --bs-heading-color: #f8f9fa;

    /* Liaison / Prism */
    --liaison-bg: #212529;
    --liaison-bg-soft: #252a2f;
    --liaison-surface: var(--pcse-ui-surface);
    --liaison-surface-soft: var(--pcse-ui-surface-soft);
    --liaison-rail: #252a2f;
    --liaison-rail-border: var(--pcse-ui-border);
    --liaison-text: #f1f3f5;
    --liaison-muted: #adb5bd;
    --liaison-line: var(--pcse-ui-border);
    --liaison-shadow: var(--pcse-ui-shadow);
    --liaison-shadow-soft: var(--pcse-ui-shadow-soft);

    /* Pulse */
    --p-bg: #212529;
    --p-bg-2: #1d2024;
    --p-bg-mesh-1: rgba(99, 102, 241, .08);
    --p-bg-mesh-2: rgba(6, 182, 212, .05);
    --p-surface: rgba(43, 48, 53, .96);
    --p-surface-solid: var(--pcse-ui-surface);
    --p-border: var(--pcse-ui-border);
    --p-border-strong: rgba(222, 226, 230, .24);
    --p-text: #f1f3f5;
    --p-text-2: #ced4da;
    --p-muted: #adb5bd;
    --p-shadow: var(--pcse-ui-shadow);
    --p-shadow-sm: var(--pcse-ui-shadow-soft);
    --p-shadow-float: 0 24px 70px rgba(0, 0, 0, .40);

    /* Horizon */
    --horizon-page: #212529;
    --horizon-page-strong: #1d2024;
    --horizon-surface: var(--pcse-ui-surface);
    --horizon-surface-soft: var(--pcse-ui-surface-soft);
    --horizon-surface-tint: var(--pcse-ui-surface-muted);
    --horizon-text: #f1f3f5;
    --horizon-muted: #adb5bd;
    --horizon-line: var(--pcse-ui-border);
    --horizon-shadow: var(--pcse-ui-shadow);
    --horizon-shadow-soft: var(--pcse-ui-shadow-soft);

    /* Legacy/module aliases used throughout PrismCSE. */
    --pro-surface: var(--pcse-ui-surface);
    --pro-surface-soft: var(--pcse-ui-surface-soft);
    --pro-text: #f1f3f5;
    --pro-muted: #adb5bd;
    --pro-line: var(--pcse-ui-border);
    --pro-shadow: var(--pcse-ui-shadow-soft);

    --nova-panel: var(--pcse-ui-surface);
    --nova-panel-solid: var(--pcse-ui-surface);
    --nova-text: #f1f3f5;
    --nova-muted: #adb5bd;
    --nova-line: var(--pcse-ui-border);
    --nova-shadow-soft: var(--pcse-ui-shadow-soft);

    --sig-surface: var(--pcse-ui-surface);
    --sig-surface-solid: var(--pcse-ui-surface);
    --sig-surface-muted: var(--pcse-ui-surface-soft);
    --sig-text: #f1f3f5;
    --sig-muted: #adb5bd;
    --sig-line: var(--pcse-ui-border);
    --sig-shadow-soft: var(--pcse-ui-shadow-soft);
}

/* Main panels: same calm geometry as the messaging shell. */
html[data-prism-authenticated="1"] :is(
    .card,
    .homelab-card,
    .module-card,
    .admin-card,
    .dashboard-card,
    .pulse-card,
    .pulse-sticky-card,
    .horizon-side-card,
    .liaison-side-panel,
    .prism-identity-card,
    .dashboard-overview-card,
    .dashboard-showcase-card,
    .horizon-dashboard-section,
    .horizon-feature-surface,
    .horizon-welcome-card,
    .menu-manager-card,
    .menu-tree-card,
    .exec-module-compat-box,
    .exec-sticky-panel,
    .maintenance-card,
    .pulse-maintenance-card,
    .upgrade-card,
    .polls-hero,
    .poll-card,
    .poll-create-panel,
    .poll-empty,
    .csealerts-hero,
    .csealert-card,
    .csealert-anonymity-card,
    .csealert-submit-section,
    .csealert-create-panel,
    .csealert-form-section,
    .csealert-guidance-card,
    .csealert-routing-panel,
    .csealert-optional-panel,
    .csealert-choice-card,
    .csemeetings-hero,
    .csemeeting-card,
    .csemeeting-create-panel,
    .csemeeting-closure-card,
    .csemeeting-direction-meeting-card,
    .csemeeting-direction-section,
    .csemeeting-direction-questions-section,
    .csemeeting-direction-abuse-section,
    .csemandates-hero,
    .csemandates-panel,
    .csemandates-active-card,
    .csemandates-info-grid article,
    .csemandates-list-card,
    .csemandates-member-card,
    .csemandates-transition-panel,
    .news-hero,
    .news-editor-hero,
    .news-post-card,
    .news-admin-list,
    .news-editor-panel,
    .news-side-card,
    .news-title-card,
    .news-video-card,
    .legal-hero,
    .legal-search-panel,
    .legal-section-card,
    .legal-document-card,
    .trombi-section,
    .trombi-card,
    .totp-manual-panel,
    .totp-qr-panel
) {
    border-color: var(--pcse-ui-border) !important;
    background: var(--pcse-ui-surface) !important;
    box-shadow: var(--pcse-ui-shadow-soft) !important;
}

/* Large module headers align with the 24 px messaging container. */
html[data-prism-authenticated="1"] :is(
    .polls-hero,
    .csealerts-hero,
    .csemeetings-hero,
    .csemandates-hero,
    .news-hero,
    .news-editor-hero,
    .legal-hero,
    .horizon-dashboard-section,
    .horizon-feature-surface
) {
    border-radius: var(--pcse-ui-radius-xl) !important;
}

/* Ordinary cards use the inner-card radius from messaging. */
html[data-prism-authenticated="1"] :is(
    .card,
    .homelab-card,
    .module-card,
    .admin-card,
    .dashboard-card,
    .pulse-card,
    .pulse-sticky-card,
    .horizon-side-card,
    .liaison-side-panel,
    .prism-identity-card,
    .dashboard-overview-card,
    .dashboard-showcase-card,
    .poll-card,
    .poll-create-panel,
    .poll-empty,
    .csealert-card,
    .csealert-anonymity-card,
    .csealert-submit-section,
    .csealert-create-panel,
    .csealert-form-section,
    .csealert-guidance-card,
    .csealert-routing-panel,
    .csealert-optional-panel,
    .csealert-choice-card,
    .csemeeting-card,
    .csemeeting-create-panel,
    .csemeeting-closure-card,
    .csemeeting-direction-meeting-card,
    .csemeeting-direction-section,
    .csemeeting-direction-questions-section,
    .csemeeting-direction-abuse-section,
    .csemandates-panel,
    .csemandates-active-card,
    .csemandates-info-grid article,
    .csemandates-list-card,
    .csemandates-member-card,
    .csemandates-transition-panel,
    .news-post-card,
    .news-admin-list,
    .news-editor-panel,
    .news-side-card,
    .news-title-card,
    .news-video-card,
    .legal-search-panel,
    .legal-section-card,
    .legal-document-card,
    .trombi-section,
    .trombi-card,
    .menu-manager-card,
    .menu-tree-card,
    .exec-module-compat-box,
    .exec-sticky-panel,
    .maintenance-card,
    .pulse-maintenance-card,
    .upgrade-card,
    .totp-manual-panel,
    .totp-qr-panel
) {
    border-radius: var(--pcse-ui-radius-lg) !important;
}

/* Card headers/footers and nested neutral panels use one secondary surface. */
html[data-prism-authenticated="1"] :is(.card-header, .card-footer) {
    border-color: var(--pcse-ui-border) !important;
    background: var(--pcse-ui-surface-soft) !important;
}

html[data-prism-authenticated="1"][data-bs-theme="dark"] :is(
    .poll-option,
    .poll-result-row,
    .legal-meta-row span,
    .legal-section-count,
    .legal-query-chip,
    .legal-tags span,
    .csealert-event,
    .csemeeting-event
) {
    background: var(--pcse-ui-surface-soft) !important;
    border-color: var(--pcse-ui-border) !important;
}


/* Bootstrap/Core containers are normalized as well so settings, administration
   and modal workflows do not diverge from module pages. */
html[data-prism-authenticated="1"] :is(
    .modal-content,
    .dropdown-menu,
    .offcanvas,
    .accordion-item,
    .list-group-item
) {
    border-color: var(--pcse-ui-border) !important;
    background: var(--pcse-ui-surface) !important;
}

html[data-prism-authenticated="1"] :is(
    .modal-header,
    .modal-footer,
    .accordion-button:not(.collapsed)
) {
    border-color: var(--pcse-ui-border) !important;
    background: var(--pcse-ui-surface-soft) !important;
}

/* Common form language, matching the messaging composer. */
html[data-prism-authenticated="1"] :is(.form-control, .form-select, .input-group-text) {
    border-color: var(--pcse-ui-border);
    border-radius: var(--pcse-ui-radius-md);
}

html[data-prism-authenticated="1"][data-bs-theme="dark"] :is(.form-control, .form-select, .input-group-text) {
    color: var(--bs-body-color);
    background-color: var(--pcse-ui-surface-soft);
}

html[data-prism-authenticated="1"] .btn {
    border-radius: var(--pcse-ui-radius-md);
    font-weight: 700;
}

html[data-prism-authenticated="1"] .btn-sm {
    border-radius: 12px;
}

/* Keep selected/semantic states expressive: accent is for state, not for the
   base card background. */
html[data-prism-authenticated="1"] :is(
    .im-thread-item.is-active,
    .nav-link.active,
    .list-group-item.active,
    .btn-primary,
    .btn-success,
    .btn-danger,
    .btn-warning,
    .alert,
    .badge
) {
    box-shadow: none;
}


/* Security settings: full-width responsive administration workspace.
   Keep the page dense enough for desktop administration without the former
   narrow 8/4 split, while preserving a single readable column on smaller
   screens. */
html[data-prism-authenticated="1"] .security-settings-form {
    width: 100%;
    max-width: none;
    margin: 0;
}

html[data-prism-authenticated="1"] .security-settings-fieldset {
    display: block;
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}

html[data-prism-authenticated="1"] .security-settings-primary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem;
    width: 100%;
    min-width: 0;
}

html[data-prism-authenticated="1"] .security-settings-primary > .card {
    min-width: 0;
    margin-bottom: 0 !important;
}

html[data-prism-authenticated="1"] .security-settings-primary > .card:first-child {
    grid-column: 1 / -1;
}

html[data-prism-authenticated="1"] .security-settings-secondary {
    width: 100%;
    min-width: 0;
    margin-top: 1.5rem;
}

html[data-prism-authenticated="1"] .security-settings-secondary > .card {
    width: 100%;
    min-width: 0;
    margin-bottom: 0 !important;
    position: static !important;
}

html[data-prism-authenticated="1"] .security-settings-primary :is(.row, .input-group),
html[data-prism-authenticated="1"] .security-settings-secondary :is(.row, .input-group) {
    min-width: 0;
}

html[data-prism-authenticated="1"] .security-settings-primary :is(.form-control, .form-select, .input-group-text),
html[data-prism-authenticated="1"] .security-settings-secondary :is(.form-control, .form-select, .input-group-text) {
    min-width: 0;
}

@media (max-width: 1099.98px) {
    html[data-prism-authenticated="1"] .security-settings-primary {
        grid-template-columns: minmax(0, 1fr);
    }

    html[data-prism-authenticated="1"] .security-settings-primary > .card:first-child {
        grid-column: auto;
    }
}

@media (max-width: 575.98px) {
    html[data-prism-authenticated="1"] .security-settings-primary {
        gap: 1rem;
    }

    html[data-prism-authenticated="1"] .security-settings-secondary {
        margin-top: 1rem;
    }
}

/* Module manager ------------------------------------------------------
   Uses the same neutral surfaces as InternalMessaging. Module cards never
   switch to a blue-tinted hover surface, including in dark mode. */
.pcse-module-manager {
    display: grid;
    gap: 24px;
    min-width: 0;
}
.pcse-module-manager-header,
.pcse-module-install-panel,
.pcse-module-section {
    border: 1px solid var(--pcse-ui-border);
    border-radius: var(--pcse-ui-radius-xl);
    background: var(--pcse-ui-surface);
    box-shadow: var(--pcse-ui-shadow-soft);
}
.pcse-module-manager-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 24px 26px;
}
.pcse-module-manager-header h2,
.pcse-module-section-heading h3,
.pcse-module-install-copy h3 {
    margin: 0;
}
.pcse-module-manager-header p,
.pcse-module-section-heading p,
.pcse-module-install-copy p {
    margin: 6px 0 0;
    color: var(--bs-secondary-color);
}
.pcse-module-eyebrow {
    display: block;
    margin-bottom: 5px;
    color: var(--bs-secondary-color);
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.pcse-module-manager-summary {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: flex-end;
}
.pcse-module-manager-summary span {
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    padding: 8px 11px;
    border: 1px solid var(--pcse-ui-border);
    border-radius: 999px;
    background: var(--pcse-ui-surface-soft);
    color: var(--bs-secondary-color);
    font-size: 12px;
}
.pcse-module-manager-summary strong { color: var(--bs-body-color); font-size: 14px; }

.pcse-module-install-panel {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr);
    gap: 26px;
    padding: 24px 26px;
}
.pcse-module-install-copy {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    min-width: 0;
}
.pcse-module-section-icon,
.pcse-module-icon {
    flex: 0 0 auto;
    display: inline-grid;
    place-items: center;
    border: 1px solid var(--pcse-ui-border);
    background: var(--pcse-ui-surface-soft);
}
.pcse-module-section-icon {
    width: 48px;
    height: 48px;
    border-radius: 14px;
    color: var(--bs-primary);
}
.pcse-module-trust-points {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    margin-top: 15px;
    color: var(--bs-secondary-color);
    font-size: 12px;
}
.pcse-module-trust-points span { display: inline-flex; align-items: center; gap: 6px; }
.pcse-module-trust-points i { color: var(--bs-success); }
.pcse-module-upload {
    align-self: stretch;
    padding: 18px;
    border: 1px solid var(--pcse-ui-border);
    border-radius: var(--pcse-ui-radius-lg);
    background: var(--pcse-ui-surface-soft);
}

.pcse-module-section { padding: 22px 24px 24px; }
.pcse-module-section-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 18px;
}
.pcse-module-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 330px), 1fr));
    gap: 14px;
}
.pcse-module-item {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 18px;
    border: 1px solid var(--pcse-ui-border);
    border-radius: var(--pcse-ui-radius-lg);
    color: var(--bs-body-color);
    background: var(--pcse-ui-surface);
    box-shadow: none;
    transition: border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.pcse-module-item:hover,
.pcse-module-item:focus-within {
    color: var(--bs-body-color);
    background: var(--pcse-ui-surface-soft);
    border-color: color-mix(in srgb, var(--bs-secondary-color) 36%, var(--pcse-ui-border));
    box-shadow: 0 8px 22px rgba(0, 0, 0, .08);
}
html[data-prism-authenticated="1"][data-bs-theme="dark"] .pcse-module-item:hover,
html[data-prism-authenticated="1"][data-bs-theme="dark"] .pcse-module-item:focus-within {
    background: #343a40;
    border-color: rgba(222, 226, 230, .24);
}
.pcse-module-item-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    min-width: 0;
}
.pcse-module-identity { display: flex; align-items: center; gap: 12px; min-width: 0; }
.pcse-module-icon {
    width: 42px;
    height: 42px;
    border-radius: 12px;
    color: var(--bs-primary);
}
.pcse-module-name { overflow-wrap: anywhere; font-size: 15px; }
.pcse-module-meta { color: var(--bs-secondary-color); font-size: 11px; overflow-wrap: anywhere; }
.pcse-module-badges { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 5px; }
.pcse-module-description { margin: 0; color: var(--bs-secondary-color); font-size: 13px; line-height: 1.55; }
.pcse-module-policy {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 11px 12px;
    border: 1px solid var(--pcse-ui-border);
    border-radius: 12px;
    background: var(--pcse-ui-surface-soft);
}
.pcse-module-policy > i { margin-top: 2px; color: var(--bs-secondary-color); }
.pcse-module-policy strong,
.pcse-module-policy span { display: block; }
.pcse-module-policy strong { margin-bottom: 2px; font-size: 12px; }
.pcse-module-policy span { color: var(--bs-secondary-color); font-size: 11px; line-height: 1.45; }
.pcse-module-facts { display: flex; flex-wrap: wrap; gap: 7px; }
.pcse-module-fact {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 8px;
    border: 1px solid var(--pcse-ui-border);
    border-radius: 999px;
    color: var(--bs-secondary-color);
    background: var(--pcse-ui-surface-soft);
    font-size: 10px;
    font-weight: 700;
}
.pcse-module-fact.is-ok i { color: var(--bs-success); }
.pcse-module-fact.is-error { color: var(--bs-danger); }
.pcse-module-tech {
    display: flex;
    flex-wrap: wrap;
    gap: 7px 10px;
    color: var(--bs-secondary-color);
    font-size: 10px;
}
.pcse-module-tech code { overflow-wrap: anywhere; }
.pcse-module-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: auto;
    padding-top: 2px;
}
.pcse-module-actions form { margin: 0; }
.pcse-module-required-note {
    display: inline-flex;
    align-items: center;
    min-height: 31px;
    color: var(--bs-secondary-color);
    font-size: 11px;
    font-weight: 700;
}
.pcse-module-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 110px;
    padding: 20px;
    border: 1px dashed var(--pcse-ui-border);
    border-radius: var(--pcse-ui-radius-lg);
    color: var(--bs-secondary-color);
    background: var(--pcse-ui-surface-soft);
}

@media (max-width: 900px) {
    .pcse-module-manager-header,
    .pcse-module-section-heading { flex-direction: column; }
    .pcse-module-manager-summary { justify-content: flex-start; }
    .pcse-module-install-panel { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
    .pcse-module-manager-header,
    .pcse-module-install-panel,
    .pcse-module-section { padding: 18px; }
    .pcse-module-install-copy { flex-direction: column; }
    .pcse-module-item-head { flex-direction: column; }
    .pcse-module-badges { justify-content: flex-start; }
    .pcse-module-actions { align-items: stretch; }
    .pcse-module-actions form,
    .pcse-module-actions .btn { width: 100%; }
}

/* Email settings: full-width responsive administration workspace. */
html[data-prism-authenticated="1"] .email-settings-form,
html[data-prism-authenticated="1"] .email-settings-fieldset {
    width: 100%;
    max-width: none;
    min-width: 0;
    margin: 0;
}

html[data-prism-authenticated="1"] .email-settings-fieldset {
    display: block;
    padding: 0;
    border: 0;
}

html[data-prism-authenticated="1"] .email-settings-grid {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(18rem, 1fr);
    gap: 1.5rem;
    width: 100%;
    min-width: 0;
}

html[data-prism-authenticated="1"] .email-settings-grid > .card {
    min-width: 0;
    margin: 0 !important;
}

html[data-prism-authenticated="1"] .email-settings-service,
html[data-prism-authenticated="1"] .email-settings-test {
    grid-column: 1 / -1;
}

html[data-prism-authenticated="1"] .email-settings-grid :is(.row, .input-group),
html[data-prism-authenticated="1"] .email-settings-grid :is(.form-control, .form-select, .input-group-text) {
    min-width: 0;
}

html[data-prism-authenticated="1"] .email-settings-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
    justify-content: flex-end;
}

html[data-prism-authenticated="1"] .email-settings-actions .btn {
    min-width: 12rem;
}

@media (max-width: 1099.98px) {
    html[data-prism-authenticated="1"] .email-settings-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    html[data-prism-authenticated="1"] .email-settings-service,
    html[data-prism-authenticated="1"] .email-settings-test {
        grid-column: auto;
    }
}

@media (max-width: 767.98px) {
    html[data-prism-authenticated="1"] .email-settings-grid {
        gap: 1rem;
    }

    html[data-prism-authenticated="1"] .email-settings-actions {
        justify-content: stretch;
    }

    html[data-prism-authenticated="1"] .email-settings-actions .btn {
        flex: 1 1 100%;
        min-width: 0;
    }
}
