﻿/* NOTE: Client-specific overrides ideally should be placed in clients' client.css/nav.css */

:root {
    --icon-ds-font-family: sans-serif;
    --nav-ds-keyboard-focus-colour: inherit;
    --nav-ds-keyboard-focus-outline: dotted;
    --nav-ds-brand-max-width: 250px; /* Can cause overflow if too wide - consider disabling 'inline responsive navigation' where a longer logo is used, and many modules exist */
    --nav-ds-profile-actions-icon-size-px: 32px;
    --nav-ds-profile-actions-spacing-px: 5px;
    --nav-ds-profile-actions-notification-counter-size: 16px; /* Even values preferred - divided by 2 for border radius */
    --nav-ds-profile-actions-notification-counter-textsize: 14px;
    --nav-ds-profile-actions-notification-counter-colour: #D23927;
    --nav-ds-module-text-size: 15px;
    --nav-ds-module-gap: 30px;
    --nav-ds-module-height: 50px;
    --nav-ds-module-caret-gap: 4px;
    --nav-ds-module-container-underline-colour: var(--client-primary); /* Should not be used in combination with 'use client colour as nav background' */
    --nav-ds-module-default-text-colour: var(--client-secondary-text);
    --nav-ds-module-default-hover-colour: var(--client-secondary-text);
    --nav-ds-module-singleline-background-colour: var(--client-primary);
    --nav-ds-module-singleline-text-colour: var(--client-primary-text);
    --nav-ds-module-singleline-hover-colour: var(--client-primary-text); /* Link hover colour - only applies when 'use client colour as nav background' is enabled */
    --nav-ds-module-dropdown-text-size: 12px;
    --nav-ds-module-dropdown-default-text-colour: var(--client-secondary-text);
    --nav-ds-module-dropdown-hover-text-colour: var(--client-primary-text);
    --nav-ds-module-dropdown-hover-background-colour: var(--client-primary);
}

.nav-ds a,
.nav-ds li,
.nav-ds ul,
.nav-ds input,
.overflow-menu-ds a,
.overflow-menu-ds li,
.overflow-menu-ds ul,
.dropdown-menu div {
    font-size: inherit; /* Existing CSS selectors in Legacy unintentionally capture these elements and set an explicit font size - force them to inherit instead */
    font-family: var(--icon-ds-font-family); /* Force nav font consistency in both Legacy and V4 */
}

/* #region Generic design-system styles */
@keyframes keyframesForegroundContainerFadeIn_300msEaseOut {
    from { opacity: 0; }
    to { opacity: 1; }
}

