html,
body {
    height: 100%;
}

.visually-hidden {
    position: absolute !important;
    height: 1px !important;
    width: 1px !important;
    margin: -1px !important;
    border: 0 !important;
    padding: 0 !important;
    clip: rect(0 0 0 0) !important;
    clip-path: inset(50%) !important;
    overflow: hidden !important;
    white-space: nowrap !important;
}

/* ---------------------------------------------------------- */

.mobile-nav,
.mobile-nav * {
    box-sizing: border-box;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.mobile-nav,
.mobile-nav-toggle {
    --color-brand-primary: #bf2d38;
    --color-light: #fff;
    --color-dark: #333;

    --color-gray-light: #eef0f0;
    --color-gray: #ccc;
    --color-gray-dark: #767676;

    --color-foreground: var(--color-dark);
    --color-foreground-muted: var(--color-gray);

    --color-background: var(--color-light);
    --color-background-muted: var(--color-gray-light);

    --color-border: var(--color-gray);
    --color-chevron: var(--color-gray-dark);

    --space-xs: 0.8rem;
    --space-s: 1.6rem;
    --space-m: 2.4rem;
    --space-l: 3.2rem;
    --space-xl: 4rem;
    --space-xxl: 4.8rem;
    --space-xxxl: 5.6rem;
    --space-xxxxl: 6.4rem;

    --font-size-s: 1.6rem;
    --font-size-m: 1.8rem;
    --font-size-l: 2.4rem;

    --border: 1px solid var(--color-border);

    --transition-duration: 0.3s;

    --transition-in: max-height var(--transition-duration) 0s, visibility 0s 0s;

    --transition-out: max-height var(--transition-duration) 0s,
        visibility var(--transition-duration) var(--transition-duration);
}

.mobile-nav {
    position: fixed;
    top: 0;
    left: 100%;
    height: 100%;
    width: 100%;
    max-width: 40rem;
    font-size: var(--font-size-s);

    color: var(--color-foreground);
    background-color: var(--color-background-muted);

    box-shadow: 0;

    transform: translateX(0);
    transition: transform var(--transition-duration) ease-in-out,
        box-shadow var(--transition-duration) ease-in-out;
    will-change: transition;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    z-index: 6;
}

.mobile-nav.is-ready[aria-hidden='false'] {
    transform: translateX(-100%);
    box-shadow: 0 0 6rem 0 rgb(0 0 0 / 50%);
}

.mobile-nav__header {
    padding: var(--space-m) var(--space-m) var(--space-xl);
    background-color: var(--color-background);
}

.mobile-nav__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    width: 100%;
    flex-direction: column;
}

.mobile-nav__list--sub {
    overflow: hidden;
    max-height: 0;
    visibility: hidden;
    transition: var(--transition-out);
}

.mobile-nav__list--sub.is-expanded {
    max-height: 500rem;
    visibility: visible;
    transition: var(--transition-in);
}

.mobile-nav__list {
    border-top: var(--border);
    border-bottom: var(--border);
}

.mobile-nav__list .mobile-nav__list {
    border: 0;
}

.mobile-nav__item + .mobile-nav__item,
.mobile-nav__action + .mobile-nav__list .mobile-nav__item:first-of-type {
    border-top: var(--border);
}

.mobile-nav__item {
    display: flex;
    flex-wrap: wrap;
}

/* Common styling for nav links & sub nav toggles */

.mobile-nav__action,
.mobile-nav__action:link,
.mobile-nav__action:visited {
    --color-foreground: var(--color-dark);
    --color-background: var(--color-gray-light);

    position: relative;
    margin: 0;
    padding: 0;
    line-height: inherit;
    background: none;
    border: 0;
    border-radius: 0;
    cursor: pointer;
    vertical-align: baseline;
    appearance: none;
    text-align: left;

    font-size: var(--font-size-m);
    display: flex;
    align-items: center;
    flex-grow: 1;
    min-height: var(--space-xxxxl);
    padding-block: var(--space-xs);
    color: var(--color-foreground);
    background-color: var(--color-background);
    font-weight: 300;
}

