/*
 * NCC Navigation Styles v3.2
 *
 * Architecture:
 *   - PHP (wp_body_open) outputs trigger + #cd-nav with overlay content inside
 *   - #cd-nav is position:fixed, hidden off-screen to the right
 *   - .navigation-is-open on body slides it in and pushes page left
 *   - No JS DOM manipulation — content is always in place
 *   - Navigation block submenus handled by WordPress Interactivity API
 *
 * Sections:
 *   1.  Brand tokens
 *   2.  Menu trigger button
 *   3.  Overlay (#cd-nav) — positioning and slide animation
 *   4.  Site container push animation (.wp-site-blocks)
 *   5.  Overlay content layout (.cd-navigation-wrapper)
 *   6.  Navigation block styles (.cd-nav class on nav blocks)
 *   7.  Classic Genesis nav (main site only)
 *   8.  Subsite name badge
 *   9.  No-JS fallback
 *   10. Reduced-motion
 */

/* -------------------------------------------------------------------------
   1. Brand tokens
   ------------------------------------------------------------------------- */
:root {
    --ncc-red:        #e4002b;
    --ncc-red-border: 35px solid #e4002b;
    --ncc-text:       #333;
    --ncc-nav-speed:  0.7s;
    --ncc-nav-ease:   cubic-bezier(0.91, 0.01, 0.6, 0.99);
}

/* -------------------------------------------------------------------------
   2. Menu trigger button
   Fixed red circle, bottom-right mobile, top-right desktop.
   ------------------------------------------------------------------------- */
.cd-nav-trigger {
    position: fixed;
    z-index: 3;
    right: 30px;
    bottom: 25px;
    height: 60px;
    width: 60px;
    background-color: var(--ncc-red);
    border-radius: 50%;
    overflow: hidden;
    text-indent: 100%;
    white-space: nowrap;
    -webkit-transition: -webkit-transform 0.5s;
    transition: transform 0.5s;
}

.cd-nav-trigger:focus-visible {
    outline: 2px solid #fff;
    outline-offset: 3px;
}

.cd-nav-trigger .cd-nav-icon {
    position: absolute;
    left: 50%;
    top: 50%;
    -webkit-transform: translateX(-50%) translateY(-50%);
    transform: translateX(-50%) translateY(-50%);
    width: 22px;
    height: 2px;
    background-color: #fff;
}

.cd-nav-trigger .cd-nav-icon::before,
.cd-nav-trigger .cd-nav-icon::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: inherit;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transition: -webkit-transform 0.5s, width 0.5s, top 0.3s;
    transition: transform 0.5s, width 0.5s, top 0.3s;
}

.cd-nav-trigger .cd-nav-icon::before {
    -webkit-transform-origin: left top;
    transform-origin: left top;
    -webkit-transform: translateY(-6px);
    transform: translateY(-6px);
}

.cd-nav-trigger .cd-nav-icon::after {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translateY(6px);
    transform: translateY(6px);
}

.no-touch .cd-nav-trigger:hover .cd-nav-icon::after  { top:  2px; }
.no-touch .cd-nav-trigger:hover .cd-nav-icon::before { top: -2px; }

.cd-nav-trigger svg {
    position: absolute;
    top: 0;
    left: 0;
}

.cd-nav-trigger circle {
    -webkit-transition: stroke-dashoffset 0.4s 0s;
    transition: stroke-dashoffset 0.4s 0s;
}

.navigation-is-open .cd-nav-trigger {
    -webkit-transform: rotate(180deg);
    transform: rotate(180deg);
}

.navigation-is-open .cd-nav-trigger .cd-nav-icon::after,
.navigation-is-open .cd-nav-trigger .cd-nav-icon::before {
    width: 50%;
    -webkit-transition: -webkit-transform 0.5s, width 0.5s;
    transition: transform 0.5s, width 0.5s;
}

.navigation-is-open .cd-nav-trigger .cd-nav-icon::before {
    -webkit-transform: rotate(45deg);
    transform: rotate(45deg);
}

.navigation-is-open .cd-nav-trigger .cd-nav-icon::after {
    -webkit-transform: rotate(-45deg);
    transform: rotate(-45deg);
}