@keyframes keyframesSpinLoadingIndicator_1s {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

[class^="icon-ds-"], [class*=" icon-ds-"] {
    font-family: var(--icon-ds-font-family); /* Force font consistency in both Legacy and V4 */
}

.icon-ds-foreground-content-container, /* NOTE: Active selectors' initial state ideally should be present in the media query below */
.icon-ds-modal-container-small,
.icon-ds-form-input-button-primary:enabled:hover,
.icon-ds-form-input-button-primary:enabled:active,
.overflow-menu-ds {
    box-shadow: 0px 3px 6px #00000029;
}

@media screen and (prefers-reduced-motion: no-preference) {
    .icon-ds-form-input-button-primary {
        transition: box-shadow 0.3s ease-out;
    }
}

.icon-ds-foreground-content-container,
.icon-ds-modal-container-small,
.overflow-menu-ds {
    background-color: #FFF;
    border-radius: 5px;
    font-size: 16px;
    color: #262626;
}

@media screen and (prefers-reduced-motion: no-preference) {
    .icon-ds-foreground-content-container-fadein {
        animation: keyframesForegroundContainerFadeIn_300msEaseOut 0.3s ease-out;
    }
}

.icon-ds-form-input-text,
.icon-ds-form-input-textarea,
.icon-ds-form-input-button-primary,
.icon-ds-form-input-button-secondary {
    font-size: 16px;
    height: 38px;
}

.icon-ds-form-input-text,
.icon-ds-form-input-textarea {
    color: #262626;
    min-width: 300px;
    border-radius: 5px;
    padding: 10px;

    background-color: #FFF;
    border: 1px solid #DDD;
}

.icon-ds-form-input-text {
    padding-top: 0;
    padding-bottom: 0;
}

.icon-ds-form-input-textarea {
    width: 400px;
    height: 100px;
}

.icon-ds-form-input-textarea::placeholder,
.icon-ds-form-input-text::placeholder {
    color: #DDD;
}

.icon-ds-form-input-textarea:active,
.icon-ds-form-input-textarea:focus,
.icon-ds-form-input-text:active,
.icon-ds-form-input-text:focus {
    border-color: #b7b7b7;
    outline: none;
}

.icon-ds-form-input-text-invalid,
.icon-ds-form-input-text:invalid {
    border-color:#E3382C;
}

.icon-ds-form-input-text-valid,
.icon-ds-form-input-text:required:valid {
    border-color:#599F41;
}

.icon-ds-form-input-textarea:disabled,
.icon-ds-form-input-textarea[readonly="readonly"],
.icon-ds-form-input-text:disabled,
.icon-ds-form-input-text[readonly="readonly"] {
    background-color: #F4F4F4;
    color: #777;
}

.icon-ds-form-input-textarea-fullwidth,
.icon-ds-form-input-text-fullwidth {
    box-sizing: border-box;
    width: 100%;
}

.icon-ds-form-input-button-primary,
.icon-ds-form-input-button-secondary {
    border: none;
    border-radius: 5px;
    padding-left: 20px;
    padding-right: 20px;
}

.icon-ds-form-input-button-primary {
    color: var(--client-primary-text);
    background-color: var(--client-primary);
}

.icon-ds-form-input-button-secondary {
    box-sizing: border-box;
    border: 1px solid var(--client-primary);
    color: var(--client-primary);
    background-color: transparent;
}

.icon-ds-form-input-button-primary:disabled,
.icon-ds-form-input-button-secondary:disabled {
    box-sizing: border-box;
    background: transparent;
    border: 1px solid #DDD;
    color: #DDD;
}

.icon-ds-form-input-label,
.icon-ds-subtitle-text {
    padding: 0;
    margin: 0;
    font-weight: initial;
    user-select: none;
}

.icon-ds-form-input-label {
    font-size: 16px;
}

.icon-ds-form-input-radio,
input.icon-ds-form-input-radio {
    appearance: none;  /* Remove OS styling from radio input */
    box-sizing: border-box;
    margin: 0;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid #DDDDDD;
    background-color: #FFFFFF;
}

@media screen and (prefers-reduced-motion: no-preference) {
    .icon-ds-form-input-radio {
        transition: border 0.2s ease;
    }
}

.icon-ds-form-input-radio:checked {
    border: 5px solid #777777; 
}

.icon-ds-form-input-radio:disabled {
    border: 1px solid #DDDDDD;
    background-color: #F4F4F4;
}

.icon-ds-form-group-radio {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: 16px auto;
    grid-auto-rows: auto;
    grid-row-gap: 7px;
    grid-column-gap: 5px;
}

.icon-ds-form-group-radio > .icon-ds-form-input-radio {
    grid-column: 1;
}

.icon-ds-form-group-radio > .icon-ds-form-input-label {
    grid-column: 2;
}

.icon-ds-animated-spinner {
    display: inline-block;
    height: 44px;
    width: 44px;
    box-sizing: border-box;
    background: transparent;
    border: 4px solid var(--client-primary);
    border-radius: 44px;
    clip-path: path('M 0 22 l 22 0 l 0 -22 l 22 0 l 0 44 l -44 0 l 0 -22 Z');
}

@media screen and (prefers-reduced-motion: no-preference) {
    .icon-ds-animated-spinner {
        animation: keyframesSpinLoadingIndicator_1s 1s linear infinite;
    }
}

.icon-ds-loading-container {
    display: grid;
    height: 100%;
    grid-template-columns: auto;
    grid-template-rows: auto auto;
    grid-auto-flow: row;
    grid-row-gap: 14px;
    justify-items: center;
    user-select: none;
}

.icon-ds-loading-container > :first-child {
    font-size: 70px;
    align-self: end;
}

.icon-ds-loading-container > :last-child {
    font-size: 14px;
    align-self: start;
    text-align: center;
}

.icon-ds-modal-container-kendowindow,
.icon-ds-modal-container-small {
    line-height: initial;  /* Legacy override */
    font-size: 20px;
    display: grid;
    grid-template-columns: min-content 1fr;
    grid-template-rows: min-content minmax(100px, auto) min-content;
    grid-row-gap: 16px;
    grid-column-gap: 10px;
}

.icon-ds-modal-container-kendowindow {
    color: #000;
    box-sizing: border-box;
    margin: -12px;
    height: calc(100% + 24px);

    padding-top: 40px;
    padding-bottom: 40px;
    padding-left: 30px;
    padding-right: 30px;
}

.icon-ds-modal-container-small {
    width: 450px;
    padding-top: 33px;
    padding-bottom: 33px;
    padding-left: 26px;
    padding-right: 26px;
}

/* Modal Icon */
.icon-ds-modal-container-kendowindow > span:first-child,
.icon-ds-modal-container-small > span:first-child {
    font-size: inherit;
    display: inline-block;
    transform: scale(1.4);
}

/* Modal Header */
.icon-ds-modal-container-kendowindow > h1:nth-child(2),
.icon-ds-modal-container-small > h1:nth-child(2) {
    font-size: inherit;
    font-weight: 600;
    line-height: 1.1;  /* Allows modal header to be inline with the icon */
    padding: 0;
    margin: 0;
}

.icon-ds-modal-container-kendowindow > .content {
    overflow-y: auto;
    overflow-x: hidden;
}

.icon-ds-modal-container-kendowindow > .content,
.icon-ds-modal-container-small > .content {
    grid-row: 2;
}

.icon-ds-modal-container-kendowindow > .actions,
.icon-ds-modal-container-small > .actions {
    grid-row: 3;
    text-align: right;
}

.icon-ds-modal-container-kendowindow > .content,
.icon-ds-modal-container-kendowindow > .actions,
.icon-ds-modal-container-small > .content,
.icon-ds-modal-container-small > .actions {
    grid-column-start: 1;
    grid-column-end: 3;
}

/* Tabs */
.icon-ds-tab-window {
    display: grid;
    grid-template-rows: min-content min-content auto;
    grid-template-columns: 1fr;
    height: 100%;
    width: 100%;
}

.icon-ds-tab-window > .icon-ds-tab-container:not(:empty),
.icon-ds-tab-window > .icon-ds-tab-container:empty:last-of-type {
    margin-bottom: 6px;  /* This rule and the rule below ensures there is a 12px gap between the last tab row and the main content, even where multiple empty tab containers exist */
}

.icon-ds-tab-window > .icon-ds-tab-container:not(:empty):last-of-type {
    margin-bottom: 12px;
}

.icon-ds-tab-window > .icon-ds-tab-window-content-container {
    overflow-y: auto;
    overflow-x: hidden;
    grid-row: 3;
}

.icon-ds-tab-container {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: max-content;
    grid-column-gap: 1px;

    font-family: var(--icon-ds-font-family);
    font-size: 16px;
    margin: 0;
    padding: 0;
}

.icon-ds-tab-container > li {
    box-sizing: border-box;
    display: inline-block;
    font-size: inherit;
    color: #262626;
    list-style: none;
    user-select: none;
    padding-top: 9px;
    padding-bottom: 11px;
    padding-left: 20px;
    padding-right: 20px;

    /* For slide-underline effect (initial state) */
    background-image: linear-gradient(#F4F4F4, #F4F4F4);  /* #262626, #262626 */
    background-size: 0% 2px;
    background-position-y: 100%;
    background-position-x: 100%;
    background-repeat: no-repeat;
}

@media screen and (prefers-reduced-motion: no-preference) {
    /* For slide-underline effect (animation enable based on motion preferences) */
    .icon-ds-tab-container > li {
        transition: background-size 0.2s ease-in-out;
    }
}

.icon-ds-tab-container > li:not(.disabled) {
    cursor: pointer;
}

/* For slide-underline effect (mouse hover) */
.icon-ds-tab-container > li.active,
.icon-ds-tab-container > li:hover:not(.active):not(.disabled),
.icon-ds-tab-container > li:focus:not(.active):not(.disabled),
.icon-ds-tab-container > li:active:not(.active):not(.disabled) {
    background-image: linear-gradient(#E6E6E6, #E6E6E6);
    background-size: 100% 2px;
    background-position-x: 0%;
}

.icon-ds-tab-container > li.active {
    font-weight: bold;

    /* For slide-underline effect (active) */
    background-image: linear-gradient(#262626, #262626);
    background-size: 100% 2px;
    background-position-x: 0%;
}

.icon-ds-tab-container > li.disabled {
    background: transparent;
    color: #DDD;
}

/*
Tab hover implementation as per DS document

.icon-ds-tab-container > li:hover:not(.active):not(.disabled),
.icon-ds-tab-container > li:focus:not(.active):not(.disabled),
.icon-ds-tab-container > li:active:not(.active):not(.disabled) {
    border-radius: 5px;
    background-color: #F4F4F4;
}*/

.icon-ds-tab-container > li:focus-visible {
    outline: dotted;
}

.icon-ds-tab-container-autoexpand {
    text-align: center;
    grid-auto-columns: 1fr;
}

.icon-ds-tab-container-autoexpand > li {
    padding-left: 0;
    padding-right: 0;
}

/* #endregion */


/* #region Design-system based overflow menu */
.overflow-menu-ds {
    display: grid;
    grid-auto-flow: row;
    border: 1px solid #DDD;
    min-width: 180px;
    height: auto;
    padding: 0;
    margin: 0;
    user-select: none;
}

@media screen and (prefers-reduced-motion: no-preference) {
    .overflow-menu-ds {
        animation: keyframesForegroundContainerFadeIn_300msEaseOut 0.3s ease-out;
    }
}

.overflow-menu-ds a,
.overflow-menu-ds a:hover,
.overflow-menu-ds a:active {
    outline: none;
    color: inherit;
    text-decoration: none;
}

.overflow-menu-ds > li {
    list-style: none;
}

.overflow-menu-ds-top-line {
    border-top: 1px solid #DDD;
}

.overflow-menu-ds > li > a {
    display: grid;
    grid-template-rows: 40px;
    grid-template-columns: 40px minmax(140px, auto);
}

.overflow-menu-ds > li > a:any-link:hover,
.overflow-menu-ds > li > a:any-link:active {
    background-color: #FAFAFA;
}

.overflow-menu-ds > li > a:focus-visible {
    color: var(--nav-ds-keyboard-focus-colour);
    outline: var(--nav-ds-keyboard-focus-outline);
}

/* Disabled menu items */
.overflow-menu-ds > li > a:not(:any-link) {
    color: #DDD;
}

/* Menu item icon & text label */
.overflow-menu-ds > li > a > span {
    font-size: 1.5em;
    align-self: center;
    justify-self: center;
    transform: translateY(-1px);
    pointer-events: none; /* Allows parent to be target of click events */
}

/* Menu item text label */
.overflow-menu-ds > li > a > span:only-child,
.overflow-menu-ds > li > a > span:last-child {
    grid-column: 2;
    font-size: inherit;
    justify-self: start;
    transform: unset;
    padding-right: 12px;
}

/* #endregion */


/* #region Navigation: Layout */

#googleTranslateContainer {
    height: 26px;  /* Prevent CLS (layout shift) */
    text-align: right;
}

#googleTranslateContainer > :first-child {
    display: inline-block;
}

#googleTranslateContainer a.goog-te-menu-value:hover {
    text-decoration: none;
}

.nav-ds {
    display: grid;
    user-select: none;
    grid-column-gap: 30px;
    grid-template-columns: min-content auto min-content;
    grid-auto-rows: minmax(70px, min-content) auto;
    color: var(--nav-ds-module-default-text-colour);
    font-size: var(--nav-ds-module-text-size);
    align-items: center;
}

.nav-ds-configuration-client-colour-nav-background {
    color: var(--nav-ds-module-singleline-text-colour);
    background-color: var(--nav-ds-module-singleline-background-colour);
}

.nav-ds-configuration-client-colour-nav-background:not(.nav-ds-legacy) {
    margin-left: -15px;
    margin-right: -15px;
    padding-right: 15px;
    padding-left: 15px;
}

.nav-ds-modules-configuration-transparent-bg-solid-underline.nav-ds-modules-configuration-separate-line-display { /* NOTE: Content must be kept identical to the media query below! */
    background-color: transparent;
    border-bottom: 2px solid var(--nav-ds-module-container-underline-colour);
}

.nav-ds-modules-configuration-separate-line-display { /* NOTE: Content must be kept identical to the media query below! */
    grid-row: 2;
    grid-column-start: 1;
    grid-column-end: 4;

    margin-left: -15px;
    margin-right: -15px;
    padding-right: 15px;
    padding-left: 15px;
}

.nav-ds-modules-configuration-separate-line-display:not(.nav-ds-modules-configuration-transparent-bg-solid-underline) { /* NOTE: Content must be kept identical to the media query below! */
    color: var(--nav-ds-module-singleline-text-colour);
    background-color: var(--nav-ds-module-singleline-background-colour);
}

.nav-ds-configuration-client-colour-nav-background > nav > ul > li > a.dropdown-toggle:hover,
.nav-ds-modules-configuration-separate-line-display:not(.nav-ds-modules-configuration-transparent-bg-solid-underline) > ul > li > a.dropdown-toggle:hover {  /* NOTE: Content must be kept identical to the media query below! */
    color: var(--nav-ds-module-singleline-hover-colour);
}

.nav-ds:not(.nav-ds-configuration-client-colour-nav-background) > nav > ul > li > a.dropdown-toggle:hover,
.nav-ds-modules-configuration-separate-line-display.nav-ds-modules-configuration-transparent-bg-solid-underline > ul > li > a.dropdown-toggle:hover {  /* NOTE: Content must be kept identical to the media query below! */
    color: var(--nav-ds-module-default-hover-colour);
}

/* TODO: one of the above statements are causing black text on hover - need to fix */

@media only screen and (max-width: 1650px) {
    .nav-ds > nav.nav-ds-modules-configuration-transparent-bg-solid-underline {
        background-color: transparent;
        border-bottom: 2px solid var(--nav-ds-module-container-underline-colour);
    }

    .nav-ds > nav {
        grid-row: 2;
        grid-column-start: 1;
        grid-column-end: 4;

        margin-left: -15px;
        margin-right: -15px;
        padding-right: 15px;
        padding-left: 15px;
    }

    .nav-ds > nav:not(.nav-ds-modules-configuration-transparent-bg-solid-underline) {
        color: var(--nav-ds-module-singleline-text-colour);
        background-color: var(--nav-ds-module-singleline-background-colour);
    }

    .nav-ds > nav:not(.nav-ds-modules-configuration-transparent-bg-solid-underline) > ul > li > a.dropdown-toggle:hover {
        color: var(--nav-ds-module-singleline-hover-colour);
    }

    .nav-ds > nav.nav-ds-modules-configuration-transparent-bg-solid-underline > ul > li > a.dropdown-toggle:hover {
        color: var(--nav-ds-module-default-hover-colour);
    }
}

.nav-ds-brand {
    margin-bottom: 10px;
    margin-top: 10px;
}

.nav-ds-brand,
.nav-ds-brand img {
    vertical-align: unset; /* Reset unusual properties set in v4 generic css file, to enable pixel perfect alignment on v4/legacy */
    line-height: initial;
    max-width: var(--nav-ds-brand-max-width);
}

/* #endregion */


/* #region Navigation: Profile action buttons */

.nav-ds-profile-actions {
    grid-row: 1;
    grid-column: 3;

    padding: 5px;
    border-radius: 5px;
    font-size: var(--nav-ds-profile-actions-icon-size-px);

    display: grid;
    grid-column-gap: var(--nav-ds-profile-actions-spacing-px);
    grid-auto-flow: column;
    grid-auto-columns: var(--nav-ds-profile-actions-icon-size-px);
    grid-template-rows: var(--nav-ds-profile-actions-icon-size-px);
}

.nav-ds-profile-actions, 
.nav-ds-profile-actions > a {
    overflow: hidden;
}

.nav-ds-profile-actions > a,
.nav-ds-profile-actions > a:link,
.nav-ds-profile-actions > a:hover,
.nav-ds-profile-actions > a:focus {
    color: inherit;
    outline: none;
    text-decoration: none;
}

.nav-ds-profile-actions > a:focus-visible {
    color: var(--nav-ds-keyboard-focus-colour);
    outline: var(--nav-ds-keyboard-focus-outline);
}

.nav-ds-profile-actions #unreadNotificationCountContainer:not(:empty) {
    display: block;
    height: var(--nav-ds-profile-actions-notification-counter-size);
    width: var(--nav-ds-profile-actions-notification-counter-size);
    font-size: var(--nav-ds-profile-actions-notification-counter-textsize);
    font-family: sans-serif;
    text-align: center;
    padding-top: calc(calc(var(--nav-ds-profile-actions-notification-counter-size) - var(--nav-ds-profile-actions-notification-counter-textsize)) / 2); /* text-justify: center; */
    background-color: var(--nav-ds-profile-actions-notification-counter-colour);
    color: #fff;
    position: relative;
    top: calc(1px - var(--nav-ds-profile-actions-icon-size-px));  /* Overflows under the notification icon by default */
    left: calc(var(--nav-ds-profile-actions-icon-size-px) - var(--nav-ds-profile-actions-notification-counter-size)); /* Positioned on the left by default */
    border-radius: calc(var(--nav-ds-profile-actions-notification-counter-size) / 2);
}

