/*
 * Software by John Liddiard (aka JohntheFish)
 * www.c5magic.co.uk
 *
 * This package contains software copyright and proprietary to John Liddiard
 *
 */

/*=================================
 * Well
 * A bootrap5 equivalent of well, for convenience when updating from Elemental. Uses
 * color-mix to adapt between light and dark skins,  make light body darker, dark body
 * lighter - similar but more for borders. Also -sm and -lg variants. A basic light well
 * declaration as a fallback for non supporting browsers.
 */
.ccm-page {
    --atomic-gum-spacer: 1rem;

    --atomik-page-theme-xl: 1200px;
    --atomik-page-theme-lg-max: calc(var(--atomik-page-theme-xl) - 1px);
    --atomik-page-theme-lg: 992px;
    --atomik-page-theme-md-max: calc(var(--atomik-page-theme-lg) - 1px);
    --atomik-page-theme-md: 768px;
    --atomik-page-theme-sm-max: calc(var(--atomik-page-theme-md) - 1px);
    --atomik-page-theme-sm: 576px;
    --atomik-page-theme-xs-max: calc(var(--atomik-page-theme-sm) - 1px);
    --atomik-page-theme-xs: 0;
}

.ccm-page .well {
    min-height: 2rem;
    padding: var(--atomic-gum-spacer);
    margin-bottom: var(--atomic-gum-spacer);
    background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity, 1.0));
    background-color: color-mix(in srgb, var(--bs-body-bg) 85%, gray); /* if not supported by browser, the above is used */
    border: 1px solid var(--bs-border-color);
    border: 1px solid color-mix(in srgb, var(--bs-body-bg) 70%, gray); /* if not supported by browser, the above is used */
    border-radius: var(--bs-border-radius);
    color: var(--bs-body-color);
}

.ccm-page .atomic_gum_transparent-checkerboard,
#atomic_gum_dashboard_page .atomic_gum_transparent-checkerboard {
    /*background-color: #fff;*/
    background-image: linear-gradient(45deg, #ccc 25%, transparent 25%),
    linear-gradient(-45deg, #ccc 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, #ccc 75%),
    linear-gradient(-45deg, transparent 75%, #ccc 75%);
    background-size: 20px 20px;
    background-position: 0 0, 0 10px, 10px -10px, -10px 0px;
    background-repeat: repeat;
}

/*
 * Atomik doesn't adapt muted text well against backgrounds and block design.
 * This adapts a lot more flexibly and is close in color.
 */

.ccm-page .text-muted {
    --bs-text-opacity: 0.6;
    opacity: var(--bs-text-opacity);
    color: inherit !important;
}

/* Smaller variant: half the default radius */
.ccm-page .well-sm {
    padding: calc(var(--atomic-gum-spacer) * 0.66);
    border-radius: calc(var(--bs-border-radius) * 0.66);
}

/* Larger variant: double the default radius */
.ccm-page .well-lg {
    padding: calc(var(--atomic-gum-spacer) * 2);
    border-radius: calc(var(--bs-border-radius) * 2);
    border: 1px solid color-mix(in srgb, var(--bs-body-bg) 60%, gray);
}

/*============ Sidebar and gutter =========*/
@media (min-width: 768px) {
    /* --bs-breakpoint-md */
    .ccm-page.atomic-gum-sidebar-gutter-bar {
        --atomic-gum-sidebar-gutter-line-color: color-mix(in srgb, var(--bs-body-bg) 50%, gray);
        --atomic-gum-sidebar-gutter-line-padding: 1.5rem;
        --atomic-gum-sidebar-gutter-line-style: solid;
    }

    /*
     * All the :not() selectors are to prevent the gutter line from appearing inside nested columns
     */
    .ccm-page.atomic-gum-sidebar-gutter-bar .left-sidebar .col-sidebar:not(.col-main .col-sidebar):not(.col-sidebar .col-sidebar) {
        border-right: 1px var(--atomic-gum-sidebar-gutter-line-style) var(--atomic-gum-sidebar-gutter-line-color);
        padding-right: var(--atomic-gum-sidebar-gutter-line-padding);
    }

    .ccm-page.atomic-gum-sidebar-gutter-bar .left-sidebar .col-main:not(.col-main .col-sidebar):not(.col-sidebar .col-sidebar) {
        padding-left: var(--atomic-gum-sidebar-gutter-line-padding);
    }

    .ccm-page.atomic-gum-sidebar-gutter-bar .right-sidebar .col-sidebar:not(.col-main .col-sidebar):not(.col-sidebar .col-sidebar) {
        border-left: 1px var(--atomic-gum-sidebar-gutter-line-style) var(--atomic-gum-sidebar-gutter-line-color);
        padding-left: var(--atomic-gum-sidebar-gutter-line-padding);
    }

    .ccm-page.atomic-gum-sidebar-gutter-bar .right-sidebar .col-main:not(.col-main .col-sidebar):not(.col-sidebar .col-sidebar) {
        padding-right: var(--atomic-gum-sidebar-gutter-line-padding);
    }
}


/* ========================================
 * Navigation lists
 */
.ccm-page div.atomic-gum-header,
.ccm-page header.atomic-gum-header {
    width: 100%;
    overflow-x: clip;
}

/*
 * Basic nav colour variables duplicated from Atomik, so we can use them with
 * any nav, not just the Atomik navbar.
 */

.ccm-page .atomic-gum-navlist {
    --bs-navbar-padding-x: 0;
    --bs-navbar-padding-y: 0.5rem;
    --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65);
    --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8);
    --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3);
    --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1);
    --bs-navbar-brand-padding-y: 0.3125rem;
    --bs-navbar-brand-margin-end: 1rem;
    --bs-navbar-brand-font-size: 1.25rem;
    --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1);
    --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1);
    --bs-navbar-nav-link-padding-x: 1.25rem;
    --bs-navbar-toggler-padding-y: 0.25rem;
    --bs-navbar-toggler-padding-x: 0.75rem;
    --bs-navbar-toggler-font-size: 1.25rem;
    --bs-navbar-toggler-icon-bg: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='%23fff' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E");
    --bs-navbar-toggler-border-color: transparent;
    --bs-navbar-toggler-border-radius: var(--bs-border-radius);
    --bs-navbar-toggler-focus-width: 0;
    --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
}

