/* Orbita (orbit) template: look of a community app on top of the default template layout
   (templates/default/css/base/template.css). Colours come from the scheme file css/<style>.css: the --mn-tone-* and
   --mn-warm-* tokens plus the --ob-scheme-* page, card, accent and aurora tints. This file sets the bundled fonts, radii, the
   aurora background, the glass top bar, the three-column shell with the left rail (a drawer below 1200 px), the bottom dock
   of phones, block chrome, the footer and the shared --cms-* tokens read by additional modules (AGENTS.md, section 23).
   The dark block repeats every token that the light :root block redefines, because both selectors weigh the same. */

@font-face {
    font-family: "Ob Unbounded";
    font-style: normal;
    font-weight: 200 900;
    font-display: swap;
    src: url("../../fonts/unbounded-latin-ext.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: "Ob Unbounded";
    font-style: normal;
    font-weight: 200 900;
    font-display: swap;
    src: url("../../fonts/unbounded-latin.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: "Ob Jakarta";
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url("../../fonts/jakarta-latin-ext.woff2") format("woff2");
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: "Ob Jakarta";
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
    src: url("../../fonts/jakarta-latin.woff2") format("woff2");
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    --mn-heading-font: "Ob Unbounded", "Trebuchet MS", system-ui, sans-serif;
    --mn-body-font: "Ob Jakarta", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
    --mn-radius-sm: 0.6rem;
    --mn-radius: 1rem;
    --mn-radius-lg: 1.35rem;
    --mn-bg: var(--ob-scheme-page, var(--mn-tone-977));
    --mn-primary: var(--ob-scheme-accent-strong, var(--mn-tone-476));
    --mn-primary-dark: var(--ob-scheme-accent-ink, var(--mn-tone-348));
    --mn-primary-mid: var(--ob-scheme-accent-strong, var(--mn-tone-476));
    --mn-accent-soft: rgba(var(--ob-scheme-accent-rgb, var(--mn-tone-596-rgb)), 0.12);
    --mn-surface: var(--ob-scheme-surface, #fff);
    --mn-surface-soft: var(--ob-scheme-surface-soft, var(--mn-tone-955));
    --mn-text: var(--mn-tone-203);
    --mn-text-mid: var(--mn-tone-352);
    --mn-muted: var(--mn-tone-436);
    --mn-border: rgba(var(--mn-tone-436-rgb), 0.2);
    --mn-border-light: rgba(var(--mn-tone-436-rgb), 0.13);
    --mn-shadow-sm: 0 1px 2px rgba(var(--mn-tone-203-rgb), 0.06);
    --mn-shadow: 0 18px 40px -22px rgba(var(--mn-tone-203-rgb), 0.38);
    /* Orbit look */
    --ob-glass: rgba(var(--ob-scheme-surface-rgb, 255, 255, 255), 0.72);
    --ob-glass-strong: rgba(var(--ob-scheme-surface-rgb, 255, 255, 255), 0.9);
    --ob-glass-border: rgba(var(--mn-tone-436-rgb), 0.14);
    --ob-orb-1: var(--ob-scheme-orb1, #c9adfc);
    --ob-orb-2: var(--ob-scheme-orb2, #fdb5af);
    --ob-orb-3: var(--ob-scheme-orb3, #8ce9f4);
    --ob-orb-opacity: 0.55;
    --ob-gradient: linear-gradient(115deg, var(--ob-scheme-accent, #7748eb), var(--ob-scheme-accent-2, #fa706c));
    --ob-rail-width: 16.5rem;
    --ob-side-width: 20rem;
    --ob-top-height: 4.25rem;
    --ob-shell-max: 90rem;
    /* Shared tokens for additional modules and shared components */
    --cms-accent: var(--ob-scheme-accent, var(--mn-tone-596));
    --cms-accent-strong: var(--ob-scheme-accent-strong, var(--mn-tone-476));
    --cms-accent-ink: var(--ob-scheme-accent-ink, var(--mn-tone-476));
    --cms-accent-soft: rgba(var(--ob-scheme-accent-rgb, var(--mn-tone-596-rgb)), 0.12);
    --cms-accent-2: var(--ob-scheme-accent-2, var(--mn-warm-753));
    --cms-accent-2-on: var(--ob-scheme-accent-2-on, var(--mn-tone-166));
    --cms-highlight: rgba(var(--ob-scheme-accent-2-rgb, var(--mn-warm-753-rgb)), 0.22);
    --cms-highlight-ink: var(--mn-tone-203);
    --cms-accent-2-soft: rgba(var(--ob-scheme-accent-2-rgb, var(--mn-warm-753-rgb)), 0.16);
    --cms-accent-2-ink: var(--mn-warm-474);
    --cms-danger-soft: rgba(220, 38, 38, 0.1);
    --cms-text: var(--mn-text);
    --cms-muted: var(--mn-muted);
    --cms-border: var(--mn-border);
    --cms-page-bg: var(--mn-bg);
    --cms-surface: var(--ob-scheme-surface, #fff);
    --cms-surface-soft: var(--ob-scheme-surface-soft, var(--mn-tone-955));
    --cms-font-display: "Ob Unbounded", "Trebuchet MS", system-ui, sans-serif;
    --cms-line-width: 1px;
    --cms-surface-border-width: 1px;
    --cms-surface-shadow: 0 1px 2px rgba(var(--mn-tone-203-rgb), 0.04), 0 0.8rem 1.8rem -1.3rem rgba(var(--mn-tone-203-rgb), 0.4);
    --cms-section-title-size: clamp(1.15rem, 1rem + 0.6vw, 1.45rem);
    --cms-radius-lg: 1.35rem;
    --cms-radius: 1rem;
    --cms-radius-sm: 0.6rem;
    --cms-search-radius: 999px;
    --cms-button-bg: var(--ob-scheme-accent-strong, var(--mn-tone-476));
    --cms-button-hover-bg: var(--ob-scheme-accent-ink, var(--mn-tone-348));
    --cms-button-color: #fff;
    --cms-button-radius: 999px;
    --bs-primary: var(--ob-scheme-accent-strong, var(--mn-tone-476));
    --bs-primary-rgb: var(--ob-scheme-accent-strong-rgb, var(--mn-tone-476-rgb));
    --bs-link-color: var(--ob-scheme-accent-ink, var(--mn-tone-476));
    --bs-link-color-rgb: var(--ob-scheme-accent-ink-rgb, var(--mn-tone-476-rgb));
    --bs-link-hover-color: var(--ob-scheme-accent-strong, var(--mn-tone-348));
    --bs-link-hover-color-rgb: var(--ob-scheme-accent-strong-rgb, var(--mn-tone-348-rgb));
    --bs-body-color: var(--mn-text);
    --bs-secondary-color: var(--mn-muted);
    --bs-border-color: var(--mn-border);
    --bs-body-bg: var(--ob-scheme-surface, #fff);
    --bs-tertiary-bg: var(--ob-scheme-surface-soft, var(--mn-tone-955));
    --bs-tertiary-bg-rgb: var(--ob-scheme-surface-soft-rgb, var(--mn-tone-955-rgb));
}

[data-bs-theme="dark"] {
    --mn-bg: var(--ob-scheme-page-dark, var(--mn-tone-166));
    --mn-primary: var(--ob-scheme-accent-ink-dark, var(--mn-tone-820));
    --mn-primary-dark: var(--ob-scheme-accent-ink-dark, var(--mn-tone-903));
    --mn-primary-mid: var(--ob-scheme-accent-dark, var(--mn-tone-903));
    --mn-accent-soft: rgba(var(--ob-scheme-accent-dark-rgb, var(--mn-tone-706-rgb)), 0.16);
    --mn-surface: var(--ob-scheme-surface-dark, var(--mn-tone-203));
    --mn-surface-soft: var(--ob-scheme-surface-soft-dark, var(--mn-tone-244));
    --mn-text: var(--mn-tone-966);
    --mn-text-mid: var(--mn-tone-880);
    --mn-muted: var(--mn-tone-758);
    --mn-border: rgba(var(--mn-tone-904-rgb), 0.14);
    --mn-border-light: rgba(var(--mn-tone-904-rgb), 0.09);
    --mn-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
    --mn-shadow: 0 18px 40px -18px rgba(0, 0, 0, 0.7);
    --ob-glass: rgba(var(--ob-scheme-surface-dark-rgb, 21, 21, 39), 0.7);
    --ob-glass-strong: rgba(var(--ob-scheme-surface-dark-rgb, 21, 21, 39), 0.92);
    --ob-glass-border: rgba(var(--mn-tone-904-rgb), 0.1);
    --ob-orb-1: var(--ob-scheme-orb1-dark, #4f2980);
    --ob-orb-2: var(--ob-scheme-orb2-dark, #751e26);
    --ob-orb-3: var(--ob-scheme-orb3-dark, #024b58);
    --ob-orb-opacity: 0.5;
    --ob-gradient: linear-gradient(115deg, var(--ob-scheme-accent-dark, #b0a2fd), var(--ob-scheme-accent-2-dark, #fb817c));
    --cms-accent: var(--ob-scheme-accent-dark, var(--mn-tone-763));
    --cms-accent-strong: var(--ob-scheme-accent-dark, var(--mn-tone-596));
    --cms-accent-ink: var(--ob-scheme-accent-ink-dark, var(--mn-tone-820));
    --cms-accent-soft: rgba(var(--ob-scheme-accent-dark-rgb, var(--mn-tone-706-rgb)), 0.16);
    --cms-accent-2: var(--ob-scheme-accent-2-dark, var(--mn-warm-753));
    --cms-accent-2-on: var(--ob-scheme-page-dark, var(--mn-tone-140));
    --cms-highlight: rgba(var(--ob-scheme-accent-2-dark-rgb, var(--mn-warm-753-rgb)), 0.2);
    --cms-highlight-ink: var(--mn-tone-966);
    --cms-accent-2-soft: rgba(var(--ob-scheme-accent-2-dark-rgb, var(--mn-warm-753-rgb)), 0.16);
    --cms-accent-2-ink: var(--ob-scheme-accent-2-dark, var(--mn-warm-753));
    --cms-danger-soft: rgba(248, 113, 113, 0.14);
    --cms-text: var(--mn-text);
    --cms-muted: var(--mn-muted);
    --cms-border: var(--mn-border);
    --cms-page-bg: var(--mn-bg);
    --cms-surface: var(--ob-scheme-surface-dark, var(--mn-tone-203));
    --cms-surface-soft: var(--ob-scheme-surface-soft-dark, var(--mn-tone-244));
    --cms-surface-shadow: 0 1px 0 rgba(255, 255, 255, 0.03) inset;
    --cms-button-bg: var(--ob-scheme-accent-dark, var(--mn-tone-763));
    --cms-button-hover-bg: var(--ob-scheme-accent-ink-dark, var(--mn-tone-820));
    --cms-button-color: var(--ob-scheme-page-dark, var(--mn-tone-140));
    --bs-primary: var(--ob-scheme-accent-dark, var(--mn-tone-763));
    --bs-primary-rgb: var(--ob-scheme-accent-dark-rgb, var(--mn-tone-763-rgb));
    --bs-link-color: var(--ob-scheme-accent-ink-dark, var(--mn-tone-820));
    --bs-link-color-rgb: var(--ob-scheme-accent-ink-dark-rgb, var(--mn-tone-820-rgb));
    --bs-link-hover-color: var(--mn-tone-966);
    --bs-link-hover-color-rgb: var(--mn-tone-966-rgb);
    --bs-body-color: var(--mn-text);
    --bs-secondary-color: var(--mn-muted);
    --bs-border-color: rgba(var(--mn-tone-904-rgb), 0.14);
    --bs-body-bg: var(--ob-scheme-surface-dark, var(--mn-tone-203));
    --bs-tertiary-bg: var(--ob-scheme-surface-soft-dark, var(--mn-tone-244));
    --bs-tertiary-bg-rgb: var(--ob-scheme-surface-soft-dark-rgb, var(--mn-tone-244-rgb));
    --bs-secondary-bg: var(--mn-tone-286);
    --bs-secondary-bg-rgb: var(--mn-tone-286-rgb);
}

/* ---------- Page ---------- */
body.ob-template {
    position: relative;
    min-height: 100vh;
    background: var(--mn-bg);
    font-size: 1rem;
    -webkit-font-smoothing: antialiased;
}

.ob-template h1,
.ob-template h2,
.ob-template h3,
.ob-template h4,
.ob-template .h4,
.ob-template .block-title {
    font-family: var(--mn-heading-font);
    font-weight: 700;
    letter-spacing: -0.015em;
}

.ob-template ::selection {
    background: rgba(var(--ob-scheme-accent-rgb, 119, 72, 235), 0.25);
}

/* Aurora: three soft blurred orbs fixed behind the page. */
.ob-aurora {
    position: fixed;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.ob-aurora__orb {
    position: absolute;
    width: 46vmax;
    height: 46vmax;
    border-radius: 50%;
    background: var(--ob-orb-1);
    filter: blur(90px);
    opacity: var(--ob-orb-opacity);
}

.ob-aurora__orb--1 {
    top: -22vmax;
    left: -12vmax;
}

.ob-aurora__orb--2 {
    top: -10vmax;
    right: -18vmax;
    width: 40vmax;
    height: 40vmax;
    background: var(--ob-orb-2);
}

.ob-aurora__orb--3 {
    bottom: -26vmax;
    left: 30vw;
    width: 38vmax;
    height: 38vmax;
    background: var(--ob-orb-3);
    opacity: calc(var(--ob-orb-opacity) * 0.8);
}

@media (prefers-reduced-motion: no-preference) {
    .ob-aurora__orb--1 {
        animation: ob-drift 26s ease-in-out infinite alternate;
    }

    .ob-aurora__orb--2 {
        animation: ob-drift 32s ease-in-out -8s infinite alternate-reverse;
    }

    .ob-aurora__orb--3 {
        animation: ob-drift 38s ease-in-out -14s infinite alternate;
    }
}

@keyframes ob-drift {
    0% { transform: translate3d(0, 0, 0) scale(1); }
    50% { transform: translate3d(6vw, 4vh, 0) scale(1.08); }
    100% { transform: translate3d(-4vw, 8vh, 0) scale(0.94); }
}

.ob-template .mn-adminbar,
.ob-top,
.ob-stage,
.ob-shell,
.ob-prefooter,
.ob-footer {
    position: relative;
    z-index: 1;
}

.ob-skip {
    position: absolute;
    left: 1rem;
    top: -4rem;
    z-index: 2000;
    padding: 0.6rem 1rem;
    border-radius: 999px;
    background: var(--cms-button-bg);
    color: var(--cms-button-color);
    font-weight: 700;
    text-decoration: none;
}

.ob-skip:focus {
    top: 1rem;
    color: var(--cms-button-color);
}

/* ---------- Bootstrap components in the scheme colours ---------- */
.ob-template .btn {
    border-radius: 999px;
    font-weight: 700;
}

.ob-template .btn-primary {
    --bs-btn-bg: var(--cms-button-bg);
    --bs-btn-border-color: var(--cms-button-bg);
    --bs-btn-color: var(--cms-button-color);
    --bs-btn-hover-bg: var(--cms-button-hover-bg);
    --bs-btn-hover-border-color: var(--cms-button-hover-bg);
    --bs-btn-hover-color: var(--cms-button-color);
    --bs-btn-active-bg: var(--cms-button-hover-bg);
    --bs-btn-active-border-color: var(--cms-button-hover-bg);
    --bs-btn-active-color: var(--cms-button-color);
    background: var(--cms-button-bg);
    border-color: var(--cms-button-bg);
    color: var(--cms-button-color);
}

.ob-template .btn-primary:hover,
.ob-template .btn-primary:focus-visible {
    background: var(--cms-button-hover-bg);
    border-color: var(--cms-button-hover-bg);
    color: var(--cms-button-color);
}

.ob-template .btn-outline-primary {
    --bs-btn-color: var(--cms-accent-ink);
    --bs-btn-border-color: var(--cms-accent);
    --bs-btn-hover-bg: var(--cms-button-bg);
    --bs-btn-hover-border-color: var(--cms-button-bg);
    --bs-btn-hover-color: var(--cms-button-color);
    --bs-btn-active-bg: var(--cms-button-hover-bg);
    --bs-btn-active-color: var(--cms-button-color);
}

.ob-template .form-control,
.ob-template .form-select {
    border-radius: 0.8rem;
}

.ob-template .form-select:focus,
.ob-template .form-control:focus,
.ob-template .form-check-input:focus {
    border-color: var(--cms-accent);
    box-shadow: 0 0 0 0.2rem var(--cms-accent-soft);
}

.ob-template .form-check-input:checked {
    background-color: var(--cms-button-bg);
    border-color: var(--cms-button-bg);
}

.ob-template .page-link {
    color: var(--cms-accent-ink);
}

.ob-template .page-item.active .page-link,
.ob-template .active > .page-link {
    background: var(--cms-button-bg);
    border-color: var(--cms-button-bg);
    color: var(--cms-button-color);
}

/* ---------- Top bar ---------- */
.ob-top {
    position: sticky;
    top: 0;
    z-index: 1030;
    border-bottom: 1px solid var(--ob-glass-border);
    background: var(--ob-glass);
    -webkit-backdrop-filter: saturate(1.6) blur(18px);
    backdrop-filter: saturate(1.6) blur(18px);
}

.ob-top__inner {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    max-width: var(--ob-shell-max);
    min-height: var(--ob-top-height);
    margin: 0 auto;
    padding: 0.5rem clamp(0.75rem, 2.5vw, 1.5rem);
}

.ob-template .ob-brand {
    display: inline-flex;
    flex: 0 1 auto;
    align-items: center;
    gap: 0.6rem;
    min-width: 2.5rem;
    color: var(--mn-text);
    text-decoration: none;
}

.ob-brand__logo,
.ob-brand__mark {
    width: 2.5rem;
    height: 2.5rem;
    flex: none;
    border-radius: 0.85rem;
    object-fit: cover;
    box-shadow: 0 6px 16px -8px rgba(var(--ob-scheme-accent-rgb, 119, 72, 235), 0.8);
    transition: transform 0.25s;
}

.ob-brand__mark {
    background: var(--ob-gradient);
}

.ob-brand:hover .ob-brand__logo,
.ob-brand:hover .ob-brand__mark {
    transform: rotate(-8deg) scale(1.04);
}

.ob-brand__name {
    flex: none;
    overflow: hidden;
    font-family: var(--mn-heading-font);
    font-size: 1.2rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ob-search {
    position: relative;
    display: none;
    flex: 1 1 22rem;
    min-width: 0;
    max-width: 26rem;
    margin-left: clamp(0.5rem, 2vw, 2rem);
}

.ob-search > .bi {
    position: absolute;
    top: 50%;
    left: 1rem;
    color: var(--mn-muted);
    transform: translateY(-50%);
    pointer-events: none;
}

.ob-search input[type="search"] {
    width: 100%;
    min-height: 2.6rem;
    padding: 0.45rem 1rem 0.45rem 2.6rem;
    border: 1px solid transparent;
    border-radius: 999px;
    background: var(--mn-surface-soft);
    color: var(--mn-text);
    font: inherit;
    font-size: 0.94rem;
}

.ob-search input[type="search"]::placeholder {
    color: var(--mn-muted);
}

.ob-search input[type="search"]:focus {
    border-color: var(--cms-accent);
    outline: none;
    box-shadow: 0 0 0 4px var(--cms-accent-soft);
    background: var(--mn-surface);
}

.ob-top__tools {
    display: flex;
    flex: none;
    align-items: center;
    gap: 0.35rem;
    margin-left: auto;
}

.ob-top__region {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.ob-top__region > .cms-block {
    margin: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    overflow: visible;
}

.ob-top__region > .cms-block > .block-title {
    display: none;
}

.ob-top__region > .cms-block > .block-content {
    padding: 0;
}

.ob-template .ob-iconbtn {
    display: inline-grid;
    place-items: center;
    width: 2.6rem;
    height: 2.6rem;
    flex: none;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: var(--mn-surface-soft);
    color: var(--mn-text);
    font-size: 1.1rem;
    text-decoration: none;
    transition: background-color 0.15s, color 0.15s;
}

.ob-template .ob-iconbtn:hover,
.ob-template .ob-iconbtn:focus-visible {
    background: var(--cms-accent-soft);
    color: var(--cms-accent-ink);
}

.ob-menu-toggle {
    font-size: 1.35rem !important;
}

.ob-template .ob-account {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.9rem;
    border-radius: 999px;
    background: var(--mn-surface-soft);
    color: var(--mn-text);
    font-weight: 700;
    text-decoration: none;
}

@media (min-width: 768px) {
    .ob-search {
        display: block;
    }

    .ob-template .ob-search-link {
        display: none;
    }
}

@media (max-width: 575.98px) {
    .ob-top__inner {
        gap: 0.45rem;
    }

    .ob-brand__name {
        font-size: 1.05rem;
    }

    .ob-template .ob-iconbtn {
        width: 2.35rem;
        height: 2.35rem;
        font-size: 1rem;
    }

    .ob-template .ob-theme {
        display: none;
    }

    .ob-template .ob-search-link {
        display: none;
    }
}

@media (max-width: 379.98px) {
    .ob-brand__name {
        display: none;
    }
}

/* ---------- Stage (header_inner) ---------- */
.ob-stage__inner {
    max-width: var(--ob-shell-max);
    margin: 0 auto;
    padding: clamp(1rem, 2.5vw, 1.75rem) clamp(0.75rem, 2.5vw, 1.5rem) 0;
}

.ob-stage .cms-block {
    margin-bottom: 0 !important;
    border: 0;
    background: transparent;
    box-shadow: none;
    overflow: visible;
}

.ob-stage .cms-block + .cms-block {
    margin-top: 1rem;
}

.ob-stage .cms-block > .block-content {
    padding: 0;
}

.ob-stage .cms-block > .block-title {
    display: none;
}

/* ---------- Shell: rail | centre | side ---------- */
.ob-shell {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
    max-width: var(--ob-shell-max);
    margin: 0 auto;
    padding: clamp(1rem, 2.5vw, 1.75rem) clamp(0.75rem, 2.5vw, 1.5rem) 2rem;
}

.ob-template .ob-center.mn-main {
    min-width: 0;
    padding: 0;
}

.ob-template .ob-center:focus {
    outline: none;
}

.ob-side {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

@media (min-width: 992px) {
    .ob-shell--side {
        grid-template-columns: minmax(0, 1fr) minmax(16rem, 18.5rem);
    }

    .ob-side {
        position: sticky;
        top: calc(var(--ob-top-height) + 1rem);
    }
}

@media (min-width: 1200px) {
    .ob-shell--rail {
        grid-template-columns: var(--ob-rail-width) minmax(0, 1fr);
    }

    .ob-shell--rail.ob-shell--side {
        grid-template-columns: var(--ob-rail-width) minmax(0, 1fr) var(--ob-side-width);
        gap: clamp(1.25rem, 2vw, 2rem);
    }

    .ob-template .ob-menu-toggle {
        display: none;
    }
}

/* Left rail: a sticky column from 1200 px, a drawer below. */
.ob-rail {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    min-width: 0;
}

.ob-rail:focus {
    outline: none;
}

.ob-rail__head {
    display: none;
}

@media (min-width: 1200px) {
    .ob-rail {
        position: sticky;
        top: calc(var(--ob-top-height) + 1rem);
        max-height: calc(100vh - var(--ob-top-height) - 2rem);
        overflow-y: auto;
        overscroll-behavior: contain;
        scrollbar-width: thin;
        scrollbar-color: var(--mn-border) transparent;
    }

    .ob-backdrop {
        display: none !important;
    }
}

@media (max-width: 1199.98px) {
    .ob-rail {
        position: fixed;
        top: 0;
        bottom: 0;
        left: 0;
        z-index: 1060;
        width: min(21rem, 88vw);
        padding: 1rem 1rem calc(1.5rem + env(safe-area-inset-bottom, 0px));
        overflow-y: auto;
        background: var(--ob-glass-strong);
        -webkit-backdrop-filter: blur(22px);
        backdrop-filter: blur(22px);
        box-shadow: 24px 0 60px -30px rgba(0, 0, 0, 0.5);
        transform: translateX(-105%);
        visibility: hidden;
        transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0.3s;
    }

    .ob-nav-open .ob-rail {
        transform: none;
        visibility: visible;
        transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
    }

    .ob-rail__head {
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .ob-rail__title {
        font-family: var(--mn-heading-font);
        font-size: 1.05rem;
        font-weight: 700;
    }

    .ob-backdrop {
        position: fixed;
        inset: 0;
        z-index: 1055;
        background: rgba(10, 8, 30, 0.45);
        -webkit-backdrop-filter: blur(3px);
        backdrop-filter: blur(3px);
    }

    .ob-nav-open {
        overflow: hidden;
    }
}

/* Navigation of the rail */
.ob-nav__list,
.ob-nav__sub {
    margin: 0;
    padding: 0;
    list-style: none;
}

.ob-nav__list {
    display: grid;
    gap: 0.15rem;
}

.ob-template .ob-nav__link {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.5rem 0.75rem 0.5rem 0.5rem;
    border-radius: 1rem;
    color: var(--mn-text);
    font-weight: 700;
    text-decoration: none;
    transition: background-color 0.15s, color 0.15s;
}

.ob-template .ob-nav__link:hover {
    background: var(--ob-glass-strong);
    color: var(--mn-text);
}

.ob-nav__icon {
    display: grid;
    place-items: center;
    width: 2.35rem;
    height: 2.35rem;
    flex: none;
    border-radius: 0.8rem;
    background: var(--mn-surface);
    color: var(--cms-accent-ink);
    font-size: 1.1rem;
    box-shadow: var(--mn-shadow-sm), inset 0 0 0 1px var(--mn-border-light);
    transition: transform 0.2s;
}

.ob-template .ob-nav__link:hover .ob-nav__icon {
    transform: scale(1.06) rotate(-4deg);
}

.ob-nav__label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ob-template .ob-nav__item.is-active > .ob-nav__link {
    background: var(--mn-surface);
    box-shadow: var(--cms-surface-shadow);
}

.ob-template .ob-nav__item.is-active > .ob-nav__link .ob-nav__icon {
    background: var(--ob-gradient);
    color: #fff;
    box-shadow: 0 8px 18px -10px rgba(var(--ob-scheme-accent-rgb, 119, 72, 235), 0.9);
}

[data-bs-theme="dark"] .ob-template .ob-nav__item.is-active > .ob-nav__link .ob-nav__icon {
    color: var(--ob-scheme-page-dark, #0b0a19);
}

.ob-template .ob-nav__item.is-active > .ob-nav__link::after {
    content: "";
    position: absolute;
    top: 50%;
    right: 0.75rem;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 50%;
    background: var(--cms-accent-2);
    transform: translateY(-50%);
}

.ob-nav__sub {
    display: grid;
    gap: 0.1rem;
    margin: 0.15rem 0 0.35rem 1.6rem;
    padding-left: 1.2rem;
    border-left: 2px solid var(--mn-border-light);
}

.ob-template .ob-nav__sublink {
    display: block;
    padding: 0.35rem 0.6rem;
    border-radius: 0.6rem;
    color: var(--mn-muted);
    font-size: 0.92rem;
    font-weight: 600;
    text-decoration: none;
}

.ob-template .ob-nav__sublink:hover,
.ob-template .ob-nav__sublink.is-active {
    color: var(--cms-accent-ink);
    background: var(--cms-accent-soft);
}

.ob-rail__blocks {
    gap: 1rem;
}

/* ---------- Blocks ---------- */
.ob-template .cms-block {
    border-radius: var(--cms-radius-lg);
}

/* An empty block (a module block with nothing to show) leaves no gap. */
.ob-template .cms-block:has(> .block-content:empty) {
    display: none !important;
}

.ob-template .block-default,
.ob-template .block-clean,
.ob-template .block-bright {
    border: 1px solid var(--mn-border-light);
    background: var(--mn-surface);
    box-shadow: var(--cms-surface-shadow);
}

.ob-template .block-transparent {
    border: 0;
    background: transparent;
    box-shadow: none;
    overflow: visible;
}

.ob-template .block-transparent > .block-content {
    padding: 0;
}

.ob-template .block-highlight {
    border: 0;
    background: var(--cms-highlight);
    color: var(--mn-text);
}

.ob-template .block-title {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 1rem 1.1rem 0.25rem;
    background: none;
    color: var(--mn-text);
    font-size: 0.98rem;
}

.ob-template .block-title-icon {
    display: inline-grid;
    place-items: center;
    width: 1.9rem;
    height: 1.9rem;
    border-radius: 0.6rem;
    background: var(--cms-accent-soft);
    color: var(--cms-accent-ink);
    font-size: 0.9rem;
}

.ob-template .block-transparent > .block-title {
    padding-left: 0.2rem;
    padding-right: 0.2rem;
}

.ob-template .mn-sidebar .cms-block {
    margin-bottom: 0 !important;
}

.ob-template .mn-sidebar .block-transparent > .block-content {
    padding: 0.5rem 0 0;
}

.ob-template .mn-sidebar .block-transparent > .block-content:first-child {
    padding-top: 0;
}

.ob-template .mn-region--top > .cms-block,
.ob-template .mn-region--bottom > .cms-block {
    margin-bottom: 1.25rem !important;
}

.ob-template .mn-region--top > .block-title,
.ob-template .mn-region--bottom > .cms-block > .block-title {
    font-size: var(--cms-section-title-size);
}

/* Module area: modules with their own layout stand on the page; others get a glass card. */
.ob-template .mn-module-card {
    border: 1px solid var(--mn-border-light);
    border-radius: var(--cms-radius-lg);
    background: var(--ob-glass-strong);
    box-shadow: var(--cms-surface-shadow);
    padding: clamp(1rem, 2.5vw, 1.8rem);
}

.ob-template .mn-module-card:has(> .soc-module),
.ob-template .mn-module-card:has(> .cls-module),
.ob-template .mn-module-card:has(> .rcp-module),
.ob-template .mn-module-card:has(> .atr-module),
.ob-template .mn-module-card:has(> .dng-module) {
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    overflow: visible;
}

.ob-template .mn-module-card h1 {
    font-weight: 800;
}

/* Page heads and article texts of system modules */
.ob-template .cms-page-content,
.ob-template .page-content {
    line-height: 1.7;
}

/* HTML-block classes of the preconfiguration */
.ob-card {
    display: grid;
    gap: 0.6rem;
    padding: 1.1rem;
    border: 1px solid var(--mn-border-light);
    border-radius: var(--cms-radius-lg);
    background: var(--mn-surface);
    box-shadow: var(--cms-surface-shadow);
    font-size: 0.92rem;
}

.ob-card h3 {
    margin: 0;
    font-size: 1rem;
}

.ob-card p {
    margin: 0;
    color: var(--mn-muted);
}

.ob-card--glow {
    position: relative;
    overflow: hidden;
    background:
        radial-gradient(circle at 100% 0, rgba(var(--ob-scheme-accent-2-rgb, 250, 112, 108), 0.22), transparent 55%),
        radial-gradient(circle at 0 100%, rgba(var(--ob-scheme-accent-rgb, 119, 72, 235), 0.18), transparent 60%),
        var(--mn-surface);
}

.ob-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.8rem;
    margin: 0;
    padding: 0 0.3rem;
    list-style: none;
    font-size: 0.82rem;
}

.ob-template .ob-links a {
    color: var(--mn-muted);
    text-decoration: none;
}

.ob-template .ob-links a:hover {
    color: var(--cms-accent-ink);
    text-decoration: underline;
}

.ob-links li:last-child {
    color: var(--mn-muted);
}

/* ---------- Footer ---------- */
.ob-prefooter__inner {
    max-width: var(--ob-shell-max);
    margin: 0 auto;
    padding: 0 clamp(0.75rem, 2.5vw, 1.5rem);
}

.ob-template .ob-footer {
    margin-top: 1.5rem;
}

.ob-template .ob-footer::before {
    content: "";
    display: block;
    height: 3px;
    background: var(--ob-gradient);
}

.ob-template .cms-footerinfosimple {
    background: var(--ob-glass-strong);
    color: var(--mn-text);
}

.ob-template .cms-footerinfosimple a {
    color: var(--mn-text-mid);
}

.ob-template .cms-footerinfosimple a:hover {
    color: var(--cms-accent-ink);
}

.ob-template .cms-footerinfosimple__brand h2,
.ob-template .cms-footerinfosimple__brand .h4 {
    font-family: var(--mn-heading-font);
    font-weight: 800;
}

.ob-template .cms-footerinfosimple__title {
    color: var(--cms-accent-ink);
}

.ob-template .cms-footerinfosimple .text-white-50,
.ob-template .cms-footerinfosimple .text-secondary {
    color: var(--mn-muted) !important;
}

/* ---------- Bottom dock (phones) ---------- */
.ob-dock {
    display: none;
}

@media (max-width: 767.98px) {
    body.ob-has-dock {
        padding-bottom: calc(4.6rem + env(safe-area-inset-bottom, 0px));
    }

    .ob-dock {
        position: fixed;
        right: 0.6rem;
        bottom: calc(0.6rem + env(safe-area-inset-bottom, 0px));
        left: 0.6rem;
        z-index: 1040;
        display: flex;
        justify-content: space-around;
        gap: 0.2rem;
        padding: 0.35rem;
        border: 1px solid var(--ob-glass-border);
        border-radius: 1.4rem;
        background: var(--ob-glass-strong);
        -webkit-backdrop-filter: saturate(1.6) blur(18px);
        backdrop-filter: saturate(1.6) blur(18px);
        box-shadow: 0 16px 40px -18px rgba(0, 0, 0, 0.55);
    }

    .ob-template .ob-dock__link {
        display: grid;
        flex: 1 1 0;
        justify-items: center;
        gap: 0.1rem;
        min-width: 0;
        padding: 0.4rem 0.2rem 0.3rem;
        border: 0;
        border-radius: 1.05rem;
        background: none;
        color: var(--mn-muted);
        font: inherit;
        font-size: 0.68rem;
        font-weight: 700;
        line-height: 1.2;
        text-decoration: none;
    }

    .ob-dock__link > span {
        max-width: 100%;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .ob-dock__link > .bi,
    .ob-dock__link > i,
    .ob-dock__link > svg,
    .ob-dock__link > img {
        font-size: 1.25rem;
        line-height: 1;
    }

    .ob-template .ob-dock__link.is-active {
        background: var(--cms-accent-soft);
        color: var(--cms-accent-ink);
    }

    .ob-template .mn-floating-actions {
        bottom: calc(5.4rem + env(safe-area-inset-bottom, 0px));
    }

    .ob-template .cms-cookie-notice {
        bottom: calc(5.2rem + env(safe-area-inset-bottom, 0px));
    }
}

@media (prefers-reduced-motion: reduce) {
    .ob-brand__logo,
    .ob-nav__icon,
    .ob-rail,
    .ob-template .ob-nav__link {
        transition: none !important;
    }
}

@media print {
    .ob-top,
    .ob-rail,
    .ob-side,
    .ob-dock,
    .ob-aurora,
    .ob-stage,
    .mn-floating-actions {
        display: none !important;
    }

    body.ob-template {
        background: #fff;
    }

    .ob-shell {
        display: block;
    }
}

/* Admin bar in the scheme colours */
.ob-template .mn-adminbar {
    background: var(--mn-tone-203);
}

[data-bs-theme="dark"] .ob-template .mn-adminbar {
    background: var(--mn-tone-140);
}
