/* ==========================================================================
   RAINES â€” Aureus brand layer for theme-4
   Bullion & numismatics: warm ink blacks, ivory creams, one antique-gold
   accent, serif display type, hairline borders, calm color-shift hovers.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Design tokens
   -------------------------------------------------------------------------- */
:root {
    /* raw scales */
    --ink-950: #14110d;
    --ink-900: #1b1712;
    --ink-800: #262019;
    --ink-700: #373026;
    --cream-50: #faf9f6;
    --cream-100: #f2efe9;
    --cream-200: #eae6de;
    --cream-300: #ddd8cd;
    --gold-300: #d3b57e;
    --gold-400: #c4a266;
    --gold-500: #b8934e;
    --gold-600: #a07d3e;
    --stone-400: #a09a8f;
    --stone-500: #7d766b;
    --stone-600: #5c564d;

    /* semantic */
    --surface-page: var(--cream-100);
    --surface-card: #ffffff;
    --surface-dark: var(--ink-950);
    --surface-dark-raised: var(--ink-900);
    --text-heading: var(--ink-900);
    --text-body: var(--stone-600);
    --text-muted: var(--stone-500);
    --text-on-dark: #f5f2ec;
    --text-on-dark-muted: #b3ac9f;
    --text-accent: var(--gold-500);
    --border-subtle: #e5e1d8;
    --border-strong: #cfc9bd;
    --border-on-dark: rgba(245, 242, 236, 0.14);

    /* type */
    --tracking-eyebrow: 0.18em;

    /* shape, elevation, motion */
    --radius-xs: 2px;
    --radius-sm: 3px;
    --radius-full: 999px;
    --shadow-card: 0 1px 2px rgba(20, 17, 13, 0.05);
    --shadow-pop: 0 12px 32px rgba(20, 17, 13, 0.16);
    --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
    --dur-fast: 150ms;
    --dur-med: 380ms;
    --dur-slow: 650ms;
    --scrim-hero: linear-gradient(90deg, rgba(20, 17, 13, 0.92) 0%, rgba(20, 17, 13, 0.55) 40%, rgba(20, 17, 13, 0.12) 75%);

    /* metals & movement */
    --metal-gold: var(--gold-500);
    --metal-silver: #a8a9ad;
    --metal-platinum: #8e9296;
    --price-up: #6d8f5b;
    --price-down: #a85e4a;

    /* --bs-* bridge: primary = ink (primary actions), gold rides its own slot.
       The -rgb companions drive Bootstrap 5.1 .text-*, .bg-* utilities. */
    --bs-gold: #b8934e;
    --bs-gold-rgb: 184, 147, 78;
    --bs-primary: var(--bs-gold);
    --bs-primary-rgb: var(--bs-gold-rgb);
    --bs-secondary: #7d766b;
    --bs-secondary-rgb: 125, 118, 107;
    --bs-dark: #14110d;
    --bs-dark-rgb: 20, 17, 13;
    --bs-extra-dark: #1b1712;
    --bs-extra-dark-rgb: 27, 23, 18;
    --bs-light: #f2efe9;
    --bs-light-rgb: 242, 239, 233;
    --bs-warning: #b8934e;
    --bs-warning-rgb: 184, 147, 78;
    --bs-success: #6d8f5b;
    --bs-success-rgb: 109, 143, 91;
    --bs-danger: #a85e4a;
    --bs-danger-rgb: 168, 94, 74;
    --bs-info: #7d766b;
    --bs-info-rgb: 125, 118, 107;
    --bs-body-color: #5c564d;
    --bs-body-rgb: 92, 86, 77;

    /* --ppm-* bridge: theme-4 runtime hooks consumed by compiled sass */
    --ppm-border-color: var(--border-subtle);
    --ppm-secondary-bg: var(--surface-dark-raised);
    --ppm-secondary-text: var(--text-on-dark-muted);
    --ppm-products-card-text: var(--text-heading);

    /* Filters */
    --black-to-primary: invert(0.49) sepia(2) saturate(1.6);
}


/* --------------------------------------------------------------------------
   2. Base & typography
   -------------------------------------------------------------------------- */
body {
    background-color: var(--surface-page);
    color: var(--text-body);
}