/*
 * Option to use theme link colours instead of nav link colours
 */
.ccm-page .atomic-gum-navlist.atomic-gum-use-theme .nav-item:not(.atomic-gum-make-exclusive, .btn) > .nav-control,
.ccm-page .atomic-gum-navlist.atomic-gum-use-theme .nav-item:not(.atomic-gum-make-exclusive, .btn) > .nav-control > a,
.ccm-page .atomic-gum-navlist.atomic-gum-use-theme .nav-item:not(.atomic-gum-make-exclusive, .btn) > a,
.ccm-page .atomic-gum-navlist.atomic-gum-use-theme .nav-item:not(.atomic-gum-make-exclusive, .btn) {
    --bs-navbar-color: var(--bs-link-color);
    --bs-nav-link-color: var(--bs-link-color);
    --bs-nav-link-hover-color: var(--bs-link-hover-color);
}

/*
 * When making exclusive, cancel out any theme styling of nav links so the nav colours don't bleed
 * into custom classes. This allows added classes such as .btn to render nicely.
 */
.ccm-page .atomic-gum-navlist .nav-item.atomic-gum-make-exclusive > .nav-control > a,
.ccm-page .atomic-gum-navlist .nav-item.atomic-gum-make-exclusive > .nav-control > a:hover,
.ccm-page .atomic-gum-navlist .nav-item.atomic-gum-make-exclusive > a,
.ccm-page .atomic-gum-navlist .nav-item.atomic-gum-make-exclusive > a:hover,
.ccm-page .atomic-gum-navlist .nav-item.btn > .nav-control > a,
.ccm-page .atomic-gum-navlist .nav-item.btn > .nav-control > a:hover,
.ccm-page .atomic-gum-navlist .nav-item.btn > a,
.ccm-page .atomic-gum-navlist .nav-item.btn > a:hover {
    --bs-nav-link-color: '';
    --bs-nav-link-hover-color: '';
    --bs-dropdown-link-color: '';
    --bs-dropdown-link-active-color: '';
}

/*
 * Essentially duplicated from Atomik/BS5, wo we can use them specifically within Atomic Gum
 */
.ccm-page .atomic-gum-navlist .dropdown-menu {
    transform-origin: top;
    transform: none;
    opacity: 0;
    height: 0;
    transition: transform 300ms ease, opacity 300ms ease, height 300ms ease;
    display: block; /* Required for animation */
    visibility: hidden;
    left: 1em;
}

.ccm-page .atomic-gum-navlist .dropdown-menu {
    transform-origin: top;
    transform: scaleY(0);
    opacity: 0;
    height: 0;
    transition: transform 300ms ease, opacity 300ms ease, height 300ms ease;
    display: block; /* Required for animation */
    visibility: hidden;
    left: 1em;
}

.ccm-page .atomic-gum-navlist .dropdown-menu.show {
    transform: scaleY(1);
    opacity: 1;
    visibility: visible;
    height: auto;
    display: block;
}

.ccm-page .atomic-gum-navlist {
    --atomic-gum-dropdown-arrow-position: 25%; /* px offset from left edge */
    --atomic-gum-dropdown-top-border-color: transparent;
    --atomic-gum-dropdown-arrow-size: 12px;
}

.ccm-page .atomic-gum-navlist .dropdown-menu.show::before {
    content: "";
    position: absolute;
    top: calc(-1 * var(--atomic-gum-dropdown-arrow-size)); /* above the dropdown */
    left: var(--atomic-gum-dropdown-arrow-position);
    transform: translateX(-50%);
    width: 0;
    height: 0;
    border-left: var(--atomic-gum-dropdown-arrow-size) solid transparent;
    border-right: var(--atomic-gum-dropdown-arrow-size) solid transparent;
    border-bottom: var(--atomic-gum-dropdown-arrow-size) solid var(--atomic-gum-dropdown-top-border-color); /* solid fill color */
}

.ccm-page .atomic-gum-navlist:not(.atomic-gum-use-theme) .nav-item.show > .nav-control {
    opacity: 0.8;
}

/*
 * A tweak to allow wrapping rather than overflow
 */

.ccm-page .atomic-gum-navlist .dropdown-item {
    white-space: normal;
}