.no-touch .navigation-is-open .cd-nav-trigger:hover .cd-nav-icon::after,
.no-touch .navigation-is-open .cd-nav-trigger:hover .cd-nav-icon::before {
    top: 0;
}

.navigation-is-open .cd-nav-trigger circle {
    stroke-dashoffset: 0;
    -webkit-transition: stroke-dashoffset 0.4s 0.3s;
    transition: stroke-dashoffset 0.4s 0.3s;
}

@media only screen and (min-width: 960px) {
    .cd-nav-trigger {
        top: 25px;
        bottom: unset;
    }

    .admin-bar .cd-nav-trigger {
        top: 57px;
    }
}

/* -------------------------------------------------------------------------
   3. Overlay (#cd-nav)
   Fixed full-screen panel, hidden off-screen right by default.
   Slides in when .navigation-is-open is added to body by JS.
   Content is always inside — no JS DOM manipulation needed.
   ------------------------------------------------------------------------- */
#cd-nav {
    position: fixed;
    z-index: 2;
    top: 0;
    right: 0;
    height: 100%;
    width: 100%;
    background-color: #fff;
    visibility: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    -webkit-transform: translateX(100%);
    transform: translateX(100%);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transition:
        visibility 0s var(--ncc-nav-speed),
        -webkit-transform var(--ncc-nav-speed);
    transition:
        visibility 0s var(--ncc-nav-speed),
        transform var(--ncc-nav-speed);
    -webkit-transition-timing-function: cubic-bezier(0.86, 0.01, 0.77, 0.78);
    transition-timing-function: cubic-bezier(0.86, 0.01, 0.77, 0.78);
}

.navigation-is-open #cd-nav {
    border-left: var(--ncc-red-border);
    visibility: visible;
    -webkit-transform: translateX(0);
    transform: translateX(0);
    -webkit-transition:
        visibility 0s 0s,
        -webkit-transform 0.5s;
    transition:
        visibility 0s 0s,
        transform 0.5s;
    -webkit-transition-timing-function: cubic-bezier(0.82, 0.01, 0.77, 0.78);
    transition-timing-function: cubic-bezier(0.82, 0.01, 0.77, 0.78);
}

/* -------------------------------------------------------------------------
   4. Site container push animation
   When overlay opens, page content slides left.
   .wp-site-blocks = block theme equivalent of .site-container
   ------------------------------------------------------------------------- */
body, html {
    overflow-x: hidden;
}

.wp-site-blocks {
    background-color: #fff;
    border-right: var(--ncc-red-border);
    position: relative;
    z-index: 1;
    overflow: hidden;
    -webkit-overflow-scrolling: touch;
    -webkit-transform: translateZ(0);
    transform: translateZ(0);
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-transition: -webkit-transform var(--ncc-nav-speed);
    transition: transform var(--ncc-nav-speed);
    -webkit-transition-timing-function: var(--ncc-nav-ease);
    transition-timing-function: var(--ncc-nav-ease);
    width: calc(100% + 35px);
}

.navigation-is-open .wp-site-blocks {
    height: 100vh;
    -webkit-transform: translateX(-100%);
    transform: translateX(-100%);
}

/* -------------------------------------------------------------------------
   5. Overlay content layout
   .cd-navigation-wrapper — the inner wrapper from the nav-overlay template part.
   Two columns: left = nav menus, right = supplemental content.
   Uses standard CSS — no dependence on block theme layout classes.
   ------------------------------------------------------------------------- */
#cd-nav .cd-navigation-wrapper {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    padding: 40px 5% 40px 10%;
    box-sizing: border-box;
    min-height: 100%;
    /* Reset any block theme max-width constraints */
    max-width: none;
    margin-left: 0;
    margin-right: 0;
}

@media only screen and (min-width: 960px) {
    #cd-nav .cd-navigation-wrapper {
        padding: 100px 10% 60px;
    }
}

/* Left column — navigation menus */
#cd-nav .cd-half-block-left {
    flex: 0 0 66%;
    max-width: 66%;
    padding-right: 4%;
    box-sizing: border-box;
}

/* Right column — supplemental content */
#cd-nav .cd-half-block-right {
    flex: 0 0 30%;
    max-width: 30%;
    box-sizing: border-box;
    font-size: 16px;
}