::selection {
    background: var(--gold-500);
    color: var(--ink-950);
}

a {
    color: var(--ink-900);
    transition: color var(--dur-fast) var(--ease-out);
}

a:hover {
    color: var(--gold-600);
}

h1, h2, h3, .h1, .h2, .h3,
.display-1, .display-2, .display-3, .display-4 {
    font-weight: 500;
    line-height: 1.15;
    color: var(--text-heading);
}

h4, h5, h6, .h4, .h5, .h6 {
    font-weight: 600;
    color: var(--text-heading);
}

.lead {
    font-size: 1rem;
    color: var(--text-muted);
}

hr {
    border-color: var(--border-subtle);
    opacity: 1;
}

.text-muted {
    color: var(--text-muted) !important;
}


/* --------------------------------------------------------------------------
   3. Display
   New responsive display utilities
   -------------------------------------------------------------------------- */

@media screen and (width >= 400px) {
    .d-xs-none { display: none !important; }
    .d-xs-inline { display: inline !important; }
    .d-xs-block { display: block !important; }
    .d-xs-inline-block { display: inline-block !important; }
    .d-xs-flex { display: flex !important; }
    .d-xs-inline-flex { display: inline-flex !important; }
    .d-xs-grid { display: grid !important; }
    .d-xs-inline-grid { display: inline-grid !important; }
}

/* --------------------------------------------------------------------------
   4. Buttons
   Near-sharp corners, color-shift hovers only â€” no lifts, no glows.
   -------------------------------------------------------------------------- */
.btn {
    border-radius: var(--radius-xs);
    font-weight: 500;
    letter-spacing: 0.02em;
    transition: background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);
}

.btn:focus,
.btn:active:focus {
    box-shadow: none;
}

/* main CTA â€” ink */
.btn-primary {
    background-color: var(--ink-950);
    border-color: var(--ink-950);
    color: var(--text-on-dark);

    svg, img {
        filter: var(--black-to-primary);
    }
}

.btn-primary:hover,
.btn-primary:focus {
    background-color: var(--ink-700);
    border-color: var(--ink-700);
    color: var(--text-on-dark);
}

.btn-primary:active,
.btn-primary.active,
.btn-primary:disabled,
.btn-primary.disabled {
    background-color: var(--ink-800);
    border-color: var(--ink-800);
    color: var(--text-on-dark);
}

/* gold CTA â€” max ONE per view ("Sell to Us", "Get a Quote", "Subscribe") */
.btn-accent {
    background-color: var(--gold-500);
    border-color: var(--gold-500);
    color: var(--ink-950);
}

.btn-accent:hover,
.btn-accent:focus {
    background-color: var(--gold-400);
    border-color: var(--gold-400);
    color: var(--ink-950);
}

.btn-accent:active,
.btn-accent.active {
    background-color: var(--gold-600);
    border-color: var(--gold-600);
    color: var(--ink-950);
}

.btn-secondary {
    background-color: var(--cream-200);
    border-color: var(--cream-200);
    color: var(--text-heading);
}

.btn-secondary:hover,
.btn-secondary:focus,
.btn-secondary:active {
    background-color: var(--cream-300);
    border-color: var(--cream-300);
    color: var(--text-heading);
}

/* cream fill â€” used on dark heroes ("Register Now") */
.btn-light {
    background-color: var(--cream-100);
    border-color: var(--cream-100);
    color: var(--ink-950);
}

.btn-light:hover,
.btn-light:focus,
.btn-light:active {
    background-color: #ffffff;
    border-color: #ffffff;
    color: var(--ink-950);
}

.btn-dark {
    background-color: var(--ink-950);
    border-color: var(--ink-950);
    color: var(--text-on-dark);
}

.btn-dark:hover,
.btn-dark:focus,
.btn-dark:active {
    background-color: var(--ink-700);
    border-color: var(--ink-700);
    color: var(--text-on-dark);
}

.btn-outline-secondary,
.btn-outline-dark,
.btn-outline-primary {
    background-color: transparent;
    border-color: var(--border-strong);
    color: var(--text-heading);
}

