/* -------------------------------------------- */
/* VAPAGUIDE 24 */
/* Version: 55 */
/* -------------------------------------------- */
/* Created by @twotribes, Germany */
/* -------------------------------------------- */
/* StyleSheet Scope: 
Individual components */
/* -------------------------------------------- */

/* -------------------------------------------- */
/* !COMPONENT: Animal group selector */
/* -------------------------------------------- */

/* Small viewports */
@container zoo-container (width < 736px) {
    .tt-eins .substance-zoo {
        padding-left: var(--mobile-gutter);
        padding-right: var(--mobile-gutter);
        overflow-x: hidden; /* compensates overly wide .substance-flyout when open */
    }
}


/* !--- Grid of animal groups */
.tt-eins .substance-zoo {
    > ul {
        display: grid;
        grid-template-columns: var(--width-2col) 1fr 1.5fr 1fr var(--width-2col);
        grid-template-areas: 
            "other_water cnidarians terrestrial_snakes scorpions other_land"
            "other_water venomous_fish terrestrial_snakes spiders other_land"
            "other_water sea_snakes poisonous hymenopterans other_land";
        row-gap: 16px;
        column-gap: 16px;
    }
    
    #zoogroup_poisonous_animals {
        grid-area: poisonous;
    }
    
    #zoogroup_cnidarians {
        grid-area: cnidarians;
    }
    
    #zoogroup_venomous_fish {
        grid-area: venomous_fish;
    }
    
    #zoogroup_sea_snakes {
        grid-area: sea_snakes;
    }
    
    #zoogroup_other_water {
        grid-area: other_water;
    }
    
    #zoogroup_terrestrial_snakes {
        grid-area: terrestrial_snakes;
    }
    
    #zoogroup_scorpions {
        grid-area: scorpions;
    }
    
    #zoogroup_spiders {
        grid-area: spiders;
    }
    
    #zoogroup_hymenopterans {
        grid-area: hymenopterans;
    }
    
    #zoogroup_other_land {
        grid-area: other_land;
    }
}

/* Small viewports */
@container zoo-container (width < 736px) {
    .tt-eins .substance-zoo > ul {
        display: flex;
        flex-direction: column;
        row-gap: 12px;
    }
}


/* !--- Single section */
/* Group container */
.tt-eins .substance-zoo .zoo-animalgroup {
    border: 1px solid transparent;
    padding: 18px 12px 12px 12px;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    row-gap: 12px;
    transition: var(--transition-universal);
    
    /* States */
    &.group-water {
        background: var(--vapa-water);
        --flyout-background-color: var(--vapa-water-light);
    }
    
    &.group-land {
        background: var(--vapa-land);
        --flyout-background-color: var(--vapa-land-light);
    }
    
    &.group-hybrid {
        background: var(--vapa-hybrid);
        --flyout-background-color: var(--vapa-hybrid-light);
    }
    
    &.item-active {
        background: var(--vapa-white);
    }
}

/* Interaction states */
.tt-eins .substance-zoo .zoo-animalgroup:has(*:focus-visible) {
    border: var(--line-standard);
    transition: var(--transition-border);
    
    .title-action {
        outline: none;
    }
}

@media (hover: hover) {
    .tt-eins .substance-zoo .zoo-animalgroup:has(:is(.gallery-action, .title-action):hover), 
    .tt-eins .substance-zoo .zoo-animalgroup:has(:is(.gallery-action, .title-action):hover) {
        background-color: var(--selectable-emphasis-backcolor);
        transition: var(--transition-color);
    }
}

/* Small container width (mobile viewport or flyout use case */
@container zoo-container (width < 736px) {
    .tt-eins .substance-zoo .zoo-animalgroup {
        min-height: var(--zoo-tile-height-minimum-mobile);
        width: 100%;
        padding: 6px 12px 6px 8px;
        flex-direction: row;
        column-gap: 8px;
        row-gap: 8px;
        justify-content: normal;
        align-items: flex-start;
    }
}