@media only screen and (min-width: 960px) {
    #cd-nav .cd-half-block-left {
        flex: 0 0 74%;
        max-width: 74%;
    }

    #cd-nav .cd-half-block-right {
        flex: 0 0 24%;
        max-width: 24%;
        padding-right: 0;
    }
}

@media only screen and (max-width: 600px) {
    #cd-nav .cd-half-block-left,
    #cd-nav .cd-half-block-right {
        flex: 0 0 100%;
        max-width: 100%;
        padding-right: 0;
    }
}

/* Reset block theme constraints on all inner groups.
   Block themes generate both CSS classes AND inline style attributes
   with max-width from contentSize. !important overrides inline styles. */
#cd-nav .wp-block-group,
#cd-nav .wp-block-group > .wp-block-group__inner-container,
#cd-nav [class*="wp-container-"] {
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

/* Section headings */
#cd-nav h2 {
    position: relative;
    margin-bottom: 1.7em;
    font-size: 1.3rem;
    font-weight: 700;
    color: var(--ncc-text);
    text-transform: uppercase;
}

#cd-nav h2::after {
    content: '';
    position: absolute;
    left: 0;
    bottom: -20px;
    height: 1px;
    width: 60px;
    background-color: currentColor;
}

#cd-nav .site-nav {
    margin-bottom: 80px;
}

#cd-nav a {
    font-weight: 700;
    text-decoration: none;
}

#cd-nav .cd-half-block-right a {
    color: var(--ncc-red);
    border-bottom: 1px solid var(--ncc-red);
}

#cd-nav .cd-half-block-right .wp-block-social-link {
    display: inline-block;
}

@media only screen and (min-width: 960px) {
    #cd-nav h2 {
        font-size: 18px;
        margin-bottom: 60px;
    }

    #cd-nav .site-nav {
        margin-bottom: 100px;
        overflow: auto;
    }
}

/* Hide site navigation section when it only contains the heading (subsite nav is empty) */
#cd-nav .site-nav:not(:has(nav)) {
    display: none;
}

/* -------------------------------------------------------------------------
   6. Navigation block styles
   Add class "cd-nav" to Navigation blocks in the Site Editor under
   Advanced > Additional CSS Class(es).
   Matches classic NCC nav aesthetic using block-native selectors.
   ------------------------------------------------------------------------- */

/* Vertical list layout */
.cd-nav.wp-block-navigation,
.cd-nav .wp-block-navigation {
    display: block;
}

.cd-nav .wp-block-navigation__container {
    list-style: none;
    padding: 0;
    margin: 30px 0 0 0;
    display: block;
}

.cd-nav .wp-block-navigation-item {
    display: block;
    position: relative;
}

/* Hide WordPress's own responsive hamburger */
.cd-nav .wp-block-navigation__responsive-container-open {
    display: none;
}

/* Top-level items */
.cd-nav .wp-block-navigation__container > .wp-block-navigation-item {
    margin-bottom: 12px;
}

/* Top-level links — 25px bold */
.cd-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content {
    font-size: 25px;
    color: var(--ncc-text);
    font-weight: 700;
    line-height: 1.625;
    text-decoration: none;
    display: inline-block;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
}

/* Label underline */
.cd-nav .wp-block-navigation__container > .wp-block-navigation-item > .wp-block-navigation-item__content .wp-block-navigation-item__label {
    border-bottom: 1px solid var(--ncc-text);
    padding-bottom: 3px;
    display: inline;
}

/* Current page */
.cd-nav .wp-block-navigation-item.current-menu-item > .wp-block-navigation-item__content .wp-block-navigation-item__label {
    border-bottom: 2px solid var(--ncc-red);
    color: var(--ncc-red);
}

/* Hover */
.no-touch .cd-nav .wp-block-navigation-item > .wp-block-navigation-item__content:hover .wp-block-navigation-item__label {
    border-bottom: 2px solid var(--ncc-red);
    color: var(--ncc-red);
}

/* Focus visible */
.cd-nav .wp-block-navigation-item__content:focus-visible {
    outline: 2px solid var(--ncc-red);
    outline-offset: 3px;
    border-radius: 2px;
}