.ccm-page .atomic-gum-navlist .dropdown-item.active,
.ccm-page .atomic-gum-navlist .dropdown-item:active,
.ccm-page .atomic-gum-navlist .nav-item.active:not(.dropdown) {
    background-color: var(--bs-dropdown-link-active-bg);
    color: var(--bs-dropdown-link-active-color);
}

.ccm-page .atomic-gum-navlist .nav-toggle {
    color: var(--bs-nav-link-color);
}

div.ccm-page .atomic-gum-navlist .nav-link.atomic-gum-parent-attribute-class-assigned.atomic-gum-make-exclusive:hover,
div.ccm-page .atomic-gum-navlist .nav-link.atomic-gum-attribute-class-assigned.atomic-gum-make-exclusive:hover {
    background-color: inherit !important;
}

/*
 * Top navigation bar has some special rules because it can be sticky. We also need to play with
 * z-index to allow dropdown menus to show above any subsequent navbars if they are close together.
 */

.ccm-page .atomic-gum-top-navigation-bar,
.ccm-page .atomic-gum-multi-area-header {
    position: relative;
    left: 0;
    right: 0;
}

/*
 * The multi-area header could contain a set of areas which behave like a navbar,
 * so the grouped areas need to be one larger navbar
 */

.ccm-page .atomic-gum-multi-area-header > .atomic-gum-hero-row-container.container-fluid {
    margin-left: 0;
    margin-right: 0;
    padding-left: 0;
    padding-right: 0;
    width: 100%;
}

.ccm-page .atomic-gum-multi-area-header .atomic-gum-header-row-container.container-fluid {
    --bs-gutter-x: 0;
}

/*
 * Within any header, the hero row usually contains the navigation and is the row which is fixed for sticky nav.
 */

.ccm-page .atomic-gum-multi-area-header > .atomic-gum-hero-row-container.container-fluid .navbar.atomic-gum-hero-row {
    padding-left: calc(var(--bs-gutter-x) * .5);
    padding-right: calc(var(--bs-gutter-x) * .5);
    width: 100vw;
}

.ccm-page .atomic-gum-top-navigation-bar,
.ccm-page .atomic-gum-multi-area-header,
.ccm-page .atomic-gum-hero-row-container,
.ccm-page .atomic-gum-hero-row {
    position: relative;
}

.ccm-page .atomic-gum-top-navigation-bar:not(:has(.atomic-gum-navlist-other)),
.ccm-page .atomic-gum-multi-area-header:not(:has(.atomic-gum-navlist-other)),
.ccm-page .atomic-gum-hero-row-container:not(:has(.atomic-gum-navlist-other)),
.ccm-page .atomic-gum-hero-row:not(:has(.atomic-gum-navlist-other)) {
    z-index: 100;
}

.ccm-page .atomic-gum-top-navigation-bar .atomic-gum-navlist-other,
.ccm-page .atomic-gum-multi-area-header .atomic-gum-navlist-other {
    z-index: -1;
}

.ccm-page .atomic-gum-top-navigation-bar .nav-item.gum-search-dropdown {
    display: flex;
    margin-left: auto;
    order: 1;
}

.ccm-page .atomic-gum-header-banner-area.container,
.ccm-page .atomic-gum-header-banner-area.container-fluid {
    margin-left: auto;
    margin-right: auto;
    margin-top: 0;
    margin-bottom: 0;
    padding-left: 0;
    padding-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    width: 100%;
}

/*
 * Some default values for tranparency (bgt opacity) when enabled. These can be overridden by
 * configuration settings.
 */

.ccm-page .atomic-gum-navbar-transparency-enable {
    --atomic-gum-navbar-bg-opacity-min: 0.1;
    --atomic-gum-navbar-bg-opacity-max: 1.0;
}

@media (prefers-contrast: more) {
    .ccm-page .atomic-gum-navbar-transparency-enable {
        --atomic-gum-navbar-bg-opacity-min: 1.0;
        --atomic-gum-navbar-bg-opacity-max: 1.0;
    }
}

/*
 * If we have a potential transparency, it needs to overlap what is below it/next, so set it absolute. The
 * rationale is that transparency should only be configured when there is something to be transparent over!
 */

.ccm-page .atomic-gum-navbar-transparency-enable:has(.atomic-gum-fixed-at-top) {
    position: absolute;
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
    transition: background-color 0.4s ease;
}

.ccm-page .atomic-gum-navbar-transparency-enable:has(.atomic-gum-fixed-at-top:not(.atomic-gum-transparency-active)) {
    --atomic-gum-navbar-bg-opacity: var(--atomic-gum-navbar-bg-opacity-max);
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
}

.ccm-page .atomic-gum-navbar-transparency-enable:has(.atomic-gum-fixed-at-top.atomic-gum-transparency-active) {
    --atomic-gum-navbar-bg-opacity: var(--atomic-gum-navbar-bg-opacity-min);
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
}

.ccm-page .atomic-gum-navbar-transparency-enable .atomic-gum-fixed-top-scroll{
    --atomic-gum-navbar-bg-opacity: var(--atomic-gum-navbar-bg-opacity-min);
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
}

.ccm-page .atomic-gum-navbar-transparency-enable .atomic-gum-fixed-at-top.atomic-gum-transparency-active,
.ccm-page .atomic-gum-navbar-transparency-enable .atomic-gum-transparency-active:has(.atomic-gum-fixed-at-top) {
    /*--atomic-gum-navbar-bg-opacity: 0.1;*/
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
    transition: background-color 0.4s ease;
}