/* Illustration gallery */
.tt-eins .substance-zoo .zoo-animalgroup {
    .group-gallery {
        flex-grow: 1;
    }
    
    .group-gallery .gallery-action {
        margin: 0 12px 0 12px;
        display: flex;
        justify-content: space-evenly;
        column-gap: 36px;
        height: var(--zoo-illu-height);
    }
    
    &:is(#zoogroup_other_land, #zoogroup_other_water) .group-gallery .gallery-action {
        flex-direction: column;
        height: 100%;
        width: 100%;
        margin: 0;
        align-items: center;
    }
    
    &#zoogroup_terrestrial_snakes .group-gallery .gallery-action {
        height: 100%;
        max-height: var(--zoo-illu-snake-height-maximum);
    }
    
    &:is(#zoogroup_other_land, #zoogroup_other_water) .group-gallery .gallery-action .substance-media {
        height: var(--zoo-illu-other-height);
    }
    
    .group-gallery .gallery-action:focus-visible {
        outline: none;
    }
    
    .group-gallery .substance-media {
        height: 100%;
    }
}

/* Small viewports */
@container zoo-container (width < 736px) {
    .tt-eins .substance-zoo .zoo-animalgroup {
        .group-gallery {
            flex-grow: 0;
            height: var(--zoo-illu-height-mobile);
        }
    
        .group-gallery .gallery-action {
            width: var(--zoo-illu-width-mobile-static);
            height: var(--zoo-illu-height-mobile);
            margin: 0 8px 0 0;
            column-gap: 10px;
        }
        
        /* Animal groups with several pictures */
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) {
            flex-direction: column;
            row-gap: 10px;
            
            .group-gallery {
                height: var(--zoo-illu-other-height-mobile);
            }
        }
        
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .group-gallery .gallery-action {
            flex-direction: row;
            width: 100%;
            height: var(--zoo-illu-other-height-mobile);
        }
        
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .group-gallery .gallery-action .substance-media {
            height: 100%;
        }
    }
}

/* Flyout controller */
.tt-eins .substance-zoo .zoo-animalgroup {
    --flyout-arrow-distance: 20px;
    --flyout-host-distance: calc(100% + 12px);
    
    .title-action {
        font: var(--textset-l);
    }
    
    &:is(#zoogroup_other_land, #zoogroup_other_water) .title-action {
        font: var(--textset-m);
        font-weight: 600;
    }
    
    .title-action.flyout-controller {
        text-wrap: balance;
    }
    
    .title-action mark {
        font-weight: 400;
    }
    
    /* Navigation flyouts */
    .substance-flyout.flyout-active:before {
        bottom: calc(-1 * var(--flyout-arrow-distance));
    }
    
    .flyout-host {
        top: var(--flyout-host-distance);
    }
}

/* DESKTOP viewport only – custom flyout sizes & alignments */
@container zoo-container (width > 736px) {
    .tt-eins .substance-zoo {
        /* Flexible width for snakes flyout with expanded map matrix */
        #zoogroup_terrestrial_snakes .flyout-host:has(.section-collapsible.item-active) {
            width: var(--flyout-width-large);
        }
        
        /* Different arrow placement for leftmost/rightmost tiles */
        :is(#zoogroup_other_land, #zoogroup_other_water) .title-action.flyout-controller {
            padding-right: 0;
            padding-bottom: 24px;
            
            &:after {
                top: auto;
                bottom: 0px;
                margin-top: 0;
                left: 50%;
                margin-left: -9px;
            }
        }
        
        /* Edge flyout alignment for leftmost/rightmost tiles */
        #zoogroup_other_water .flyout-host {
            left: -12px;
            right: auto;
            transform: none;
        }
        
        #zoogroup_other_land .flyout-host {
            left: auto;
            right: -12px;
            transform: none;
        }
        
        /* Short viewports: expand bottommost flyouts upwards */
        @media (height < 800px) {
            :is(#zoogroup_other_water, #zoogroup_sea_snakes, #zoogroup_poisonous_animals, #zoogroup_hymenopterans, #zoogroup_other_land) {
                .substance-flyout.flyout-active:before {
                    bottom: auto;
                    top: calc(-1 * var(--flyout-arrow-distance));
                    transform: rotate(225deg);
                }
                
                .flyout-host {
                    bottom: var(--flyout-host-distance);
                    top: auto;
                }
            }
        }
    }
}