/* Submenu toggle button — styled as NCC arrow indicator */
.cd-nav .wp-block-navigation__submenu-icon {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    display: inline-block;
    width: 8px;
    height: 11px;
    margin-left: 8px;
    vertical-align: middle;
    position: relative;
    top: -1px;
    background-image: url("images/cd-arrow.svg");
    background-repeat: no-repeat;
    background-position: center center;
    background-size: 8px 11px;
    -webkit-transition: -webkit-transform 0.2s;
    transition: transform 0.2s;
    flex-shrink: 0;
}

/* Hide WordPress's chevron SVG */
.cd-nav .wp-block-navigation__submenu-icon svg {
    display: none !important;
}

/* Arrow rotates when submenu is open */
.cd-nav .wp-block-navigation__submenu-icon[aria-expanded="true"] {
    -webkit-transform: rotate(90deg);
    transform: rotate(90deg);
}

/* Active color when submenu open */
.cd-nav .wp-block-navigation-item.has-child:has(.wp-block-navigation__submenu-icon[aria-expanded="true"]) > .wp-block-navigation-item__content .wp-block-navigation-item__label {
    color: var(--ncc-red);
    border-bottom: 2px solid var(--ncc-red);
}

/* Submenus hidden by default, shown via CSS when arrow aria-expanded="true".
   JS sets aria-expanded on the arrow (.wp-block-navigation__submenu-icon).
   :has() on the LI checks for the expanded arrow then shows the submenu. */
#cd-nav .wp-block-navigation__submenu-container {
    display: none;
}

#cd-nav .wp-block-navigation-item.has-child:has(
    > .wp-block-navigation__submenu-icon[aria-expanded="true"]
) > .wp-block-navigation__submenu-container {
    display: block;
}

/* Submenu containers — inline/static, not dropdown */
.cd-nav .wp-block-navigation__submenu-container {
    list-style: none;
    padding-left: 5px;
    margin: 10px 0;
    position: static;
    background: transparent;
    border: none;
    box-shadow: none;
    min-width: 0;
    top: auto;
    left: auto;
    width: auto;
}

.cd-nav .wp-block-navigation__submenu-container > .wp-block-navigation-item {
    margin-bottom: 10px;
    float: none;
    display: block;
}

/* Submenu links — 16px */
.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    font-size: 16px;
    color: var(--ncc-text);
    text-decoration: none;
    font-weight: 700;
    display: inline-block;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
}

/* Submenu item label underline */
.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
    border-bottom: 1px solid var(--ncc-text);
    padding-bottom: 2px;
    display: inline;
}

/* Remove underline on sub-submenu labels to avoid visual noise */
.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
    border-bottom: none;
    padding-bottom: 0;
}

.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
    display: inline;
}

.no-touch .cd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
    color: var(--ncc-red);
}

/* Nested sub-submenus */
.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation__submenu-container {
    border-left: 3px solid var(--ncc-red);
    padding: 2px 0 1px 15px;
}

.cd-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus-visible {
    outline: 2px solid var(--ncc-red);
    outline-offset: 3px;
    border-radius: 2px;
}

@media only screen and (min-width: 960px) {
    .cd-nav .wp-block-navigation__container { margin-top: 0; }
    .cd-nav .wp-block-navigation__container > .wp-block-navigation-item { margin-bottom: 22px; }
}

/* -------------------------------------------------------------------------
   7. Classic Genesis nav styles (main site only)
   ------------------------------------------------------------------------- */
#cd-nav .cd-primary-nav {
    list-style: none;
    padding: 0;
    margin: 30px 0 0 0;
}

#cd-nav .cd-primary-nav > li {
    margin-bottom: 12px;
    display: block;
}

#cd-nav .cd-primary-nav > li > a {
    font-size: 25px;
    color: var(--ncc-text);
    display: inline-block;
    font-weight: 700;
    line-height: 1.625;
    text-decoration: none;
}

#cd-nav .cd-primary-nav a span {
    border-bottom: 1px solid var(--ncc-text);
    padding-bottom: 3px;
}

#cd-nav .cd-primary-nav li.current-menu-item > a span {
    border-bottom: 2px solid var(--ncc-red);
    color: var(--ncc-red);
}

.no-touch #cd-nav .cd-primary-nav a:hover span {
    border-bottom: 2px solid var(--ncc-red);
    color: var(--ncc-red);
}

