.rabbit-nav {

    /* Nav */
    --nav-background-color: var(--secondary-ultra-light);
    --nav-top-border-color: var(--secondary);
    --nav-foreground-color: var(--primary-ultra-dark);
    --nav-mobile-background-color: #fff;
    --nav-z-index: 999;

    /* Nav List */
    --nav-list-style: none;
    --nav-list-padding: 10px 0;
    --nav-list-margin: 0;

    /* Nav Items */
    --nav-item-block-padding: 0.5rem;
    --nav-item-block-padding-ends: 1rem;
    --nav-item-inline-padding: 1rem;
    --nav-item-padding: var(--nav-item-block-padding) var(--nav-item-inline-padding);
    --nav-item-focus-line: 2px;
    --nav-item-focus-outline-color: var(--nav-foreground-color);
    --transition-duration: 0.3s;
    --transition-timing-function: ease-in-out;
    --nav-item-icon-rotation: 180deg;

    /* Nav Current Active Item */
    --nav-item-current-active-decoration: none;
    --nav-item-current-active-offset: 5px;

    /* Nav Button Icons */
    --nav-button-icon-size: 20px;

    /* Nav Links */
    --nav-link-padding: 0.5em 1em;
    --nav-link-color: var(--nav-foreground-color);
    --nav-link-color-contrast: var(--nav-background-color);
    --nav-link-color-hover: var(--white);
    --nav-link-background-hover: var(--secondary-hover);

    /* Nav Dropdowns and flyouts */
    --nav-dropdown-background: var(--nav-background-color);
    --nav-flyout-background: var(--nav-background-color);
    --nav-flyout-icon-desktop-initial-angle: -90deg;
    --nav-flyout-icon-desktop-rotation: 90deg;
    --nav-dropdown-max-width: 280px;

    position: fixed;
    top: 0;
    left: 0;
    block-size: 100dvh;
    inline-size: 80%;
    max-inline-size: 500px;
    background-color: var(--white);
    z-index: var(--nav-z-index);
    display: flex;
    flex-direction: column;
    justify-content: center;
    overflow-y: auto;
    transform: translateX(-100%);
    visibility: hidden;
    transition:
        transform var(--transition-duration) var(--transition-timing-function),
        visibility 0s var(--transition-duration);
}

.rabbit-nav[aria-expanded='true'] {
    transform: translateX(0);
    visibility: visible;
    box-shadow: 4px 0 20px rgba(0, 0, 0, 0.15);
    transition:
        transform var(--transition-duration) var(--transition-timing-function),
        visibility 0s 0s;
}

.rabbit-nav :where(.rabbit-nav__list) {
    display: flex;
    flex-direction: column;
    inline-size: 100%;
    margin: var(--nav-list-margin);
    padding: var(--nav-list-padding);
    list-style: var(--nav-list-style);
}

.rabbit-nav :where(.rabbit-nav__list, .rabbit-nav__dropdown, .rabbit-nav__flyout) {
    margin: var(--nav-list-margin);
    padding: var(--nav-list-padding);
    list-style: var(--nav-list-style);
}

.rabbit-nav :where(.rabbit-nav__item) {
    display: flex;
    flex-direction: column;
}

.rabbit-nav :where(.rabbit-nav__link:focus-visible, .rabbit-nav__button:focus-visible) {
    outline: var(--nav-item-focus-line) solid var(--nav-item-focus-outline-color);
}

.rabbit-nav :where(.rabbit-nav__link:focus:not(:focus-visible), .rabbit-nav__button:focus:not(:focus-visible)) {
    outline: none;
}

.rabbit-nav :where(.rabbit-nav__item .rabbit-nav__link, .rabbit-nav__item .rabbit-nav__button) {
    text-decoration: none;
    color: var(--nav-link-color);
    font-weight: 500;
    padding: var(--nav-item-padding);
}

.rabbit-nav :where(.rabbit-nav__list > .rabbit-nav__item > .rabbit-nav__link) {
    border-radius: 0;
}

.rabbit-nav :where(.rabbit-nav__list > .rabbit-nav__item > .rabbit-nav__button) {
    border-radius: 0;
}

.rabbit-nav :where(.rabbit-nav__link[aria-current='page']) {
    text-decoration: var(--nav-item-current-active-decoration);
    text-underline-offset: var(--nav-item-current-active-offset);
    border-inline-start: 3px solid var(--secondary);
}

.rabbit-nav :where(.rabbit-nav__button) {
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: var(--nav-link-color);
}

.rabbit-nav :where(.rabbit-nav__button svg) {
    inline-size: var(--nav-button-icon-size);
    min-inline-size: var(--nav-button-icon-size);
    block-size: var(--nav-button-icon-size);
    transition: transform var(--transition-duration) var(--transition-timing-function);
}