/* MOBILE viewport – Navigation flyouts */
@container zoo-container (width < 736px) {
    .tt-eins .substance-zoo .zoo-animalgroup {
        .title-container {
            flex-grow: 1;
            text-align: left;
            margin-top: 14px;
            width: 100%;
        }
        
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .title-container {
            margin-top: 0;
        }
        
        .title-action {
            width: 100%;
        }
        
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .title-action {
            font: var(--textset-l);
            padding-left: calc(var(--zoo-illu-width-mobile-static) + 12px);
        }
        
        /* Expanded flyouts */
        .title-action.item-active {
            width: calc(100% - var(--zoo-illu-width-mobile-static) - 16px); /* offset extended expander width */
        }
    
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .title-action.item-active {
            width: 100%;
        }
    
        .flyout-host {
            top: 0;
            margin-top: 18px;
            margin-bottom: -8px; /* offset container padding */
            border-left: none;
            border-right: none;
            border-bottom: none;
            left: calc(-1 * (var(--zoo-illu-width-mobile-static) + 24px)) !important;
            right: auto !important;
            transform: none;
            width: calc(var(--site-width) - 2 * var(--mobile-gutter) - 2px);
        }
        
        &:is(#zoogroup_poisonous_animals, #zoogroup_other_land, #zoogroup_other_water) .flyout-host {
            left: -8px !important;
            width: calc(var(--site-width) - 2 * var(--mobile-gutter) - 4px);
        }
    }
}


/* -------------------------------------------- */
/* !COMPONENT: Media container (images + video thumbs) */
/* -------------------------------------------- */

/* !--- Image container */
.tt-eins .substance-media {
    .media-image {
        height: 100%;
        display: flex;
        flex-direction: column;
        justify-content: space-around;
    }
    
    &.media-map .media-image {
        background-color: var(--map-backcolor);
        border: var(--line-standard);
        border-color: transparent;
    }
    
    /* Actual image element */
    .media-image img {
        display: inline-block;
        width: 100%;
        height: 100%;
        max-width: 100%;
        max-height: 100%;
        object-fit: contain;
        min-height: 100%; /* fix for Safari */
        object-position: center;
        border: none;
    }
}

.tt-eins .menu-item.item-active .substance-media.media-map .media-image {
    border: var(--line-standard);
}



/* !--- Optional: media caption */
.tt-eins .substance-media figcaption {
    display: none;
}

.tt-eins .substance-media.media-captioned figcaption {
    display: block;
}


/* !--- Edge case: singular map on homepage flyout for auto-region confirmation */
.tt-eins .substance-media.media-map.map-confirmation {
    display: grid;
    grid-template-columns: var(--width-2col) auto;
    column-gap: 16px;
    margin-bottom: 16px;
    
    figcaption {
        font: var(--textset-l);
        text-wrap: pretty;
    }
    
    .primary-action {
        width: calc(100% - 52px);
        margin-top: 8px;
    }
}

@media only screen and (max-width: 736px) {
    .tt-eins .substance-media.media-map.map-confirmation {
        figcaption {
            font: var(--textset-m);
            font-weight: 600;
        }
    }
}


/* -------------------------------------------- */
/* !COMPONENT: Submenus inside flyouts */
/* -------------------------------------------- */

/* !--- Grand containers */
/* Inside flyouts, we need outer space */
.tt-eins .flyout-host .substance-menu {
    padding: 16px;
    text-align: left;
}


/* !--- Menu sections */
.tt-eins .substance-menu .menu-section {
    &:not(:last-child) {
        padding-bottom: 16px;
    }
    
    + .menu-section {
        padding-top: 16px;
    }
    
    /* List of scroll-only links */
    &.section-directory {
        padding: 0 0 20px 18px;
        
        /* can be nested for another headline level */
        .section-directory {
            padding-bottom: 0;
            padding-left: 0;
        }
    }
    
    /* List of clickable page links which can contain .section-directory */
    &.section-deep:not(:has(ul[role="menubar"] > .menu-item.item-active:last-child)) {
        padding-bottom: 20px;
    }
    
    /* Singular cross links at the bottom of a flyout */
    &.section-reset {
        margin: -16px 0 -16px;
    }
}

@media only screen and (max-width: 736px) {
    .tt-eins .substance-menu .menu-section {
        &:not(:last-child) {
            padding-bottom: 8px;
        }
        
        + .menu-section {
            padding-top: 8px;
        }
    }
}

/* Collapsible menu sections (only used for large matrix qualifiers) */
.tt-eins .substance-menu .menu-section.section-collapsible {
    &.section-qualifier.qualifier-large:not(.item-active) ul {
        display: none;
    }
}

/* Menu sections with matrix layout */
.tt-eins .substance-menu .menu-section.section-qualifier.qualifier-large {
    background-color: var(--map-selector-backcolor);
    margin: 0 -16px 0 -16px;
    padding: 16px 16px 16px 16px;
    
    ul {
        display: flex;
        flex-wrap: wrap;
        --map-column-gap: 8px;
        row-gap: 8px;
        column-gap: var(--map-column-gap);
    }
}

