@font-face {
    font-family: 'Wix Madefor Display';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/wix-madefor/wix-madefor-display-cyrillic-700-normal.woff2')
        format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
    font-family: 'Wix Madefor Display';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url('../fonts/wix-madefor/wix-madefor-display-latin-700-normal.woff2')
        format('woff2');
    unicode-range:
        U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
        U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
        U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
    font-family: 'Wix Madefor Text';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/wix-madefor/wix-madefor-text-cyrillic-400-normal.woff2')
        format('woff2');
    unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
    font-family: 'Wix Madefor Text';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/wix-madefor/wix-madefor-text-latin-400-normal.woff2')
        format('woff2');
    unicode-range:
        U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC,
        U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
        U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    color-scheme: dark;
    --navy: #003253;
    --white: #fff;
    --cyan: #37c9ee;
    --muted: #bad1df;
    --hairline: #52748b;
    --media: #00273f;
    --display: 'Wix Madefor Display', system-ui, sans-serif;
    --text: 'Wix Madefor Text', system-ui, sans-serif;
    scrollbar-color: var(--hairline) var(--navy);
}

* {
    box-sizing: border-box;
}

body {
    margin: 0;
    background: var(--navy);
    color: var(--white);
    font: 400 16px/1.5 var(--text);
}

::selection {
    background: var(--cyan);
    color: var(--navy);
}

:focus-visible {
    outline: 2px solid var(--cyan);
    outline-offset: 4px;
}

a {
    color: inherit;
    text-underline-offset: 0.2em;
}

.container {
    max-width: 1440px;
    margin-inline: auto;
    padding-inline: clamp(24px, 6.67vw, 96px);
}

.skip-link {
    position: fixed;
    z-index: 2;
    top: 8px;
    left: 8px;
    padding: 8px 12px;
    background: var(--media);
}

.skip-link:not(:focus) {
    clip-path: inset(50%);
}

.site-header__inner {
    display: flex;
    min-height: clamp(72px, 8vw, 104px);
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.wordmark {
    font: 700 clamp(19px, 2.15vw, 28px)/1 var(--display);
    letter-spacing: -0.035em;
    text-decoration: none;
}

.catalog-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 4px clamp(16px, 3vw, 36px);
}

.catalog-nav a {
    display: flex;
    align-items: center;
    min-height: 44px;
    font-size: 14px;
    text-decoration: none;
}

.catalog-nav a[aria-current],
.catalog-nav a:hover,
.wordmark:hover {
    color: var(--cyan);
}

@media (max-width: 480px) {
    .site-header__inner {
        flex-wrap: wrap;
        justify-content: flex-start;
        row-gap: 4px;
        padding-block: 14px 0;
    }
}

.catalog {
    padding-block: clamp(34px, 4vw, 56px) clamp(72px, 10vw, 144px);
}

.catalog h1 {
    max-width: 18ch;
    margin: 0 0 clamp(28px, 3.6vw, 52px);
    font: 700 clamp(34px, 5.6vw, 80px)/1.06 var(--display);
    letter-spacing: -0.03em;
    overflow-wrap: anywhere;
}

.catalog-empty {
    margin: 0;
    color: var(--muted);
}

.model-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: clamp(48px, 6vw, 88px) clamp(24px, 3vw, 40px);
    margin: 0;
    padding: 0;
    list-style: none;
}

.model-card {
    display: flex;
    flex-direction: column;
}

.model-card__link {
    flex: 1;
    display: block;
    text-decoration: none;
}

.model-card__visual:hover + .model-card__caption h3,
.model-card h3 a:hover,
.model-card h3 a:focus-visible {
    color: var(--cyan);
}

.model-card__media {
    position: relative;
    display: grid;
    aspect-ratio: 1;
    place-items: center;
    background: var(--white);
    color: var(--hairline);
}

.model-card__media img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.model-card__title {
    margin: 6px 0 0;
    color: var(--muted);
    font-size: 14px;
    font-weight: 400;
}

.catalog-view {
    display: flex;
    width: fit-content;
    margin-bottom: 16px;
    border: 1px solid var(--hairline);
}

.catalog-view a {
    padding: 8px 14px;
    text-decoration: none;
}

.catalog-view a:hover,
.catalog-view a[aria-current] {
    background: var(--cyan);
    color: var(--navy);
}