.btn-outline-secondary:hover,
.btn-outline-secondary:focus,
.btn-outline-secondary:active,
.btn-outline-dark:hover,
.btn-outline-dark:focus,
.btn-outline-dark:active,
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active {
    background-color: rgba(20, 17, 13, 0.05);
    border-color: var(--border-strong);
    color: var(--text-heading);
}

/* hairline ghost on dark surfaces */
.btn-outline-light {
    background-color: transparent;
    border-color: var(--border-on-dark);
    color: var(--text-on-dark);
}

.btn-outline-light:hover,
.btn-outline-light:focus,
.btn-outline-light:active {
    background-color: rgba(245, 242, 236, 0.08);
    border-color: var(--border-on-dark);
    color: var(--text-on-dark);
}

/* retired semantic fills â†’ quiet equivalents (no traffic-light marketing) */
.btn-success,
.btn-info {
    background-color: var(--ink-950);
    border-color: var(--ink-950);
    color: var(--text-on-dark);
}

.btn-success:hover,
.btn-info:hover {
    background-color: var(--ink-700);
    border-color: var(--ink-700);
    color: var(--text-on-dark);
}

.link-button-underline:after {
    border-bottom-color: var(--gold-500);
}


/* --------------------------------------------------------------------------
   5. Badges
   -------------------------------------------------------------------------- */
.badge {
    border-radius: var(--radius-xs);
    font-weight: 600;
    letter-spacing: 0.06em;
}

.badge.bg-primary,
.badge-primary {
    background-color: var(--gold-500) !important;
    color: var(--ink-950);
}


/* --------------------------------------------------------------------------
   6. Forms
   Gold border on focus, no glow.
   -------------------------------------------------------------------------- */
.form-control,
.form-select {
    background-color: var(--cream-50);
    border-color: var(--border-strong);
    border-radius: var(--radius-sm);
    color: var(--text-heading);
    transition: border-color var(--dur-fast) var(--ease-out);
}

.form-control::placeholder {
    color: var(--text-muted);
}

.form-control:focus,
.form-select:focus {
    background-color: var(--cream-50);
    border-color: var(--gold-500);
    color: var(--text-heading);
    box-shadow: none;
}

.form-check-input:checked {
    background-color: var(--ink-950);
    border-color: var(--ink-950);
}

.form-check-input:focus {
    border-color: var(--gold-500);
    box-shadow: none;
}

.input-group > .form-control {
    border-radius: var(--radius-sm) 0 0 var(--radius-sm);
}

.input-group > .btn {
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
}


/* --------------------------------------------------------------------------
   7. Bootstrap utility overrides
   .text-*, .bg-* pick up the -rgb tokens above; border colors and radii are
   compiled in 5.1 so they're overridden here directly.
   -------------------------------------------------------------------------- */
.border,
.border-top,
.border-bottom,
.border-start,
.border-end {
    border-color: var(--border-subtle) !important;
}

.border-dark {
    border-color: var(--ink-950) !important;
}

.border-light {
    border-color: var(--border-on-dark) !important;
}

.border-primary {
    border-color: var(--gold-500) !important;
}

.rounded,
.rounded-2,
.rounded-3 {
    border-radius: var(--radius-xs) !important;
}

.shadow,
.shadow-sm {
    box-shadow: var(--shadow-card) !important;
}

.shadow-lg {
    box-shadow: var(--shadow-pop) !important;
}

.bg-white {
    background-color: var(--surface-card) !important;
}

/* dark bands carry their own text colors */
.bg-dark,
.bg-extra-dark {
    color: var(--text-on-dark-muted);
}

.bg-dark h1, .bg-dark h2, .bg-dark h3, .bg-dark .h1, .bg-dark .h2, .bg-dark .h3,
.bg-extra-dark h1, .bg-extra-dark h2, .bg-extra-dark h3,
.bg-extra-dark .h1, .bg-extra-dark .h2, .bg-extra-dark .h3 {
    color: var(--text-on-dark);
}

.bg-dark a,
.bg-extra-dark a {
    color: var(--text-on-dark-muted);
}

.bg-dark a:hover,
.bg-extra-dark a:hover {
    color: var(--gold-400);
}


/* --------------------------------------------------------------------------
   8. Raines components â€” new classes (not in Bootstrap / theme-4)
   -------------------------------------------------------------------------- */