.ccm-page .atomic-gum-navbar-transparency-enable.atomic-gum-transparency-active .atomic-gum-navlist.atomic-gum-fixed-top {
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
    background-color: transparent !important;
}

.ccm-page .atomic-gum-navbar-transparency-enable [class*="bg-"] {
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity);
    transition: background-color 0.4s ease;
}

/*
 * Make sure dropdown menus don't have the opacity we have given the navbar
 */

.ccm-page .atomic-gum-navbar-transparency-enable .atomic-gum-transparency-active .dropdown-menu {
    --bs-bg-opacity: var(--atomic-gum-navbar-bg-opacity-max);
    background-color: inherit;
}

/* The placeholder handles the smooth structural collapse */
.ccm-page .atomic-gum-transition-placeholder {
    visibility: hidden;
    pointer-events: none;
    overflow: hidden; /* Vital for clean scrolling transitions */
    transition: height 0.3s ease, margin 0.3s ease, padding 0.3s ease;
}

/* ==== MOBILE SCREEN SIZE ====
 * Special cases for small screens - when the hamburger is showing.
 */
@media (max-width: 991px ) {
    /* --atomik-page-theme-md-max */
    /*
     * The navbar block doesn't need this, but the multi-area-header does, or sticky
     * gets some weird foibles.
     */
    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top-mobile,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top-mobile {
        left: 0;
        right: 0;
        z-index: 999;
        position: relative;
    }

    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top-mobile.atomic-gum-fixed-at-top,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top-mobile.atomic-gum-fixed-at-top {
        position: fixed;
        z-index: 999;
    }

    /*
     * Unfortunately the later --bs-dropdown-link-hover-color don't exist outside of a dropdown,
     * but they are consistently set to --bs-body-color across Atomik skins, so we configure that
     * here.
     */
    .ccm-page .atomic-gum-navlist .navbar-nav .nav-link:hover {
        color: var(--bs-body-color);
        background-color: var(--bs-body-bg);
    }

    .ccm-page .atomic-gum-navlist .navbar-nav .nav-item {
        width: calc(100% - 0.5em);
    }

    .ccm-page .atomic-gum-navlist .navbar-nav .nav-item .nav-link {
        --bs-nav-link-padding-x: var(--bs-navbar-nav-link-padding-x);
    }


    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-navlist .nav-link {
        text-align: left;
        padding-left: 1rem;
    }

    .ccm-page .atomic-gum-top-navigation-bar .gum-search-dropdown .gum-search-dropdown-control {
        display: none !important;
    }

    .ccm-page .atomic-gum-top-navigation-bar .gum-search-dropdown .gum-search-dropdown-body {
        display: block !important;
        position: static !important;
        --bs-dropdown-bg: transparent;
        width: calc(100% - 0.5em);
        transform-origin: unset;
        transform: none;
        opacity: 1;
        height: auto;
        margin-left: 1rem;
        margin-right: 1rem;
        visibility: visible;
    }

    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-navlist .dropdown-menu {
        padding-left: 1rem;
    }

    /*
     * Atomik etc use a shadow to add definition to the dropdown. But we don't want that on smaller
     * screens when we go vertical.
     * Stop the dropdown from overflowing its parent. Similar rules below for nested dropdowns.
     * Allow for increase indentation of nested dropdowns.
     */
    .ccm-page .atomic-gum-navlist .dropdown-menu {
        box-shadow: none;
        max-width: calc(100% - 0.5em);
    }

    .ccm-page .atomic-gum-navlist .dropdown-menu .dropdown-menu {
        max-width: calc(100% - 1em);
    }

    .ccm-page .atomic-gum-navlist .dropdown-menu .dropdown-menu .dropdown-menu {
        max-width: calc(100% - 1.5em);
    }

    .ccm-page .atomic-gum-navlist .dropdown-menu .dropdown-menu .dropdown-menu .dropdown-menu {
        max-width: calc(100% - 2em);
    }

    .ccm-page .atomic-gum-navlist .gum-search-dropdown-control {
        display: none;
    }
}

/*
 * Mobile nav, toggle open/closed.
 * IMPORTANT - Also used for toggles and for search dropdown on
 *  desktop, so not a mobile only style!
 */

.ccm-page .atomic-gum-navlist [aria-expanded="false"] .open-icon {
    display: inline;
}

.ccm-page .atomic-gum-navlist [aria-expanded="true"] .open-icon {
    display: none;
}

.ccm-page .atomic-gum-navlist [aria-expanded="false"] .close-icon {
    display: none;
}

.ccm-page .atomic-gum-navlist [aria-expanded="true"] .close-icon {
    display: inline;
}

/*
 * Visually merge blocks to the block above or below them by removing respective top/bottom.
 * Requires corresponding setting in the other block/template. Use this to visually merge multiple
 * sidebar menus such as an autonav and a manual nav, or to combine topic/tag/date filters into one!
 *
 * IMPORTANT - we also need to remove the border from the below element to avoid double borders.
 */

