@layer base, components, utilities;

@layer base {
    :root {
        --color-background: #f6fafc;
        --color-text: #10242f;
        --color-muted: #4a5f6b;
        --color-border: #d3e0e7;
        --color-accent: #30b5ff;
        --color-button: #3b7699;
        --color-button-hover: #316481;
        --color-button-text: #ffffff;
        --color-error: #b91c1c;
        --radius: 0.5rem;
    }

    @media (prefers-color-scheme: dark) {
        :root {
            --color-background: #0c1a21;
            --color-text: #e8f3f8;
            --color-muted: #a5bbc6;
            --color-border: #28424f;
            --color-button: #7fb3cf;
            --color-button-hover: #98c5dd;
            --color-button-text: #06202d;
            --color-error: #fca5a5;
        }
    }

    *,
    *::before,
    *::after {
        box-sizing: border-box;
    }

    html {
        -webkit-text-size-adjust: 100%;
    }

    body {
        margin: 0;
        background: var(--color-background);
        color: var(--color-text);
        font-family: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
        font-size: 1.0625rem;
        line-height: 1.6;
    }

    h1,
    h2,
    p {
        margin: 0;
    }

    img {
        display: block;
        max-width: 100%;
    }

    a:focus-visible,
    button:focus-visible,
    input:focus-visible {
        outline: 3px solid var(--color-accent);
        outline-offset: 2px;
    }
}

@layer components {
    .button {
        display: inline-block;
        padding: 0.625rem 1.25rem;
        border: 1px solid var(--color-button);
        border-radius: var(--radius);
        background: var(--color-button);
        color: var(--color-button-text);
        font: inherit;
        font-weight: 600;
        text-decoration: none;
        cursor: pointer;
    }

    .button:hover {
        border-color: var(--color-button-hover);
        background: var(--color-button-hover);
    }

    .button--quiet {
        border-color: var(--color-border);
        background: transparent;
        color: var(--color-text);
    }

    .button--quiet:hover {
        border-color: var(--color-muted);
        background: transparent;
    }

    .coming-soon {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        min-height: 100svh;
        padding-block: 2rem;
        text-align: center;
    }

    .coming-soon__icon {
        width: 5rem;
        height: auto;
    }

    .coming-soon__logo {
        width: clamp(8.5rem, 22vw, 14rem);
        height: auto;
        margin-top: 1.25rem;
    }

    .coming-soon__title {
        margin-top: 2rem;
        font-size: clamp(1.75rem, 6vw, 2.5rem);
        letter-spacing: -0.02em;
        line-height: 1.1;
    }

    .coming-soon__summary {
        margin-top: 1rem;
        color: var(--color-muted);
        font-size: 1.1875rem;
        text-wrap: balance;
    }

    .coming-soon__tagline {
        margin-top: 0.5rem;
        font-weight: 600;
    }

    .coming-soon__actions {
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 0.75rem;
        margin-top: 2rem;
    }

    .interest-form {
        width: 100%;
        margin-top: 1rem;
        text-align: left;
    }

    .interest-form__title {
        font-size: 1.25rem;
        line-height: 1.3;
        text-align: center;
    }

    .interest-form__fields {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
        margin-top: 1rem;
    }

    .interest-form__field {
        display: flex;
        flex: 1;
        flex-direction: column;
        gap: 0.25rem;
        min-width: 0;
    }

    .interest-form__field label {
        color: var(--color-muted);
        font-size: 0.9375rem;
        font-weight: 500;
    }

    .interest-form__field input {
        width: 100%;
        padding: 0.4375rem 0.625rem;
        border: 1px solid color-mix(in srgb, var(--color-muted) 60%, var(--color-border));
        border-radius: var(--radius);
        background: transparent;
        color: inherit;
        font: inherit;
        /* iOS zooms in on focus below 16px. */
        font-size: 1rem;
    }

    .interest-form__field input:hover {
        border-color: var(--color-muted);
    }

    .interest-form__field input[aria-invalid="true"] {
        border-color: var(--color-error);
    }

    .interest-form__submit {
        padding-block: 0.4375rem;
        font-size: 1rem;
        white-space: nowrap;
    }

    .interest-form__error {
        color: var(--color-error);
        font-size: 0.9375rem;
    }

    .interest-form__success {
        margin-top: 2rem;

        strong {
            display: block;
        }
    }

    /* The width of the container plus its gutters. */
    @media (min-width: 36rem) {
        .interest-form__fields {
            flex-direction: row;
            align-items: flex-start;
        }

        /* Drops the button past the height of a label, to line up with the inputs. */
        .interest-form__submit {
            margin-top: 1.75rem;
        }
    }

    .water-background {
        position: fixed;
        inset: 0;
        z-index: -1;
        background: linear-gradient(
            to bottom,
            transparent 35%,
            color-mix(in srgb, var(--color-accent) 10%, transparent)
        );
        pointer-events: none;
    }

    .water-background__waves {
        position: absolute;
        bottom: 0;
        width: 100%;
        height: clamp(11rem, 38vh, 26rem);
        fill: var(--color-accent);
    }

    /* The same tint reads much stronger against the dark background. */
    @media (prefers-color-scheme: dark) {
        .water-background {
            opacity: 0.55;
        }
    }
}

@layer utilities {
    .container {
        width: min(100% - 2rem, 34rem);
        margin-inline: auto;
    }
}
