﻿/* ═══════════════════════════════════════════════════════════════════════════
   kiosk-1080.css — Coaster Kiosk · 1920 × 1080 touchscreen design system
   ───────────────────────────────────────────────────────────────────────────
   • Loaded LAST by _Layout.cshtml and _LoginLayout.cshtml.
   • Applies from 1440px wide, so it covers the kiosk at 100% Windows scaling
     (browser sees 1920 × 1080) AND at 125% (browser sees 1536 × 864).
     Every size is a clamp() between those two widths, so one set of rules
     fits both.
   • Selectors start with "html body": each view has its own <style> block in
     the page body (loaded after this file), so the extra specificity is what
     lets these shared rules win without editing the views.
   • Business logic untouched — this file only changes layout and sizing.
   ═══════════════════════════════════════════════════════════════════════════ */

@media (min-width: 1440px) {

    /* ═════════════════════════ 1. DESIGN TOKENS ═════════════════════════ */
    :root {
        /* spacing scale (1536 → 1920) */
        --k-pad: clamp(32px, 2.5vw, 48px); /* page side margin            */
        --k-gap: clamp(16px, 1.05vw, 20px); /* grid gap                     */
        --k-section: clamp(20px, 1.6vw, 32px); /* vertical section padding     */
        /* touch targets */
        --k-touch: 48px; /* minimum                      */
        --k-touch-md: clamp(48px, 2.9vw, 56px); /* buttons, inputs              */
        --k-touch-lg: clamp(56px, 3.3vw, 64px); /* primary actions              */
        /* fixed chrome */
        --k-bar: clamp(36px, 2.1vw, 40px); /* dark top bar                 */
        --k-row: clamp(76px, 4.6vw, 88px); /* logo / nav / search row      */
        --k-header: calc(var(--k-bar) + var(--k-row));
        /* type scale */
        --fs-xs: clamp(12px, .73vw, 14px);
        --fs-sm: clamp(14px, .83vw, 16px);
        --fs-md: clamp(16px, .94vw, 18px); /* body                         */
        --fs-lg: clamp(18px, 1.05vw, 20px);
        --fs-xl: clamp(22px, 1.35vw, 26px);
        --fs-price: clamp(24px, 1.45vw, 28px);
        --fs-h3: clamp(26px, 1.6vw, 30px);
        --fs-h2: clamp(30px, 1.9vw, 36px);
        --fs-h1: clamp(40px, 2.6vw, 50px);
        --fs-display: clamp(46px, 3.1vw, 60px);
        /* shape */
        --k-radius: 10px;
        --k-shadow: 0 1px 3px rgba(6,31,60,.06);
        --k-shadow-lg: 0 18px 50px rgba(6,31,60,.22);
    }

    html {
        max-width: 100%;
        overflow-x: hidden; /* nothing scrolls sideways on the kiosk */
    }

        /* "clip", not "hidden": hidden on <body> would make it a scroll box and break the sticky header/toolbar */
        html body {
            font-size: var(--fs-md);
            line-height: 1.45;
            max-width: 100%;
            overflow-x: clip;
        }

            /* _Layout wraps <main> in "container-fluid px-4": remove that 24px so each page's own margin is the only side gap */
            html body .container-fluid.px-4:has(> main#main) {
                padding-left: 0 !important;
                padding-right: 0 !important;
            }

            html body main#main {
                padding-bottom: 0 !important;
            }

            html body img {
                max-width: 100%;
            }

            /* ═════════════════════════ 2. HEADER + NAV ══════════════════════════ */

            html body header[role="banner"] {
                box-shadow: 0 1px 0 var(--cc-line);
            }

            html body .cc-announcement {
                min-height: var(--k-bar);
                padding: 0 var(--k-pad);
            }

            html body .cc-legal-links {
                font-size: var(--fs-xs);
                left: var(--k-pad);
            }

                html body .cc-legal-links a {
                    align-items: center;
                    display: inline-flex;
                    min-height: var(--k-bar);
                }

            html body .cc-terms-banner {
                font-size: var(--fs-sm);
                padding: 0 clamp(280px, 19vw, 360px);
            }

            html body .cc-terms-link {
                font-size: var(--fs-sm);
                min-height: var(--k-bar);
            }

            html body .cc-announcement-tools {
                right: var(--k-pad);
            }

            html body .cc-announcement-link {
                font-size: var(--fs-xs);
                min-height: 32px;
            }

            html body .topbar,
            html body .topbar .container-fluid {
                min-height: var(--k-row);
            }

                /* one row that always fits the screen: nothing in it may push past the right edge */
                html body .topbar .container-fluid {
                    display: flex;
                    flex-wrap: nowrap;
                    gap: clamp(10px, .85vw, 20px) !important;
                    max-width: 100vw;
                    padding: 0 var(--k-pad); /* no overflow:hidden here — it would cut off the search suggestions and nav dropdowns */
                }

                    /* brand + store name keep their size; nav and search give up space first */
                    html body .topbar .container-fluid > * {
                        min-width: 0;
                    }

            html body .brand-logo {
                height: clamp(42px, 2.6vw, 50px);
            }

            html body .catbar-inline {
                flex: 0 1 auto;
                margin-left: 0;
            }

                /* 1536 → 15px text / 7px sides, 1920 → 18px / 14px */
                html body .catbar-inline .catbar-link {
                    font-size: clamp(15px, .94vw, 18px) !important;
                    min-height: var(--k-row);
                    padding: 0 clamp(7px, .73vw, 14px) !important;
                }

            /* search takes what's left (never forces the row wider) */
            html body .search-form {
                flex: 1 1 0;
                max-width: 520px;
                min-width: 150px;
            }

                html body .search-form .form-control,
                html body .topbar .form-control {
                    font-size: var(--fs-md);
                    min-height: var(--k-touch-md);
                    width: 100%;
                }

                html body .search-form .btn,
                html body .topbar .btn-danger {
                    font-size: var(--fs-lg);
                    min-height: var(--k-touch-md);
                    min-width: var(--k-touch-md);
                }

            html body .search-suggestions {
                max-height: calc(100vh - var(--k-header) - 24px);
            }

            html body .search-suggestion-item {
                min-height: 60px;
            }

            html body .search-suggestion-name {
                font-size: var(--fs-md);
            }

            html body .search-suggestion-no {
                font-size: var(--fs-xs);
            }

            html body .btn-cart-summary,
            html body .cart-btn {
                flex-shrink: 0;
                font-size: var(--fs-sm);
                gap: 8px;
                min-height: var(--k-touch-md);
                padding: 0 clamp(12px, .9vw, 20px);
                white-space: nowrap;
            }

            /* category dropdown: fits under the header, scrolls inside itself */
            html body .catbar-inline .dropdown-menu {
                max-height: calc(100vh - var(--k-header) - 24px);
                overflow-y: auto;
            }

            html body .thumb-item {
                font-size: var(--fs-md) !important;
                min-height: var(--k-touch-md);
            }

            /* ═════════════════════════ 3. SHARED BUTTONS ═════════════════════════ */

            html body .btn {
                min-height: var(--k-touch);
            }

            html body .btn-kiosk-primary,
            html body .btn-kiosk-outline-light {
                font-size: var(--fs-md);
                min-height: var(--k-touch-lg);
                padding: 0 clamp(24px, 1.7vw, 32px);
            }

            html body .btn-kiosk-link {
                align-items: center;
                display: inline-flex;
                font-size: var(--fs-sm);
                min-height: var(--k-touch);
            }

            /* ═════════════════════════════ 4. HOME ═══════════════════════════════
       Hero + all room tiles on the first screen; promo rows below.       */

            html body .home {
                --h-pad: var(--k-pad);
            }

            /* photo column = the photo's own width at the hero height (real proportions, no gap, no crop);
       the text takes whatever is left */
            html body .hero {
                grid-template-columns: minmax(420px, 1fr) auto;
                height: clamp(300px, 20vw, 380px);
                min-height: 0;
            }

            html body .hero-copy {
                align-self: center;
                padding: 0 var(--k-pad);
            }

            html body .hero-eyebrow {
                font-size: var(--fs-xs);
                margin-bottom: 10px;
            }

            html body .hero h1 {
                font-size: var(--fs-display);
                line-height: 1.02;
                margin-bottom: 14px;
            }

            html body .hero-intro {
                font-size: var(--fs-lg);
                margin-bottom: 22px;
                max-width: 560px;
            }

            html body .hero-image-wrap {
                height: 100%;
                justify-self: end;
                max-width: 66vw;
                min-height: 0;
            }

            /* whole photo at its real proportions: full hero height, width follows the photo */
            html body .hero-image {
                height: 100%;
                max-width: 100%;
                object-fit: contain;
                object-position: right center;
                width: auto;
            }

            html body .home-section {
                padding: var(--k-section) var(--k-pad);
            }

            html body .section-heading {
                margin-bottom: clamp(12px, .9vw, 18px);
            }

                html body .section-heading h2 {
                    font-size: var(--fs-h2);
                }

                html body .section-heading p {
                    font-size: var(--fs-md);
                }

            /* every tile on one row, all the same size */
            html body .room-grid {
                gap: var(--k-gap);
                grid-auto-columns: minmax(0, 1fr);
                grid-auto-flow: column;
                grid-template-columns: none;
            }

            html body .room-card {
                height: 100%;
            }

            html body .room-card-media {
                aspect-ratio: 1 / 1;
            }

            html body .room-card-label {
                font-size: var(--fs-lg);
                line-height: 1.2;
                min-height: clamp(54px, 3.4vw, 64px);
                padding: 8px 10px;
            }

            html body .room-card-badge {
                font-size: var(--fs-xs);
                padding: 6px 10px;
                right: 10px;
                top: 10px;
            }

            html body .na-banner {
                min-height: clamp(200px, 13vw, 240px);
            }

            html body .na-copy {
                padding: var(--k-section) var(--k-pad);
            }

                html body .na-copy h2 {
                    font-size: var(--fs-h1);
                }

                html body .na-copy p {
                    font-size: var(--fs-lg);
                }

            html body .merch-row {
                gap: var(--k-gap);
                grid-template-columns: clamp(220px, 14vw, 260px) minmax(0, 1fr);
                padding: var(--k-gap);
            }

            html body .merch-intro h2 {
                font-size: var(--fs-h3);
            }

            html body .merch-intro p {
                font-size: var(--fs-md);
            }

            html body .merch-link {
                font-size: var(--fs-md);
                min-height: var(--k-touch);
            }

            html body .merch-photos {
                gap: var(--k-gap);
            }

            /* ══════════════════════ 5. CATALOG + SEARCH ═════════════════════════
       Short header band, sticky toolbar, uniform 5-up grid.              */

            html body .catalog-page-header {
                padding: clamp(18px, 1.3vw, 26px) var(--k-pad);
            }

                html body .catalog-page-header.has-hero {
                    height: clamp(170px, 11vw, 210px);
                    min-height: 0;
                    padding: 0 var(--k-pad);
                }

                    html body .catalog-page-header.has-hero > * {
                        max-width: 46%;
                    }

                    html body .catalog-page-header.has-hero > .catalog-hero-photo {
                        height: 100%;
                        max-width: 58%;
                    }

                    html body .catalog-page-header h1,
                    html body .catalog-page-header.has-hero h1 {
                        font-size: var(--fs-h1);
                        line-height: 1.05;
                        margin-bottom: 6px;
                        overflow: hidden;
                        text-overflow: ellipsis;
                        white-space: nowrap;
                    }

                    html body .catalog-page-header p,
                    html body .catalog-page-header.has-hero p {
                        -webkit-box-orient: vertical;
                        -webkit-line-clamp: 2;
                        display: -webkit-box;
                        font-size: var(--fs-md);
                        line-height: 1.4;
                        overflow: hidden;
                    }

                /* breadcrumb is a flex row, not a clamped paragraph */
                html body .catalog-page-header .catalog-breadcrumb {
                    -webkit-line-clamp: unset;
                    display: flex;
                }

            html body .catalog-breadcrumb {
                font-size: var(--fs-sm);
                margin-bottom: 2px;
            }

                html body .catalog-breadcrumb a {
                    align-items: center;
                    display: inline-flex;
                    min-height: 36px;
                }

            html body .catalog-eyebrow {
                font-size: var(--fs-xs);
                margin-bottom: 4px;
            }

            html body .catalog-page {
                --sidebar-w: clamp(272px, 16.5vw, 316px);
                min-height: 0;
            }

                html body .catalog-page.sidebar-collapsed {
                    --sidebar-w: 0px;
                }

            html body .catalog-sidebar {
                max-height: calc(100vh - var(--k-header));
                padding: var(--k-gap) clamp(18px, 1.3vw, 24px);
                top: var(--k-header) !important;
            }

            html body .catalog-sidebar-title {
                font-size: var(--fs-lg);
            }

            html body .sidebar-head {
                margin-bottom: 8px;
            }

            html body .sidebar-reset,
            html body .sidebar-collapse {
                font-size: var(--fs-sm);
                min-height: var(--k-touch);
            }

            html body .sidebar-collapse {
                width: var(--k-touch);
            }

            html body .sidebar-reopen {
                font-size: var(--fs-sm);
                min-height: var(--k-touch);
                padding: 0 16px;
            }

            html body .sidebar-divider {
                margin: 12px 0;
            }

            html body .filter-group {
                margin-bottom: 12px;
            }

            /* filter section titles (Category, Price, Color Family…): readable from standing distance */
            html body .filter-group-toggle,
            html body .filter-group-title {
                color: var(--cc-navy);
                font-size: var(--fs-md);
                font-weight: 900;
                letter-spacing: .06em;
                margin-bottom: 4px;
                min-height: var(--k-touch);
            }

                html body .filter-group-toggle .bi {
                    font-size: var(--fs-lg);
                }

            html body .filter-option {
                font-size: var(--fs-md);
                font-weight: 700;
                min-height: var(--k-touch);
                padding: 6px 10px;
            }

                html body .filter-option > span:first-child {
                    min-width: 0;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                }

            html body .filter-option-count {
                font-size: var(--fs-sm);
            }

            html body .price-range-display span {
                font-size: var(--fs-sm);
                padding: 6px 10px;
            }

            html body .price-range-wrap input[type="range"]::-webkit-slider-thumb {
                height: 40px;
                width: 40px;
            }

            html body .price-range-wrap input[type="range"]::-moz-range-thumb {
                height: 40px;
                width: 40px;
            }

            html body .catalog-toolbar {
                gap: var(--k-gap);
                min-height: clamp(60px, 3.75vw, 72px);
                padding: 0 var(--k-pad) 0 var(--k-gap);
                top: var(--k-header) !important;
            }

            html body .catalog-count {
                font-size: var(--fs-md);
                white-space: nowrap;
            }

            html body .toolbar-sort label,
            html body .toolbar-stock .avail-toggle-text {
                font-size: var(--fs-xs);
            }

            html body .toolbar-sort select {
                font-size: var(--fs-md);
                max-width: 280px;
                min-height: var(--k-touch);
                padding: 0 12px;
            }

            html body .avail-toggle {
                min-height: var(--k-touch);
            }

            html body .avail-toggle-track {
                height: 28px;
                width: 52px;
            }

                html body .avail-toggle-track::after {
                    height: 24px;
                    width: 24px;
                }

            html body .avail-toggle input:checked + .avail-toggle-track::after {
                transform: translateX(24px);
            }

            html body .view-btn {
                font-size: var(--fs-lg);
                height: var(--k-touch);
                width: var(--k-touch);
            }

            html body .active-filters {
                min-height: 0;
                padding: 10px var(--k-pad) 10px var(--k-gap);
            }

            html body .filter-tag {
                font-size: var(--fs-sm);
                min-height: 40px;
                padding: 4px 14px;
            }

            html body .filter-tag-remove {
                font-size: 20px;
                min-height: 40px;
                min-width: 32px;
            }

            html body .filter-clear-all {
                font-size: var(--fs-sm);
                min-height: 40px;
            }

            /* uniform card grid: every row lines up, every card the same height */
            html body .catalog-grid {
                align-items: stretch;
                gap: var(--k-gap);
                grid-template-columns: repeat(5, minmax(0, 1fr));
                padding: var(--k-gap) var(--k-pad) var(--k-section) var(--k-gap);
            }

                html body .catalog-grid.is-list {
                    grid-template-columns: 1fr;
                }

            html body .results-divider {
                font-size: var(--fs-xs);
            }

            html body .catalog-empty,
            html body .catalog-pick-category {
                min-height: 260px;
            }

                html body .catalog-empty span,
                html body .catalog-pick-category p {
                    font-size: var(--fs-md);
                }

                html body .catalog-empty strong,
                html body .catalog-pick-category h3 {
                    font-size: var(--fs-h3);
                }

            /* ════════════════════ 6. PRODUCT CARD (every page) ═══════════════════
       Same image box, aligned rows, buttons pinned to the bottom.        */

            html body .prod-card,
            html body .skeleton-card {
                border-radius: var(--k-radius);
            }

            html body .prod-card {
                box-shadow: var(--k-shadow);
                display: flex;
                flex-direction: column;
                height: 100%;
                min-width: 0;
            }

            html body .prod-card-img-wrap {
                padding: 10px 10px 0;
            }

            /* square photo box; whole piece visible (contain), blurred fill behind — never cropped */
            html body .prod-card-imgwrap {
                aspect-ratio: 1 / 1;
            }

                html body .prod-card-imgwrap img {
                    object-fit: contain;
                    padding: 10px;
                }

            html body .prod-card-body {
                flex: 1 1 auto;
                gap: 4px;
                min-width: 0;
                padding: 14px 16px 16px;
            }

            html body .prod-card-sku {
                font-size: var(--fs-xs);
                line-height: 1.3;
            }

            html body .prod-card-collection {
                font-size: var(--fs-xs);
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }

            /* long names: max 2 lines, always 2 lines tall so the rows line up */
            html body .prod-card-title {
                -webkit-box-orient: vertical;
                -webkit-line-clamp: 2;
                display: -webkit-box;
                font-size: var(--fs-md);
                font-weight: 600;
                line-height: 1.3;
                margin: 2px 0 4px;
                min-height: calc(2 * 1.3em);
                overflow: hidden;
                word-break: break-word;
            }

            html body .prod-card-variants {
                margin-top: 4px;
            }

            html body .prod-card-variant-label {
                font-size: var(--fs-xs);
                margin-bottom: 6px;
            }

            html body .prod-card-swatches {
                gap: 8px;
            }

            html body .swatch-color {
                height: 40px;
                width: 40px;
            }

            html body .swatch-pill {
                align-items: center;
                display: inline-flex;
                font-size: var(--fs-sm);
                max-width: 100%;
                min-height: 40px;
                overflow: hidden;
                padding: 0 12px;
                text-overflow: ellipsis;
            }

            html body .prod-card-price {
                margin-top: auto; /* price + stock + buttons sit at the bottom of every card */
                padding-top: 10px;
            }

            html body .prod-card-price-val,
            html body .prod-card-lease-val {
                font-size: var(--fs-price);
            }

            html body .prod-card-price-promo {
                font-size: calc(var(--fs-price) + 2px);
            }

            html body .prod-card-price-original {
                font-size: var(--fs-sm);
            }

            html body .prod-card-you-save,
            html body .prod-card-rental,
            html body .prod-card-buy {
                font-size: var(--fs-sm);
            }

            html body .prod-card-promo-ends,
            html body .prod-card-lease-label {
                font-size: var(--fs-xs);
            }

            html body .prod-card-lease-val small {
                font-size: var(--fs-sm);
            }

            html body .prod-card-stock,
            html body .prod-card-eta {
                font-size: var(--fs-sm);
            }

            html body .prod-card-deal-badge,
            html body .prod-card-sale-badge,
            html body .prod-card-new-badge {
                font-size: var(--fs-xs);
                padding: 6px 9px;
            }

            html body .prod-card-promo-badge strong {
                font-size: var(--fs-lg);
            }

            html body .prod-card-actions {
                display: grid;
                gap: 8px;
                grid-template-columns: 1fr 1fr;
                margin-top: 12px;
            }

            html body .prod-card-btn {
                font-size: var(--fs-sm);
                min-height: var(--k-touch-md);
                min-width: 0;
                overflow: hidden;
                padding: 0 10px;
                text-overflow: ellipsis;
            }

            /* list view keeps its own row layout */
            html body .catalog-grid.is-list .prod-card {
                height: auto;
            }

            html body .catalog-grid.is-list .prod-card-actions {
                display: flex;
            }

            /* ══════════════════════════ 7. PRODUCT PAGE ═════════════════════════
       Photo left, buying panel right; first screen = photo + price +
       options + stock + Add to Cart. Details/specs/inventory below.      */

            html body .pdp-breadcrumb {
                font-size: var(--fs-sm);
                min-height: 48px;
                padding: 0 var(--k-pad);
            }

                html body .pdp-breadcrumb a {
                    font-size: var(--fs-sm);
                }

                html body .pdp-breadcrumb > span[aria-current] {
                    max-width: 50vw;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    white-space: nowrap;
                }

            html body .product-detail {
                gap: clamp(32px, 2.6vw, 56px);
                grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr);
                max-width: none;
                padding: 0 var(--k-pad) var(--k-section);
            }

            html body .pdp-gallery {
                top: calc(var(--k-header) + 12px);
            }

            /* photo fills the screen height left under header, breadcrumb and thumbnails */
            html body .pdp-gallery-primary {
                height: clamp(380px, calc(100vh - var(--k-header) - 48px - 150px), 680px);
                min-height: 0;
            }

                html body .pdp-gallery-primary img,
                html body .pdp-gallery-video {
                    max-height: 100%;
                    object-fit: contain;
                }

            html body .pdp-thumb-carousel-wrap {
                padding: 0 60px;
            }

            html body .pdp-gallery-thumb {
                flex: 0 0 clamp(96px, 6.25vw, 120px);
            }

            html body .pdp-tabs {
                margin-bottom: 16px;
            }

            html body .pdp-tab-btn {
                min-height: var(--k-touch-lg);
                padding-right: 24px;
            }

            html body .pdp-tab-title {
                font-size: var(--fs-md);
            }

            html body .pdp-tab-subtitle,
            html body .pdp-tab-badge {
                font-size: var(--fs-xs);
            }

            html body .pdp-tab-icon {
                font-size: 24px;
            }

            html body .pdp-eyebrow {
                font-size: var(--fs-xs);
                margin-bottom: 8px;
            }

            html body .pdp-name {
                -webkit-box-orient: vertical;
                -webkit-line-clamp: 3;
                display: -webkit-box;
                font-size: var(--fs-h1);
                line-height: 1.1;
                margin-bottom: 6px;
                overflow: hidden;
            }

            html body .pdp-sku {
                font-size: var(--fs-sm);
            }

            html body .pdp-price-block {
                margin-top: 16px;
            }

            html body .pdp-price {
                font-size: calc(var(--fs-h1) - 4px);
            }

            html body .pdp-price-promo {
                font-size: var(--fs-h1);
            }

            html body .pdp-price-original {
                font-size: var(--fs-lg);
            }

            html body .pdp-you-save,
            html body .pdp-buy-note {
                font-size: var(--fs-md);
            }

            html body .pdp-promo-ends,
            html body .pdp-retail-note,
            html body .pdp-lease-label {
                font-size: var(--fs-xs);
            }

            html body .pdp-lease-price small {
                font-size: var(--fs-lg);
            }

            html body .pdp-rental-note {
                font-size: var(--fs-sm);
                margin-bottom: 14px;
            }

            html body .pdp-deal-badge,
            html body .pdp-new-badge {
                font-size: var(--fs-xs);
                padding: 7px 10px;
            }

            html body .pdp-promo-badge strong {
                font-size: var(--fs-xl);
            }

            html body .pdp-options {
                margin: 14px 0;
            }

            html body .pdp-option-group {
                margin-bottom: 14px;
            }

            html body .pdp-option-label {
                font-size: var(--fs-xs);
                margin-bottom: 8px;
            }

            html body .pdp-option-swatches {
                gap: 10px;
            }

            html body .pdp-swatch-color {
                height: 48px;
                width: 48px;
            }

            html body .pdp-swatch-pill {
                font-size: var(--fs-sm);
                min-height: var(--k-touch);
                padding: 0 16px;
            }

            html body .pdp-avail-panel {
                padding: 14px 0;
            }

                html body .pdp-avail-panel strong {
                    font-size: var(--fs-md);
                }

                html body .pdp-avail-panel p {
                    font-size: var(--fs-sm);
                }

                html body .pdp-avail-panel .pdp-eta {
                    font-size: var(--fs-md);
                }

            html body .pdp-cart-row {
                display: grid;
                gap: 10px;
                grid-template-columns: clamp(88px, 5.7vw, 110px) 1fr;
                margin-top: 16px;
            }

            html body .pdp-qty {
                font-size: var(--fs-lg);
                min-height: var(--k-touch-lg);
                width: 100%;
            }

            html body .pdp-add-btn {
                font-size: var(--fs-lg);
                min-height: var(--k-touch-lg);
                padding: 0 24px;
            }

            html body .pdp-handoff {
                margin: 16px 0;
                padding: 14px 16px;
            }

                html body .pdp-handoff p,
                html body .pdp-microcopy,
                html body .pdp-desc-text,
                html body .pdp-features-list li,
                html body .pdp-specs td,
                html body .pdp-sets-list li {
                    font-size: var(--fs-md);
                }

                html body .pdp-handoff strong,
                html body .pdp-section-title {
                    font-size: var(--fs-xs);
                }

            html body .pdp-measure-cell-val {
                font-size: var(--fs-md);
            }

            html body .pdp-measure-cell-label {
                font-size: 11px;
            }

            html body .pdp-inv-table {
                font-size: var(--fs-sm);
            }

                html body .pdp-inv-table th {
                    font-size: var(--fs-xs);
                }

            html body .pdp-below {
                max-width: none;
                padding: 0 var(--k-pad);
            }

            html body .pdp-related {
                padding: var(--k-section) 0;
            }

            html body .pdp-related-eyebrow {
                font-size: var(--fs-xs);
            }

            html body .pdp-related-title {
                font-size: var(--fs-h2);
            }

            html body .pdp-showroom-help {
                margin: 0 calc(var(--k-pad) * -1);
                padding: var(--k-section) calc(var(--k-pad) * 2);
            }

                html body .pdp-showroom-help h2 {
                    font-size: var(--fs-h1);
                }

                html body .pdp-showroom-help p {
                    font-size: var(--fs-md);
                }

            /* related / suggested carousels: 5 uniform cards */
            html body .pdp-carousel {
                align-items: stretch;
                gap: var(--k-gap);
            }

                html body .pdp-carousel .prod-card,
                html body .pdp-carousel .skeleton-card {
                    flex: 0 0 calc((100% - 4 * var(--k-gap)) / 5);
                    height: auto;
                    min-width: 0;
                }

            html body .pdp-carousel-wrap {
                padding: 0 60px;
            }

            html body .pdp-carousel-btn {
                font-size: 24px;
                height: 56px;
                width: 56px;
            }

                html body .pdp-carousel-btn.prev {
                    left: 0;
                }

                html body .pdp-carousel-btn.next {
                    right: 0;
                }

            /* ═════════════════════════════ 8. CHECKOUT ══════════════════════════ */

            html body .q-page {
                max-width: none;
                padding: 0 var(--k-pad) var(--k-section);
            }

            html body .q-stepper {
                padding: 12px 0 4px;
            }

            html body .q-step-label {
                font-size: var(--fs-sm);
            }

            html body .q-grid {
                gap: var(--k-gap);
                grid-template-columns: minmax(0, 1fr) clamp(380px, 23vw, 440px);
            }

            html body .q-title {
                font-size: var(--fs-h1);
            }

            html body .q-sub {
                font-size: var(--fs-md);
                margin-bottom: 10px;
            }

            /* item list scrolls inside the screen; the quote panel stays put */
            html body .q-list {
                max-height: calc(100vh - var(--k-header) - 210px);
            }

            html body .q-item {
                gap: var(--k-gap);
                grid-template-columns: clamp(140px, 9vw, 180px) minmax(0, 1fr) auto;
                padding: 14px 16px;
            }

            html body .q-item-name {
                -webkit-box-orient: vertical;
                -webkit-line-clamp: 2;
                display: -webkit-box;
                font-size: var(--fs-lg);
                overflow: hidden;
            }

            html body .q-item-meta,
            html body .q-label {
                font-size: var(--fs-sm);
            }

            html body .q-item-price .amt {
                font-size: var(--fs-price);
            }

            html body .q-item-price .cap,
            html body .q-buy,
            html body .q-lease {
                font-size: var(--fs-sm);
            }

            html body .q-qty {
                height: var(--k-touch-md);
            }

                html body .q-qty button {
                    width: var(--k-touch-md);
                }

            html body .q-remove {
                font-size: var(--fs-sm);
                min-height: var(--k-touch);
            }

            html body .q-side {
                max-height: calc(100vh - var(--k-header) - 24px);
                overflow-y: auto;
                padding: 18px 20px;
                top: calc(var(--k-header) + 12px);
            }

                html body .q-side h2 {
                    font-size: var(--fs-xl);
                }

            html body .q-totals div {
                font-size: var(--fs-md);
            }

            html body .q-totals .q-total dd,
            html body .q-totals .q-lease-main dd {
                font-size: var(--fs-price);
            }

            html body .q-btn {
                font-size: var(--fs-md);
                min-height: var(--k-touch-md);
            }

            html body .q-form-wrap {
                max-height: calc(100vh - var(--k-header) - 170px);
            }

            html body .q-input,
            html body .q-select,
            html body .q-seg span {
                font-size: var(--fs-md);
                min-height: var(--k-touch-md);
            }

            html body .q-field label,
            html body .q-field legend {
                font-size: var(--fs-sm);
            }

            html body .q-staff-btn {
                min-height: var(--k-touch);
            }

            /* ═══════════════════════ 9. MODALS + OVERLAYS ═══════════════════════
       Every Bootstrap modal: centered, never taller than the screen,
       body scrolls inside, header and buttons always visible.            */

            html body .modal-dialog {
                align-items: center;
                display: flex;
                margin: 24px auto;
                min-height: calc(100% - 48px);
            }

                html body .modal-dialog.modal-lg {
                    max-width: min(960px, calc(100vw - 2 * var(--k-pad)));
                }

                html body .modal-dialog.modal-xl {
                    max-width: min(1400px, calc(100vw - 2 * var(--k-pad)));
                }

            html body .modal-content {
                border-radius: var(--k-radius);
                box-shadow: var(--k-shadow-lg);
                display: flex;
                flex-direction: column;
                max-height: calc(100vh - 48px);
                overflow: hidden;
                width: 100%;
            }

            html body .modal-header,
            html body .modal-footer {
                flex-shrink: 0;
            }

            html body .modal-body {
                flex: 1 1 auto;
                min-height: 0;
                overflow-y: auto;
                overscroll-behavior: contain;
            }

            html body .modal-footer .btn {
                min-height: var(--k-touch);
            }

            html body .modal-header .btn-close {
                min-height: var(--k-touch);
                min-width: var(--k-touch);
            }

            /* custom overlays (staff PIN, dialogs): contained on screen */
            html body .q-pin {
                max-width: calc(100vw - 2 * var(--k-pad));
            }

                html body .q-pin .q-input {
                    min-height: var(--k-touch-lg);
                }

            html body dialog {
                max-height: calc(100vh - 48px);
                overflow: auto;
            }

            /* ═══════════════════════ 10. LEGAL PAGES ════════════════════════════ */

            html body .pol-wrap {
                padding: var(--k-section) var(--k-pad) 48px;
            }

            html body .pol-title {
                font-size: var(--fs-h1);
            }

            html body .pol-switch a {
                align-items: center;
                display: inline-flex;
                min-height: var(--k-touch);
            }

            html body .pol-body {
                font-size: var(--fs-md);
            }
}

