:root {
    --bg: #07090f;
    --bg-soft: #0f1420;
    --sidebar: #0b0f19;
    --sidebar-2: #111827;
    --panel: #ffffff;
    --panel-soft: #f8fafc;
    --panel-line: #e5e7eb;
    --text: #111827;
    --muted: #64748b;
    --muted-2: #94a3b8;
    --red: #9f0712;
    --red-2: #d31628;
    --red-soft: #fff1f2;
    --green: #12805c;
    --green-soft: #dcfce7;
    --orange: #b86b00;
    --orange-soft: #fff7ed;
    --blue: #2563eb;
    --blue-soft: #eff6ff;
    --purple: #7c3aed;
    --shadow: 0 28px 80px rgba(15, 23, 42, .16);
    --shadow-soft: 0 14px 32px rgba(15, 23, 42, .08);
    --radius-xl: 28px;
    --radius-lg: 22px;
    --radius-md: 16px;
}

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    min-height: 100%;
}

body {
    font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: var(--text);
    background:
        radial-gradient(circle at 12% 0%, rgba(211, 22, 40, .18), transparent 28%),
        radial-gradient(circle at 90% 12%, rgba(37, 99, 235, .12), transparent 26%),
        linear-gradient(135deg, #f8fafc, #eef2f7 52%, #e8edf4);
}

button,
input,
select {
    font: inherit;
}

button,
a {
    cursor: pointer;
}

a {
    color: inherit;
    text-decoration: none;
}

input,
select {
    outline: none;
}

.hub-shell {
    display: grid;
    grid-template-columns: 292px minmax(0, 1fr);
    min-height: 100vh;
    padding: 18px;
    gap: 18px;
}

.hub-sidebar {
    position: sticky;
    top: 18px;
    display: flex;
    flex-direction: column;
    height: calc(100vh - 36px);
    padding: 18px;
    overflow: hidden;
    color: #ffffff;
    background:
        radial-gradient(circle at 20% 0%, rgba(211, 22, 40, .28), transparent 32%),
        linear-gradient(180deg, var(--sidebar), var(--sidebar-2));
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 30px;
    box-shadow: var(--shadow);
}

.hub-brand {
    display: flex;
    align-items: center;
    gap: 13px;
    padding: 8px 8px 20px;
    border-bottom: 1px solid rgba(255, 255, 255, .10);
}

.hub-brand-mark {
    width: 50px;
    height: 50px;
    display: grid;
    place-items: center;
    border-radius: 18px;
    color: #ffffff;
    background: linear-gradient(135deg, var(--red), var(--red-2));
    box-shadow: 0 18px 40px rgba(211, 22, 40, .32);
    font-size: 26px;
    font-weight: 950;
}

.hub-brand strong {
    display: block;
    letter-spacing: .08em;
    font-size: 14px;
}

.hub-brand small {
    display: block;
    margin-top: 3px;
    color: rgba(255, 255, 255, .58);
    font-size: 12px;
    font-weight: 700;
}

.hub-nav {
    display: grid;
    gap: 8px;
    margin-top: 20px;
}

.hub-nav-item {
    display: grid;
    grid-template-columns: 34px 1fr auto;
    align-items: center;
    gap: 10px;
    min-height: 48px;
    padding: 8px 10px;
    border-radius: 16px;
    color: rgba(255, 255, 255, .72);
    font-size: 14px;
    font-weight: 850;
    transition: .18s ease;
}

.hub-nav-item:hover,
.hub-nav-item.active {
    color: #ffffff;
    background: rgba(255, 255, 255, .10);
}

.hub-nav-icon {
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 13px;
    background: rgba(255, 255, 255, .10);
}

.hub-nav-item b {
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .12);
    color: rgba(255, 255, 255, .76);
    font-size: 11px;
}

.hub-side-card {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: auto;
    padding: 14px;
    border-radius: 20px;
    background: rgba(255, 255, 255, .09);
    border: 1px solid rgba(255, 255, 255, .08);
}

.hub-live-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 8px rgba(34, 197, 94, .13);
}

.hub-side-card strong,
.hub-side-card small {
    display: block;
}

.hub-side-card small {
    margin-top: 2px;
    color: rgba(255, 255, 255, .58);
    font-size: 12px;
}

.hub-logout {
    display: block;
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: 16px;
    color: rgba(255, 255, 255, .78);
    background: rgba(255, 255, 255, .06);
    font-weight: 850;
    text-align: center;
}

.hub-main {
    min-width: 0;
}

.hub-topbar {
    min-height: 88px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 16px 18px;
    margin-bottom: 18px;
    background: rgba(255, 255, 255, .82);
    border: 1px solid rgba(255, 255, 255, .78);
    border-radius: 30px;
    box-shadow: var(--shadow-soft);
    backdrop-filter: blur(18px);
}

.hub-menu {
    display: none;
    width: 42px;
    height: 42px;
    border: 0;
    border-radius: 14px;
    color: var(--red);
    background: var(--red-soft);
    font-size: 20px;
    font-weight: 900;
}

.hub-title-block {
    min-width: 0;
}

.hub-eyebrow {
    display: block;
    color: var(--red);
    font-size: 12px;
    font-weight: 950;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.hub-title-block h1 {
    margin: 4px 0 0;
    font-size: 30px;
    letter-spacing: -.035em;
}

.hub-top-actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.hub-search {
    display: flex;
    align-items: center;
    gap: 9px;
    width: min(390px, 34vw);
    padding: 0 13px;
    min-height: 46px;
    border: 1px solid var(--panel-line);
    border-radius: 16px;
    background: #ffffff;
    color: var(--muted-2);
}

.hub-search input {
    width: 100%;
    border: 0;
    background: transparent;
    color: var(--text);
}

.hub-create-btn,
.hub-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 46px;
    padding: 0 16px;
    border: 0;
    border-radius: 16px;
    font-weight: 900;
    white-space: nowrap;
}

.hub-btn.small {
    min-height: 38px;
    padding: 0 12px;
    font-size: 13px;
}

.hub-create-btn,
.hub-btn.primary {
    color: #ffffff;
    background: linear-gradient(135deg, var(--red), var(--red-2));
    box-shadow: 0 14px 28px rgba(211, 22, 40, .22);
}

.hub-btn.ghost {
    color: var(--red);
    background: var(--red-soft);
    border: 1px solid #ffe0e4;
}

.hub-flash {
    margin-bottom: 18px;
    padding: 14px 16px;
    border-radius: 18px;
    font-weight: 900;
    box-shadow: var(--shadow-soft);
}

.hub-flash.success {
    color: var(--green);
    background: var(--green-soft);
}

.hub-flash.error {
    color: var(--red);
    background: var(--red-soft);
}

.hub-hero {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 18px;
    margin-bottom: 18px;
}

.hub-hero-card,
.hub-command-card,
.hub-kpis article,
.hub-caserne-card,
.hub-panel,
.hub-module-column,
.hub-section-head,
.hub-detail-head {
    background: rgba(255, 255, 255, .90);
    border: 1px solid rgba(255, 255, 255, .82);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-soft);
}

.hub-hero-card {
    position: relative;
    overflow: hidden;
    padding: 30px;
    min-height: 260px;
    background:
        radial-gradient(circle at 92% 10%, rgba(211, 22, 40, .15), transparent 30%),
        linear-gradient(135deg, #ffffff, #fff5f6);
}

.hub-hero-kicker {
    display: inline-flex;
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--green);
    background: var(--green-soft);
    font-size: 12px;
    font-weight: 950;
}

.hub-hero-card h2 {
    max-width: 760px;
    margin: 18px 0 10px;
    font-size: clamp(32px, 4vw, 52px);
    line-height: .96;
    letter-spacing: -.055em;
}

.hub-hero-card p {
    max-width: 700px;
    margin: 0;
    color: var(--muted);
    font-size: 16px;
    line-height: 1.6;
}