/* Temporarily hidden submenus (used for subspecies menus in TerrSnakes / Biomed aspect flyout) */
.tt-eins .substance-menu .menu-section .foTerHidden {
    display: none;
}


/* !--- Section titles */
.tt-eins .substance-menu .menu-section .section-title {
    border-bottom: var(--line-standard);
    padding-bottom: 4px;
    margin-bottom: 8px;
    font-weight: 600;
    
    /* Optional: Latin names as add-ons for menu label */
    &:has(mark) {
        font-weight: 400;
    }
    
    mark {
        font-weight: 600;
    }
    
    /* Titles serving as expanders for submenus */
    &.expand-action {
        width: 100%;
        padding-bottom: 0;
        margin-bottom: 0;
        border-bottom: none;
    }
    
    &.expand-action.item-active {
        margin-bottom: 12px;
    }
}

/* Titles for matrix selectors */
.tt-eins .substance-menu .menu-section.section-qualifier.qualifier-large .section-title {
    font: var(--textset-l);
    text-wrap: pretty;
    
    /* Expander icon */
    &:before {
        top: 2px;
    }
    
    /* Explainer text */
    mark {
        font: var(--textset-m);
        display: block;
        margin-top: 8px;
    }
}

/* Aspect-illustrated titles (used for search flyouts + containers) */
.tt-eins .substance-menu .menu-section .section-title.title-illu {
    padding: 3px 0 7px 32px;
    position: relative;
    
    &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 24px;
        height: 24px;
        background: transparent center no-repeat;
        background-size: 24px;
    }
    
    /* Icons */
    &.illu-emergency:before {
        background-image: url("./img/illus/navigation/aspect_emergency_external.svg");
    }
    
    &.illu-doctors:before {
        background-image: url("./img/illus/navigation/aspect_doctors_external.svg");
    }
    
    &.illu-diagnosis:before {
        background-image: url("./img/illus/navigation/aspect_diagnosis_external.svg");
    }
    
    &.illu-biomedical:before {
        background-image: url("./img/illus/navigation/aspect_biomedical_external.svg");
    }
    
    &.illu-identification:before {
        background-image: url("./img/illus/navigation/aspect_general_external.svg");
    }
    
    &.illu-distribution:before {
        background-image: url("./img/illus/navigation/aspect_distribution_external.svg");
    }
}


/* !--- Abstract explainer text inside menus (rarely used) */
.tt-eins .substance-menu > p + p {
    margin-top: 1.1rem;
}


/* !--- Single menu items */
/* Central backlinks in flyouts */
.tt-eins .substance-menu .menu-section.section-reset .menu-item {
    margin: 0 -16px 0 -16px;
    padding-left: 16px;
    padding-right: 16px;
    background-color: var(--vapa-white);
}

/* Selectable menu items incl. active state */
.tt-eins .substance-menu.menu-selectable {
    .menu-item {
        margin: 0 -16px 0 -16px;
        width: calc(100% + 32px);
        padding-left: 16px;
        padding-right: 16px;
        background-color: transparent;
        transition: var(--transition-color);
    }
    
    .menu-section.qualifier-large .menu-item {
        background-color: var(--vapa-land-light);
    }
    
    /* Active state */
    .menu-item.item-active, 
    .menu-section.qualifier-large .menu-item.item-active {
        background-color: var(--vapa-white);
        transition: var(--transition-color);
    }
    
    .menu-item.item-collapsible.item-active:not(:has(> .menu-action:only-child)) {
        padding-top: 6px;
    }
    
    /* Illustrated menu items */
    .menu-section.section-qualifier {
        .menu-item {
            padding-left: 12px;
            border-left: var(--line-master);
            border-color: transparent;
        }
        
        .menu-item.item-active {
            border-color: unset;
            padding-top: unset;
        }
        
        /* Matrix layout */
        &.qualifier-large .menu-item {
            width: calc(100% / 3 - (2 * var(--map-column-gap)) / 3);
            margin: 0;
            padding: 0 0 4px 0;
            border-left: none;
            border-bottom: var(--line-master);
            border-color: transparent;
        }
        
        &.qualifier-large .menu-item.item-active {
            border-bottom: var(--line-master);
        }
    }
}

@media only screen and (max-width: 736px) {
    .tt-eins .substance-menu.menu-selectable .menu-section.section-qualifier.qualifier-large .menu-item {
        width: calc(100% / 2 - (var(--map-column-gap)) / 2);
    }
}