/* #endregion */


/* #region Navigation: Modules container */

/* Module Caret */
.dropdown-toggle > span {
    font-size: 14px;
    display: inline-block;
    text-rendering: optimizeSpeed;  /* for identical transform rendering in Chrome and FF */
    transform: translateX(2px) translateY(1px) scale(1.6) rotate(0deg);

}

@media screen and (prefers-reduced-motion: no-preference) {
    .dropdown-toggle > span {
        transition: transform 0.3s ease-out;
    }
}

.open > .dropdown-toggle > span {
    transform: translateX(2px) translateY(1px) scale(1.6) rotate(180deg);
}

.nav-ds > nav > ul {
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    column-gap: var(--nav-ds-module-gap);
}

/* Modules */
.nav-ds > nav > ul > li {
    list-style: none;
    color: inherit; /* Override Legacy */
}

.nav-ds > nav > ul > li > a,
.nav-ds > nav > ul > li > a:hover,
.nav-ds > nav > ul > li > a:active {
    display: inline-flex;
    color: inherit;
    height: var(--nav-ds-module-height); 
    align-items: center;  /* Centre label and caret within anchor */
    text-decoration: none;
    gap: var(--nav-ds-module-caret-gap);
}

.nav-ds > nav > ul > li > a:focus-visible {
    color: var(--nav-ds-keyboard-focus-colour);
    outline: var(--nav-ds-keyboard-focus-outline);
}
/* #endregion */