/* gold letterspaced kicker above section headings, 2â€“4 words */
.r-eyebrow {
    display: inline-block;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: var(--tracking-eyebrow);
    text-transform: uppercase;
    color: var(--text-accent);
    margin-bottom: 0.75rem;
    white-space: nowrap;
}

/* serif price â€” $2,412.50 */
.r-price {
    font-size: 1.25rem;
    color: var(--text-heading);
}

.r-price small {
    font-size: 0.7em;
    color: var(--text-muted);
}

/* bare gold letterspaced status caps â€” replaces filled badges */
.r-badge-status {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--gold-500);
    background: none;
    padding: 0;
}

/* page bands â€” alternate cream body â†” .r-band-dark, max 2 bgs per page */
.r-band {
    padding-top: 4rem;
    padding-bottom: 4rem;
}

.r-band-dark {
    background-color: var(--surface-dark);
    color: var(--text-on-dark-muted);
}

.r-band-dark h1, .r-band-dark h2, .r-band-dark h3,
.r-band-dark .h1, .r-band-dark .h2, .r-band-dark .h3 {
    color: var(--text-on-dark);
}

.r-band-dark a {
    color: var(--text-on-dark-muted);
    text-decoration: none;
}

.r-band-dark a:hover {
    color: var(--gold-400);
}

.r-band-dark hr {
    border-color: var(--border-on-dark);
}

/* generic content card: white, hairline border, no lift */
.r-card {
    background-color: var(--surface-card);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-xs);
    box-shadow: var(--shadow-card);
}

.r-card .r-card-body {
    padding: 1.5rem;
}

/* hover = 1.03 image zoom inside the frame, never a card lift */
.r-zoom {
    overflow: hidden;
}

.r-zoom img {
    transition: transform var(--dur-med) var(--ease-out);
}

.r-card:hover .r-zoom img,
.r-zoom:hover img {
    transform: scale(1.03);
}

/* full-bleed dark hero band with left scrim; drop any photo behind it */
.r-hero {
    position: relative;
    background-color: var(--surface-dark);
    color: var(--text-on-dark);
    overflow: hidden;
}

.r-hero .r-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.r-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--scrim-hero);
}

.r-hero > .container,
.r-hero > .container-fluid {
    position: relative;
    z-index: 1;
    padding-top: 96px;
    padding-bottom: 64px;
}

.r-hero p {
    color: var(--text-on-dark-muted);
}

/* spot-price strip â€” gold/silver/platinum with â–²/â–¼ movement */
.r-ticker {
    background-color: var(--surface-dark-raised);
    border-bottom: 1px solid var(--border-on-dark);
    color: var(--text-on-dark-muted);
    font-size: 11px;
    padding: 0.4rem 0;
}

.r-ticker .container,
.r-ticker .container-fluid {
    display: flex;
    align-items: center;
    gap: 1.75rem;
}

.r-ticker .r-spot {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 600;
}

.r-ticker b {
    color: var(--text-on-dark);
}

.r-ticker .r-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
}

.r-ticker .r-dot-gold { background-color: var(--metal-gold); }
.r-ticker .r-dot-silver { background-color: var(--metal-silver); }
.r-ticker .r-dot-platinum { background-color: var(--metal-platinum); }
.r-ticker .up { color: var(--price-up); }
.r-ticker .down { color: var(--price-down); }

/* hairline separator for dark surfaces */
.r-divider {
    border: 0;
    border-top: 1px solid var(--border-on-dark);
    opacity: 1;
}

/* circular hairline icon button (wishlist, carousel arrows) */
.r-icon-circle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    padding: 0;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-full);
    background: transparent;
    color: var(--text-heading);
    transition: border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
}

.r-icon-circle:hover {
    border-color: var(--gold-500);
    color: var(--gold-600);
}

/* arrow link â€” "View All Inventory â†’" */
.r-link-arrow {
    font-weight: 600;
    color: var(--text-heading);
    text-decoration: none;
}

.r-link-arrow:hover {
    color: var(--gold-600);
}

/* Filters */
.filter-primary {
    filter: var(--black-to-primary);
}


/* ==========================================================================
   SECTION STYLES
   Overrides scoped to theme-4's real components. Only header, hero banner,
   product cards, and footer live here â€” reviews, info banners, and static
   pages (about-us, sell-to-us, â€¦) get their own stylesheets later.
   ========================================================================== */

