/*
 * Felio's own landing page at `/` — issue #662, built from
 * docs/ux/reference/landing.png. Mobile first: every rule below the first
 * breakpoint is the phone, and the two media queries only widen it.
 *
 * Tokens only (ADR 0028 §2). The composite's frames are borders and radii, not
 * a drawn interface; the product inside them is a screenshot.
 */

@layer shell {
    /* --------------------------------------------------------------- header */

    .landing-header {
        position: sticky;
        inset-block-start: 0;
        z-index: 5;
        border-block-end: 1px solid var(--border);
        background-color: var(--surface-card);
    }

    .landing-header__inner {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        max-inline-size: var(--bare-shell-max-width);
        margin-inline: auto;
        padding: var(--space-2) var(--space-4);
    }

    .landing-brand {
        display: inline-flex;
        align-items: center;
        gap: var(--space-2);
        min-block-size: var(--touch-target);
        color: var(--text-strong);
    }

    .landing-brand:hover {
        color: var(--text-strong);
    }

    /* The same logotype as the auth screens (security/_brand_mark): the link's ink, the cat from .auth__mark-cat. */
    .landing-brand__mark {
        display: inline-flex;
    }

    .landing-nav {
        display: none;
    }

    .landing-header__actions {
        display: flex;
        align-items: center;
        gap: var(--space-2);
        margin-inline-start: auto;
    }

    .landing-header__actions .button {
        padding-inline: var(--space-4);
        font-size: var(--font-size-label);
        white-space: nowrap;
    }

    .landing-header__sign-in {
        display: inline-flex;
        align-items: center;
        min-block-size: var(--touch-target);
        padding-inline: var(--space-2);
        color: var(--text-strong);
        font-size: var(--font-size-label);
        font-weight: var(--font-weight-medium);
        white-space: nowrap;
    }

    .landing-header__sign-in:hover {
        color: var(--brand-700);
    }

    .landing-menu {
        position: relative;
    }

    .landing-menu__toggle {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-inline-size: var(--touch-target);
        min-block-size: var(--touch-target);
        border-radius: var(--radius-md);
        color: var(--text-strong);
        cursor: pointer;
        list-style: none;
    }

    .landing-menu__toggle::-webkit-details-marker {
        display: none;
    }

    .landing-menu__toggle:hover,
    .landing-menu[open] > .landing-menu__toggle {
        background-color: var(--brand-50);
        color: var(--brand-700);
    }

    .landing-menu__panel {
        position: absolute;
        inset-block-start: 100%;
        inset-inline-end: 0;
        display: flex;
        flex-direction: column;
        inline-size: max-content;
        padding: var(--space-2);
        border: 1px solid var(--border);
        border-radius: var(--radius-md);
        background-color: var(--surface-card);
        box-shadow: var(--shadow-raised);
    }

    .landing-menu__panel a {
        display: flex;
        align-items: center;
        min-block-size: var(--touch-target);
        padding-inline: var(--space-3);
        border-radius: var(--radius-sm);
        color: var(--text-strong);
        font-weight: var(--font-weight-medium);
    }

    .landing-menu__panel a:hover {
        background-color: var(--brand-50);
        color: var(--brand-700);
    }

    /* ----------------------------------------------------------------- hero */

    .landing-hero {
        overflow: hidden;
        background:
            radial-gradient(ellipse at 85% 30%, var(--brand-100), transparent 55%),
            var(--surface-page);
    }

    .landing-hero__inner {
        display: grid;
        gap: var(--space-10);
        max-inline-size: var(--bare-shell-max-width);
        margin-inline: auto;
        padding: var(--space-8) var(--space-4) var(--space-12);
    }

    .landing-hero__copy {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-6);
    }

    .landing-eyebrow {
        padding: var(--space-2) var(--space-4);
        border-radius: var(--radius-full);
        background-color: var(--brand-100);
        color: var(--brand-700);
        font-size: var(--font-size-caption);
        font-weight: var(--font-weight-semibold);
        letter-spacing: 0.06em;
        text-transform: uppercase;
    }

    .landing-hero__title {
        font-size: var(--font-size-display);
        line-height: var(--line-height-heading);
        letter-spacing: -0.01em;
    }

    .landing-hero__title > span {
        display: block;
    }

    .landing-hero__accent {
        color: var(--brand-600);
    }

    .landing-hero__lead {
        color: var(--text);
        font-size: var(--font-size-card-title);
    }

    .landing-hero__actions {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-3);
    }

    .landing-perks {
        display: grid;
        gap: var(--space-3);
        color: var(--text-strong);
        font-size: var(--font-size-label);
        font-weight: var(--font-weight-medium);
    }

    .landing-perks li {
        display: flex;
        align-items: center;
        gap: var(--space-3);
    }

    /* The product composite: the owner portal overlaps the breeder dashboard. */

    .landing-composite {
        position: relative;
        padding-block-end: var(--space-12);
    }

    .landing-browser {
        overflow: hidden;
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background-color: var(--surface-card);
        box-shadow: var(--shadow-card);
    }

    .landing-browser__bar {
        display: flex;
        gap: var(--space-1);
        padding: var(--space-2) var(--space-3);
        border-block-end: 1px solid var(--border);
        background-color: var(--surface-band);
    }

    .landing-browser__bar span {
        inline-size: var(--space-2);
        block-size: var(--space-2);
        border-radius: var(--radius-full);
        background-color: var(--border-control);
    }

    .landing-browser img {
        inline-size: 100%;
        block-size: auto;
    }

    .landing-phone {
        position: absolute;
        inset-block-end: 0;
        inset-inline-start: var(--space-3);
        inline-size: 36%;
        overflow: hidden;
        border: var(--space-1) solid var(--text-strong);
        border-radius: var(--radius-lg);
        background-color: var(--surface-card);
        box-shadow: var(--shadow-raised);
    }

    .landing-phone img {
        inline-size: 100%;
        block-size: auto;
    }

    /* -------------------------------------------------------------- sections */

    .landing-section {
        display: flex;
        flex-direction: column;
        gap: var(--space-8);
        max-inline-size: var(--bare-shell-max-width);
        margin-inline: auto;
        padding: var(--space-8) var(--space-4);
        scroll-margin-block-start: calc(var(--touch-target) + var(--space-4));
    }

    .landing-hero + .landing-section {
        padding-block-start: var(--space-12);
    }

    .landing-section:last-of-type {
        padding-block-end: var(--space-12);
    }

    /*
     * The tinted band carries its own background, so it is narrowed by the
     * padding the other sections keep inside their box: all three card blocks
     * then share one outer edge.
     */
    .landing-section--band {
        inline-size: min(100% - 2 * var(--space-4), var(--bare-shell-max-width) - 2 * var(--space-4));
        padding: var(--space-10) var(--space-6);
        border-radius: var(--radius-lg);
        background-color: var(--surface-band);
    }

    .landing-section__title {
        font-size: var(--font-size-section-title);
        text-align: center;
    }

    /* Funciones */

    .landing-features {
        display: grid;
        gap: var(--space-4);
    }

    .landing-feature {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: var(--space-3);
        padding: var(--space-6) var(--space-5);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background-color: var(--surface-card);
        text-align: center;
    }

    .landing-feature__icon {
        border-radius: var(--radius-full);
    }

    .landing-feature__title {
        font-size: var(--font-size-card-title);
    }

    .landing-feature__text {
        color: var(--text-muted);
        font-size: var(--font-size-label);
    }

    /* Cómo funciona */

    .landing-steps {
        display: grid;
        gap: var(--space-4);
        counter-reset: landing-step;
    }

    .landing-step {
        display: flex;
        align-items: stretch;
        justify-content: center;
        gap: var(--space-2);
        counter-increment: landing-step;
    }

    .landing-step__card {
        display: grid;
        flex: 1;
        grid-template-columns: auto auto;
        grid-template-areas:
            'number icon'
            'title title'
            'text text';
        justify-content: start;
        align-items: center;
        gap: var(--space-3);
        align-content: start;
        align-self: stretch;
        padding: var(--space-5);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background-color: var(--surface-card);
    }

    .landing-step__number {
        grid-area: number;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        inline-size: var(--space-8);
        block-size: var(--space-8);
        border-radius: var(--radius-full);
        background-color: var(--brand-600);
        color: var(--surface-card);
        font-weight: var(--font-weight-bold);
    }

    .landing-step__number::before {
        content: counter(landing-step);
    }

    .landing-step__icon {
        grid-area: icon;
        border-radius: var(--radius-full);
    }

    .landing-step__title {
        grid-area: title;
        font-size: var(--font-size-card-title);
    }

    .landing-step__text {
        grid-area: text;
        color: var(--text-muted);
        font-size: var(--font-size-label);
    }

    .landing-step__arrow {
        display: none;
        align-self: center;
        color: var(--brand-500);
    }

    /* Beneficios */

    .landing-benefits {
        display: flex;
        flex-direction: column;
        gap: var(--space-6);
        padding: var(--space-6);
        border: 1px solid var(--border);
        border-radius: var(--radius-lg);
        background-color: var(--surface-band);
    }

    .landing-benefits__title {
        font-size: var(--font-size-section-title);
    }

    .landing-benefits__list {
        display: grid;
        gap: var(--space-4);
    }

    .landing-benefit {
        display: flex;
        align-items: center;
        gap: var(--space-3);
        color: var(--text-strong);
    }

    .landing-benefit__check {
        display: inline-flex;
        flex: none;
        align-items: center;
        justify-content: center;
        inline-size: var(--space-6);
        block-size: var(--space-6);
        border-radius: var(--radius-full);
        background-color: var(--brand-600);
        color: var(--surface-card);
    }

    .landing-benefit__check .icon {
        inline-size: var(--space-4);
        block-size: var(--space-4);
    }

    /* Closing band */

    .landing-cta {
        display: flex;
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-5);
        padding: var(--space-8) var(--space-6);
        border: 1px solid var(--brand-200);
        border-radius: var(--radius-lg);
        background-color: var(--brand-50);
    }

    .landing-cta__copy {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
        color: var(--text);
    }

    .landing-cta__title {
        font-size: var(--font-size-section-title);
    }

    /* --------------------------------------------------------------- footer */

    .landing-footer {
        border-block-start: 1px solid var(--border);
        background-color: var(--surface-card);
    }

    .landing-footer__inner {
        display: flex;
        flex-direction: column;
        gap: var(--space-4);
        max-inline-size: var(--bare-shell-max-width);
        margin-inline: auto;
        padding: var(--space-8) var(--space-4);
        color: var(--text-muted);
        font-size: var(--font-size-label);
    }

    .landing-footer__brand {
        display: flex;
        flex-direction: column;
        gap: var(--space-2);
    }

    .landing-footer__nav {
        display: flex;
        gap: var(--space-6);
    }

    .landing-footer__nav a {
        display: inline-flex;
        align-items: center;
        min-block-size: var(--touch-target);
        color: var(--text-muted);
    }

    .landing-footer__nav a:hover {
        color: var(--brand-700);
    }

    /* The dashboard shrunk to a phone's width is illegible: on a phone the owner portal stands alone, at a legible size. */
    @media (max-width: 639px) {
        .landing-browser {
            display: none;
        }

        .landing-composite {
            padding-block-end: 0;
        }

        .landing-phone {
            position: static;
            inline-size: 60%;
            margin-inline: auto;
        }
    }

    /* ------------------------------------------------------------ tablet up */

    @media (min-width: 640px) {
        .landing-features {
            grid-template-columns: repeat(2, 1fr);
        }

        .landing-steps {
            grid-template-columns: repeat(2, 1fr);
        }

        .landing-benefits__list {
            grid-template-columns: repeat(2, 1fr);
        }

        .landing-cta {
            flex-direction: row;
            align-items: center;
        }

        .landing-cta__copy {
            flex: 1;
        }

        .landing-footer__inner {
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
        }

        .landing-phone {
            inline-size: 28%;
        }
    }

    /* ----------------------------------------------------------- desktop up */

    @media (min-width: 1024px) {
        .landing-nav {
            display: flex;
            gap: var(--space-8);
            margin-inline: auto;
        }

        .landing-nav a {
            display: inline-flex;
            align-items: center;
            min-block-size: var(--touch-target);
            color: var(--text-strong);
            font-size: var(--font-size-label);
            font-weight: var(--font-weight-medium);
        }

        .landing-nav a:hover {
            color: var(--brand-700);
        }

        .landing-menu {
            display: none;
        }

        .landing-header__actions {
            margin-inline-start: 0;
        }

        .landing-header__actions .button {
            padding-inline: var(--space-5);
            font-size: var(--font-size-body);
        }

        .landing-header__sign-in {
            padding-inline: var(--space-4);
            font-size: var(--font-size-body);
        }

        .landing-perks {
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: var(--space-4);
        }

        .landing-hero__inner {
            gap: var(--space-12);
            grid-template-columns: minmax(0, 6fr) minmax(0, 5fr);
            align-items: center;
            padding-block: var(--space-16);
        }

        .landing-composite {
            padding-block-end: 0;
        }

        .landing-phone {
            inset-block-end: calc(var(--space-12) * -1);
            inset-inline-start: calc(var(--space-8) * -1);
            inline-size: 24%;
        }

        .landing-features {
            grid-template-columns: repeat(3, 1fr);
        }

        .landing-steps {
            grid-template-columns: repeat(4, 1fr);
        }

        .landing-step__arrow {
            display: block;
            flex: none;
        }

        /* Two lines of title in every card, so the body text starts at the same height. */
        .landing-step__title {
            min-block-size: 2lh;
        }

        .landing-benefits__title {
            text-align: center;
        }

        .landing-benefits {
            padding: var(--space-10);
        }
    }

}
