@font-face {
    font-family: 'Saira';
    font-style: normal;
    font-weight: 100 900;
    font-stretch: 50% 125%;
    font-display: swap;
    src: url('/fonts/saira-latin.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;
}

::selection {
    background: #F1ECE8;
    color: #161314;
}

:focus-visible {
    outline: 2px solid #F1ECE8;
    outline-offset: 3px;
}

summary {
    list-style: none;
}

summary::-webkit-details-marker {
    display: none;
}

.type-display {
    font-stretch: 70%;
    font-weight: 700;
    line-height: 0.92;
    letter-spacing: -0.01em;
    overflow-wrap: break-word;
}

.pricing .price-year {
    display: none;
}

.pricing[data-interval="year"] .price-month {
    display: none;
}

.pricing[data-interval="year"] .price-year {
    display: block;
}

.pricing:not([data-interval="year"]) .price-equivalent {
    visibility: hidden;
}

.sf-flow--wifi {
    opacity: 0;
}

.sf-source--wifi {
    opacity: 0.3;
}

.sf-brb {
    opacity: 0;
}

.signal-captions {
    display: grid;
}

.signal-captions > * {
    grid-area: 1 / 1;
}

.signal-caption--1,
.signal-caption--3 {
    opacity: 0;
}

@media print {
    header,
    #language-banner,
    .signal {
        display: none !important;
    }

    *,
    *::before,
    *::after {
        color: #000 !important;
        background: transparent !important;
        box-shadow: none !important;
    }

    .border-transparent {
        border-color: #000 !important;
    }

    footer img {
        filter: brightness(0);
    }
}

@media (prefers-reduced-motion: no-preference) {
    html {
        scroll-behavior: smooth;
    }

    .sf-flow {
        animation: sf-flow 0.6s linear infinite;
    }

    .sf-flow--wifi {
        animation: sf-flow 0.6s linear infinite, sf-only-1 10s linear infinite;
    }

    .sf-flow--cell {
        animation: sf-flow 0.6s linear infinite, sf-not-3 10s linear infinite;
    }

    .sf-scene {
        animation: sf-not-3 10s linear infinite;
    }

    .sf-source--wifi {
        animation: sf-dim-unless-1 10s linear infinite;
    }

    .sf-source--cell {
        animation: sf-dim-in-3 10s linear infinite;
    }

    .sf-brb {
        animation: sf-only-3 10s linear infinite;
    }

    .signal-caption--1 {
        animation: sf-only-1 10s linear infinite;
    }

    .signal-caption--2 {
        animation: sf-only-2 10s linear infinite;
    }

    .signal-caption--3 {
        animation: sf-only-3 10s linear infinite;
    }

    .signal[data-paused] * {
        animation-play-state: paused;
    }
}

@keyframes sf-flow {
    to {
        stroke-dashoffset: -12;
    }
}

@keyframes sf-only-1 {
    0%, 20% { opacity: 1; }
    23%, 80% { opacity: 0; }
    83%, 100% { opacity: 1; }
}

@keyframes sf-only-2 {
    0%, 20% { opacity: 0; }
    23%, 45% { opacity: 1; }
    48%, 100% { opacity: 0; }
}

@keyframes sf-only-3 {
    0%, 45% { opacity: 0; }
    48%, 80% { opacity: 1; }
    83%, 100% { opacity: 0; }
}

@keyframes sf-not-3 {
    0%, 45% { opacity: 1; }
    48%, 80% { opacity: 0; }
    83%, 100% { opacity: 1; }
}

@keyframes sf-dim-unless-1 {
    0%, 20% { opacity: 1; }
    23%, 80% { opacity: 0.3; }
    83%, 100% { opacity: 1; }
}

@keyframes sf-dim-in-3 {
    0%, 45% { opacity: 1; }
    48%, 80% { opacity: 0.3; }
    83%, 100% { opacity: 1; }
}