/* --------------------------------------------------------------------------
   9. Header (.site-header > .header > header-top / header-middle / header-bottom)
   Solid ink bar, hairline row separators, gold hovers.
   -------------------------------------------------------------------------- */
.header {
    /* background-color: var(--surface-dark); */
    background: linear-gradient(to bottom, var(--surface-dark) 20%, rgb(from var(--surface-dark) r g b / 0.3) 100%);
    /* backdrop-filter: blur(5px); */
    color: var(--text-on-dark);
}

.header-top,
.header-middle,
.header-bottom {
    border-bottom: 1px solid var(--border-on-dark);
}

.header-top {
    background-color: var(--surface-dark-raised);
    height: 85px;
}
@media screen and (width < 576px) {
    .site-header+main>section:first-of-type.section-hero,
    .site-header+section.section-hero {
        padding-top: 70px !important;    
    }
}
@media screen and (width >= 576px) {
    .header-top {
        height: 68px;
    }
}
.header-top .spot-prices__item span:first-child {
    color: var(--text-on-dark-muted);
}
@media screen and (width < 992px) {
    .header .header-top .text-base {
        font-size: 0.725rem !important;
    }
}
@media screen and (width < 576px) {
    /* .header-top [class*=col]:first-child {
        display: none;
    } */
     .header-top > .container > .row {
        gap: 0.3rem;
     }
     .header-top__icon-section {
        text-align: center;
     }
    
}

.header a {
    color: var(--text-on-dark);
}

.header a:hover {
    color: var(--gold-400);
}

/* main nav links â€” quiet caps, gold on hover/current */
.header .header-menu > ul > .menu-item > a {
    font-size: 13px;
    font-weight: 500;
    letter-spacing: 0.04em;
    transition: color var(--dur-fast) var(--ease-out);
}

.header .header-menu > ul > .menu-item > a:hover,
.header .header-menu > ul > .current-menu-item > a {
    color: var(--gold-400);
}

/* Mobile menu */
.mobile-menu__header,
.mobile-menu__bar {
    background: var(--surface-dark);
    /* border-bottom: 1px solid var(--border-on-dark); */
}

/* header search â€” ghost field on ink */
.header .search-box {
    width: clamp(520px, 36vw, 740px);
}
.header .search-box .form-control.search-input {
    background-color: transparent;
    border-color: var(--border-on-dark);
    color: var(--text-on-dark);
}

.header .search-box .form-control.search-input::placeholder {
    color: var(--text-on-dark-muted);
}

.header .search-box .form-control.search-input:focus {
    border-color: var(--gold-500);
}

.header .btn-primary {
    background-color: var(--gold-500);
    border-color: var(--gold-500);
    color: var(--ink-950);

    svg, img {
        filter: unset;
    }
}

.header .btn-primary:hover,
.header .btn-primary:focus {
    background-color: var(--gold-400);
    border-color: var(--gold-400);
    color: var(--ink-950);
}


/* exchange-rates strip (theme-4's spot ticker) â€” raised ink, hairline base */
.exchange-rates__container {
    border-bottom: 1px solid var(--border-on-dark);
}

/* Logo */
.header .custom-logo-link {
    width: 300px;
}
@media (width < 1460px) {
    .header .custom-logo-link {
        width: 230px;
    }
}
@media (width < 1200px) {
    .header .custom-logo-link {
        width: 200px;
    }
}
@media (width < 400px) {
    .header .custom-logo-link {
        max-width: 125px;
    }
}

/* --------------------------------------------------------------------------
   10. Hero banner (.section-hero + .heading-block + glide controls)
   Photo band with left scrim; serif display headline.
   -------------------------------------------------------------------------- */
.section-hero {
    position: relative;
    background-color: var(--surface-dark);
    /* height: min(100vh, 1000px); */
}

/* left scrim over the photo; content already sits at z-index 2 */
.section-hero::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background: var(--scrim-hero);
    pointer-events: none;
}
.site-header + main > section:first-of-type .container {
    height: 100%;
    /* justify-content: flex-start; */
}
@media (width >= 992px) {
    .site-header + main > section:first-of-type .container {
        padding-top: 100px !important;
    }
}
.section-hero .slider-hero {
    margin-bottom: 10vh;
}
.section-hero .heading-block-title {
    font-weight: 500;
    color: var(--text-on-dark);
}