.ccm-page .atomic-gum-navlist.gum-attach-above {
    padding-top: 0;
    margin-top: 0;
    border-top-width: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

.ccm-page .atomic-gum-navlist.gum-attach-above > *:first-child,
.ccm-page .atomic-gum-navlist.gum-attach-above > *:first-child > *:first-child {
    border-top-width: 0 !important;
    border-top-left-radius: 0 !important;
    border-top-right-radius: 0 !important;
}

.ccm-page .atomic-gum-navlist.gum-attach-below {
    padding-bottom: 0;
    margin-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.ccm-page .atomic-gum-navlist.gum-attach-below > *:last-child {
    border-bottom-left-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

/* ==== Menu item custom styles - special cases ====
 * Special case where the custom style is a button
 */

.ccm-page .atomic-gum-navlist .nav-item.atomic-gum-attribute-class-assigned.btn {
    margin-left: 0.5em;
    margin-right: 0.5em;

}

.ccm-page .atomic-gum-navlist .dropdown-menu .nav-item.atomic-gum-attribute-class-assigned.btn {
    width: calc(100% - 1em);
    margin-left: 0.5em;
    margin-right: 0.5em;
    margin-top: 0.25em;
    margin-bottom: 0.25em;
}

.ccm-page .atomic-gum-navlist .dropdown-menu .nav-item.atomic-gum-attribute-class-assigned.btn .nav-link.atomic-gum-parent-attribute-class-assigned {
    padding: 0.25em 0;
}

/* ===== DESKTOP ONLY ====
 *
 */
@media (min-width: 992px) {
    /* --atomik-page-theme-lg */
    /*
     * Sticky nav bars
     */
    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top,
    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top-scroll,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top-scroll{
        left: 0;
        right: 0;
        z-index: 999;
        position: relative;
    }

    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top.atomic-gum-fixed-at-top,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top.atomic-gum-fixed-at-top,
    .ccm-page .atomic-gum-top-navigation-bar .atomic-gum-fixed-top-scroll.atomic-gum-fixed-at-top,
    .ccm-page .atomic-gum-multi-area-header .atomic-gum-fixed-top-scroll.atomic-gum-fixed-at-top {
        position: fixed;
        z-index: 999;
    }


    /*
     * In the sidebar we have an option to turn into a vertical menu, cf the hamburger slide-open used
     * on small screen. Below 992 px a navbar becomes stacked anyway, so the below is redundant.
     */
    .ccm-page .col-sidebar .atomic-gum-navlist.sidebar-stacked.navbar.navbar-expand-lg .navbar-nav,
    .ccm-page .atomic-gum-navlist.always-stacked.navbar.navbar-expand-lg .navbar-nav {
        flex-wrap: wrap;
        flex-direction: column;
        margin-bottom: 8px;
        flex-grow: 1;
        width: 100%;
        --bs-dropdown-link-hover-color: var(--bs-body-color);
        --bs-dropdown-link-hover-bg: var(--bs-body-bg);
    }

    .ccm-page .col-sidebar .atomic-gum-navlist.sidebar-stacked.navbar.navbar-expand-lg .nav-link:hover,
    .ccm-page .atomic-gum-navlist.always-stacked.navbar.navbar-expand-lg .nav-link:hover {
        color: var(--bs-dropdown-link-hover-color);
        background-color: var(--bs-dropdown-link-hover-bg);
    }

    .ccm-page .col-sidebar .atomic-gum-navlist.sidebar-stacked.navbar.navbar-expand-lg .dropdown-menu,
    .ccm-page .atomic-gum-navlist.always-stacked.navbar.navbar-expand-lg .dropdown-menu {
        position: relative;
        --bs-dropdown-box-shadow: none;
        max-width: calc(100% - 0.5em); /* as per mobile, don't let it grow wider than parent */
        overflow-x: clip;
    }

    div.ccm-page .col-sidebar .atomic-gum-navlist .nav-link.atomic-gum-parent-attribute-class-assigned.atomic-gum-make-exclusive:hover,
    div.ccm-page .col-sidebar .atomic-gum-navlist .nav-link.atomic-gum-attribute-class-assigned.atomic-gum-make-exclusive:hover {
        background-color: inherit !important;
    }

    .ccm-page .col-sidebar .atomic-gum-navlist.sidebar-stacked.navbar .nav-item,
    .ccm-page .atomic-gum-navlist.always-stacked.navbar .nav-item {
        width: calc(100% - 0.5em);
    }

    .ccm-page .atomic-gum-navlist .gum-search-dropdown-body {
        top: 100%;
        right: 0;
        left: auto;
        min-width: 450px;
    }
}

/*=================================
 * Wide page with fixed width sidebar. Allows the main area to
 * fill whatever page we have available on extra wide windows
 */
@media (min-width: 1200px) {
    .ccm-page .sidebar-full-width {
        --gum-xl-width: calc(1200px - var(--bs-gutter-x));
        --gum-col-full-width: calc(var(--gum-xl-width) / 12);
    }

    /*
     * Remove width of .container for our overall template
     */
    .ccm-page .container.sidebar-full-width {
        max-width: none;
    }

    /*
     * Remove width of immediately nested .container for the main area
     * Note width max also constrained by gutter. It can't just be
     * none or 100%
     */
    .ccm-page .sidebar-full-width .wide-main > .container {
        max-width: calc(100% - var(--bs-gutter-x));
    }

    /*
     * We now make sure the sidebar scale is relative to the fixed grid, not the
     * overriding flexi grid.
     */
    .ccm-page .sidebar-for-wide.col-1,
    .ccm-page .sidebar-for-wide.col-md-1,
    .ccm-page .sidebar-for-wide.col-lg-1,
    .ccm-page .sidebar-for-wide.col-xl-1 {
        flex: 0 0 calc(var(--gum-col-full-width) * 1);
        max-width: calc(var(--gum-col-full-width) * 1);
    }

    .ccm-page .sidebar-for-wide.col-2,
    .ccm-page .sidebar-for-wide.col-md-2,
    .ccm-page .sidebar-for-wide.col-lg-2,
    .ccm-page .sidebar-for-wide.col-xl-2 {
        flex: 0 0 calc(var(--gum-col-full-width) * 2);
        max-width: calc(var(--gum-col-full-width) * 2);
    }

    .ccm-page .sidebar-for-wide.col-3,
    .ccm-page .sidebar-for-wide.col-md-3,
    .ccm-page .sidebar-for-wide.col-lg-3,
    .ccm-page .sidebar-for-wide.col-xl-3 {
        flex: 0 0 calc(var(--gum-col-full-width) * 3);
        max-width: calc(var(--gum-col-full-width) * 3);
    }

    .ccm-page .sidebar-for-wide.col-4,
    .ccm-page .sidebar-for-wide.col-md-4,
    .ccm-page .sidebar-for-wide.col-lg-4,
    .ccm-page .sidebar-for-wide.col-xl-4 {
        flex: 0 0 calc(var(--gum-col-full-width) * 4);
        max-width: calc(var(--gum-col-full-width) * 4);
    }

    .ccm-page .sidebar-for-wide.col-5,
    .ccm-page .sidebar-for-wide.col-md-5,
    .ccm-page .sidebar-for-wide.col-lg-5,
    .ccm-page .sidebar-for-wide.col-xl-5 {
        flex: 0 0 calc(var(--gum-col-full-width) * 5);
        max-width: calc(var(--gum-col-full-width) * 5);
    }

    .ccm-page .sidebar-for-wide.col-6,
    .ccm-page .sidebar-for-wide.col-md-6,
    .ccm-page .sidebar-for-wide.col-lg-6,
    .ccm-page .sidebar-for-wide.col-xl-6 {
        flex: 0 0 calc(var(--gum-col-full-width) * 6);
        max-width: calc(var(--gum-col-full-width) * 6);
    }
}


/* ===== TOPICS AND TAGS =====
 * We have some common styling for topics and tags lists. Homogenise the CSS
 */

.ccm-page .ccm-block-topic-list ul.ccm-block-topic-list-list.atomic-gum-no-border li,
.ccm-page .ccm-block-topic-list ul.ccm-block-topic-list-list.atomic-gum-no-border li:first-child,
.ccm-page .ccm-block-topic-list ul.ccm-block-topic-list-list.atomic-gum-no-border li:last-child {
    border: none;
    border-radius: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

/* ===== FOOTER SECTION =====
 * Footer area.
 */

.ccm-page footer.atomic-gum-link_style a,
.ccm-page footer.atomic-gum-link_style .ccm-block-social-links a {
    color: var(--atomic-gum-footer-link-color, rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)));
}

.ccm-page footer.atomic-gum-link_style a:hover,
.ccm-page footer.atomic-gum-link_style .ccm-block-social-links a:hover {
    color: var(--atomic-gum-footer-link-hover-color, rgba(var(--bs-link-hover-color-rgb), var(--bs-link-opacity, 1)));
}


/* ============ PAGE LISTS & RELATED ===============
 * Page lists, summary templates, cards. Lists of pages
 * other than navigation
 */

/*
 * host next thumbnail
 */

.ccm-page .atomic-gum-using-host-prev-next-list {
    --atomic-gum-using-host-prev-next-min-element-width: 320px;
}

.ccm-page .atomic-gum-using-host-prev-next-list {
    display: grid;
    grid-template-columns: repeat( auto-fill, minmax(var(--atomic-gum-using-host-prev-next-min-element-width), 1fr));
    gap: 10px;
    padding-left: 5px;
    padding-right: 5px;
}

/*
 * Elemental thumbnail grid
 */
.ccm-page div.ccm-block-page-list-thumbnail-grid-wrapper {
    --page-list-entry-grid-mask-opacity: 0.7;
}

.ccm-page div.ccm-block-page-list-thumbnail-grid-wrapper .ccm-block-page-list-page-entry-grid-thumbnail {
    margin-bottom: 30px;
    overflow: hidden;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail-hover {
    opacity: 0;
    -webkit-transition: opacity 0.2s;
    -moz-transition: opacity 0.2s;
    -ms-transition: opacity 0.2s;
    -o-transition: opacity 0.2s;
    transition: opacity 0.2s;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail a {
    position: relative;
    display: table;
    padding-top: 66%;
    width: 100%;
    margin-bottom: 10px;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail img {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    z-index: 1;
    object-fit: cover;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail-hover {
    position: absolute;
    top: 0px;
    left: 0px;
    width: 100%;
    height: 100%;
    background-color: rgba(var(--bs-dark-rgb), var(--page-list-entry-grid-mask-opacity, 0.7));
    z-index: 2;
}

.ccm-page div.ccm-block-page-list-thumbnail-grid-wrapper i.ccm-block-page-list-page-entry-grid-thumbnail-icon:before {
    font-family: FontAwesome;
    content: "\f064";
    display: block;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail a:hover div.ccm-block-page-list-page-entry-grid-thumbnail-hover {
    opacity: 1;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail-title-wrapper {
    display: table;
    width: 100%;
    height: 100%;
}

.ccm-page div.ccm-block-page-list-page-entry-grid-thumbnail-title {
    display: table-cell;
    width: 100%;
    text-align: center;
    height: 100%;
    vertical-align: middle;
    text-align: center;
    color: #fff;
}


/*
 * Summary templates
 */
.ccm-page .atomic-gum-host-summary {
    --atomic-gum-using-host-summary: 320px;
}

.ccm-page .atomic-gum-host-summary {
    display: grid;
    grid-template-columns: repeat( auto-fill, minmax(var(--atomic-gum-using-host-summary), 1fr));
    gap: 10px;
    padding-left: 5px;
    padding-right: 5px;
}


/* ==== SIMPLE BYLINE and CARDS ====
 * Simple byline and cards lists. Used in many places, so add the styles globally.
 */
/* https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_containment/Container_queries */


.ccm-page .atomic-gum-cards-list {
    --atomic-gum-cards-min-element-width: 320px;
}

.ccm-page .atomic-gum-cards-list {
    display: grid;
    grid-template-columns: repeat( auto-fill, minmax(var(--atomic-gum-cards-min-element-width), 1fr));
    gap: 10px;
    padding-left: 5px;
    padding-right: 5px;
}

.ccm-page .simple-byline-tagline-item {
    display: inline-block;
    margin-right: 1em;
}

.ccm-page .simple-byline-tagline-item:last-child {
    margin-right: auto;
}

.ccm-page .simple-byline-tagline-item .tagline-divider {
    opacity: 70%;
}

.ccm-page .simple-byline-tagline-item .tagline-divider::after {
    content: "\200B"; /* zero width space, simplified break */
    margin-right: 0.2em;
}

/*
 * When using an avatar in a byline, match it to Atomik avatar styles
 */
.ccm-page .simple-byline-tagline-item .gum-blog-author-byline-avatar img {
    border-radius: 50% !important;
    height: auto;
    max-width: 32px;
}


.ccm-page .atomic-gum-cards-list-item {
    border-color: var(--bs-dark-bg-subtle);
    border-width: var(--bs-border-width);
    border-style: var(--bs-border-style);
    border-radius: var(--bs-border-radius);
    position: relative;
    overflow: hidden;
    transition: all .1s ease-in-out;
    float: left;
    display: inline-block;
    padding: 10px;
    padding-bottom: calc(10px + 3rem);
}

.ccm-page .atomic-gum-cards-list-item:hover {
    transform: scale(1.015);
    border-color: var(--bs-link-hover-color);
    z-index: 1;
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-list-item-image .atomic-gum-cards-list-item-image-size {
    position: relative;
    overflow: hidden;
    padding-top: 66%;
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-list-item-image-size .atomic-gum-cards-image {
    object-fit: cover;
    object-position: 50% 50%;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-content .atomic-gum-cards-description {
    margin-top: 1em;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.5em;
    max-height: calc(5 * 1.5em);
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-content .atomic-gum-cards-button-wrapper {
    position: absolute;
    bottom: 10px;
    width: calc(100% - 10px - 10px);
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-button-wrapper .atomic-gum-cards-button {
    float: right;
}

.ccm-page .atomic-gum-cards-list-item .atomic-gum-cards-tagline-item {
    margin-right: 1.5em;
    display: inline-block;
}

.ccm-page .atomic-gum-cards-list-item .taglist-divider {
    opacity: 70%;
    margin-left: 0.2em;
    margin-right: 0.2em;
}


/* =================================
 * TESTIMONIAL
 */

/* Base Display & Structural Resets */
.ccm-page.theme-atomik .gum-testimonial-hero-quote .gum-quote-start .quote-start,
.ccm-page.theme-atomik .gum-testimonial-hero-quote .gum-quote-end .quote-end {
    display: block;
}

/* Container Positioning */
.ccm-page.theme-atomik .gum-testimonial-hero .gum-testimonial-hero-quote,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-testimonial-hero-attribution,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-testimonial-hero-wide-quote,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-start-col,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-end-col,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-start-col .gum-quote-start,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-end-col .gum-quote-end {
    position: relative;
}

/* Shared Quote Styling (Hero & Wide Variants) */
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-start,
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-end {
    font-size: 3rem;
    color: white;
    background-image: none;
    line-height: 1;
    height: 100%;
}

/* Hero-Specific Layout */
.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-start {
    margin-bottom: 0;
    padding-bottom: 0;
}

.ccm-page.theme-atomik .gum-testimonial-hero .gum-quote-end {
    float: right;
    margin-top: 0;
    padding-top: 0;
}

.ccm-page.theme-atomik .gum-testimonial-hero .gum-testimonial-hero-avatar-image {
    margin-top: 0;
}

/* Wide Quote Configuration (Absolute Positioning) */
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-start,
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-end {
    position: absolute;
    margin: 0;
    padding: 0;
}

/* Start Quote Placement */
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-start,
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-start-col .quote-starts.gum-quote-start .quote-start {
    top: 0;
    right: 0;
    left: auto;
    bottom: auto;
}

/* End Quote Placement */
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-end,
.ccm-page.theme-atomik .gum-testimonial-hero-wide-quote .gum-quote-end-col .quote-ends.gum-quote-end .quote-end {
    bottom: 0;
    left: 0;
    top: auto;
    right: auto;
}

/*=====================
 * Feature blocks
 */

/* Grouped Shared Styles */
.ccm-page.theme-atomik .gum-feature .gum-feature-image,
.ccm-page.theme-atomik .gum-feature .gum-feature-icon,
.ccm-page.theme-atomik .gum-feature-stacked .gum-feature-stacked-image,
.ccm-page.theme-atomik .gum-feature-stacked .gum-feature-stacked-icon {
    margin-bottom: 1.5rem;
}

.ccm-page.theme-atomik .gum-feature .gum-feature-image,
.ccm-page.theme-atomik .gum-feature-stacked .gum-feature-stacked-image {
    width: auto;
    object-fit: contain;
}

.ccm-page.theme-atomik .gum-feature-stacked .gum-feature-stacked-image {
    vertical-align: middle;
}

.ccm-page.theme-atomik .gum-feature .gum-feature-link {
    display: flex;
    align-items: flex-end;
}

.ccm-page.theme-atomik .gum-feature .gum-feature-link .gum-feature-heading {
    padding-bottom: 0.5rem;
    margin-left: 1rem;
}

/*=====================================
 * Page title
 */

/*
 * Base for the background, shows as a grey if there is no image, or gets masked by the image
 * Image is applied as a style in the view over this
 */

.ccm-page .ccm-block-page-title.title-banner {
    position: relative;
    min-height: 30vh;
    position: relative;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    background-color: rgba(var(--bs-dark-rgb), 1);
}

.ccm-page .ccm-block-page-title.title-banner.title-inherits-from-ccm-block-design {
    background-color: transparent;
}

.ccm-page .ccm-block-custom-template-gum-title-banner:has(.title-inherits-from-ccm-block-design) {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}

/*
 * A mask color only applied over the optional image
 */
.ccm-page .ccm-block-page-title .title-banner-mask {
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    background-color: rgba(var(--bs-dark-rgb), 0.4);
}

/*
 * Used within the size maker to force the container to have a size that is big enough for the title
 * The title here is transparent. Gets overridden by the below to add colour in the next layer.
 */
.ccm-page .ccm-block-page-title.title-banner .title-page-title {
    padding: 0 2em 0 2em;
    margin: 0;
    width: 100%;
}

/*
 * Container for the text overlay
 */
.ccm-page .ccm-block-page-title .title-banner-text-position {
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
}

.ccm-page .ccm-block-page-title.title-banner .title-size-maker {
    opacity: 0;
}

.ccm-page .ccm-block-page-title.title-banner .title-banner-text-position .title-page-title {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: var(--bs-light);
}


/*=====================================
 * Hero Image
 */

div.ccm-block-hero-image.title-banner div.ccm-block-hero-image-text h1.page-title.title-page-title {
    font-size: calc(1.375rem + 1.5vw);
}

@media (min-width: 1200px) {
    div.ccm-block-hero-image.title-banner div.ccm-block-hero-image-text h1.page-title.title-page-title {
        font-size: 2.5rem;
    }
}

/*==========================================
 * Search
 */

.ccm-page .atomic-gum-navlist.ccm-atomic-gum-dropdown-search {
    float: right;
    position: relative;
}

@media (max-width: 576px) {
    .ccm-page .atomic-gum-navlist.ccm-atomic-gum-dropdown-search .dropdown-menu-end {
        right: 0;
        left: auto;
        min-width: 80vw; /* keeps it inside viewport on mobile */
    }
}


/* ===== DEVELOPER and EDITING AIDS=====
 * Editing aids
 */

.ccm-toolbar-visible .ccm-page .atomic-gum-mark-guest-not-visible .not-visible-to-guest {
    outline: 2px dashed purple;
}

/*
 * Debug styles, wrap key elements in outlines so we can see how the blocks are nested
 */

.ccm-page .atomic-gum-debug,
.ccm-page .atomic-gum-debug-block {
    outline: 2px dashed red;
}

.ccm-page .atomic-gum-debug .byline-item,
.ccm-page .atomic-gum-debug ul,
.ccm-page .atomic-gum-debug-block div {
    outline: 2px dashed orange;
}

.ccm-page .atomic-gum-debug ul li,
.ccm-page .atomic-gum-debug-block div div {
    outline: 2px dotted yellow;
}

.ccm-page .atomic-gum-debug ul ul,
.ccm-page .atomic-gum-debug-block div div div {
    outline: 2px dashed green;
}

.ccm-page .atomic-gum-debug ul ul li,
.ccm-page .atomic-gum-debug-block div div div div {
    outline: 2px dotted blue;
}

.ccm-page .atomic-gum-debug ul ul ul,
.ccm-page .atomic-gum-debug-block div div div div div {
    outline: 2px dashed indigo;
}

.ccm-page .atomic-gum-debug ul ul ul li,
.ccm-page .atomic-gum-debug-block div div div div div div {
    outline: 2px dotted violet;
}

.ccm-page .atomic-gum-debug ul ul ul ul,
.ccm-page .atomic-gum-debug-block div div div div div div div {
    outline: 2px dashed cyan;
}

.ccm-page .atomic-gum-debug ul ul ul ul li,
.ccm-page .atomic-gum-debug-block div div div div div div div div {
    outline: 2px dotted magenta;
}