/* ═══════════════════ 11. TOUCH: no hover-only effects ═══════════════════
   On the touchscreen there is no mouse: cards don't lift on hover, a tap
   gives a press instead. Nothing important is hover-only.                */
@media (min-width: 1440px) and (hover: none) {
    html body .prod-card:hover,
    html body .room-card:hover,
    html body .merch-row:hover {
        box-shadow: var(--k-shadow);
        transform: none;
    }

        html body .prod-card:hover .prod-card-imgwrap img,
        html body .room-card:hover .room-card-media img,
        html body .merch-row:hover .merch-photo img {
            transform: none;
        }

    html body .prod-card:active,
    html body .room-card:active,
    html body .merch-row:active {
        transform: scale(.985);
    }

    html body .prod-card-btn:active,
    html body .pdp-add-btn:active,
    html body .btn-kiosk-primary:active,
    html body .q-btn:active,
    html body .login-btn:active {
        filter: brightness(.88);
    }

    html body * {
        -webkit-tap-highlight-color: transparent;
    }
}

/* ═════════════════════════ 12. LOGIN + LOCATION ═════════════════════════
   Same brand as the kiosk (navy / red, Source Sans 3); card sized to the
   screen and never taller than it.                                       */
@media (min-width: 1440px) {
    html body {
        --lg-navy: #061F3C;
        --lg-navy-hover: #2D3C59;
        --lg-red: #D2232A;
        --lg-ink: #061F3C;
        --lg-muted: #5b6676;
        --lg-display: "Source Sans 3", "Segoe UI", Arial, sans-serif;
    }

        html body:has(.login-wrap) {
            font-family: "Source Sans 3", "Segoe UI", Arial, sans-serif;
            padding: 24px;
        }

        html body .login-wrap {
            max-height: calc(100vh - 48px);
            max-width: clamp(1180px, 72vw, 1380px);
            min-height: min(720px, calc(100vh - 48px));
        }

        html body .login-left {
            padding: clamp(44px, 3vw, 60px) clamp(44px, 3vw, 60px) 0;
        }

        html body .login-panel-photo {
            margin: 0 calc(clamp(44px, 3vw, 60px) * -1);
        }

        html body .login-logo-wordmark {
            font-size: clamp(36px, 2.3vw, 44px);
        }

        html body .login-logo-sub {
            font-size: var(--fs-sm);
        }

        html body .login-panel-eyebrow {
            font-size: var(--fs-sm);
        }

        html body .login-panel-heading {
            font-size: var(--fs-display);
            font-weight: 800;
            letter-spacing: -.02em;
        }

        html body .login-panel-sub {
            font-size: var(--fs-lg);
        }

        html body .login-right {
            overflow-y: auto;
            padding: clamp(44px, 3.3vw, 64px) clamp(52px, 4.2vw, 80px);
        }

        html body .login-right-title {
            font-size: var(--fs-h1);
            font-weight: 800;
        }

        html body .login-sub {
            font-size: var(--fs-md);
        }

        html body .login-label {
            font-size: var(--fs-xs);
            margin-bottom: 8px;
        }

        html body .login-input {
            font-size: var(--fs-lg);
            margin-bottom: 20px;
            min-height: var(--k-touch-lg);
            padding: 0 18px;
        }

        html body .login-password-wrap {
            margin-bottom: 20px;
        }

            html body .login-password-wrap .login-input {
                padding-right: 60px;
            }

        html body .login-eye-btn {
            font-size: 22px;
            height: var(--k-touch);
            justify-content: center;
            right: 8px;
            width: var(--k-touch);
        }

        html body .login-row {
            gap: 16px;
            margin-bottom: 24px;
        }

        html body .login-remember,
        html body .login-help-link {
            align-items: center;
            display: inline-flex;
            font-size: var(--fs-md);
            min-height: var(--k-touch);
        }

            html body .login-remember input[type="checkbox"] {
                height: 24px;
                width: 24px;
            }

        html body .login-btn {
            font-size: var(--fs-md);
            min-height: var(--k-touch-lg);
        }

        html body .login-error {
            font-size: var(--fs-md);
            padding: 14px 18px;
        }

        html body .login-tagline {
            font-size: var(--fs-xs);
            margin-top: 24px;
        }
}