.section-hero .heading-block-body {
    color: var(--text-on-dark-muted);
}

.section-hero .list-inline-dot {
    color: var(--text-on-dark-muted);
}
.section-hero .glide__slide .heading-block-title {
    text-wrap: balance;
    -webkit-text-wrap: balance;
    max-width: 600px;
}
.section-hero .glide__slide .heading-block-body {
    max-width: 500px;
}

/* slider arrows â€” hairline ghost circles */
.section-hero .glide__arrows {
    width: auto;
    top: calc(100% + 10vh);
    left: unset;
    right: 0;
    gap: 1rem;
}

.section-hero .glide__arrow {
    background: var(--stone-500);
    background: var(--bs-gold);
    border: 1px solid var(--border-on-dark);
    border: none;
    border-radius: var(--radius-full);
    color: var(--text-body);
    box-shadow: none;
    transition: border-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out);
    position: relative;
    width: 3rem;
    height: 3rem;

    &::before {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        width: 50%;
        height: 50%;
        transform: translate(-50%, -50%);
        object-fit: contain;
        background-image: url(/media/pdfs/upload/arrow-left.svg);
        background-position: center;
        background-repeat: no-repeat;
        background-size: contain;
        /* opacity: 0.5; */
        transition: opacity var(--dur-fast) var(--ease-out), filter var(--dur-fast) var(--ease-out);
        filter: invert(1);
    }
    &.glide__arrow--right::before {
        background-image: url(/media/pdfs/upload/arrow-right.svg);
    }
}

.section-hero .glide__arrow:hover {
    background: var(--gold-300);
    transform: unset;
}

.slider-hero .glide__bullets {
    display: flex;
    justify-content: flex-start;
    top: calc(100% + 10vh);
    padding-left: clamp(2rem, 3vw, 3rem);

    &:before {
        content: '1';
        position: absolute;
        top: 50%;
        left: 0;
        height: clamp(1rem, 2vw, 1.5rem);
        width: 1rem;
        font-size: clamp(1rem, 2vw, 1.5rem);
        line-height: 1;
        color: var(--bs-gold);
        transform: translateY(-50%);
    }
}
.section-hero .glide__bullets:has(.glide__bullet:nth-child(1).glide__bullet--active)::before { content: "1"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(2).glide__bullet--active)::before { content: "2"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(3).glide__bullet--active)::before { content: "3"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(4).glide__bullet--active)::before { content: "4"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(5).glide__bullet--active)::before { content: "5"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(6).glide__bullet--active)::before { content: "6"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(7).glide__bullet--active)::before { content: "7"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(8).glide__bullet--active)::before { content: "8"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(9).glide__bullet--active)::before { content: "9"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(10).glide__bullet--active)::before { content: "10"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(11).glide__bullet--active)::before { content: "11"; }
.section-hero .glide__bullets:has(.glide__bullet:nth-child(12).glide__bullet--active)::before { content: "12"; }

.section-hero .glide__bullet {
    width: 20px;
    height: 2px;
    transition: all var(--dur-slow) var(--ease-out);
    padding: 0;
    margin: 0;
}
.section-hero .glide__bullet--active {
    width: clamp(30px, 5vw, 60px);
}
.section-hero .glide__bullet::after {
    width: 100%;
    height: 2px;
    border-radius: 0;
}

/* --------------------------------------------------------------------------
   11. Product cards (.card-coin family)
   White frame, hairline border, serif price, image zoom instead of lift.
   -------------------------------------------------------------------------- */
.card-coin {
    background-color: var(--surface-card);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-xs);
    box-shadow: var(--shadow-card);
    transition: border-color var(--dur-fast) var(--ease-out);
}

.card-coin:hover {
    border-color: var(--border-strong);
    box-shadow: var(--shadow-card);
}

.card-coin-image {
    overflow: hidden;
}

.card-coin-image img {
    transition: transform var(--dur-med) var(--ease-out);
}

.card-coin:hover .card-coin-image img {
    transform: scale(1.03);
}