.mobile-nav__action:not(.mobile-nav__action--combo-button) {
    padding-inline: var(--space-m);
    font-weight: bold;
}

.mobile-nav__action.mobile-nav__action--combo-link {
    flex-shrink: 0;
}

.mobile-nav__action.mobile-nav__action--combo-button {
    flex-shrink: 1;
}

.mobile-nav__action.mobile-nav__action--primary {
    --color-foreground: var(--color-brand-primary);
    --color-background: var(--color-light);
}

.mobile-nav__action.mobile-nav__action--secondary {
    --color-foreground: var(--color-light);
    --color-background: var(--color-brand-primary);
}

.mobile-nav__action.mobile-nav__action--donation,
.mobile-nav__action.mobile-nav__action--donation:link,
.mobile-nav__action.mobile-nav__action--donation:visited {
    background: #ba0020;
    color: white;
    font-weight: bold;
}

/* Distinguish links from sub nav toggles */

.mobile-nav__action[aria-expanded]:not(.mobile-nav__action--combo-button) {
    font-weight: 700;
    padding-right: var(--space-xxxxl);
}

/* Chevron */

.mobile-nav__action[aria-expanded]:after {
    content: '';
    display: block;
    position: absolute;
    right: var(--space-l);
    top: 50%;
    height: 0.75em;
    width: 0.75em;
    border-bottom: 1px solid var(--color-chevron);
    border-right: 1px solid var(--color-chevron);
    transform: translate(-50%, -60%) rotate(45deg);
    margin-left: auto;
    transition: transform var(--transition-duration);
}

.mobile-nav__action[aria-expanded='true']:after {
    transform: translate(-50%, -60%) rotate(-135deg);
}

.mobile-nav__action.mobile-nav__action--secondary[aria-expanded]:after {
    border-bottom: 1px solid #fff;
    border-right: 1px solid #fff;
}

/* Indent nested links/toggles */

.mobile-nav__list
    .mobile-nav__list
    .mobile-nav__action:not(.mobile-nav__action--combo-button) {
    padding-left: var(--space-xl);
}

.mobile-nav__list
    .mobile-nav__list
    .mobile-nav__list
    .mobile-nav__action:not(.mobile-nav__action--combo-button) {
    padding-left: var(--space-xxxl);
}

.mobile-nav__list
    .mobile-nav__list
    .mobile-nav__action--secondary:not(.mobile-nav__action--combo-button) {
    padding-left: var(--space-m);
}
.mobile-nav__list
    .mobile-nav__list
    .mobile-nav__list
    .mobile-nav__action--secondary:not(.mobile-nav__action--combo-button) {
    padding-left: var(--space-xl);
}

.mobile-search {
    display: flex;
  justify-content: space-between;
  align-items: center;
}

.mobile-home {
    display: block;
    width: 16px;
    color: #767676;
    margin-right: 20px;
    margin-top: 4px;
}

.mobile-search__control {
    display: flex;
    width: 100%;
}