/* #region Navigation: Modules Dropdown menu & search */

.nav-ds > nav > ul > li > .dropdown-menu {
    font-size: var(--nav-ds-module-dropdown-text-size);
}

.nav-ds > nav > ul > li > .dropdown-menu li > a {
    background: transparent;
    color: var(--nav-ds-module-dropdown-default-text-colour);
    transition: none;
}

@media screen and (prefers-reduced-motion: no-preference) {
    .nav-ds > nav > ul > li > .dropdown-menu li > a {
        transition: background-color 0.1s ease-out, color 0.1s ease-out;
    }
}

.nav-ds > nav > ul > li > .dropdown-menu li > a:hover {
    background: var(--nav-ds-module-dropdown-hover-background-colour);
    color: var(--nav-ds-module-dropdown-hover-text-colour);
}

/* Search section header */
.nav-ds > nav > ul > li > .dropdown-menu .menu-dropdowns > p {
    color: var(--client-primary);
}

/* #endregion */


/* #region Navigation: Profile Action buttons Search Modal/Specs and Standards Search modal */

.nav-ds-quick-search {
    padding: 20px;

    display: grid;
    grid-row-gap: 7px;
    grid-column-gap: 10px;
    grid-auto-flow: column;
    grid-template-columns: auto auto;
    grid-template-rows: auto auto;
}

.nav-ds-quick-search > :first-child {
    grid-column-start: 1;
    grid-column-end: 3;
}

/* #endregion */