.card-coin-title {
    font-weight: 500;
    color: var(--text-heading);
}

.card-coin-title a:hover {
    color: var(--gold-600);
}

.card-coin-price {
    font-size: 1.25rem;
    color: var(--text-heading);
}

/* stock meta â€” bare letterspaced caps, muted brand tints */
.card-coin-meta {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: var(--gold-500);
}

.card-coin-meta.in-stock {
    color: var(--price-up);
}

.card-coin-meta.in-stock > * {
    background-color: rgba(109, 143, 91, 0.08);
    border-radius: var(--radius-xs);
}

.card-coin-meta.out-of-stock {
    color: var(--price-down);
}

.card-coin-meta.new,
.card-coin-meta.pending {
    color: var(--gold-600);
}

.card-coin-meta.new > *,
.card-coin-meta.pending > * {
    background-color: rgba(184, 147, 78, 0.1);
    border-radius: var(--radius-xs);
}

/* corner ribbons â€” brand tones instead of traffic lights */
.card-coin-ribbon {
    --ribbon-color: var(--gold-500);
}

.card-coin-ribbon.in-stock {
    --ribbon-color: var(--price-up);
}

.card-coin-ribbon.out-of-stock {
    --ribbon-color: var(--price-down);
}

.card-coin-ribbon span {
    text-shadow: none;
}

.card-coin-expand {
    border: 1px solid var(--border-subtle);
    border-top: 0;
    border-radius: 0 0 var(--radius-xs) var(--radius-xs);
    box-shadow: var(--shadow-pop);
}

.card-coin-notice {
    color: var(--text-muted);
}

.card-coin-expand .table-sm th {
    vertical-align: top;
    white-space: normal;
}

.card-coin-expand .table-sm th,
.card-coin-expand .table-sm td {
    font-size: 0.875rem;
}

@media (width < 1200px) {
    .col-xl-4:has(.product-card) {
        padding-left: 4px;
        padding-right: 4px;
    }
}

@media (width < 576px) {
    .card-coin {
        max-width: 100%;
    }
}

/* Category & product listing page */
.card-link {
    background: white;
    transition: all var(--dur-med) var(--ease-out);

    &:hover {
        background-color: white;
        color: var(--bs-dark);
        box-shadow: 2px 15px 8px #00000010;
        transform: translateY(-3px);
    }
}


/* --------------------------------------------------------------------------
   12. Footer (.site-footer)
   Ink band, muted cream text, gold link hovers, cream subscription box.
   -------------------------------------------------------------------------- */
.site-footer {
    background-color: var(--surface-dark);
    color: var(--text-on-dark-muted);
}

.site-footer a {
    color: var(--text-on-dark-muted);
    text-decoration: none;
    transition: color var(--dur-fast) var(--ease-out);
}

.site-footer a:hover {
    color: var(--gold-400);
}

/* column headings â€” small caps in cream */
.site-footer .text-uppercase {
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.12em;
    color: var(--text-on-dark);
}

.site-footer hr {
    border-color: var(--border-on-dark);
    opacity: 1;
}

.site-footer .icon {
    color: var(--gold-500);
}

/* newsletter box â€” cream card on the ink band, near-sharp corners */
.site-footer__subscription {
    background-color: var(--cream-100);
    color: var(--text-body);
    border-bottom-left-radius: var(--radius-sm);
    border-bottom-right-radius: var(--radius-sm);
}

.site-footer__subscription h1,
.site-footer__subscription h2,
.site-footer__subscription h3,
.site-footer__subscription h4,
.site-footer__subscription .h4 {
    color: var(--text-heading);
}

.site-footer__subscription a {
    color: var(--text-heading);
}

.site-footer__subscription a:hover {
    color: var(--gold-600);
}

.site-footer__subscription .btn-primary {
    background-color: var(--gold-500);
    border-color: var(--gold-500);
    color: var(--ink-950);
}

.site-footer__subscription .btn-primary:hover,
.site-footer__subscription .btn-primary:focus {
    background-color: var(--gold-400);
    border-color: var(--gold-400);
    color: var(--ink-950);
}

@media (width >= 1200px) {
    .footer__links-container {
        flex-wrap: nowrap;
    }
}