.mobile-search__input {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    line-height: 1.25;
    font: inherit;
    box-sizing: border-box;
    width: 100%;
    height: 4rem;
    padding: var(--space-xs);
    color: var(--color-foreground);
    border-radius: 0;
    border: 2px solid var(--color-background-muted);
    background-color: var(--color-background-muted);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.mobile-search__input:focus-visible {
    border-color: var(--color-foreground);
}

.mobile-nav-toggle,
.mobile-nav__close,
.mobile-search__submit {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    font-size: var(--font-size-l);
    line-height: 1;
    border: 0;
    border-radius: 0;
    cursor: pointer;
    vertical-align: baseline;
    appearance: none;
    text-align: center;
    color: var(--color-foreground);
    background-color: var(--color-background);
    transition: all var(--transition-duration);
}

.mobile-nav-toggle {
    height: var(--space-xxl);
    width: var(--space-xxl);
}

.mobile-nav__close,
.mobile-search__submit {
    height: 4rem;
    width: 4rem;
}

.mobile-nav__close {
    position: absolute;
    top: var(--space-s);
    right: var(--space-m);
    color: var(--color-foreground-muted);
    background-color: var(--color-background);
}

.mobile-nav__close:hover,
.mobile-nav__close:focus-visible {
    color: var(--color-foreground);
    background-color: var(--color-background-muted);
}

.mobile-search__submit {
    color: var(--color-brand-primary);
    background-color: var(--color-background-muted);
}

/* Increase visual weight of the submit when interacting with the search input  */
.mobile-search__input:focus-visible ~ .mobile-search__submit {
    border-color: var(--color-foreground);
    color: var(--color-background);
    background-color: var(--color-foreground);
}

.mobile-search__submit:hover,
.mobile-search__submit:focus-visible,
.mobile-search__input:focus-visible ~ .mobile-search__submit:hover,
.mobile-search__input:focus-visible ~ .mobile-search__submit:focus-visible {
    color: var(--color-background);
    background-color: var(--color-brand-primary);
}

.mobile-nav .logo,
.mobile-nav__logo {
    display: block;
    width: 16rem;
    margin-bottom: var(--space-xl);
}

.theme-20years .mobile-nav .logo,
.theme-20years .mobile-nav__logo {
  width: 11rem;
  margin-bottom: var(--space-l);
}

/* Account for differently sized logos on sub-sites */

/* ...for logos w/ two additional lines */

.subsite--cis .mobile-nav .logo,
.subsite--cfr .mobile-nav .logo,
.subsite--cs .mobile-nav .logo,
.subsite--mpa .mobile-nav .logo,
.subsite--mds .mobile-nav .logo,
.subsite--cdg .mobile-nav .logo {
    margin-bottom: var(--space-s);
}

/* ...for logos w/ one additional line */

.subsite--pl .mobile-nav .logo,
.subsite--dsl .mobile-nav .logo,
.subsite--phd .mobile-nav .logo,
.subsite--mia .mobile-nav .logo,
.subsite--mpp .mobile-nav .logo,
.subsite--ee .mobile-nav .logo {
    margin-bottom: var(--space-m);
}

.mobile-nav .logo img {
    width: 100%;
    height: auto;
}

.mobile-nav__social-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: center;
    gap: 0.325em;
    font-size: 4rem;
    margin-top: 4rem;
    margin-bottom: 2rem;
}

.mobile-nav__social-item {
    display: flex;
}

.mobile-nav__social-link {
    display: flex !important;
    align-items: center;
    justify-content: center;
    color: #bf2d38 !important;
    width: 1em;
    aspect-ratio: 1 / 1;
}
.mobile-nav__social-link.genericon::before {
    font-size: 0.625em;
}

.mobile-nav__social-link.genericon-bluesky::before {
    content: '';
    width: 24px;
    background: url(https://www.hertie-school.org/typo3conf/ext/lf_base/Resources/Frontend/dev04/assets/images/bluesky__red.svg) center center no-repeat;
    background-size: 24px auto;
    height: 40px;
    display: block;
}
.mobile-nav__social-link.genericon-tiktok::before {
    content: '';
    width: 24px;
    background: url(https://www.hertie-school.org/typo3conf/ext/lf_base/Resources/Frontend/dev04/assets/images/tiktok__red.svg) center center no-repeat;
    background-size: 24px auto;
    height: 40px;
    display: block;
}

.mobile-nav__social-link.genericon-instagram::before {
    content: '';
    width: 24px;
    background: url(https://www.hertie-school.org/typo3conf/ext/lf_base/Resources/Frontend/dev04/assets/images/instagram__red.svg) center center no-repeat;
    background-size: 24px auto;
    height: 40px;
    display: block;
}