.hub-hero-actions {
    display: flex;
    gap: 10px;
    margin-top: 26px;
    flex-wrap: wrap;
}

.hub-command-card {
    padding: 26px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    background:
        radial-gradient(circle at 40% 0%, rgba(211, 22, 40, .18), transparent 38%),
        #ffffff;
}

.hub-command-card span {
    color: var(--red);
    font-size: 12px;
    font-weight: 950;
    letter-spacing: .10em;
    text-transform: uppercase;
}

.hub-command-card strong {
    margin-top: 8px;
    font-size: 64px;
    line-height: 1;
    letter-spacing: -.06em;
}

.hub-command-card small {
    margin-top: 8px;
    color: var(--muted);
    font-weight: 800;
}

.hub-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}

.hub-kpis article {
    padding: 22px;
}

.hub-kpis span,
.hub-kpis small {
    display: block;
    color: var(--muted);
    font-weight: 800;
}

.hub-kpis strong {
    display: block;
    margin: 7px 0;
    font-size: 36px;
    letter-spacing: -.04em;
}

.hub-section-head,
.hub-detail-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    padding: 22px;
    margin-bottom: 16px;
}

.hub-section-head h2,
.hub-detail-head h2 {
    margin: 4px 0 0;
    font-size: 28px;
    letter-spacing: -.035em;
}

.hub-section-head p,
.hub-detail-head p {
    margin: 6px 0 0;
    color: var(--muted);
}

.hub-caserne-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
}

.hub-caserne-card {
    padding: 20px;
}

.hub-caserne-top,
.hub-card-actions,
.hub-detail-badges {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.hub-caserne-card h3 {
    margin: 18px 0 4px;
    font-size: 21px;
    letter-spacing: -.03em;
}

.hub-caserne-card p {
    margin: 0;
    color: var(--muted);
}

.hub-status,
.hub-type-pill {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0 10px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 950;
}

.hub-status.ok {
    color: var(--green);
    background: var(--green-soft);
}

.hub-status.off {
    color: var(--red);
    background: var(--red-soft);
}

.hub-type-pill {
    color: #475569;
    background: #f1f5f9;
}

.hub-card-meta {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
    margin: 16px 0;
}

.hub-card-meta div {
    padding: 10px 12px;
    border-radius: 14px;
    background: var(--panel-soft);
}

.hub-card-meta span,
.hub-card-meta strong {
    display: block;
}

.hub-card-meta span {
    color: var(--muted);
    font-size: 11px;
    font-weight: 900;
    text-transform: uppercase;
}

.hub-card-meta strong {
    margin-top: 2px;
    font-size: 13px;
}

.hub-back {
    display: inline-flex;
    margin-bottom: 10px;
    color: var(--muted);
    font-size: 13px;
    font-weight: 900;
}

.hub-tabs {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}

.hub-tab {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 42px;
    padding: 0 14px;
    border-radius: 999px;
    color: #475569;
    background: rgba(255, 255, 255, .78);
    border: 1px solid rgba(255, 255, 255, .78);
    font-size: 13px;
    font-weight: 950;
}

.hub-tab.active {
    color: #ffffff;
    background: linear-gradient(135deg, var(--red), var(--red-2));
    box-shadow: 0 14px 30px rgba(211, 22, 40, .23);
}

.hub-panel,
.hub-form-panel {
    padding: 22px;
    margin-bottom: 18px;
}

.hub-form-title {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    margin-bottom: 18px;
}

.hub-form-title > span {
    width: 42px;
    height: 42px;
    display: grid;
    place-items: center;
    border-radius: 15px;
    color: var(--red);
    background: var(--red-soft);
    font-weight: 950;
}

.hub-form-title h3 {
    margin: 0;
    font-size: 23px;
    letter-spacing: -.03em;
}

.hub-form-title p {
    margin: 4px 0 0;
    color: var(--muted);
}

.hub-settings-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
}

.hub-settings-grid.compact {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.hub-settings-grid label,
.hub-line-editor label {
    display: grid;
    gap: 7px;
    color: #334155;
    font-size: 13px;
    font-weight: 900;
}

.hub-settings-grid input,
.hub-settings-grid select,
.hub-line-editor input {
    width: 100%;
    min-height: 44px;
    padding: 0 12px;
    border: 1px solid var(--panel-line);
    border-radius: 14px;
    background: #ffffff;
    color: var(--text);
}

.hub-check-card {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 16px;
    padding: 14px;
    border: 1px solid var(--panel-line);
    border-radius: 18px;
    background: var(--panel-soft);
}

.hub-check-card input,
.hub-check-inline input {
    width: auto;
}

.hub-check-card strong,
.hub-check-card small {
    display: block;
}

.hub-check-card small {
    color: var(--muted);
    margin-top: 3px;
}

.hub-form-actions {
    margin-top: 18px;
}

.hub-module-layout {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    align-items: start;
}

.hub-module-column {
    padding: 18px;
}

.hub-module-column-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 10px;
}

.hub-module-column-head span {
    font-size: 16px;
    font-weight: 950;
}

.hub-module-column-head b {
    padding: 4px 8px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #64748b;
    font-size: 12px;
}

.hub-module-toggle {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--panel-line);
}

.hub-module-toggle:last-child {
    border-bottom: 0;
}

.hub-module-toggle input[type="checkbox"] {
    display: none;
}

.hub-switch {
    position: relative;
    width: 46px;
    height: 26px;
    border-radius: 999px;
    background: #cbd5e1;
    transition: .18s ease;
}

.hub-switch::after {
    content: "";
    position: absolute;
    top: 4px;
    left: 4px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #ffffff;
    box-shadow: 0 4px 12px rgba(15, 23, 42, .22);
    transition: .18s ease;
}

.hub-module-toggle input:checked + .hub-switch {
    background: linear-gradient(135deg, var(--red), var(--red-2));
}

.hub-module-toggle input:checked + .hub-switch::after {
    transform: translateX(20px);
}

.hub-module-copy strong,
.hub-module-copy small,
.hub-module-copy em {
    display: block;
}

.hub-module-copy strong {
    font-size: 14px;
}

.hub-module-copy small {
    margin-top: 3px;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.35;
}

.hub-module-copy em {
    width: max-content;
    margin-top: 6px;
    padding: 3px 7px;
    border-radius: 999px;
    color: var(--orange);
    background: var(--orange-soft);
    font-size: 10px;
    font-style: normal;
    font-weight: 950;
    text-transform: uppercase;
}

.hub-module-toggle.required {
    opacity: .82;
}

.hub-sticky-actions {
    grid-column: 1 / -1;
    position: sticky;
    bottom: 16px;
    z-index: 5;
    display: flex;
    justify-content: flex-end;
    padding: 12px;
    border: 1px solid rgba(255, 255, 255, .8);
    border-radius: 22px;
    background: rgba(255, 255, 255, .82);
    backdrop-filter: blur(14px);
    box-shadow: var(--shadow-soft);
}

.hub-line-editor {
    display: grid;
    grid-template-columns: 1fr .45fr 1.4fr 1.3fr .42fr;
    gap: 10px;
    align-items: end;
    padding: 12px;
    border: 1px solid var(--panel-line);
    border-radius: 18px;
    background: var(--panel-soft);
    margin-bottom: 10px;
}

.hub-line-editor.links {
    grid-template-columns: 1fr .45fr 1.7fr .6fr .42fr;
}

.hub-check-inline {
    display: flex !important;
    align-items: center;
    gap: 8px;
    min-height: 44px;
}

.hub-table-wrap {
    overflow: auto;
    border: 1px solid var(--panel-line);
    border-radius: 18px;
}

.hub-table {
    width: 100%;
    min-width: 720px;
    border-collapse: collapse;
    background: #ffffff;
}

.hub-table th,
.hub-table td {
    padding: 14px;
    border-bottom: 1px solid var(--panel-line);
    text-align: left;
    vertical-align: middle;
}