/* Interaction states */
@media (hover: hover) {
    .tt-eins .substance-menu.menu-selectable .menu-item:not(.item-active):hover {
        background-color: var(--selectable-emphasis-backcolor);
        transition: var(--transition-color);
    }
}

.tt-eins .substance-menu.menu-selectable .menu-item:not(.item-active):focus-within {
    background-color: var(--selectable-emphasis-backcolor);
    transition: var(--transition-color);
}


/* !--- Content of menu item */
.tt-eins .substance-menu .menu-item .menu-action {
    display: block;
    width: 100%;
}

/* Pure scroll links */
.tt-eins .substance-menu .section-directory {
    .menu-item .menu-action {
        font: var(--textset-s);
        font-weight: 600;
        color: var(--textcolor-link-low);
    }
    
    .section-directory .menu-item .menu-action {
        font-weight: 400;
        padding-left: 14px;
        padding-bottom: 3px;
        background: transparent left 2px url("./img/icons/icon_tree_land.svg") no-repeat;
    }
}

.tt-eins .expression-water .section-directory .section-directory .menu-item .menu-action {
    background-image: url("./img/icons/icon_tree_water.svg");
}

.tt-eins .expression-hybrid .section-directory .section-directory .menu-item .menu-action {
    background-image: url("./img/icons/icon_tree_hybrid.svg");
}

.tt-eins .expression-general .section-directory .section-directory .menu-item .menu-action {
    background-image: url("./img/icons/icon_tree_general.svg");
}

@media only screen and (max-width: 736px) {
    .tt-eins .section-directory .section-directory .menu-item .menu-action {
        padding-bottom: 6px;
    }
}

/* Collapsible menu items */
.tt-eins .substance-menu .menu-item.item-collapsible {
    margin-bottom: 4px;
    
    > .menu-action {
        position: relative;
        padding-left: 18px;
    }
    
    /* Expander arrow icon */
    > .menu-action:before {
        content: "";
        display: block;
        position: absolute;
        top: 6px;
        left: 0;
        width: 9px;
        height: 18px;
        background: transparent center url("./img/icons/icon_arrow_right_land.svg") no-repeat;
    }
    
    &.item-active > .menu-action:before {
        transform: rotateZ(90deg);
    }
}

/* Collapsible menu items: section-dependent arrow coloring */
.tt-eins .expression-water .substance-menu .menu-item.item-collapsible > .menu-action:before {
    background-image: url("./img/icons/icon_arrow_right_water.svg");
}

.tt-eins .expression-hybrid .substance-menu .menu-item.item-collapsible > .menu-action:before {
    background-image: url("./img/icons/icon_arrow_right_hybrid.svg");
}

.tt-eins .expression-general .substance-menu .menu-item.item-collapsible > .menu-action:before {
    background-image: url("./img/icons/icon_arrow_right_general.svg");
}

/* Collapsible menu items: Interaction states */
.tt-eins .substance-menu .menu-item.item-collapsible.item-active > .menu-action:before, 
.tt-eins .substance-menu .menu-item.item-collapsible > .menu-action:focus-visible:before {
    background-image: url("./img/icons/icon_arrow_right_land_focus.svg");
}

.tt-eins .expression-water .substance-menu .menu-item.item-collapsible.item-active > .menu-action:before, 
.tt-eins .expression-water .substance-menu .menu-item.item-collapsible > .menu-action:focus-visible:before {
    background-image: url("./img/icons/icon_arrow_right_water_focus.svg");
}

.tt-eins .expression-hybrid .substance-menu .menu-item.item-collapsible.item-active > .menu-action:before, 
.tt-eins .expression-hybrid .substance-menu .menu-item.item-collapsible > .menu-action:focus-visible:before {
    background-image: url("./img/icons/icon_arrow_right_hybrid_focus.svg");
}

.tt-eins .expression-general .substance-menu .menu-item.item-collapsible.item-active > .menu-action:before, 
.tt-eins .expression-general .substance-menu .menu-item.item-collapsible > .menu-action:focus-visible:before {
    background-image: url("./img/icons/icon_arrow_right_general_focus.svg");
}


/* -------------------------------------------- */
/* !COMPONENT: Flyout dialogs */
/* -------------------------------------------- */

/* !--- Outer container with controller and flyout container */
.tt-eins .substance-flyout {
    position: relative;
    --flyout-border: var(--line-flyout-border);
    --flyout-background-color: var(--vapa-white);
}

