/* Contains styles required by both the Marketing site and by TNEW, including:
        .ct-navbar      <- site navigation header menu 
        #searchPanel    <- offcanvas element containing search/directory
        #boxOfficeModal <- modal card with Box Office contact info & hours 
        .ct-footer      <- site footer
        .closeBtn       <- button style used both here and elsewhere (but it has to live here)
*/

:root,
.ct-bs {
    /* <-- wrapper used on tnew template to scope these elements and avoid bootstrap conflicts  */

    /* #region Navbar */

    --ct-nav-height: calc(8vw + 1rem);

    @media(max-width:575.98px) {
        --ct-nav-height: 14vw;
    }

    @media(min-width:992px) {
        --ct-nav-height: 8rem;
    }

    .ct-navbar {
        background-color: #000;
        color: #fff;
        flex-flow: row;
        min-height: var(--ct-nav-height);

        .btn {
            --ct-btn-font-size: inherit;
            --ct-btn-font-weight: inherit;
        }

        .btn-white,
        .btn-light {
            --ct-btn-color: #000;
            --ct-btn-bg: #fff;
            --ct-btn-border-color: #fff;
            --ct-btn-hover-color: #000;
            --ct-btn-hover-bg: var(--ct-primary-200);
            --ct-btn-hover-border-color: var(--ct-primary-200);
            --ct-btn-active-color: #000;
            --ct-btn-active-bg: var(--ct-primary-300);
            --ct-btn-active-border-color: var(--ct-primary-300);
        }

        .btn-outline-light,
        .btn-light.btn-outline,
        .btn-outline-white,
        .btn-white.btn-outline {
            --ct-btn-color: #fff;
            --ct-btn-border-color: #fff;
            --ct-btn-hover-color: var(--ct-primary-200);
            --ct-btn-hover-bg: var(--ct-primary-800);
            --ct-btn-hover-border-color: var(--ct-primary-200);
            --ct-btn-active-color: var(--ct-primary-300);
            --ct-btn-active-bg: var(--ct-primary-900);
            --ct-btn-active-border-color: var(--ct-primary-300);
        }

        .btn-link {
            --ct-btn-color: #fff;
            --ct-btn-hover-color: var(--ct-primary-200);
            --ct-btn-active-color: var(--ct-primary-300);
            --ct-btn-disabled-color: var(--ct-gray-300);
            --ct-btn-padding-y: 0.5em;
            --ct-btn-text-transform: uppercase;
        }

        .btn.dropdown-toggle {
            --ct-btn-padding-x: 0.75em;
            --ct-btn-color: #fff;
            --ct-btn-bg: transparent;
            --ct-btn-border-color: transparent;
            --ct-btn-hover-color: #fff;
            --ct-btn-hover-bg: transparent;
            --ct-btn-hover-border-color: #fff;
            --ct-btn-active-color: #fff;
            --ct-btn-active-bg: transparent;
            --ct-btn-active-border-color: var(--ct-primary-300);

            &.hasActive:after {
                color: var(--ct-primary-300);
            }
        }

        .btn.searchToggle {
            --ct-btn-color: #fff;
            --ct-btn-bg: transparent;
            --ct-btn-border-color: transparent;
            --ct-btn-hover-color: #fff;
            --ct-btn-hover-border-color: #fff;
            --ct-btn-hover-bg: transparent;
            --ct-btn-active-color: #000;
            --ct-btn-active-bg: #fff;
            --ct-btn-active-border-color: #fff;
            --ct-btn-border-width: 2px;
            transform: translateY(-1px);
        }

        .btn-iconText {
            display: flex;
            flex-flow: row;
            align-items: center;
            column-gap: 0.25em;
            padding: 0 0 0 0.5em !important;

            i {
                font-size: 2rem;
            }

            span {
                font-size: 1em;
                padding: 0.6em 0.5em 0.4em 0;
            }
        }

        .ct-navbar-wrap {
            column-gap: 1em;

            @media (max-width:767.98px) {
                max-height: 100vh;
                overflow-y: auto;
                scrollbar-width: none;
            }
        }

        .ct-navbar-brand img {
            max-width: 25vw;
            max-height: 6rem;
            min-height: 3rem;
            aspect-ratio: 198 / 106;
            height: 8vw;
        }

        .ct-sitenav {
            flex-flow: column;
            align-items: stretch;
            justify-content: center;
            max-width: fit-content;
        }

        .ct-sitenav-divider {
            width: 100%;
            height: 1px;
            background-color: #fff;
            opacity: 100;
        }

        .ct-sitenav-row {
            position: relative;
            display: flex;
            flex-flow: row wrap;
            column-gap: 0.25em;
            justify-content: space-between;

            color: #fff;
            font-family: "Univers";
            font-stretch: condensed;
            font-weight: 400;
            font-size: 1rem;
        }

        .dropdown-menu {
            text-transform: uppercase;

            .dropdown-item:focus-visible {
                outline: none;
            }
        }

        #menu-main-menu {
            font-size: 1.25rem;
            font-weight: 500;
            column-gap: 1rem;
        }

        .ct-navbar-mobileWrap {
            display: flex;
            flex-flow: row;
            column-gap: 0.5rem;
            justify-content: end;

            .btn {
                --ct-btn-font-size: 1.125rem;
                --ct-btn-font-weight: 500;
                height: 3rem;
                align-content: center;
                width: min-content;
                line-height: 0.9;
                padding: 0.1em 0.75em 0 0.75em;

                &.burgerToggle {
                    padding: 0;
                    --ct-btn-color: #fff;
                    --ct-btn-bg: transparent;
                    --ct-btn-border-color: var(--ct-gray-400);
                    --ct-btn-hover-color: #fff;
                    --ct-btn-hover-bg: var(--ct-gray-900);
                    --ct-btn-hover-border-color: #fff;
                    --ct-btn-active-color: #fff;
                    --ct-btn-active-bg: var(--ct-gray-700);
                    --ct-btn-active-border-color: #fff;
                    --ct-btn-font-size: 2rem;
                    --ct-btn-padding-x: 0;
                    --ct-btn-padding-y: 0;
                    align-content: center;
                    aspect-ratio: 1;

                    i {
                        transition: transform 0.1s ease-in-out;
                    }

                    &[aria-expanded="true"] {

                        --ct-btn-bg: var(--ct-gray-800);
                        --ct-btn-hover-bg: var(--ct-gray-700);
                        --ct-btn-active-bg: var(--ct-gray-900);

                        i {
                            transform: rotate(90deg);
                        }
                    }
                }
            }
        }

        .mobileSearchForm {
            flex-flow: row;
            --ct-border-color: var(--ct-gray-400);

            #mobileSearchFormBox {
                font-stretch: condensed;

                &:focus {
                    box-shadow: none;
                }

                &:focus-visible {
                    border-color: var(--ct-border-color);
                    background-color: var(--ct-gray-800);
                }
            }

            .btn#mobileSearchFormButton {
                --ct-btn-padding-x: 0.5em;
            }
        }
    }

    @media (max-width:1199.98px) {
        .ct-navbar .ct-sitenav .ct-sitenav-row {
            font-size: 1.3vw;
        }
    }

    @media (max-width:991.98px) {
        .ct-navbar {
            .ct-navbar-wrap {
                flex-flow: row wrap;
            }

            .ct-sitenav {
                width: stretch;
                max-width: stretch;
            }

            .dropdown {
                max-width:100%;
                overflow-x:clip;
                text-fit:shrink;
            }

            .btn.dropdown-toggle {
                --ct-btn-border-radius: 0;
                --ct-btn-border-color: #fff;
                --ct-btn-hover-border-color: #fff;
                --ct-btn-hover-color: #fff;
                --ct-btn-hover-bg: var(--ct-gray-800);
                --ct-btn-active-bg: var(--ct-gray-700);
                --ct-btn-active-color: #fff;
                --ct-btn-active-border-color: #fff;
                --ct-btn-padding-y: 0.625rem;
                --ct-btn-padding-x: 2rem;
                --ct-btn-line-height: 1.4;
                border-left: none;
                border-right: none;

                width: 100%;
                margin-top: -1px;

                &:focus-visible {
                    outline: none;
                    color: var(--ct-primary-200);
                    background-color: var(--ct-primary-800);
                }
            }

            .dropdown-menu {
                --ct-dropdown-bg: var(--ct-gray-900);
                --ct-dropdown-link-color: #fff;
                --ct-dropdown-link-hover-bg: var(--ct-gray-800);
                --ct-dropdown-link-hover-color: #fff;
                --ct-dropdown-link-active-color: var(--ct-primary-200);
                --ct-dropdown-link-active-bg: var(--ct-primary-800);
                --ct-dropdown-item-padding-x: 1rem;
                --ct-dropdown-item-padding-y: 0.625rem;
                --ct-dropdown-item-border-radius: 0;
                --ct-dropdown-spacer: 0;
                border-width: 0;
                width: 100%;
                position: relative;

                .dropdown-item {
                    border-bottom: solid 1px rgba(255, 255, 255, 0.7);
                    text-fit:shrink;

                    &:focus-visible {
                        outline: none !important;
                        color: var(--ct-primary-200);
                        background-color: var(--ct-primary-900);
                    }
                }
            }

            #menu-main-menu {
                justify-content: space-around;
                row-gap: 1rem;
                flex-flow: row wrap;
                background-color: var(--ct-gray-900);

                .btn {
                    min-width: min-content;
                    width: 30%;
                    white-space: nowrap;
                    flex-shrink: 1;
                    flex-grow: 1;
                }

                .btn-link {
                    --ct-btn-border-color: #fff;
                    --ct-btn-hover-bg: var(--ct-primary-800);
                    --ct-btn-hover-border-color: var(--ct-primary-200);
                    --ct-btn-active-bg: var(--ct-primary-900);
                    --ct-btn-active-border-color: var(--ct-primary-300);
                    --ct-btn-padding-x: 1em;
                }
            }

            #menu-top-level-navigation {
                flex-flow: column;
                font-size: 1rem;
            }
        }
    }

    @media (min-width:992px) {
        .home {
            .ct-navbar {
                transition: background-color 0.2s ease-in-out;
            }

            .ct-navbar:not(.scrolled) {
                background-color: transparent;

                .btn-white,
                .btn-light {
                    --ct-btn-color: var(--ct-primary-500);
                    --ct-btn-hover-color: var(--ct-primary-500);
                    --ct-btn-active-color: var(--ct-primary-500);
                }
            }

            main {
                margin-top: calc(-1 * var(--ct-nav-height));
            }
        }
    }

    @media (max-width:575.98px) {

        .btn {
            --ct-btn-border-radius: 0.7vw;
            --ct-btn-border-width: 0.17vw;
        }

        .ct-navbar {

            .ct-navbar-wrap {
                padding: 2vw !important;
            }

            .ct-navbar-brand {
                margin: 0 !important;
                height: 10vw;

                img {
                    vertical-align: top;
                    min-height: 10vw;
                    max-height: 10vw;
                    height: 10vw;
                    max-width: unset;
                }
            }

            .ct-sitenav {
                margin-left: -2vw;
                margin-right: -2vw;
            }

            #menu-main-menu {
                padding-left: 2vw;
                padding-right: 2vw;
                row-gap: 2vw;
                column-gap: 2vw;

                .btn {
                    width: 60%;
                }
            }

            .ct-navbar-mobileWrap {
                column-gap: 2vw;

                .btn {
                    max-height: 10vw;
                    padding: 0 2vw;
                    --ct-btn-font-size: 4vw;

                    i {
                        font-size: 7vw;
                        width: 100%;
                        height: 100%;
                        vertical-align: top;
                        align-content: center;
                    }
                }
            }
        }

    }

    /* #endregion */

    /* #region Search / Directory */

    #searchPanel {

        --ct-offcanvas-bg: black;
        --ct-offcanvas-border-color: white;
        --ct-border-color: white;

        --ct-offcanvas-width: 500px;
        --ct-heading-color: white;

        max-width: 90vw;
        min-width: 33vw;
        z-index: 1100;

        .offcanvas-title {
            text-transform: uppercase;
        }

        input#searchFormBox {
            font-family: 'Univers';
            font-stretch: condensed;
            font-weight: 400;
            font-size: 1rem;

            &:focus {
                box-shadow: none;
            }

            &:focus-visible {
                background-color: var(--ct-gray-800);
                border-color: white;
            }
        }

        .btn#searchFormButton {
            border-radius: 0 0.25rem 0.25rem 0;
            font-size: 1rem;
        }

        #searchNote {
            width: 100%;
            position: absolute;
            top: 100%;
            margin-top: 0.25rem;
            font-stretch: condensed;
            font-size: 1rem;
            font-family: "Univers";

            opacity: 0;

            transition: opacity .15s linear;

            &.show {
                opacity: 1;
            }
        }

        .directory {

            h3 {
                font-family: 'Univers';
                font-stretch: condensed;
                font-weight: 400;
                color: var(--ct-secondary-500);

                em {
                    font-style: normal;
                    color: var(--ct-secondary-300);
                }
            }

            >ul {
                padding-top: 0 !important;
            }

            ul {
                list-style: none;
                padding: 1rem 0;
                text-transform: uppercase;
                font-family: "Univers";
                font-stretch: condensed;
                font-weight: 400;
                font-size: 1rem;

                strong {
                    font-weight: 400;
                }

                li {
                    width: 100%;
                    padding: 0;

                    &:has(+ul) {
                        padding-top: 1rem;
                        border-top: solid 1px var(--ct-border-color-translucent);
                    }

                    &+ul {
                        padding-bottom: 1rem;
                    }

                    a {
                        padding: 0.5rem 0;
                        display: block;
                        width: 100%;

                        &:hover,
                        &:active,
                        &:focus {
                            background-color: var(--ct-gray-800);
                        }

                        &:focus-visible {
                            background-color: var(--ct-primary-800);
                            outline: solid 2px var(--ct-primary-300);
                            outline-offset: 0;
                        }
                    }
                }
            }

            li.searchFocus a em {
                font-style: normal;
                color: var(--ct-primary-100) !important;
                font-weight: 500 !important;
            }

            ul ul {
                padding: 0;
            }

            ul li {

                border-top: solid 1px var(--ct-border-color-translucent);

                a {
                    color: white;
                    font-size: 1.25rem;
                    font-weight: 500;
                    padding-left: 1rem;

                    &:hover {
                        color: white;
                    }

                    strong {
                        font-weight: 500;
                    }
                }
            }

            ul ul li {

                border-top: solid 1px transparent;

                &:has(+ul) {
                    padding-top: 0;
                    border-top: solid 1px transparent;
                }

                &+ul {
                    padding-bottom: 0;
                }

                a {
                    font-size: 1rem;
                    font-weight: 400;
                    color: var(--ct-primary-300);
                    padding-left: 1rem;

                    strong {
                        font-weight: 400;
                    }
                }
            }

            ul ul ul li {

                a {
                    padding-left: 2rem;
                }
            }

            ul ul ul ul li {
                a {
                    padding-left: 3rem;
                }
            }

            ul ul ul ul ul li {
                a {
                    padding-left: 4rem;
                }
            }

        }
    }

    /* #endregion */

    /* #region Footer */

    .ct-footer {
        justify-content: space-between;
        margin-top: auto;

        .footer-companyInfo {

            font-stretch: condensed;
            display: flex;
            flex-direction: column;
            align-self: stretch;
            justify-content: space-between;
        }

        .footer-logo {
            width: 15rem;
            max-width: 15rem;
            margin-left: -2%;
        }

        a.footer-addr {
            font-size: 1.375rem;
            display: flex;
            flex-direction: column;
            padding-left: 2.4em;

            .footer-addrLine {
                line-height: 1.4;
            }

            color: var(--ct-body-color);

            &:hover,
            &:focus {
                color: var(--ct-primary-600);
            }

        }

        #footer-phone-label {
            font-size: 0.75em;
            margin-bottom: -0.75em;
            margin-top: 1em;
            text-transform: uppercase;
            color: var(--ct-body-color);
            display: block;
            line-height: 1;

            @media (max-width:575.98px) {
                font-size: 5vw;
                margin-top: 2rem !important;
            }
        }

        a.footer-phone {
            font-size: 2em;
            line-height: 1;

            color: var(--ct-body-color);

            &:hover,
            &:focus {
                color: var(--ct-primary-600);
            }

            @media (max-width:575.98px) {
                font-size: 11vw;
                margin-bottom: 2rem !important;
            }
        }

        .footer-link-menus {
            justify-content: space-around;
            border-top: solid 1px var(--ct-border-color-translucent);
            padding-top: 1rem;
            display: flex;
            flex-flow: row;
            column-gap: 1rem;
            margin-top: 6px;
            row-gap: 1.5rem;
        }

        .footer-link-menu {
            list-style: none;
            font-size: 1.25rem;
            font-stretch: condensed;
            text-transform: uppercase;
            padding: 0 0.5rem;

            h4 {
                font-size: 1.25em;
                margin-bottom: 0.1em;
            }

            li a {
                display: block;
            }
        }

        .footer-land {
            font-size: 1.125em;
            line-height: 1.25;
            font-stretch: condensed;
        }

        .footer-socials {
            font-size: 1.375rem;

            a {
                color: var(--ct-blue-500);

                &:hover,
                &:focus {
                    color: var(--ct-blue-600);
                }

                &:active {
                    color: var(--ct-blue-650);
                }
            }
        }
    }

    .postFooterBar {
        width: 100vw;
        height: 12px;
        background-color: var(--ct-primary-500);
    }

    @media (max-width:991.98px) {
        .ct-footer {
            .footer-addr {
                padding-left: 0;
            }

            .footer-link-menu {
                font-size: 1rem;
            }
        }
    }

    @media (max-width:767.98px) {
        .ct-footer .footer-companyInfo {
            flex-flow: row;
            justify-content: space-evenly;
            align-items: center;

            .footer-logo {
                max-width: 40vw;
            }
        }
    }

    @media (max-width:575.98px) {
        .ct-footer {
            padding: 0 2vw !important;

            .footer-companyInfo {

                column-gap: 2vw;
            }

            .footer-addr {
                font-size: 3.8vw;
            }

            .footer-link-menus {

                flex-direction: column;
                border-top: solid 0.17vw var(--ct-border-color-translucent);
            }

            .footer-link-menu {
                font-size: 4.5vw;
                padding: 0;
                margin: 2vw 0;
            }

            .footer-socials {
                font-size: 6vw;
                margin-top: 4vw;
                margin-bottom: 4vw;
            }
        }

        .postFooterBar {
            height: 2vw;
        }
    }

    /*          #endregion*/

    /* #region Box Office */

    .modal-content {
        border: none;
        box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.5);
    }

    #boxOfficeModal {

        .modal-header {

            h3 {
                font-weight: 400;
            }
        }



        .nav-link {
            text-transform: uppercase;
            font-weight: 500;
            font-stretch: condensed;

            &.nav-link-secondary {
                --ct-nav-link-color: var(--ct-secondary-500);
                --ct-nav-link-hover-color: var(--ct-secondary-600);
            }
        }



        #hoursTab-inPerson.nav-link.active {
            .nav-tabs:has(&) {

                --ct-border-color: var(--ct-primary-500);
            }
        }

        #hoursTab-phone.nav-link.active {
            .nav-tabs:has(&) {
                --ct-border-color: var(--ct-secondary-500);
            }
        }
    }


    .boxOfficeContact {
        font-stretch: condensed;
        font-size: 1.25em;
        display: grid;
        grid-template-columns: min-content min-content min-content;
        white-space: nowrap;
        line-height: 1.5;
        column-gap: 0.375em;



        .contactLabel {
            text-align: right;
            color: var(--ct-gray-700);
            text-transform: uppercase;
        }

        i {
            text-align: center;
            color: var(--ct-gray-700);
            line-height: 1.5;
        }
    }

    .hoursTable {
        display: grid;
        font-size: 1.25rem;
        grid-template-columns: 1fr 1fr 2fr 2fr;
        font-stretch: condensed;
        text-align: center;

        .headingCell {
            border-style: solid;
            border-color: var(--ct-border-color-translucent);
            border-width: 0 0 1px 0;
            font-weight: 500;

            &.dateHeading {
                grid-column: 1 / 3;
            }

            &.openHeading {
                grid-column: 3;
            }

            &.closeHeading {
                grid-column: 4;
            }
        }

        .weekday {
            grid-column: 1;
            text-align: right;
            text-transform: uppercase;
            font-weight: 500;
            color: var(--ct-gray-700);
        }

        .monthdate {
            grid-column: 2;
            text-align: left;
            text-transform: uppercase;
            color: var(--ct-gray-700);
        }

        .openTime {
            grid-column: 3;
        }

        .closeTime {
            grid-column: 4;
            position: relative;

            &:before {
                content: "-";
                position: absolute;
                left: -0.25em;
                width: 0.5em;
                display: block;
                text-align: center;
                transform: scaleX(2);
            }
        }

        .overrideText {
            grid-column: 3 / 5;
        }

        .isClosed {
            /*  background-color: var(--ct-light-bg-subtle);*/

            &.overrideText {
                color: var(--ct-gray-600);
            }
        }

        .isToday {
            color: var(--ct-primary-text-emphasis);
            font-weight: 500;

            &.weekday,
            &.monthdate {
                background-color: var(--ct-primary-200);
            }

            &.weekday {
                /*  margin-left:0.5em;
                    border-radius: 3em 0 0 3em;*/
                color: var(--ct-primary-800);
            }

            &.monthdate {

                border-radius: 0 3em 3em 0;
                font-weight: 400;
                color: var(--ct-primary-800);
            }


        }

        .endOfWeek {
            border-style: solid;
            border-color: var(--ct-border-color-translucent);
            border-width: 0 0 1px 0;
        }
    }


    @media (max-width:575.98px) {
        #boxOfficeModal {
            .nav-link {
                font-size: 3.5vw;
            }

            .modal-dialog {
                margin: 2vw;
            }

            .row {
                --ct-gutter-x: 1.38vw !important;
                padding-left: 2vw;
                padding-right: 3vw;
            }

            .btn-lg {
                font-size: 6vw;
            }

            .modal-header {
                padding: 3vw;
            }

            .modal-title {
                font-size: 5vw;
            }

            .closeBtn {
                font-size: 5vw !important;
            }

            .modal-content {
                border: solid 0.17vw #000;
            }
        }

        .boxOfficeContact {
            font-size: 4vw;
        }

        .hoursTable {
            font-size: 4vw;
        }
    }

    /* #endregion */

    /* #region Misc */

    .btn.closeBtn {
        font-size: 1.75rem;
        border-width: 2px;
        border-radius: 50%;
        width: 1.5em;
        min-width: 1.5em;
        height: 1.5em;
        padding: 0;
        line-height: 1.5;

        --ct-btn-color: var(--ct-body-color);
        --ct-btn-bg: transparent;
        --ct-btn-border-color: transparent;
        --ct-btn-hover-color: var(--ct-body-color);
        --ct-btn-hover-bg: transparent;
        --ct-btn-hover-border-color: var(--ct-body-color);
        --ct-btn-active-color: var(--ct-body-bg);
        --ct-btn-active-bg: var(--ct-body-color);
        --ct-btn-active-border-color: var(--ct-body-color);
        --ct-btn-disabled-color: var(--ct-gray-700);
        --ct-btn-disabled-bg: transparent;
        --ct-btn-disabled-border-color: transparent;

        @media (max-width:575.98px) {
            border-width: 0.34vw;
            font-size: 5vw;
        }

        [data-bs-theme=dark] & {
            --ct-body-color: #fff;
        }

        .text-bg-primary &,
        .text-bg-secondary & {
            --ct-btn-color: #fff;
            --ct-btn-hover-color: #fff;
            --ct-btn-hover-border-color: #fff;
            --ct-btn-active-bg: #fff;
            --ct-btn-active-border-color: #fff;
            --ct-btn-disabled-color: var(--ct-gray-200);
        }

        .text-bg-primary & {
            --ct-btn-active-color: var(--ct-primary-500);
        }

        .text-bg-secondary & {
            --ct-btn-active-color: var(--ct-secondary-500);
        }

    }

    /* #endregion */

}