/* The home page carousel of apps, from howarthgames.co.uk css/index.css (21 Oct 2026): the
   carousel, its tiles, the section heading and the "See all apps" button. */
:root {
    --fc-blue: #1e72b2;
    --fc-blue-dark: #145a90;
    --fc-ink: #14202b;
    --fc-line: #e3e8ee;
    --fc-radius: 10px;
    --fc-shadow: 0 1px 2px rgba(16, 32, 48, .06), 0 8px 24px rgba(16, 32, 48, .07);
    --fc-shadow-lg: 0 2px 4px rgba(16, 32, 48, .07), 0 18px 44px rgba(16, 32, 48, .13);
}

.apps-banner .eyebrow {
            color: rgba(255, 255, 255, .82);
            margin-bottom: .35rem;
        }

.eyebrow {
            display: block;
            font-size: .72rem;
            font-weight: 800;
            letter-spacing: .14em;
            text-transform: uppercase;
            color: var(--fc-blue);
            margin-bottom: .6rem;
        }

.section-head h2 {
            text-transform: uppercase;
            letter-spacing: .01em;
        }

.section-head p {
            margin-top: .75rem;
        }

.link-arrow {
            display: inline-flex;
            align-items: center;
            gap: .4rem;
            font-size: .78rem;
            font-weight: 800;
            letter-spacing: .07em;
            text-transform: uppercase;
            color: var(--fc-blue);
        }

.link-arrow::after {
            content: "\2192";
            transition: transform .18s ease;
        }

a:hover .link-arrow::after {
            transform: translateX(4px);
        }

.fc-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: .5rem;
            padding: .85rem 1.6rem;
            font: inherit;
            font-weight: 800;
            font-size: .82rem;
            letter-spacing: .08em;
            text-transform: uppercase;
            border: 2px solid var(--fc-blue);
            border-radius: var(--fc-radius);
            background: var(--fc-blue);
            color: #fff;
            cursor: pointer;
            transition: background-color .18s ease, border-color .18s ease, transform .18s ease;
        }

.fc-btn:hover {
            background: var(--fc-blue-dark);
            border-color: var(--fc-blue-dark);
            transform: translateY(-2px);
            color: #fff;
        }

/* Product card, one app each */
        .app-tile {
            display: flex;
            flex-direction: column;
            height: 100%;
            background: #fff;
            border: 1px solid var(--fc-line);
            border-radius: var(--fc-radius);
            overflow: hidden;
            transition: box-shadow .2s ease, transform .2s ease, border-color .2s ease;
        }

a:hover .app-tile {
            transform: translateY(-3px);
            box-shadow: var(--fc-shadow-lg);
            border-color: var(--fc-blue);
        }

/* One fixed media box whatever the shot: these apps run portrait
           and landscape, and contain keeps every one whole inside it */
        .app-tile-media {
            /* no fixed height: the image sets it, so the whole screenshot
               shows at the tile's full width with nothing cropped away.
               Every tile in a given carousel holds the same shape of shot,
               so they still line up. */
            background: #0b0b0d;
            overflow: hidden;
            /* block, not centred grid: a centred grid item is not stretched,
               so height: 100% on the image had nothing to resolve against and
               it painted at full height, overflowing the box */
            display: block;
            padding: 0;
        }

.app-tile-media img {
            width: 100%;
            height: auto;
            display: block;
        }

.app-tile-body {
            padding: 1rem 1.1rem 1.2rem;
            display: flex;
            flex-direction: column;
            gap: .45rem;
            flex: 1 1 auto;
        }

.app-tile-body h3 {
            margin: 0;
            font-size: 1.05rem;
            color: var(--fc-ink);
        }

.app-tile-body p {
            margin: 0;
            font-size: .92rem;
            color: rgba(0, 0, 0, .68);
            flex: 1 1 auto;
        }

.apps-actions {
            display: flex;
            justify-content: center;
            margin-top: 1.5rem;
        }

/* ---- carousel (shared with js/carousel.js) ---- */
        .fc-carousel {
            --gap: 1.1rem;
            --per-view: 3;
            margin-top: 1.5rem;
        }

.fc-carousel-frame {
            position: relative;
        }

.fc-carousel-viewport {
            overflow-x: auto;
            overscroll-behavior-x: contain;
            scroll-snap-type: x mandatory;
            scroll-behavior: smooth;
            scrollbar-width: none;
            -ms-overflow-style: none;
            padding: 4px 0 8px;
            margin: -4px 0 -8px;
        }

.fc-carousel-viewport::-webkit-scrollbar {
            display: none;
        }

.fc-carousel-viewport:focus-visible {
            outline: 3px solid var(--fc-blue);
            outline-offset: 2px;
            border-radius: var(--fc-radius);
        }

.fc-carousel-track {
            display: flex;
            gap: var(--gap);
            margin: 0;
            padding: 0;
            list-style: none;
        }

/* spacing lives inside the slide: the script scrolls exactly one
           viewport per page, so a real flex gap would drift out of step */
        .fc-carousel--4 {
            --per-view: 4;
            --gap: 0rem;
        }

.fc-carousel-item {
            flex: 0 0 calc(100% / var(--per-view));
            scroll-snap-align: start;
            display: flex;
            padding-inline: .55rem;
        }

.fc-carousel-item > * {
            flex: 1 1 auto;
        }

.fc-carousel-btn {
            position: absolute;
            top: 42%;
            transform: translateY(-50%);
            z-index: 3;
            width: 44px;
            height: 44px;
            display: none;
            place-items: center;
            background: #fff;
            color: var(--fc-ink);
            border: 1px solid var(--fc-line);
            border-radius: 50%;
            box-shadow: var(--fc-shadow);
            cursor: pointer;
            transition: background-color .18s ease, color .18s ease, opacity .18s ease;
        }

.fc-carousel[data-ready] .fc-carousel-btn {
            display: grid;
        }

.fc-carousel-btn svg {
            width: 18px;
            height: 18px;
        }

.fc-carousel-btn:hover:not(:disabled) {
            background: var(--fc-blue);
            color: #fff;
        }

.fc-carousel-btn:disabled {
            opacity: 0;
            pointer-events: none;
        }

.fc-carousel-prev {
            left: 4px;
        }

.fc-carousel-next {
            right: 4px;
        }

.fc-carousel-controls {
            display: flex;
            align-items: center;
            justify-content: center;
            margin-top: 1.2rem;
        }

.fc-carousel-dots {
            display: flex;
            align-items: center;
            justify-content: center;
            flex-wrap: wrap;
            gap: .45rem;
        }

.fc-carousel-dot {
            width: 9px;
            height: 9px;
            padding: 0;
            background: var(--fc-line);
            border: 0;
            border-radius: 50%;
            cursor: pointer;
            transition: background-color .18s ease, width .18s ease;
        }

.fc-carousel-dot[aria-current="true"] {
            background: var(--fc-blue);
            width: 26px;
            border-radius: 5px;
        }

@media (max-width: 1100px) {
    .fc-carousel--4 {
                --per-view: 3;
            }
}

@media (max-width: 900px) {
    .fc-carousel--4 {
                --per-view: 2;
            }
}

@media (max-width: 620px) {
    .fc-carousel--4 {
                --per-view: 1;
            }
}

@media (prefers-reduced-motion: reduce) {
    .fc-carousel-viewport {
                scroll-behavior: auto;
            }
    .app-tile, .fc-carousel-btn {
                transition: none;
            }
}

.review-how .link-arrow {
            margin-top: 1.1rem;
        }

.on-dark .eyebrow {
            color: #7cb6e0;
        }