.hub-table th {
    color: var(--muted);
    font-size: 12px;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
    background: #f8fafc;
}

.hub-table td small {
    display: block;
    margin-top: 3px;
    color: var(--muted);
}

.hub-login-body {
    display: grid;
    place-items: center;
    min-height: 100vh;
    background:
        radial-gradient(circle at 20% 0%, rgba(211, 22, 40, .22), transparent 32%),
        linear-gradient(135deg, #07090f, #121826);
}

.hub-login-shell {
    width: min(520px, calc(100vw - 28px));
}

.hub-login-card {
    padding: 30px;
    border-radius: 32px;
    background: rgba(255, 255, 255, .94);
    box-shadow: var(--shadow);
}

.hub-login-brand {
    display: flex;
    align-items: center;
    gap: 14px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--panel-line);
}

.hub-login-brand > span {
    width: 52px;
    height: 52px;
    display: grid;
    place-items: center;
    border-radius: 18px;
    color: #ffffff;
    background: linear-gradient(135deg, var(--red), var(--red-2));
    font-size: 27px;
    font-weight: 950;
}

.hub-login-brand strong,
.hub-login-brand small {
    display: block;
}

.hub-login-brand small {
    margin-top: 3px;
    color: var(--muted);
}

.hub-login-card h1 {
    margin: 26px 0 6px;
    font-size: 34px;
    letter-spacing: -.04em;
}

.hub-login-card p {
    margin: 0;
    color: var(--muted);
}

.hub-login-form {
    display: grid;
    gap: 14px;
    margin-top: 22px;
}

.hub-login-form label {
    display: grid;
    gap: 8px;
    font-weight: 900;
}

.hub-login-form input {
    min-height: 48px;
    padding: 0 14px;
    border: 1px solid var(--panel-line);
    border-radius: 16px;
    background: #ffffff;
}

@media (max-width: 1280px) {
    .hub-caserne-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .hub-module-layout {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 980px) {
    .hub-shell {
        grid-template-columns: 1fr;
        padding: 10px;
    }

    .hub-sidebar {
        position: fixed;
        left: 10px;
        top: 10px;
        z-index: 50;
        width: 292px;
        transform: translateX(-115%);
        transition: .2s ease;
    }

    .hub-sidebar.open {
        transform: translateX(0);
    }

    .hub-menu {
        display: grid;
        place-items: center;
    }

    .hub-topbar {
        flex-wrap: wrap;
    }

    .hub-top-actions {
        width: 100%;
        flex-wrap: wrap;
    }

    .hub-search {
        width: 100%;
    }

    .hub-hero,
    .hub-kpis,
    .hub-settings-grid,
    .hub-settings-grid.compact,
    .hub-line-editor,
    .hub-line-editor.links {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 640px) {
    .hub-hero-card h2 {
        font-size: 32px;
    }

    .hub-caserne-grid,
    .hub-kpis {
        grid-template-columns: 1fr;
    }

    .hub-section-head,
    .hub-detail-head {
        align-items: flex-start;
        flex-direction: column;
    }
}


.settings-board {
    display: grid;
    gap: 18px;
}

.settings-section {
    background: var(--panel);
    border: 1px solid var(--line);
    border-radius: 22px;
    padding: 18px;
    box-shadow: var(--shadow-soft);
}

.settings-section-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--line);
}

.settings-section-head h3 {
    margin: 0;
    font-size: 18px;
}

.settings-section-head span {
    color: var(--muted);
    font-size: 12px;
    font-weight: 800;
}

.settings-list {
    display: grid;
}

.setting-row {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(260px, .9fr);
    gap: 18px;
    align-items: center;
    padding: 16px 0;
    border-bottom: 1px solid var(--line);
}

.setting-row:last-child {
    border-bottom: 0;
}

.setting-meta {
    display: grid;
    gap: 4px;
}

.setting-meta strong {
    color: var(--text);
    font-size: 14px;
}

.setting-meta small {
    color: var(--muted);
    font-size: 12px;
    line-height: 1.35;
}

.setting-meta em {
    width: max-content;
    padding: 4px 8px;
    border-radius: 999px;
    background: rgba(245, 158, 11, .14);
    color: var(--orange);
    font-size: 10px;
    font-style: normal;
    font-weight: 900;
    text-transform: uppercase;
}

.setting-control input[type="text"],
.setting-control input[type="time"],
.setting-control input[type="color"],
.setting-control select,
.setting-control textarea {
    width: 100%;
    border: 1px solid var(--line);
    border-radius: 14px;
    background: rgba(255, 255, 255, .04);
    color: var(--text);
    padding: 11px 12px;
    outline: none;
}

.setting-control textarea {
    resize: vertical;
    min-height: 84px;
}

.setting-control input[type="checkbox"] {
    width: 22px;
    height: 22px;
}

.sticky-save {
    position: sticky;
    bottom: 18px;
    z-index: 5;
    display: flex;
    justify-content: flex-end;
    padding: 14px;
    border: 1px solid var(--line);
    border-radius: 18px;
    background: rgba(15, 23, 42, .92);
    backdrop-filter: blur(14px);
}


/* Modules séparés : visibilité cockpit / fonctions internes */
.hub-module-board {
    display: grid;
    gap: 18px;
    margin-bottom: 18px;
}

.hub-module-zone {
    display: grid;
    gap: 14px;
}

.hub-module-zone-head {
    padding: 20px 22px;
    border-radius: var(--radius-xl);
    background: rgba(255, 255, 255, .88);
    border: 1px solid rgba(255, 255, 255, .82);
    box-shadow: var(--shadow-soft);
}

.hub-module-zone-head h3 {
    margin: 4px 0 0;
    font-size: 24px;
    letter-spacing: -.035em;
}

.hub-module-zone-head p {
    margin: 6px 0 0;
    color: var(--muted);
}

.hub-module-column.visibility {
    border-left: 5px solid var(--red);
}

.hub-module-column.feature {
    border-left: 5px solid var(--blue);
}

.hub-module-column.feature .hub-module-toggle input:checked + .hub-switch {
    background: linear-gradient(135deg, var(--blue), var(--purple));
}

/* Alarmes / mailbox */
.hub-mailbox-panel {
    overflow: hidden;
}

.hub-mailbox-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 14px;
}

.hub-mailbox-status {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 16px;
}

.hub-mailbox-status div {
    min-height: 76px;
    padding: 13px;
    border: 1px solid var(--panel-line);
    border-radius: 16px;
    background: var(--panel-soft);
}

.hub-mailbox-status span,
.hub-mailbox-status strong {
    display: block;
}