.tt-eins .section-water .substance-flyout, 
.tt-eins .expression-water .substance-flyout {
    --flyout-background-color: var(--vapa-water-light);
}

.tt-eins .section-land .substance-flyout, 
.tt-eins .expression-land .substance-flyout {
    --flyout-background-color: var(--vapa-land-light);
}

.tt-eins .section-hybrid .substance-flyout, 
.tt-eins .expression-hybrid .substance-flyout {
    --flyout-background-color: var(--vapa-hybrid-light);
}

.tt-eins .expression-general .substance-flyout {
    --flyout-background-color: var(--vapa-general-light);
}


/* !--- Triangle connector for active flyout (on the initiating container) */
.tt-eins .substance-flyout.flyout-active:before {
    content: "";
    display: block;
    position: absolute;
    width: 16px;
    height: 16px;
    bottom: -16px;
    left: 50%;
    margin-left: -8px;
    z-index: 30;
    transform: rotateZ(45deg);
    background: var(--flyout-background-color);
    border-left: var(--flyout-border);
    border-top: var(--flyout-border);
}

@media only screen and (max-width: 736px) {
    .tt-eins .substance-flyout.flyout-active:before {
        display: none;
    }
}


/* !--- Flyout container */
.tt-eins .substance-flyout .flyout-host {
    position: absolute;
    top: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    width: var(--flyout-width-standard);
    min-height: 48px;
    max-height: 70vh; /* very rough default */
    padding: 0;
    margin: 0;
    border: none;
    background: var(--flyout-background-color);
    border: var(--flyout-border);
    box-shadow: var(--shadow-flyout);
    z-index: 20;
    overflow: auto;
    transition: var(--transition-universal);
}

/* Visibility of <dialog> flyouts is handled by JS/HTML */
/* Visibility of menu flyouts must be handled here */
.tt-eins .substance-flyout .flyout-host.host-menu {
    display: none;
}

.tt-eins .substance-flyout.flyout-active .flyout-host.host-menu {
    display: block;
}

/* Mobile viewports: transform all flyouts into expanders */
@media only screen and (max-width: 736px) {
    .tt-eins .substance-flyout .flyout-host {
        position: relative;
        max-height: none;
        margin-bottom: 16px;
        border: var(--flyout-border);
        box-shadow: none;
        overflow: visible;
    }
    
    .tt-eins .substance-flyout .flyout-host:before {
        content: "";
        display: block;
        position: absolute;
        width: 16px;
        height: 16px;
        top: -9px;
        left: 50%;
        margin-left: -8px;
        z-index: 30;
        transform: rotateZ(45deg);
        background: var(--flyout-background-color);
        border-left: var(--flyout-border);
        border-top: var(--flyout-border);
    }
}


/* -------------------------------------------- */
/* !COMPONENT: Formatted text */
/* -------------------------------------------- */

/* !--- Outer textbox container */
.tt-eins .substance-richtext {
    font: var(--textset-content-m);
    -webkit-hyphens: auto;
    -moz-hyphens: auto;
    -ms-hyphens: auto;
    hyphens: auto;
    
    --margin-standard: 1.1rem;
    --inset-standard: 1.25rem;
    --headborder-padding: 0.25em;

    /* Default values for possible section dependencies*/
    --list-index-color: var(--marker-order-color);
    --list-bullet-color: var(--marker-bullet-color);
    --headline-separator: var(--line-standard);
}

/* Initialize section-dependent colors */
.tt-eins .expression-land .substance-richtext {
    --list-index-color: var(--marker-order-color-land);
    --list-bullet-color: var(--marker-bullet-color-land);
    --headline-separator: var(--line-standard-land);
}

.tt-eins .expression-water .substance-richtext {
    --list-index-color: var(--marker-order-color-water);
    --list-bullet-color: var(--marker-bullet-color-water);
    --headline-separator: var(--line-standard-water);
}

.tt-eins .expression-general .substance-richtext {
    --list-index-color: var(--marker-order-color-general);
    --list-bullet-color: var(--marker-bullet-color-general);
    --headline-separator: var(--line-standard-general);
}

.tt-eins .expression-hybrid .substance-richtext {
    --list-index-color: var(--marker-order-color-hybrid);
    --list-bullet-color: var(--marker-bullet-color-hybrid);
    --headline-separator: var(--line-standard-hybrid);
}