#cd-nav .cd-primary-nav .sub-menu {
    list-style: none;
    padding-left: 5px;
    display: none;
    margin: 10px 0;
}

#cd-nav .cd-primary-nav .sub-menu a {
    font-size: 16px;
    color: var(--ncc-text);
    text-decoration: none;
    font-weight: 700;
}

#cd-nav .cd-primary-nav .sub-menu li {
    font-size: 16px;
    margin-bottom: 10px;
    display: block;
}

#cd-nav .cd-primary-nav .sub-menu .sub-menu {
    border-left: 3px solid var(--ncc-red);
    padding: 2px 0 1px 15px;
}

#cd-nav .menu-item-has-children.submenu-open > .sub-menu { display: block; }

#cd-nav .menu-item-has-children > a { position: relative; }

#cd-nav .menu-item-has-children > a::after {
    content: '';
    display: inline-block;
    height: 11px;
    width: 8px;
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
    transform: translateY(-50%);
    right: -20px;
    background: url("images/cd-arrow.svg") no-repeat center center;
    background-size: 8px 11px;
    -webkit-transition-property: -webkit-transform;
    transition-property: transform;
    -webkit-transition-duration: 0.2s;
    transition-duration: 0.2s;
}

#cd-nav .menu-item-has-children.submenu-open > a::after {
    -webkit-transform: translateY(-50%) rotate(90deg);
    transform: translateY(-50%) rotate(90deg);
}

#cd-nav .menu-item-has-children.submenu-open > a span {
    color: var(--ncc-red);
    border-bottom: 2px solid var(--ncc-red);
}

@media only screen and (min-width: 960px) {
    #cd-nav .cd-primary-nav { margin-top: 0; }
    #cd-nav .cd-primary-nav > li { margin-bottom: 22px; }
}

/* -------------------------------------------------------------------------
   8. Subsite name badge
   ------------------------------------------------------------------------- */
.ncc-subsite-badge a,
.ncc-subsite-badge a:hover {
    border-radius: 5px;
    color: #fff !important;
    font-size: 11px;
    font-weight: 700;
    padding: 10px;
    text-transform: uppercase;
    text-decoration: none;
}

.ncc-badge-blue       { background-color: #2f4f83; }
.ncc-badge-gray       { background-color: #58585a; }
.ncc-badge-green      { background-color: #52866c; }
.ncc-badge-red-dark   { background-color: #ca4542; }
.ncc-badge-mid-gray   { background-color: #999;    }
.ncc-badge-sky        { background-color: #1b75bc; }
.ncc-badge-purple     { background-color: #7961ab; }
.ncc-badge-ncc-red    { background-color: #e4002b; }
.ncc-badge-orange     { background-color: #f2634a; }
.ncc-badge-yellow     { background-color: #fce17f; color: #4c4615 !important; }
.ncc-badge-teal-green { background-color: #66c18c; }
.ncc-badge-plum       { background-color: #664967; }
.ncc-badge-cyan       { background-color: #57c7da; }
.ncc-badge-aqua-light { background-color: #a8dcd8; }
.ncc-badge-teal       { background-color: #15aba3; }
.ncc-badge-navy       { background-color: #270f6d; }
.ncc-badge-cornflower { background-color: #4d9cce; }
.ncc-badge-charcoal   { background-color: #333333; }
.ncc-badge-ocean      { background-color: #0680a2; }
.ncc-badge-indigo     { background-color: #282b6f; }

/* -------------------------------------------------------------------------
   9. No-JS fallback
   ------------------------------------------------------------------------- */
.no-js #cd-nav {
    position: static;
    visibility: visible;
    -webkit-transform: none;
    transform: none;
    height: auto;
}

.no-js .wp-site-blocks {
    height: auto;
    overflow: visible;
    -webkit-transform: none;
    transform: none;
}

/* -------------------------------------------------------------------------
   10. Reduced-motion
   ------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    .wp-site-blocks,
    #cd-nav,
    .cd-nav-trigger,
    .cd-nav-trigger .cd-nav-icon::before,
    .cd-nav-trigger .cd-nav-icon::after,
    .cd-nav-trigger circle {
        -webkit-transition: none !important;
        transition: none !important;
    }
}