.catalog-model-list {
    display: grid;
    gap: 16px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.catalog-model-list__item {
    display: grid;
    grid-template-columns: clamp(76px, 17vw, 160px) minmax(0, 1fr);
    align-items: start;
    gap: clamp(12px, 2.5vw, 24px);
    padding: clamp(12px, 2vw, 20px);
    border: 1px solid var(--hairline);
    border-radius: 8px;
    background: #fff;
}

.catalog-model-list__photo {
    aspect-ratio: 1;
}

.catalog-model-list__photo a,
.catalog-model-list__photo img {
    display: block;
    width: 100%;
    height: 100%;
}

.catalog-model-list__photo img {
    object-fit: contain;
}

.catalog-model-list__copy {
    overflow-wrap: anywhere;
}

.catalog-model-list__copy p,
.catalog-model-list__copy h2 {
    margin: 0;
}

.catalog-model-list__series,
.catalog-model-list__characteristics {
    color: var(--muted);
    font-size: 14px;
}

.catalog-model-list__copy h2 {
    font-size: clamp(17px, 2.4vw, 24px);
    line-height: 1.25;
}

.catalog-model-list__copy h2 a {
    text-decoration: none;
}

.catalog-model-list__copy h2 a:hover,
.catalog-model-list__characteristics a {
    color: var(--cyan);
}

.catalog-model-list__copy .catalog-model-list__description,
.catalog-model-list__copy .catalog-model-list__characteristics {
    margin-top: 8px;
}

.catalog-model-list__description {
    white-space: pre-line;
}

.model-card__caption {
    margin-top: 16px;
}

@media (max-width: 950px) {
    .model-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 580px) {
    .model-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

.speaker-heading {
    margin-block: 24px clamp(28px, 4vw, 56px);
}

.speaker-heading__title {
    display: flex;
    align-items: center;
    gap: 24px;
    margin-bottom: 8px;
}

.speaker-heading__title h1 {
    max-width: none;
    min-width: 0;
    margin: 0;
    overflow-wrap: anywhere;
}

.speaker-heading__title a {
    flex: none;
}

.speaker-heading__title img {
    display: block;
}

.speaker-heading p {
    margin: 0;
    color: var(--muted);
}

.speaker-layout {
    display: grid;
    gap: clamp(32px, 5vw, 72px);
}

.speaker-layout--gallery {
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
}

.speaker-layout h2 {
    margin: 0 0 16px;
    font: 700 clamp(22px, 2.2vw, 30px)/1.2 var(--display);
}

.speaker-gallery + .speaker-gallery {
    margin-top: 32px;
}

.speaker-gallery__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.speaker-gallery__grid > :only-child {
    grid-column: 1 / -1;
}

.speaker-gallery__grid a {
    display: grid;
    aspect-ratio: 1;
    place-items: center;
    background: var(--white);
    padding: 8%;
}

.speaker-gallery__grid a:hover {
    outline: 2px solid var(--cyan);
}

.speaker-gallery__grid img {
    width: 100%;
    height: 100%;
    min-height: 0;
    object-fit: contain;
}

.speaker-gallery__grid--drawings a {
    aspect-ratio: 4 / 3;
    padding: 16px;
}

.speaker-data {
    width: 100%;
    max-width: 48rem;
    scroll-margin-top: 20px;
}

.speaker-sources {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 24px;
    border-bottom: 1px solid var(--hairline);
    margin-bottom: 20px;
}

.speaker-sources a {
    display: flex;
    align-items: center;
    min-height: 44px;
    border-bottom: 2px solid transparent;
    text-decoration: none;
}

.speaker-sources a[aria-current],
.speaker-sources a:hover {
    color: var(--cyan);
}

.speaker-sources a[aria-current] {
    border-bottom-color: var(--cyan);
}

.speaker-description {
    margin-bottom: 24px;
}

.speaker-description h3 {
    margin: 0 0 8px;
    font: 700 19px/1.25 var(--display);
}

.speaker-description p {
    margin: 0;
    white-space: pre-line;
}

.speaker-specifications {
    margin: 0;
}

.speaker-specifications > div {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 12px;
    border-bottom: 1px solid var(--hairline);
    padding-block: 12px;
    overflow-wrap: anywhere;
}

.speaker-specifications dt {
    color: var(--muted);
}

.speaker-specifications dd {
    margin: 0;
}

@media (max-width: 760px) {
    .speaker-layout--gallery {
        grid-template-columns: minmax(0, 1fr);
    }
}

body:has(.pswp--open) {
    overflow: hidden;
}

.catalog-kit__cover,
.kit-gallery img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1;
    object-fit: contain;
    background: var(--white);
}

.catalog-kit h3 {
    margin: 16px 0 4px;
    font: 700 26px/1.2 var(--display);
    overflow-wrap: anywhere;
}

.catalog-kit__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 8px;
    margin: 0 0 12px;
    color: var(--muted);
    font-size: 14px;
}

.catalog-kit__confirmed {
    color: var(--cyan);
}

.catalog-kit__items {
    margin: 0;
    padding-inline-start: 20px;
}

.catalog-kit__link {
    display: block;
    text-decoration: none;
}

.catalog-kit__link:hover h3,
.catalog-kit__items a:hover {
    color: var(--cyan);
}

.kit-gallery {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.kit-gallery > :first-child {
    grid-column: 1 / -1;
}

.kit-gallery a {
    display: block;
}

.kit-gallery a:hover {
    outline: 2px solid var(--cyan);
}