/* !--- Headlines */
/* Headline cadence */
.tt-eins .substance-richtext h2 {
    font: var(--textset-content-xl);
    text-wrap: pretty;
    margin-top: calc(2.5 * var(--margin-standard));
    margin-bottom: calc(0.8 * var(--margin-standard));
    padding-bottom: var(--headborder-padding);
    border-bottom: var(--headline-separator);
    color: var(--textcolor-emphasis);
}

.tt-eins .substance-richtext h3 {
    font: var(--textset-content-l);
    text-transform: uppercase;
    text-wrap: pretty;
    letter-spacing: var(--spacing-headline-level3);
    margin-top: calc(1.6 * var(--margin-standard));
    margin-bottom: calc(0.5 * var(--margin-standard));
}

.tt-eins .substance-richtext h4 {
    font: var(--textset-content-m-plus);
    font-weight: 600;
    text-wrap: pretty;
    margin-top: calc(0.8 * var(--margin-standard));
    margin-bottom: calc(0.2 * var(--margin-standard));
}

.tt-eins .substance-richtext h5 {
    font: var(--textset-content-m-minus);
    font-weight: 600;
    text-wrap: pretty;
    margin-top: calc(0.8 * var(--margin-standard));
    margin-bottom: calc(0.2 * var(--margin-standard));
}

.tt-eins .substance-richtext h6 {
    font: var(--textset-content-m);
    font-weight: 600;
    margin-top: calc(0.8 * var(--margin-standard));
    margin-bottom: calc(0.2 * var(--margin-standard));
}

.tt-eins .substance-richtext :is(h2 + h3, h3 + h4, h4 + h5, h5 + h6) {
    margin-top: calc(0.8 * var(--margin-standard));
}

/* Neutralize abuse: embedded headlines */
.tt-eins .substance-richtext .substance-table.content-table:has(tr:only-child td:only-child) {
    margin-bottom: 0;
}

.tt-eins .substance-richtext .substance-table.content-table:has(tr:only-child td:only-child) h3, 
.tt-eins .substance-richtext .substance-table.content-table:has(tr:only-child td:only-child) h4 {
    margin-bottom: calc(0.6 * var(--margin-standard));
}

/* Streamline headline-internal fragments */
.tt-eins .substance-richtext :is(h2, h3, h4, h5, h6) {
    em {
        font-weight: 400;
        color: inherit;
    }
    
    strong {
        font-weight: inherit;
        color: inherit;
    }
    
    p {
        display: inline;
        font-weight: inherit;
        margin-bottom: 0;
    }
}

/* First headline of flow */
/* Edge case: sometimes the first headline is wrapped in weird HTML constructs */
.tt-eins .substance-richtext > .substance-table:first-child :is(h2, h3), 
.tt-eins .substance-richtext > div:first-child > div:first-child > div:first-child > div:first-child > :is(h2, h3):first-child, 
.tt-eins .substance-richtext > div:first-child > div:first-child > div:first-child > :is(h2, h3):first-child, 
.tt-eins .substance-richtext > div:first-child > div:first-child > :is(h2, h3):first-child, 
.tt-eins .substance-richtext > div:first-child > :is(h2, h3):first-child, 
.tt-eins .substance-richtext > :is(h2, h3):first-child {
    margin-top: 0;
}


/* !--- Paragraphs + emphasis */
.tt-eins .substance-richtext p {
    margin-bottom: var(--margin-standard);
    
    &.richtext-annotation {
        font: var(--textset-content-s);
    }
    
    &.richtext-tight {
        margin-bottom: 0;
    }
}

/* Emphasis */
.tt-eins .substance-richtext em, 
.tt-eins .substance-richtext b {
    font-weight: 600;
    color: var(--textcolor-emphasis);
}

.tt-eins .substance-richtext strong {
    font-weight: 600;
    color: var(--textcolor-emphasis);
}

.tt-eins .substance-richtext .link-action :is(em, b, strong) {
    color: inherit;
}

.tt-eins .substance-richtext i {
    font-style: italic;
    font-weight: inherit;
}

/* Edge case: Latin italics within real content flows */
.tt-eins .content-flow:not(.flow-literature).substance-richtext em {
    font-style: italic;
    font-weight: inherit;
    color: inherit;
}

/* Superscript */
.tt-eins .substance-richtext sup {
    display: inline-block;
    padding: 0 0.2em 0 0.2em;
}

/* Subscript */
.tt-eins .substance-richtext sub {
    display: inline-block;
    padding: 0 0.2em 0 0.2em;
}