/* ═════════════════ FILTER TITLES · every screen size ════════════════════
   The page styles use 10px caps; between 992px and 1439px they become 15px here
   (1440px+ → kiosk block above, 16–18px; under 992px → mobile.css).             */
@media (min-width: 992px) and (max-width: 1439.98px) {
    html body .filter-group-toggle,
    html body .filter-group-title {
        color: var(--cc-navy);
        font-size: 15px;
        font-weight: 900;
        letter-spacing: .06em;
    }

        html body .filter-group-toggle .bi {
            font-size: 17px;
        }

    html body .filter-option {
        font-weight: 700;
    }
}


/* ═══════════════ HEADER BETWEEN 992px AND 1439px (e.g. kiosk at 150%) ═══════════════
   8 nav items + logo + search + cart don't fit one row here, and the overflow made the
   whole page wider than the screen. Two rows instead:
     row 1 → logo · store · search · cart      row 2 → nav, full width               */
@media (min-width: 992px) and (max-width: 1439.98px) {
    html {
        overflow-x: hidden;
    }

        html body {
            max-width: 100%;
            overflow-x: clip;
        }

            html body .topbar,
            html body .topbar .container-fluid {
                min-height: 0;
            }

                html body .topbar .container-fluid {
                    column-gap: 16px !important;
                    flex-wrap: wrap;
                    padding: 10px 24px 0;
                    row-gap: 6px !important;
                }

            html body .search-form {
                flex: 1 1 0;
                margin-left: auto;
                max-width: 560px;
                min-width: 180px;
                order: 2;
            }

            html body .btn-cart-summary,
            html body .cart-btn {
                flex-shrink: 0;
                order: 3;
            }

            html body .catbar-inline {
                border-top: 1px solid var(--cc-line);
                flex: 0 0 100%;
                justify-content: center;
                margin-left: 0 !important;
                order: 4;
            }

                html body .catbar-inline .catbar-link {
                    font-size: 15px !important;
                    min-height: 52px;
                    padding: 0 12px !important;
                }

                html body .catbar-inline .dropdown-menu {
                    max-height: calc(100vh - 200px);
                    overflow-y: auto;
                }

            /* dark bar: legal links + terms + dealer links can't all sit on one line either */
            html body .cc-terms-banner {
                padding: 6px 260px;
            }

            /* ── Product page: the photo fits the screen height (two-row header ≈ 170px tall),
          so price, options and Add to Cart stay visible next to it ── */
            html body .product-detail {
                gap: 32px;
                grid-template-columns: minmax(0, 1.25fr) minmax(340px, 1fr);
                padding: 0 24px 32px;
            }

            html body .pdp-gallery {
                top: 12px;
            }

            html body .pdp-gallery-primary {
                height: clamp(280px, calc(100vh - 330px), 560px);
                min-height: 0;
            }

                html body .pdp-gallery-primary img,
                html body .pdp-gallery-video {
                    max-height: 100%;
                    object-fit: contain;
                }

            html body .pdp-gallery-thumb {
                flex: 0 0 88px;
            }

            html body .pdp-thumb-carousel-wrap {
                padding: 0 52px;
            }

            html body .pdp-carousel-btn {
                height: 48px;
                width: 48px;
                font-size: 22px;
            }

            html body .pdp-name {
                font-size: 30px;
            }
}