.hub-mailbox-status span {
    color: var(--muted);
    font-size: 11px;
    font-weight: 950;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.hub-mailbox-status strong {
    margin-top: 7px;
    color: var(--text);
    font-size: 13px;
    line-height: 1.35;
    word-break: break-word;
}

@media (max-width: 980px) {
    .hub-mailbox-options,
    .hub-mailbox-status {
        grid-template-columns: 1fr;
    }
}


/* HUB settings V2 lisible */
.hub-identity-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}.hub-identity-main{min-width:0}.hub-color-field span{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px}.hub-color-field input[type="color"]{padding:4px}.hub-brand-preview{position:sticky;top:18px;display:grid;gap:14px;padding:18px;border:1px solid var(--panel-line);border-radius:24px;background:linear-gradient(180deg,#fff,#fff7f8);box-shadow:var(--shadow-soft)}.hub-brand-preview-head strong,.hub-brand-preview-head small{display:block}.hub-brand-preview-head strong{font-size:22px;letter-spacing:-.035em}.hub-brand-preview-head small{margin-top:3px;color:var(--muted);font-weight:800}.hub-preview-card{min-height:170px;padding:18px;border-radius:22px;color:#fff;background:linear-gradient(135deg,var(--preview-primary),var(--preview-secondary));box-shadow:0 20px 40px rgba(159,7,18,.20)}.hub-preview-top{display:flex;gap:12px;align-items:center}.hub-preview-top img{width:54px;height:54px;object-fit:contain;border-radius:16px;background:rgba(255,255,255,.95);padding:7px}.hub-preview-top img.missing{display:none}.hub-preview-top b,.hub-preview-top span{display:block}.hub-preview-top span{opacity:.78;font-size:12px;font-weight:800}.hub-preview-bars{display:grid;gap:9px;margin-top:24px}.hub-preview-bars i{display:block;height:10px;border-radius:999px;background:rgba(255,255,255,.35)}.hub-preview-bars i:nth-child(2){width:72%}.hub-preview-bars i:nth-child(3){width:48%}.hub-asset-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.hub-asset-previews div{display:grid;gap:7px;padding:10px;border:1px solid var(--panel-line);border-radius:16px;background:#fff}.hub-asset-previews span{color:var(--muted);font-size:10px;font-weight:950;text-transform:uppercase}.hub-asset-previews img{width:100%;height:54px;object-fit:contain;border-radius:12px;background:#f8fafc}.hub-asset-previews img.missing{opacity:.2}.hub-settings-page{display:block}.hub-settings-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,430px) 110px;gap:14px;align-items:center;margin-bottom:18px;padding:22px;border-radius:28px;background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.82);box-shadow:var(--shadow-soft)}.hub-settings-hero h3{margin:4px 0 4px;font-size:30px;letter-spacing:-.04em}.hub-settings-hero p{margin:0;color:var(--muted);line-height:1.45}.hub-settings-search{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;border:1px solid var(--panel-line);border-radius:16px;background:#fff;color:var(--muted)}.hub-settings-search input{width:100%;border:0;background:transparent;color:var(--text)}.hub-settings-total{display:grid;place-items:center;min-height:74px;border-radius:18px;background:var(--red-soft);color:var(--red)}.hub-settings-total span{font-size:10px;font-weight:950;text-transform:uppercase}.hub-settings-total strong{font-size:28px;line-height:1}.hub-settings-layout{display:grid;grid-template-columns:260px minmax(0,1fr);gap:18px;align-items:start}.hub-settings-nav{position:sticky;top:18px;display:grid;gap:8px;padding:14px;border-radius:24px;background:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.82);box-shadow:var(--shadow-soft)}.hub-settings-nav>strong{padding:7px 8px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}.hub-settings-nav a{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;border-radius:15px;color:#334155;font-size:13px;font-weight:900}.hub-settings-nav a:hover{background:var(--red-soft);color:var(--red)}.hub-settings-nav a span{display:grid;place-items:center;width:30px;height:30px;border-radius:11px;background:#f1f5f9}.hub-settings-nav a em{padding:3px 7px;border-radius:999px;background:#f8fafc;color:var(--muted);font-size:11px;font-style:normal}.hub-settings-content{display:grid;gap:16px}.settings-section.modern{padding:0;overflow:hidden;border:1px solid rgba(255,255,255,.82);background:rgba(255,255,255,.94);box-shadow:var(--shadow-soft)}.settings-section-head.modern{padding:18px 20px;border-bottom:1px solid var(--panel-line);background:linear-gradient(135deg,#fff,#fff7f7)}.settings-section-title{display:flex;gap:12px;align-items:flex-start}.settings-section-title>span{display:grid;place-items:center;width:42px;height:42px;border-radius:15px;background:var(--red-soft);color:var(--red);font-weight:950}.settings-section-title h3{margin:0;font-size:21px;letter-spacing:-.035em}.settings-section-title p{margin:4px 0 0;color:var(--muted);font-size:13px}.settings-count{padding:6px 10px;border-radius:999px;background:#f8fafc;color:var(--muted);font-size:12px;font-weight:950}.settings-grid-modern{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px}.setting-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,.72fr);gap:16px;align-items:center;min-height:92px;padding:16px;border:1px solid var(--panel-line);border-radius:18px;background:#fff}.setting-card.is-bool{grid-template-columns:minmax(0,1fr) 170px}.setting-card-meta{display:grid;gap:5px;min-width:0}.setting-card-meta strong{font-size:14px;color:var(--text)}.setting-card-meta small{color:var(--muted);font-size:12px;line-height:1.35}.setting-card-meta code{width:max-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;padding:4px 7px;border-radius:999px;background:#f8fafc;color:#64748b;font-size:10px;font-weight:900}.setting-card-control input[type="text"],.setting-card-control input[type="url"],.setting-card-control input[type="time"],.setting-card-control input[type="number"],.setting-card-control select,.setting-card-control textarea{width:100%;border:1px solid var(--panel-line);border-radius:14px;background:#fff;color:var(--text);padding:11px 12px;outline:none}.setting-card-control input[type="color"]{width:100%;height:44px;padding:4px;border:1px solid var(--panel-line);border-radius:14px;background:#fff}.setting-card-control textarea{min-height:96px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.setting-toggle{display:flex;align-items:center;justify-content:flex-end;gap:10px}.setting-toggle input{display:none}.setting-toggle span{position:relative;width:50px;height:28px;border-radius:999px;background:#cbd5e1;transition:.18s}.setting-toggle span:after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.22);transition:.18s}.setting-toggle input:checked+span{background:linear-gradient(135deg,var(--red),var(--red-2))}.setting-toggle input:checked+span:after{transform:translateX(22px)}.setting-toggle b{min-width:68px;color:var(--muted);font-size:12px}.setting-required{position:absolute;right:12px;top:10px;padding:3px 7px;border-radius:999px;background:var(--orange-soft);color:var(--orange);font-size:10px;font-weight:950;font-style:normal;text-transform:uppercase}.hub-settings-savebar{position:sticky;bottom:16px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:18px;padding:13px 14px;border-radius:22px;background:rgba(11,15,25,.92);color:#fff;box-shadow:var(--shadow);backdrop-filter:blur(14px)}.hub-settings-savebar span{color:rgba(255,255,255,.70);font-size:13px;font-weight:800}@media (max-width:1280px){.hub-identity-layout,.hub-settings-layout{grid-template-columns:1fr}.hub-brand-preview,.hub-settings-nav{position:relative;top:auto}.hub-settings-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-settings-nav>strong{grid-column:1/-1}.settings-grid-modern{grid-template-columns:1fr}}@media (max-width:820px){.hub-settings-hero{grid-template-columns:1fr}.hub-settings-nav{grid-template-columns:1fr}.setting-card,.setting-card.is-bool{grid-template-columns:1fr}.hub-settings-savebar{align-items:stretch;flex-direction:column}.hub-asset-previews{grid-template-columns:1fr}}



/* HUB dynamic settings final */
.hub-settings-page strong { font-weight: 950; }
.hub-detail-head { background: rgba(255,255,255,.94); }
.hub-identity-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 18px;
    align-items: start;
}
.hub-brand-preview {
    position: sticky;
    top: 18px;
    display: grid;
    gap: 14px;
    padding: 18px;
    border: 1px solid var(--panel-line);
    border-radius: 24px;
    background: linear-gradient(180deg,#fff,#fff7f8);
    box-shadow: var(--shadow-soft);
}
.hub-brand-preview-head strong,
.hub-brand-preview-head small { display:block; }
.hub-brand-preview-head strong { font-size: 22px; letter-spacing: -.035em; }
.hub-brand-preview-head small { margin-top:3px; color:var(--muted); font-weight:800; }
.hub-preview-card {
    min-height: 170px;
    padding: 18px;
    border-radius: 22px;
    color: #fff;
    background: linear-gradient(135deg,var(--preview-primary),var(--preview-secondary));
    box-shadow: 0 20px 40px rgba(159,7,18,.20);
}
.hub-preview-top { display:flex; gap:12px; align-items:center; }
.hub-preview-top img {
    width: 54px; height: 54px; object-fit: contain; border-radius: 16px;
    background: rgba(255,255,255,.95); padding: 7px;
}
.hub-preview-top img.missing { display:none; }
.hub-preview-top b,.hub-preview-top span{display:block}
.hub-preview-top span{opacity:.78;font-size:12px;font-weight:800}
.hub-preview-bars{display:grid;gap:9px;margin-top:24px}
.hub-preview-bars i{display:block;height:10px;border-radius:999px;background:rgba(255,255,255,.35)}
.hub-preview-bars i:nth-child(2){width:72%}
.hub-preview-bars i:nth-child(3){width:48%}
.hub-asset-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.hub-asset-previews div{display:grid;gap:7px;padding:10px;border:1px solid var(--panel-line);border-radius:16px;background:#fff}
.hub-asset-previews span{color:var(--muted);font-size:10px;font-weight:950;text-transform:uppercase}
.hub-asset-previews img{width:100%;height:54px;object-fit:contain;border-radius:12px;background:#f8fafc}
.hub-asset-previews img.missing{opacity:.2}
.hub-color-field span{display:grid;grid-template-columns:58px minmax(0,1fr);gap:8px}
.hub-color-field input[type="color"]{padding:4px}

.hub-settings-hero {
    display: grid;
    grid-template-columns: minmax(0,1fr) minmax(280px,430px) 110px;
    gap: 14px;
    align-items: center;
    margin-bottom: 18px;
    padding: 22px;
    border-radius: 28px;
    background: rgba(255,255,255,.94);
    border: 1px solid rgba(255,255,255,.82);
    box-shadow: var(--shadow-soft);
}
.hub-settings-hero h3{margin:4px 0 4px;font-size:30px;letter-spacing:-.04em}
.hub-settings-hero p{margin:0;color:var(--muted);line-height:1.45}
.hub-settings-search{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;border:1px solid var(--panel-line);border-radius:16px;background:#fff;color:var(--muted)}
.hub-settings-search input{width:100%;border:0;background:transparent;color:var(--text)}
.hub-settings-total{display:grid;place-items:center;min-height:74px;border-radius:18px;background:var(--red-soft);color:var(--red)}
.hub-settings-total span{font-size:10px;font-weight:950;text-transform:uppercase}
.hub-settings-total strong{font-size:28px;line-height:1}

.hub-settings-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:18px;align-items:start}
.hub-settings-nav{position:sticky;top:18px;display:grid;gap:8px;padding:14px;border-radius:24px;background:rgba(255,255,255,.94);border:1px solid rgba(255,255,255,.82);box-shadow:var(--shadow-soft)}
.hub-settings-nav>strong{padding:7px 8px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.hub-settings-nav a{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;border-radius:15px;color:#334155;font-size:13px;font-weight:900}
.hub-settings-nav a:hover,.hub-settings-nav a.active{background:var(--red-soft);color:var(--red)}
.hub-settings-nav a span{display:grid;place-items:center;width:30px;height:30px;border-radius:11px;background:#f1f5f9}
.hub-settings-nav a em{padding:3px 7px;border-radius:999px;background:#f8fafc;color:var(--muted);font-size:11px;font-style:normal}

.hub-settings-content{display:grid;gap:16px}
.settings-section.modern{padding:0;overflow:hidden;border:1px solid rgba(255,255,255,.82);background:rgba(255,255,255,.94);box-shadow:var(--shadow-soft)}
.settings-section-head.modern{padding:18px 20px;border-bottom:1px solid var(--panel-line);background:linear-gradient(135deg,#fff,#fff7f7)}
.settings-section-title{display:flex;gap:12px;align-items:flex-start}
.settings-section-title>span{display:grid;place-items:center;width:42px;height:42px;border-radius:15px;background:var(--red-soft);color:var(--red);font-weight:950}
.settings-section-title h3{margin:0;font-size:21px;letter-spacing:-.035em}
.settings-section-title p{margin:4px 0 0;color:var(--muted);font-size:13px}
.settings-count{padding:6px 10px;border-radius:999px;background:#f8fafc;color:var(--muted);font-size:12px;font-weight:950}
.settings-grid-modern{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:16px}
.setting-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,.72fr);gap:16px;align-items:center;min-height:92px;padding:16px;border:1px solid var(--panel-line);border-radius:18px;background:#fff}
.setting-card:hover{border-color:#ffd1d7;box-shadow:0 16px 34px rgba(15,23,42,.07)}
.setting-card.is-bool{grid-template-columns:minmax(0,1fr) 170px}
.setting-card-meta{display:grid;gap:5px;min-width:0}
.setting-card-meta strong{font-size:14px;color:var(--text)}
.setting-card-meta small{color:var(--muted);font-size:12px;line-height:1.35}
.setting-card-meta code{width:max-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;padding:4px 7px;border-radius:999px;background:#f8fafc;color:#64748b;font-size:10px;font-weight:900}
.setting-card-control input[type="text"],.setting-card-control input[type="url"],.setting-card-control input[type="time"],.setting-card-control input[type="number"],.setting-card-control select,.setting-card-control textarea{width:100%;border:1px solid var(--panel-line);border-radius:14px;background:#fff;color:var(--text);padding:11px 12px;outline:none}
.setting-card-control input[type="color"]{width:100%;height:44px;padding:4px;border:1px solid var(--panel-line);border-radius:14px;background:#fff}
.setting-card-control textarea{min-height:96px;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.setting-toggle{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.setting-toggle input{display:none}
.setting-toggle span{position:relative;width:50px;height:28px;border-radius:999px;background:#cbd5e1;transition:.18s}
.setting-toggle span:after{content:"";position:absolute;top:4px;left:4px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 4px 12px rgba(15,23,42,.22);transition:.18s}
.setting-toggle input:checked+span{background:linear-gradient(135deg,var(--red),var(--red-2))}
.setting-toggle input:checked+span:after{transform:translateX(22px)}
.setting-toggle b{min-width:68px;color:var(--muted);font-size:12px}
.setting-required{position:absolute;right:12px;top:10px;padding:3px 7px;border-radius:999px;background:var(--orange-soft);color:var(--orange);font-size:10px;font-weight:950;font-style:normal;text-transform:uppercase}
.hub-settings-savebar{position:sticky;bottom:16px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:18px;padding:13px 14px;border-radius:22px;background:rgba(11,15,25,.92);color:#fff;box-shadow:var(--shadow);backdrop-filter:blur(14px)}
.hub-settings-savebar span{color:rgba(255,255,255,.70);font-size:13px;font-weight:800}

@media (max-width:1280px){
    .hub-identity-layout,.hub-settings-layout{grid-template-columns:1fr}
    .hub-brand-preview,.hub-settings-nav{position:relative;top:auto}
    .hub-settings-nav{grid-template-columns:repeat(2,minmax(0,1fr))}
    .hub-settings-nav>strong{grid-column:1/-1}
    .settings-grid-modern{grid-template-columns:1fr}
}
@media (max-width:820px){
    .hub-settings-hero{grid-template-columns:1fr}
    .hub-settings-nav{grid-template-columns:1fr}
    .setting-card,.setting-card.is-bool{grid-template-columns:1fr}
    .hub-settings-savebar{align-items:stretch;flex-direction:column}
    .hub-asset-previews{grid-template-columns:1fr}
}

/* Modules V3 — compact, dynamique, par box et fonctions internes */
.hub-module-manager {
    display: grid;
    gap: 16px;
}

.hub-module-console {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 18px;
    align-items: center;
    padding: 22px;
    border-radius: 28px;
    background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,247,248,.92));
    border: 1px solid rgba(255,255,255,.86);
    box-shadow: var(--shadow-soft);
}

.hub-module-console h3 {
    margin: 4px 0 4px;
    font-size: 30px;
    letter-spacing: -.045em;
}

.hub-module-console p {
    margin: 0;
    color: var(--muted);
    line-height: 1.45;
}

.hub-module-console-stats {
    display: grid;
    grid-template-columns: repeat(2, 96px);
    gap: 10px;
}

.hub-module-console-stats div {
    display: grid;
    place-items: center;
    min-height: 74px;
    border-radius: 18px;
    background: #ffffff;
    border: 1px solid var(--panel-line);
}

.hub-module-console-stats strong,
.hub-module-console-stats span {
    display: block;
}

.hub-module-console-stats strong {
    color: var(--red);
    font-size: 28px;
    line-height: 1;
}

.hub-module-console-stats span {
    margin-top: 4px;
    color: var(--muted);
    font-size: 11px;
    font-weight: 950;
    text-transform: uppercase;
}

.hub-module-section {
    display: grid;
    gap: 12px;
}

.hub-module-section-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 14px;
    padding: 18px 20px;
    border-radius: 24px;
    background: rgba(255,255,255,.94);
    border: 1px solid rgba(255,255,255,.86);
    box-shadow: var(--shadow-soft);
}

.hub-module-section-head h3 {
    margin: 4px 0 4px;
    font-size: 23px;
    letter-spacing: -.035em;
}

.hub-module-section-head p {
    margin: 0;
    color: var(--muted);
}

.hub-module-section-head > b {
    flex: 0 0 auto;
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--red);
    background: var(--red-soft);
    font-size: 12px;
    font-weight: 950;
}

.hub-module-visibility-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.hub-module-visibility-card {
    display: grid;
    grid-template-columns: 38px minmax(0, 1fr) 46px;
    align-items: center;
    gap: 10px;
    min-height: 82px;
    padding: 12px;
    border: 1px solid var(--panel-line);
    border-radius: 20px;
    background: rgba(255,255,255,.94);
    box-shadow: 0 10px 24px rgba(15, 23, 42, .055);
    transition: .16s ease;
}

.hub-module-visibility-card:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-soft);
}

.hub-module-visibility-card.enabled {
    border-color: rgba(159, 7, 18, .24);
    background: linear-gradient(135deg, #fff, #fff7f8);
}

.hub-module-visibility-card input[type="checkbox"],
.hub-module-master-toggle input[type="checkbox"],
.hub-module-feature input[type="checkbox"] {
    display: none;
}

.hub-module-icon {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 14px;
    color: var(--red);
    background: var(--red-soft);
    font-weight: 950;
    font-size: 17px;
}

.hub-module-icon.large {
    width: 46px;
    height: 46px;
    border-radius: 16px;
    font-size: 20px;
}

.hub-module-visibility-copy {
    min-width: 0;
}

.hub-module-visibility-copy strong,
.hub-module-visibility-copy small {
    display: block;
}

.hub-module-visibility-copy strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
}

.hub-module-visibility-copy small {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: 3px;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.3;
}

.hub-module-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
}

.hub-module-card {
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.86);
    border-radius: 24px;
    background: rgba(255,255,255,.95);
    box-shadow: var(--shadow-soft);
}

.hub-module-card.disabled {
    opacity: .86;
}

.hub-module-card-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 15px;
    border-bottom: 1px solid var(--panel-line);
    background: linear-gradient(135deg, #ffffff, #fff8f9);
}

.hub-module-title {
    display: flex;
    gap: 11px;
    min-width: 0;
    align-items: center;
}

.hub-module-title h4 {
    margin: 0;
    font-size: 17px;
    letter-spacing: -.025em;
}

.hub-module-title p {
    margin: 3px 0 0;
    color: var(--muted);
    font-size: 12px;
    line-height: 1.35;
}

.hub-module-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
}

.hub-module-badges span,
.hub-module-badges b {
    display: inline-flex;
    justify-content: center;
    width: max-content;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 950;
}

.hub-module-badges span.ok {
    color: var(--green);
    background: var(--green-soft);
}

.hub-module-badges span.off {
    color: var(--muted);
    background: #f1f5f9;
}

.hub-module-badges b {
    color: var(--red);
    background: var(--red-soft);
}

.hub-module-master-toggle {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 46px;
    gap: 12px;
    align-items: center;
    margin: 12px;
    padding: 11px 12px;
    border: 1px solid rgba(159, 7, 18, .16);
    border-radius: 17px;
    background: var(--red-soft);
}

.hub-module-master-toggle strong,
.hub-module-master-toggle small {
    display: block;
}

.hub-module-master-toggle strong {
    font-size: 13px;
}

.hub-module-master-toggle small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 11px;
}

.hub-module-feature-list {
    display: grid;
    gap: 8px;
    padding: 0 12px 12px;
}

.hub-module-feature {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 46px;
    align-items: center;
    gap: 12px;
    min-height: 66px;
    padding: 10px 12px;
    border: 1px solid var(--panel-line);
    border-radius: 16px;
    background: #ffffff;
}

.hub-module-feature.enabled {
    border-color: rgba(37, 99, 235, .20);
    background: linear-gradient(135deg, #ffffff, #f8fbff);
}

.hub-module-feature-copy {
    min-width: 0;
}

.hub-module-feature-copy strong,
.hub-module-feature-copy small,
.hub-module-feature-copy code {
    display: block;
}

.hub-module-feature-copy strong {
    font-size: 13px;
}

.hub-module-feature-copy small {
    margin-top: 2px;
    color: var(--muted);
    font-size: 11px;
    line-height: 1.3;
}

.hub-module-feature-copy code {
    width: max-content;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-top: 5px;
    padding: 3px 7px;
    border-radius: 999px;
    color: #64748b;
    background: #f8fafc;
    font-size: 10px;
    font-weight: 900;
}

.hub-module-empty {
    padding: 12px;
    border: 1px dashed var(--panel-line);
    border-radius: 16px;
    color: var(--muted);
    background: #f8fafc;
    font-size: 12px;
    font-weight: 850;
}

.hub-sticky-actions.module-actions {
    align-items: center;
    justify-content: space-between;
    color: #ffffff;
    background: rgba(11, 15, 25, .92);
}

.hub-sticky-actions.module-actions span {
    color: rgba(255,255,255,.72);
    font-size: 13px;
    font-weight: 800;
}

.hub-module-master-toggle .hub-switch,
.hub-module-feature .hub-switch {
    justify-self: end;
}

.hub-module-feature input:checked + .hub-switch,
.hub-module-master-toggle input:checked + .hub-switch {
    background: linear-gradient(135deg, var(--blue), var(--purple));
}

.hub-module-feature input:checked + .hub-switch::after,
.hub-module-master-toggle input:checked + .hub-switch::after {
    transform: translateX(20px);
}

@media (max-width: 1500px) {
    .hub-module-visibility-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 1180px) {
    .hub-module-card-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 980px) {
    .hub-module-console,
    .hub-module-card-head {
        grid-template-columns: 1fr;
    }

    .hub-module-console-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .hub-module-visibility-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .hub-module-badges {
        align-items: flex-start;
        flex-direction: row;
        flex-wrap: wrap;
    }
}

@media (max-width: 640px) {
    .hub-module-visibility-grid {
        grid-template-columns: 1fr;
    }

    .hub-sticky-actions.module-actions {
        align-items: stretch;
        flex-direction: column;
    }
}

/* HUB modules V3 : séparation nette, obligatoire visible, variantes équipe */
.hub-module-console{margin-bottom:14px}.hub-module-section{margin-bottom:16px}.hub-module-section.compact{padding:16px}.hub-module-visibility-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.hub-module-visibility-card{min-height:86px;padding:12px;border:1px solid var(--panel-line);border-radius:18px;background:#fff;box-shadow:none}.hub-module-visibility-card.enabled{border-color:rgba(159,7,18,.28);background:linear-gradient(135deg,#fff,#fff7f8)}.hub-module-visibility-card.required{border-style:solid;background:linear-gradient(135deg,#fff7f8,#fff)}.hub-module-visibility-copy em,.hub-module-master-toggle em,.hub-module-feature-copy em{display:inline-flex;width:max-content;margin-top:6px;padding:3px 7px;border-radius:999px;background:var(--orange-soft);color:var(--orange);font-size:10px;font-style:normal;font-weight:950;text-transform:uppercase;letter-spacing:.04em}.hub-module-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.hub-module-card{border:1px solid rgba(226,232,240,.95);border-radius:22px;overflow:hidden;background:rgba(255,255,255,.96)}.hub-module-card-head{padding:14px 14px 12px;border-bottom:1px solid var(--panel-line);background:linear-gradient(135deg,#fff,#f8fafc)}.hub-module-title h4{font-size:17px}.hub-module-title p{font-size:12px;line-height:1.35}.hub-module-badges span,.hub-module-badges b{font-size:11px}.hub-module-master-toggle{margin:10px 12px 8px;padding:12px 12px;border:1px solid rgba(159,7,18,.20);border-radius:17px;background:linear-gradient(135deg,#fff7f8,#fff)}.hub-module-feature-list{gap:7px;padding:0 12px 12px}.hub-module-feature{min-height:72px;padding:12px;border:1px solid #e8edf5;border-radius:16px;background:#fff}.hub-module-feature + .hub-module-feature{margin-top:0}.hub-module-feature.enabled{border-color:rgba(37,99,235,.24);box-shadow:0 8px 18px rgba(15,23,42,.04)}.hub-module-feature.required{border-color:rgba(184,107,0,.28);background:linear-gradient(135deg,#fff,#fffaf1)}.hub-module-feature-copy strong{font-size:13px}.hub-module-feature-copy small{max-width:560px}.hub-module-feature-copy code{background:#f1f5f9}.hub-module-card[data-module-card="team"]{border-color:rgba(159,7,18,.24)}.hub-module-card[data-module-card="team"] .hub-module-card-head{background:linear-gradient(135deg,#fff,#fff1f2)}.hub-module-card[data-module-card="team"] .hub-module-feature code{color:var(--red);background:var(--red-soft)}.hub-switch{flex:0 0 auto}.hub-module-master-toggle input:disabled + .hub-switch,.hub-module-feature input:disabled + .hub-switch,.hub-module-visibility-card input:disabled ~ .hub-switch{opacity:.92;filter:saturate(1.05)}@media (max-width:1500px){.hub-module-visibility-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.hub-module-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1180px){.hub-module-card-grid{grid-template-columns:1fr}.hub-module-visibility-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.hub-module-visibility-grid{grid-template-columns:1fr}}


/* Dirty state + dynamic repeaters */
.hub-dirty-savebar { display: none !important; }
.hub-dirty-savebar.visible,
.hub-dirty-form.is-dirty .hub-dirty-savebar { display: flex !important; }
.hub-dirty-form.is-dirty .hub-form-title,
.hub-dirty-form.is-dirty .hub-module-console,
.hub-dirty-form.is-dirty .hub-settings-hero { outline: 2px solid rgba(184, 107, 0, .25); outline-offset: 2px; }
.hub-repeater { display: grid; gap: 12px; }
.hub-repeater-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border: 1px solid var(--panel-line); border-radius: 18px; background: linear-gradient(135deg, #fff, #f8fafc); }
.hub-repeater-head strong,.hub-repeater-head small { display: block; }
.hub-repeater-head small { margin-top: 3px; color: var(--muted); font-size: 12px; font-weight: 900; }
.hub-repeater-lines { display: grid; gap: 10px; }
.hub-line-editor.form-row { grid-template-columns: 1fr .35fr 1.45fr 1.2fr .36fr 42px; }
.hub-line-editor.links { grid-template-columns: 1fr .35fr 1.65fr .45fr .34fr 42px; }
.hub-icon-btn { display: inline-grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: 14px; font-size: 20px; font-weight: 950; }
.hub-icon-btn.danger { color: var(--red); background: var(--red-soft); }
.hub-btn:disabled,.hub-create-btn:disabled,button:disabled { cursor: not-allowed; opacity: .48; }
.hub-module-feature input[type="checkbox"]:checked ~ .hub-switch,
.hub-module-master-toggle input[type="checkbox"]:checked ~ .hub-switch,
.hub-module-visibility-card input[type="checkbox"]:checked ~ .hub-switch { background: linear-gradient(135deg, var(--red), var(--red-2)); }
.hub-module-feature input[type="checkbox"]:checked ~ .hub-switch::after,
.hub-module-master-toggle input[type="checkbox"]:checked ~ .hub-switch::after,
.hub-module-visibility-card input[type="checkbox"]:checked ~ .hub-switch::after { transform: translateX(20px); }
.hub-module-feature input[type="checkbox"]:checked ~ .hub-switch,
.hub-module-master-toggle input[type="checkbox"]:checked ~ .hub-switch { background: linear-gradient(135deg, var(--blue), var(--purple)); }
@media (max-width: 980px) { .hub-line-editor.form-row,.hub-line-editor.links { grid-template-columns: 1fr; } .hub-repeater-head { align-items: stretch; flex-direction: column; } .hub-icon-btn { width: 100%; } }

/* HUB — Modules à venir */
.hub-future-page { display: grid; gap: 18px; }
.hub-future-hero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 520px); gap: 18px; align-items: center; padding: 24px; border-radius: 30px; background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(255,247,248,.92)); border: 1px solid rgba(255,255,255,.86); box-shadow: var(--shadow-soft); }
.hub-future-hero h2 { margin: 4px 0 6px; font-size: clamp(32px, 4vw, 48px); line-height: 1; letter-spacing: -.055em; }
.hub-future-hero p { margin: 0; color: var(--muted); line-height: 1.55; }
.hub-future-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.hub-future-stats article { display: grid; place-items: center; min-height: 82px; border: 1px solid var(--panel-line); border-radius: 20px; background: #ffffff; }
.hub-future-stats strong,.hub-future-stats span { display: block; }
.hub-future-stats strong { color: var(--red); font-size: 30px; line-height: 1; }
.hub-future-stats span { margin-top: 4px; color: var(--muted); font-size: 11px; font-weight: 950; text-transform: uppercase; letter-spacing: .06em; }
.hub-future-layout { display: grid; grid-template-columns: 420px minmax(0, 1fr); gap: 18px; align-items: start; }
.hub-future-form { position: sticky; top: 18px; }
.hub-future-textarea { display: grid; gap: 7px; margin-top: 14px; color: #334155; font-size: 13px; font-weight: 900; }
.hub-future-textarea textarea { width: 100%; padding: 12px; border: 1px solid var(--panel-line); border-radius: 16px; resize: vertical; background: #ffffff; color: var(--text); }
.hub-future-list { display: grid; gap: 12px; }
.hub-future-empty { display: grid; gap: 4px; min-height: 160px; place-items: center; text-align: center; color: var(--muted); }
.hub-future-empty strong { color: var(--text); font-size: 20px; }
.hub-future-card { overflow: hidden; border: 1px solid rgba(255,255,255,.86); border-radius: 26px; background: rgba(255,255,255,.96); box-shadow: var(--shadow-soft); }
.hub-future-card.inactive { opacity: .68; }
.hub-future-card > form { padding: 0; }
.hub-future-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 16px; border-bottom: 1px solid var(--panel-line); background: linear-gradient(135deg, #ffffff, #fff7f8); }
.hub-future-card-title { display: flex; min-width: 0; gap: 12px; align-items: flex-start; }
.hub-future-icon-input { width: 52px; height: 52px; border: 0; border-radius: 18px; background: var(--red-soft); color: var(--red); text-align: center; font-size: 24px; font-weight: 950; }
.hub-future-title-input { width: 100%; min-height: 32px; padding: 0; border: 0; background: transparent; color: var(--text); font-size: 22px; font-weight: 950; letter-spacing: -.035em; }
.hub-future-status { display: inline-flex; width: max-content; margin-top: 6px; padding: 5px 9px; border-radius: 999px; font-size: 11px; font-weight: 950; text-transform: uppercase; letter-spacing: .04em; }
.hub-future-status.soon { color: var(--green); background: var(--green-soft); }
.hub-future-status.dev { color: var(--blue); background: var(--blue-soft); }
.hub-future-status.planned { color: var(--orange); background: var(--orange-soft); }
.hub-future-status.idea { color: var(--purple); background: #f3e8ff; }
.hub-future-active { display: inline-flex; align-items: center; gap: 8px; padding: 9px 10px; border: 1px solid var(--panel-line); border-radius: 999px; background: #ffffff; color: var(--muted); font-size: 12px; font-weight: 950; }
.hub-future-edit-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 14px 16px 0; }
.hub-future-edit-grid label { display: grid; gap: 7px; color: #334155; font-size: 12px; font-weight: 950; }
.hub-future-edit-grid input,.hub-future-edit-grid select { width: 100%; min-height: 42px; padding: 0 11px; border: 1px solid var(--panel-line); border-radius: 14px; background: #ffffff; color: var(--text); }
.hub-future-card .hub-future-textarea { padding: 0 16px; }
.hub-future-card-actions { display: flex; justify-content: space-between; gap: 10px; padding: 16px; border-top: 1px solid var(--panel-line); }
@media (max-width: 1280px) { .hub-future-layout,.hub-future-hero { grid-template-columns: 1fr; } .hub-future-form { position: relative; top: auto; } }
@media (max-width: 820px) { .hub-future-stats,.hub-future-edit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hub-future-card-head,.hub-future-card-actions { align-items: stretch; flex-direction: column; } }
@media (max-width: 560px) { .hub-future-stats,.hub-future-edit-grid,.hub-settings-grid.compact { grid-template-columns: 1fr; } .hub-future-card-title { display: grid; grid-template-columns: 52px minmax(0, 1fr); } }

/* Priorité 2 — uploads et diagnostic */
.hub-settings-grid input[type="file"]{padding:10px;height:auto;background:#fff}
.hub-settings-grid label small{color:var(--muted);font-size:11px;line-height:1.35}
.hub-diagnostic-score{display:grid;grid-template-columns:54px 1fr;align-items:center;gap:10px;margin:16px 0 12px}.hub-diagnostic-score strong{color:var(--red);font-size:18px}.hub-diagnostic-score span{height:9px;overflow:hidden;border-radius:999px;background:#e2e8f0}.hub-diagnostic-score i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--red),var(--green))}.hub-diagnostic-list{display:grid;gap:7px;margin-bottom:16px}.hub-diagnostic-list>div{display:grid;grid-template-columns:24px 1fr;gap:8px;align-items:center;padding:8px 10px;border-radius:12px;background:#f8fafc}.hub-diagnostic-list b{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;font-size:11px}.hub-diagnostic-list .ok b{color:#166534;background:#dcfce7}.hub-diagnostic-list .off b{color:#991b1b;background:#fee2e2}.hub-diagnostic-list span{font-size:12px;font-weight:900}.hub-diagnostic-list small{display:block;margin-top:2px;color:var(--muted);font-size:10px;font-weight:750}

/* HUB CASERNA — Catalogue modules piloté par la BDD v400 */
.hub-module-searchbar{
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    gap:10px;
    align-items:center;
    margin:16px 0;
    padding:12px 14px;
    border:1px solid rgba(125,0,0,.14);
    border-radius:18px;
    background:#fff;
    box-shadow:0 12px 30px rgba(60,0,0,.05);
}
.hub-module-searchbar>span{font-size:22px;color:#7d0000;font-weight:900}
.hub-module-searchbar input{width:100%;min-height:44px;border:0;outline:0;background:transparent;font:inherit}
.hub-module-searchbar button{min-height:40px;padding:8px 13px;border:1px solid #ead3d3;border-radius:11px;background:#fff;color:#7d0000;font-weight:900;cursor:pointer}
.hub-module-database-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.hub-module-db-card{position:relative;display:grid;grid-template-columns:48px minmax(0,1fr) auto auto;gap:12px;align-items:center;min-height:150px;padding:16px;border:1px solid #eadede;border-radius:19px;background:#fff;box-shadow:0 10px 25px rgba(50,0,0,.045);cursor:pointer;transition:.18s ease}
.hub-module-db-card:hover{transform:translateY(-2px);border-color:#dbb4b4;box-shadow:0 17px 35px rgba(70,0,0,.09)}
.hub-module-db-card.enabled{border-color:#d8a8a8;background:linear-gradient(145deg,#fff,#fff8f8)}
.hub-module-db-card.required{border-color:#f0b34d;background:linear-gradient(145deg,#fffdf7,#fff8e8)}
.hub-module-db-card.parent-disabled{opacity:.52;background:#f5f6f8;cursor:not-allowed}
.hub-module-db-card[hidden]{display:none!important}
.hub-module-db-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:15px;background:#fff1f1;font-size:24px}
.hub-module-db-copy{min-width:0}.hub-module-db-copy>strong{display:block;margin:5px 0;color:#271b1b;font-size:15px}.hub-module-db-copy p{margin:0 0 8px;color:#6b5a5a;font-size:11px;line-height:1.45}.hub-module-db-copy code{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;padding:4px 7px;border-radius:7px;background:#f4f4f5;color:#6b7280;font-size:9px}.hub-module-db-copy>b{display:inline-block;margin-left:6px;padding:4px 7px;border-radius:999px;background:#fff1c9;color:#8a5a00;font-size:9px;text-transform:uppercase}
.hub-module-db-meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.hub-module-db-meta em,.hub-module-db-meta small{padding:4px 7px;border-radius:999px;background:#f8eeee;color:#7d0000;font-size:9px;font-style:normal;font-weight:900}.hub-module-db-meta small{background:#eef2f7;color:#64748b}
.hub-module-db-card>input[type="checkbox"]{position:absolute;opacity:0;pointer-events:none}
.hub-module-db-card .hub-switch{flex:0 0 auto}
.hub-module-empty-section,.hub-module-no-results{padding:24px;border:1px dashed #dfcaca;border-radius:16px;background:#fff;color:#6b7280;text-align:center;font-weight:800}
@media(max-width:1150px){.hub-module-database-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.hub-module-searchbar{grid-template-columns:auto minmax(0,1fr)}.hub-module-searchbar button{grid-column:1/-1}.hub-module-database-grid{grid-template-columns:1fr}.hub-module-db-card{grid-template-columns:44px minmax(0,1fr) auto;padding:13px}.hub-module-db-card .hub-switch{grid-column:3}.hub-module-db-icon{width:44px;height:44px}}


/* HUB v401 — état visuel fiable des modules pilotés par la BDD */
.hub-module-db-card > input[type="checkbox"]:checked ~ .hub-switch {
    background: linear-gradient(135deg, var(--red), var(--red-2)) !important;
    border-color: transparent !important;
}
.hub-module-db-card > input[type="checkbox"]:checked ~ .hub-switch::after {
    transform: translateX(20px) !important;
}
.hub-module-db-card > input[type="checkbox"]:checked ~ .hub-module-state::before {
    content: "Activé";
}
.hub-module-db-card > input[type="checkbox"]:not(:checked) ~ .hub-module-state::before {
    content: "Désactivé";
}
.hub-module-db-card .hub-module-state {
    min-width: 74px;
    color: #64748b;
    font-size: 10px;
    font-style: normal;
    font-weight: 950;
    text-align: right;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.hub-module-db-card.enabled .hub-module-state { color: var(--red); }
.hub-module-db-card.parent-disabled .hub-module-state { color: #94a3b8; }