/* !--- Embedded links */
/* handled by .link-action in substances_small */
.tt-eins .substance-richtext .link-action {
}


/* !--- Bullet lists */
/* List container */
.tt-eins .substance-richtext ul, 
.tt-eins .substance-richtext ol {
    position: relative;
    
    --list-item-distance: calc(0.1 * var(--margin-standard));
    
    &:not(:last-child) {
        margin-bottom: var(--margin-standard);
    }
}

.tt-eins .substance-richtext ol {
    counter-reset: listitem;
}

.tt-eins .substance-richtext :is(ul ul, ul ol, ol ul, ol ol) {
    margin-left: 0;
    width: 100%;
}

/* List entry */
.tt-eins .substance-richtext :is(ol, ul) li {
    list-style: none;
    margin-bottom: var(--list-item-distance);
    position: relative;
    padding-left: var(--inset-standard);
    
    /* Direct nesting */
    > :is(ol, ul) {
        margin-top: var(--list-item-distance);
    }
}

.tt-eins .substance-richtext ol li {
    counter-increment: listitem;
    padding-left: calc(1.1 * var(--inset-standard));
}

.tt-eins .substance-richtext :is(> ol, > ul) li:last-child {
    margin-bottom: calc(1.2 * var(--margin-standard));
}

/* Index number per bullet */
.tt-eins .substance-richtext ol li:before {
    content: counter(listitem) ".";
    font-weight: 600;
    color: var(--list-index-color);
    position: absolute;
    top: -0.05lh;
    left: 0;
}

/* Graphical bullet point */
.tt-eins .substance-richtext ul li:before {
    content: "";
    position: absolute;
    left: 0;
    top: 0.32lh;
    width: 0.5rem;
    height: 0.5rem;
    background: var(--list-bullet-color);
}

.tt-eins .substance-richtext ul.list-subtle li:before {
    background: var(--vapa-white);
    border: 1px solid var(--list-bullet-color);
}

.tt-eins .substance-richtext .substance-table ul li:before {
    top: 0.25lh;
}

/* List entry content */
.tt-eins .substance-richtext ol li > *:last-child, 
.tt-eins .substance-richtext ul li > *:last-child {
    margin-bottom: 0;
}


/* !--- Separators */
.tt-eins .substance-richtext hr {
    position: relative;
    border: none;
    height: 1px; /* reset value */
    width: var(--width-3col);
    margin-left: 0;
    margin-top: calc(1.5 * var(--margin-standard));
    margin-bottom: calc(1.5 * var(--margin-standard));
    overflow: visible;
    
    --line-color: var(--vapa-black-60);
    --vignette-color: var(--vapa-black-80);
    
    /* Line */
    &:before {
        content: "";
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        height: 1px;
        background: var(--line-color);
    }
    
    /* Vignette */
    &:after {
        content: "";
        position: absolute;
        top: -0.25rem;
        left: 50%;
        width: 0.5rem;
        height: 0.5rem;
        background: var(--vignette-color);
        outline: 8px solid var(--vapa-white);
    }
}

.tt-eins .expression-land .substance-richtext hr {
    --vignette-color: var(--vapa-earth-60);
}
.tt-eins .expression-water .substance-richtext hr {
    --vignette-color: var(--vapa-marine-50);
}
.tt-eins .expression-general .substance-richtext hr {
    --vignette-color: var(--vapa-nature-50);
}
.tt-eins .expression-hybrid .substance-richtext hr {
    --vignette-color: var(--vapa-accent-50);
}

@media only screen and (max-width: 736px) {
    .tt-eins .substance-richtext hr {
        width: 50%;
        margin-left: auto;
    }
}


/* !--- Floating images */
/* Accessible wrapper */
.tt-eins .substance-richtext .substance-media {
    margin-bottom: var(--margin-standard);
    max-width: 100%;
}

/* CMS images without wrapper */
.tt-eins .substance-richtext *:not(.substance-media) img {
    /* Standard treatment at full column width */
    display: block;
    margin-bottom: var(--margin-standard);
    max-width: 100%;
}

.tt-eins .substance-richtext p.richtext-tight img {
    margin-bottom: 0;
}


/* !--- Tables */
.tt-eins .substance-richtext .substance-table {
    margin-bottom: calc(2.5 * var(--margin-standard));
}

/* Cell content */
.tt-eins .substance-richtext .substance-table td *:last-child {
    margin-bottom: 0;
}


/* !--- Last text element */
.tt-eins .substance-richtext > *:last-child {
    margin-bottom: 0;
}