.rabbit-nav :where(.rabbit-nav__button--dropdown-toggle[aria-expanded='true'] svg, .rabbit-nav__button--flyout-toggle[aria-expanded='true'] svg) {
    transform: rotate(var(--nav-item-icon-rotation));
}

/* Hover styles applied on desktop only — see rabbit-nav-desktop.css */

.rabbit-nav :where(.rabbit-nav__item--has-dropdown, .rabbit-nav__item--has-flyout) {
    position: relative;
}

.rabbit-nav :where(.rabbit-nav__dropdown, .rabbit-nav__flyout) {
    inline-size: max-content;
    max-inline-size: var(--nav-dropdown-max-width, 280px);
}

.rabbit-nav :where(.rabbit-nav__dropdown) {
    border-block-start: none;
    border-radius: 0;
    min-inline-size: 180px;
    position: relative;
    background-color: transparent;
    padding-inline-start: 1rem;
    transition:
        max-block-size calc(var(--transition-duration) / 2) var(--transition-timing-function),
        opacity var(--transition-duration) var(--transition-timing-function),
        visibility var(--transition-duration) var(--transition-timing-function);
}

.rabbit-nav :where(.rabbit-nav__button--dropdown-toggle[aria-expanded='false'] ~ .rabbit-nav__dropdown, .rabbit-nav__button--flyout-toggle[aria-expanded='false'] ~ .rabbit-nav__flyout) {
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition:
        max-block-size var(--transition-duration) var(--transition-timing-function),
        opacity var(--transition-duration) var(--transition-timing-function),
        visibility var(--transition-duration) var(--transition-timing-function);
}

.rabbit-nav :where(.rabbit-nav__flyout) {
    background-color: transparent;
    padding-block: 0;
    padding-inline-start: 1rem;
    transition:
        max-block-size calc(var(--transition-duration) / 2) var(--transition-timing-function),
        opacity var(--transition-duration) var(--transition-timing-function),
        visibility var(--transition-duration) var(--transition-timing-function);
}

.rabbit-nav :where(.rabbit-nav__dropdown) {
    padding-block-start: 0;
    padding-block-end: 0;
}

/* Burger */
.rabbit-burger {
    --burger-width: 30px;
    --burger-line-thickness: 2px;
    --burger-line-spacing: 6px;
    --burger-dark-color: #242424;

    inline-size: var(--burger-width);
    block-size: calc(var(--burger-line-thickness) * 3 + var(--burger-line-spacing) * 2);
    padding: 0;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rabbit-burger__lines {
    position: relative;
    inline-size: var(--burger-width);
    block-size: var(--burger-line-thickness);
    min-block-size: 0;
    min-inline-size: 0;
    background: var(--burger-dark-color);
    transition:
        transform var(--transition-duration, 0.3s) var(--transition-timing-function, ease-in-out),
        background var(--transition-duration, 0.3s) var(--transition-timing-function, ease-in-out);
}

.rabbit-burger__lines::before,
.rabbit-burger__lines::after {
    content: '';
    position: absolute;
    inset-inline-start: 0;
    inline-size: 100%;
    block-size: var(--burger-line-thickness);
    background: var(--burger-dark-color);
    transition:
        transform var(--transition-duration, 0.3s) var(--transition-timing-function, ease-in-out),
        opacity var(--transition-duration, 0.3s) var(--transition-timing-function, ease-in-out);
}

.rabbit-burger__lines::before {
    top: calc(-1 * (var(--burger-line-thickness) + var(--burger-line-spacing)));
}

.rabbit-burger__lines::after {
    bottom: calc(-1 * (var(--burger-line-thickness) + var(--burger-line-spacing)));
}

.rabbit-burger[aria-expanded='true'] .rabbit-burger__lines {
    background: transparent;
}

.rabbit-burger[aria-expanded='true'] .rabbit-burger__lines::before {
    transform: translateY(calc(var(--burger-line-thickness) + var(--burger-line-spacing))) rotate(45deg);
}

.rabbit-burger[aria-expanded='true'] .rabbit-burger__lines::after {
    transform: translateY(calc(-1 * (var(--burger-line-thickness) + var(--burger-line-spacing)))) rotate(-45deg);
}

.main-nav--dark .rabbit-burger {
    --burger-dark-color: var(--white);
}

@media (prefers-reduced-motion: reduce) {
    .rabbit-nav,
    .rabbit-nav[aria-expanded='true'],
    .rabbit-nav :where(.rabbit-nav__button svg),
    .rabbit-nav :where(.rabbit-nav__dropdown),
    .rabbit-nav :where(.rabbit-nav__flyout),
    .rabbit-burger__lines,
    .rabbit-burger__lines::before,
    .rabbit-burger__lines::after {
        transition: none;
    }
}
