:root {
    /* Palette knobs. Light surfaces are a pale ivory cream; burgundy is the
     * brand and gold is kept as a small accent on dark surfaces. The *-rgb
     * triples are used as rgba(var(--x), alpha) so every border, glass
     * panel and shadow keeps its own strength while sharing one hue. */
    --sws-page-bg: #f9f6f0;
    --sws-line-rgb: 170, 158, 128;
    --sws-glass-rgb: 255, 253, 249;
    --sws-shadow-rgb: 21, 19, 16;
    --sws-shadow-soft-rgb: 107, 95, 71;

    /* Hover states: a light lift rather than a darker stain. Buttons fade
     * white to pale cream; row highlights share one cream tint. */
    --sws-hover-top: #ffffff;
    --sws-hover-bottom: #f7f4ec;
    --sws-hover-rgb: 246, 242, 231;

    --sws-bg: var(--sws-page-bg);
    --sws-surface: #ffffff;
    --sws-surface-soft: #f1efed;
    --sws-border: #d4d2cf;
    --sws-border-strong: #b5b2ad;
    --sws-text: #252421;
    --sws-text-muted: #6a6762;
    --sws-brand: #7e323f;
    --sws-brand-strong: #642531;
    --sws-brand-soft: #f3e8ea;
    --sws-accent: #b99a63;
    --sws-accent-soft: #efe4cf;
    --sws-accent-light: #d1b981;
    --sws-accent-deep: #7e323f;
    --sws-success: #2f6e4c;
    --sws-warning: #8f621f;
    --sws-danger: #93383d;
    --sws-shadow: 0 16px 44px rgba(var(--sws-shadow-rgb), 0.1);
    --sws-glass: rgba(var(--sws-glass-rgb), 0.88);
    --sws-glass-strong: rgba(var(--sws-glass-rgb), 0.94);
    --sws-glass-border: rgba(var(--sws-line-rgb), 0.16);
    --sws-layer-shadow: 0 18px 44px rgba(var(--sws-shadow-rgb), 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.78);
    --sws-layer-shadow-strong: 0 22px 56px rgba(var(--sws-shadow-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.82);
    --sws-header-height: 96px;
    --sws-countdown-height: 112px;
    --sws-countdown-float-offset: 8px;
}

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

html {
    background: #1f1417;
}

body.sws-body {
    margin: 0;
    font-family: "Inter", sans-serif;
    background:
        radial-gradient(circle at 50% 13rem, rgba(var(--sws-line-rgb), 0.07), transparent 30rem),
        radial-gradient(circle at 9% 34rem, rgba(126, 50, 63, 0.05), transparent 24rem),
        linear-gradient(#1f1417 0 16rem, var(--sws-page-bg) 16rem);
    color: var(--sws-text);
    line-height: 1.6;
    overflow-x: hidden;
}

a {
    color: var(--sws-brand);
    text-decoration: none;
}

a:hover {
    color: var(--sws-brand-strong);
}

/* Tint native form controls with the brand maroon so checkboxes, radios and
 * range thumbs match the rest of the chrome instead of the browser's default
 * blue. accent-color is widely supported (Chrome 93+, Firefox 92+, Safari 15.4+). */
input[type="checkbox"],
input[type="radio"],
input[type="range"],
progress {
    accent-color: var(--sws-brand-strong);
}

.sws-container {
    width: min(1280px, 100% - 2.25rem);
    margin: 0 auto;
}

.sws-header-shell {
    background: #1f1417;
    /* Contain the hero's margin-top (which clears the fixed navbar). Without
     * this it collapses through <header> and <body>, shifting the body box —
     * and the dark band of the body's background gradient — down by the nav
     * height, so the band's tail peeked out as a dark bar under the hero. */
    display: flow-root;
}

.sws-navbar {
    height: var(--sws-header-height);
    background-color: #351720;
    background-image:
        linear-gradient(90deg, #1a0a0e 0%, #351720 46%, #542431 100%);
    border-bottom: 1px solid rgba(209, 185, 129, 0.18);
    backdrop-filter: blur(6px);
    transition: height 0.3s ease, box-shadow 0.3s ease;
    z-index: 1080;
}

.sws-navbar.is-compact {
    height: 78px;
    box-shadow: 0 1px 0 rgba(209, 185, 129, 0.14);
}

.sws-menu-toggle {
    border-color: rgba(255, 255, 255, 0.42);
    color: #fff;
}

.sws-menu-toggle:focus {
    box-shadow: 0 0 0 0.15rem rgba(255, 255, 255, 0.25);
}

.sws-menu-toggle .navbar-toggler-icon {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255,255,255,0.96%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

.sws-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.58rem;
}

.sws-brand img {
    width: 202px;
    max-width: 100%;
    transition: width 0.3s ease, filter 0.3s ease;
    filter: brightness(0) saturate(100%) invert(96%) sepia(20%) saturate(226%) hue-rotate(287deg) brightness(107%) contrast(95%);
}

.sws-navbar.is-compact .sws-brand img {
    width: 186px;
}

.sws-brand-text {
    display: inline-flex;
    flex-direction: column;
    line-height: 1.1;
    color: #f3eaeb;
}

.sws-brand-line {
    font-size: 0.78rem;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    font-weight: 700;
}

.sws-brand-est {
    margin-top: 0.22rem;
    font-size: 0.71rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(238, 222, 225, 0.86);
    font-weight: 600;
}

.sws-nav-list .nav-link {
    color: #f7f1f2;
    font-size: 0.94rem;
    font-weight: 400;
    letter-spacing: 0.035em;
    padding: 0.75rem 0.85rem;
}

.sws-nav-list .nav-link:hover,
.sws-nav-list .nav-link:focus,
.sws-nav-list .nav-link.show,
.sws-nav-list .show > .nav-link {
    color: #fff;
}

/* Horizontal menu: a fine white rule slides in under the hovered item.
 * Painted as a background so it cannot shift layout and leaves ::after to
 * the dropdown carets; the inset matches the link's side padding. */
@media (min-width: 1200px) {
    .sws-nav-list .nav-link {
        background: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0.7)) no-repeat center calc(100% - 0.45rem) / 0 1px;
        transition: color 0.15s ease, background-size 0.2s ease;
    }

    /* ~30px between items. Needs .sws-navbar to outrank Bootstrap's
     * .navbar-expand-xl .navbar-nav .nav-link padding. */
    .sws-navbar .sws-nav-list .nav-link {
        padding-left: 0.94rem;
        padding-right: 0.94rem;
    }

    .sws-nav-list .nav-link:hover,
    .sws-nav-list .nav-link:focus-visible,
    .sws-nav-list .nav-link.show,
    .sws-nav-list .show > .nav-link {
        background-size: calc(100% - 1.88rem) 1px;
    }
}

/* Horizontal nav only at xl+; below that collapse stacks (see max-width: 1199.98px) */
@media (min-width: 1200px) {
    .sws-navbar .navbar-collapse {
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 1rem;
    }

    .sws-nav-main {
        flex: 1 1 auto;
        display: flex;
        justify-content: flex-end;
    }

    .sws-nav-list {
        justify-content: flex-end;
    }
}

.sws-nav-main {
    display: flex;
}

.sws-nav-list {
    display: flex;
}

.sws-account-zone {
    margin-left: 0.35rem;
    display: inline-flex;
    align-items: center;
    gap: 0.52rem;
}

.sws-account-pill {
    border: 1px solid rgba(209, 185, 129, 0.18);
    border-radius: 999px;
    padding: 0.1rem 0.24rem;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.06), rgba(255, 255, 255, 0.02));
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

.sws-account-pill:hover,
.sws-account-pill.show {
    border-color: rgba(209, 185, 129, 0.42);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.04));
}

.sws-account-pill .nav-link {
    color: #fff6f7;
    font-weight: 700;
    font-size: 0.88rem;
    padding: 0.42rem 0.9rem;
}

.sws-account-pill .nav-link:hover,
.sws-account-pill .nav-link:focus {
    color: #ffe5ea;
}

.sws-account-dropdown {
    right: 0;
    left: auto;
}

.sws-account-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 0.42rem 0.96rem;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.03em;
}

.sws-account-login {
    color: #f8eef0;
    border: 1px solid rgba(209, 185, 129, 0.18);
    background: rgba(255, 255, 255, 0.04);
    transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}

.sws-account-login:hover {
    color: #fff;
    border-color: rgba(209, 185, 129, 0.6);
    background: linear-gradient(135deg, rgba(126, 55, 68, 0.82), rgba(75, 24, 36, 0.82));
}

.sws-account-join {
    color: #fbeff1;
    border: 1px solid rgba(209, 185, 129, 0.22);
    background: rgba(255, 255, 255, 0.03);
    transition: border-color 0.2s ease, background-color 0.2s ease, color 0.2s ease;
}

.sws-account-join:hover {
    color: #fff;
    border-color: rgba(209, 185, 129, 0.6);
    background: linear-gradient(135deg, rgba(126, 55, 68, 0.82), rgba(75, 24, 36, 0.82));
}

.sws-dropdown {
    border: 1px solid var(--sws-border);
    border-radius: 12px;
    box-shadow: 0 18px 36px rgba(24, 16, 15, 0.13);
    padding: 0.4rem;
}

.sws-dropdown .dropdown-item {
    border-radius: 8px;
    color: #363431;
    font-size: 0.9rem;
    font-weight: 500;
    padding: 0.55rem 0.8rem;
}

.sws-dropdown .dropdown-item:hover,
.sws-dropdown .dropdown-item:focus {
    background: var(--sws-brand-soft);
    color: var(--sws-brand-strong);
}

.dropdown-submenu {
    position: relative;
}

.submenu-list {
    top: -0.35rem;
    right: calc(100% + 0.2rem);
    left: auto;
    display: none;
}

.dropdown-submenu:hover > .submenu-list,
.dropdown-submenu:focus-within > .submenu-list,
.dropdown-submenu.is-open > .submenu-list {
    display: block;
}

.submenu-toggle::after {
    content: ">";
    float: right;
    font-size: 0.85rem;
}

.sws-countdown-bar {
    top: calc(var(--sws-header-height) + var(--sws-countdown-float-offset));
    height: var(--sws-countdown-height);
    background: transparent;
    z-index: 1060;
    display: flex;
    align-items: flex-start;
    transition: top 0.32s ease, height 0.32s ease, background 0.32s ease, box-shadow 0.32s ease, border-color 0.32s ease;
    border-bottom: 0;
    box-shadow: none;
    pointer-events: none;
}

.sws-countdown-bar .countdown-inner {
    pointer-events: auto;
}

.sws-navbar.is-compact ~ .sws-countdown-bar {
    top: 78px;
}

.sws-countdown-bar .countdown-inner {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 0.46rem;
    width: 100%;
    transition: gap 0.28s ease, padding 0.28s ease, background 0.28s ease, box-shadow 0.28s ease, border-color 0.28s ease;
}

.countdown-label,
.countdown-value {
    margin: 0;
    color: #454039;
    font-size: 0.72rem;
    letter-spacing: 0.02em;
}

.countdown-label {
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: rgba(var(--sws-glass-rgb), 0.88);
    font-size: 0.75rem;
    text-shadow: 0 1px 10px rgba(12, 7, 8, 0.45);
    transition: opacity 0.18s ease, transform 0.22s ease;
}

.countdown-value {
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.54rem;
    transition: gap 0.28s ease, transform 0.28s ease, color 0.28s ease;
}

.countdown-box {
    min-width: 82px;
    padding: 0.36rem 0.34rem 0.34rem;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.46);
    background: rgba(250, 248, 244, 0.88);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7), 0 9px 24px rgba(20, 12, 14, 0.2);
    -webkit-backdrop-filter: blur(8px);
    backdrop-filter: blur(8px);
    text-align: center;
    transition: min-width 0.28s ease, padding 0.28s ease, border-color 0.28s ease, background 0.28s ease, box-shadow 0.28s ease, border-radius 0.28s ease;
}

.countdown-num {
    display: block;
    font-size: 1.95rem;
    line-height: 1;
    font-weight: 800;
    letter-spacing: 0.04em;
    color: #6c2d38;
    transition: font-size 0.28s ease, color 0.28s ease;
}

.countdown-unit {
    display: block;
    font-size: 0.64rem;
    margin-top: 0.2rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #6e6860;
    transition: font-size 0.28s ease, letter-spacing 0.28s ease, color 0.28s ease;
}

.countdown-status {
    padding: 0.32rem 0.7rem;
    border-radius: 999px;
    border: 1px solid #cec9c0;
    background: #f3f1ea;
    color: #554f46;
    font-size: 0.74rem;
    font-weight: 700;
}

.sws-countdown-bar.is-compact {
    top: 78px;
    height: 34px;
    background: linear-gradient(105deg, rgba(249, 247, 241, 0.97), rgba(238, 234, 222, 0.97));
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.32);
    box-shadow: 0 8px 18px rgba(var(--sws-shadow-rgb), 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.55);
    align-items: center;
    z-index: 1060;
    pointer-events: auto;
}

.sws-countdown-bar.is-compact .countdown-inner {
    flex-direction: row;
    justify-content: center;
    gap: 0.48rem;
    width: 100%;
    max-width: none;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

.sws-countdown-bar.is-compact .countdown-label {
    position: absolute;
    opacity: 0;
    transform: translateY(-0.3rem);
    pointer-events: none;
}

.sws-countdown-bar.is-compact .countdown-value {
    gap: 0.86rem;
    transform: none;
    position: relative;
    z-index: 2;
    color: #4f4940;
    line-height: 1;
}

.sws-countdown-bar.is-compact .countdown-value::before {
    content: "Auction Closing:";
    color: var(--sws-accent-deep);
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.sws-countdown-bar.is-compact .countdown-box {
    display: inline-flex;
    align-items: baseline;
    gap: 0.24rem;
    min-width: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    overflow: hidden;
}

.sws-countdown-bar.is-compact .countdown-num {
    font-size: 0.96rem;
    line-height: 1;
    color: #6c2d38;
}

.sws-countdown-bar.is-compact .countdown-unit {
    margin-top: 0;
    font-size: 0.58rem;
    line-height: 1;
    letter-spacing: 0.09em;
    color: #676158;
}

.sws-countdown-bar.is-compact .countdown-status {
    font-size: 0.66rem;
    padding: 0.22rem 0.55rem;
}

.sws-header--compact .sws-countdown-bar {
    top: var(--sws-header-height);
    height: 34px;
    background: linear-gradient(105deg, rgba(249, 247, 241, 0.97), rgba(238, 234, 222, 0.97));
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.32);
    box-shadow: 0 8px 18px rgba(var(--sws-shadow-rgb), 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.55);
    align-items: center;
    pointer-events: auto;
}

.sws-header--compact .sws-countdown-bar .countdown-inner {
    flex-direction: row;
    justify-content: center;
    gap: 0.48rem;
    width: 100%;
    max-width: none;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}

.sws-header--compact .sws-countdown-bar .countdown-label {
    position: absolute;
    opacity: 0;
    transform: translateY(-0.3rem);
    pointer-events: none;
}

.sws-header--compact .sws-countdown-bar .countdown-value {
    gap: 0.86rem;
    transform: none;
    position: relative;
    z-index: 2;
    color: #4f4940;
    line-height: 1;
}

.sws-header--compact .sws-countdown-bar .countdown-value::before {
    content: "Auction Closing:";
    color: var(--sws-accent-deep);
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.sws-header--compact .sws-countdown-bar .countdown-box {
    display: inline-flex;
    align-items: baseline;
    gap: 0.24rem;
    min-width: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
    overflow: hidden;
}

.sws-header--compact .sws-countdown-bar .countdown-num {
    font-size: 0.96rem;
    line-height: 1;
    color: #6c2d38;
}

.sws-header--compact .sws-countdown-bar .countdown-unit {
    margin-top: 0;
    font-size: 0.58rem;
    line-height: 1;
    letter-spacing: 0.09em;
    color: #676158;
}

.sws-hero {
    margin-top: var(--sws-header-height);
    background-image:
        radial-gradient(circle at 50% 16%, rgba(185, 154, 99, 0.14), transparent 30%),
        radial-gradient(circle at 50% 16%, rgba(20, 10, 12, 0.35), transparent 28%),
        radial-gradient(circle at 18% 72%, rgba(70, 30, 38, 0.4), transparent 58%),
        linear-gradient(116deg, rgba(14, 15, 20, 0.88) 0%, rgba(22, 23, 30, 0.77) 48%, rgba(34, 35, 42, 0.6) 100%),
        var(--hero-image);
    background-size: cover;
    background-position: center;
    /* Never let the photo wrap: a repeated tile's top edge (sky) painted a
     * 1px blue line in any row the bottom-anchored image didn't reach. */
    background-repeat: no-repeat;
    border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    box-shadow: 0 12px 24px rgba(var(--sws-shadow-rgb), 0.08);
}

.sws-hero-inner {
    min-height: 240px;
    /* The fixed countdown clock overlays the hero and its boxes end ~94px
     * below the hero's top edge. Flow the lockup from the top so the H1
     * always clears the clock by a steady ~26px; any slack from min-height
     * lands in the foot below the subtitle. (Centring let the block drift
     * up under the clock whenever the content was short.) */
    padding: 7.5rem 0 2rem;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    text-align: center;
    color: #fff;
    max-width: 780px;
    margin: 0 auto;
}

/* Small-caps eyebrow above the hero H1 — opt-in per page via $heroEyebrow.
 * Bridges the countdown clock and the title so they read as one lockup. */
.sws-hero-eyebrow {
    margin: 0 0 0.55rem;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    color: #e3cb98;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
}

.sws-hero h1 {
    margin: 0;
    font-size: clamp(1.55rem, 2.2vw, 2.4rem);
    line-height: 1.18;
    font-weight: 700;
    letter-spacing: -0.01em;
    text-shadow: 0 2px 18px rgba(0, 0, 0, 0.48), 0 0 22px rgba(185, 154, 99, 0.16);
}

.sws-hero-subtitle {
    margin-top: 0.8rem;
    margin-bottom: 0;
    font-size: 1rem;
    max-width: 620px;
    color: rgba(255, 255, 255, 0.88);
}

/* On the tall "default" hero, a 60px gold hairline sits between the H1 and
 * subtitle — the same flourish as the homepage tagline. Compact heroes stay
 * flourish-free to protect their height. */
.sws-header--default .sws-hero-subtitle::before {
    content: "";
    display: block;
    width: 60px;
    height: 1px;
    margin: 0 auto 0.75rem;
    background: linear-gradient(90deg,
        rgba(227, 203, 152, 0) 0%,
        rgba(227, 203, 152, 0.75) 50%,
        rgba(227, 203, 152, 0) 100%);
}

/* ---------- Hero live-lots badge ----------
 * Single-line subtitle for live-auction pages: pulsing gold dot, the lot
 * count in confident white, then a small-caps gold "live now" that carries
 * the old eyebrow's voice without costing the lockup an extra row.
 * Markup comes from the page via $heroSubtitleHtml. */
.sws-hero-live {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    white-space: nowrap;
}

.sws-hero-live-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #e3cb98;
    box-shadow: 0 0 0 0 rgba(227, 203, 152, 0.55);
    animation: swsHeroLivePulse 2.4s ease-out infinite;
}

.sws-hero-live strong {
    font-weight: 700;
    font-size: 1.04rem;
    color: rgba(255, 255, 255, 0.96);
    letter-spacing: 0.01em;
}

.sws-hero-live-label {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    color: #e3cb98;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.4);
    /* Optically balance the tracked small-caps against the count text. */
    padding-top: 1px;
}

@keyframes swsHeroLivePulse {
    0% {
        box-shadow: 0 0 0 0 rgba(227, 203, 152, 0.55);
    }
    70% {
        box-shadow: 0 0 0 9px rgba(227, 203, 152, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(227, 203, 152, 0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .sws-hero-live-dot {
        animation: none;
    }
}

/* Closed sale: same lockup, but nothing about it should suggest it is live. */
.sws-hero-live--closed .sws-hero-live-dot {
    background: rgba(255, 255, 255, 0.4);
    box-shadow: none;
    animation: none;
}

.sws-hero-live--closed .sws-hero-live-label {
    color: rgba(255, 255, 255, 0.62);
}

.sws-header--compact .sws-hero {
    border-bottom-color: rgba(185, 154, 99, 0.16);
    box-shadow: 0 8px 18px rgba(var(--sws-shadow-rgb), 0.06);
}

.sws-header--compact .sws-hero-inner {
    min-height: 170px;
    padding: 4.25rem 0 2.05rem;
    transform: none;
}

.sws-header--compact .sws-hero h1 {
    font-size: clamp(1.42rem, 1.9vw, 2.05rem);
}

.sws-header--compact .sws-hero-subtitle {
    margin-top: 0.52rem;
    font-size: 0.92rem;
}

/* ---------- Hero slider ----------
 * All slider styles (slides, arrows, dots, captions and per-slide themes)
 * live in home-slider.css — the marketing file that changes with campaign
 * content. header.php only loads it on pages that define $heroSlides;
 * behaviour is in home-slider.js. Nothing slider-related belongs here. */

.sws-main-content {
    padding: 2.7rem 0 4.2rem;
}

.sws-header--compact + .sws-main-content {
    background:
        radial-gradient(circle at 50% 0, rgba(var(--sws-line-rgb), 0.06), transparent 22rem),
        linear-gradient(var(--sws-page-bg) 0%, var(--sws-page-bg) 100%);
}

.sws-page-grid {
    display: grid;
    grid-template-columns: minmax(290px, 36%) minmax(0, 1fr);
    gap: 1.5rem;
}

.sws-page-grid--no-image {
    grid-template-columns: 1fr;
}

.sws-card {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, var(--sws-glass) 100%);
    border: 1px solid var(--sws-glass-border);
    border-radius: 16px;
    box-shadow: var(--sws-layer-shadow);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.sws-image-card {
    padding: 1.1rem;
}

.sws-image-frame {
    border-radius: 12px;
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    overflow: hidden;
    background: rgba(255, 255, 255, 0.72);
    min-height: 370px;
    display: grid;
    place-items: center;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.82);
}

.sws-image-frame img {
    width: 100%;
    max-height: 560px;
    object-fit: contain;
}

.sws-bottle-image {
    max-width: 75%;
    max-height: 420px;
}

/* The product image is itself the lightbox trigger. The magnifier badge is
 * always shown because touch screens have no hover to hint at it. */
.sws-image-zoom {
    position: relative;
    width: 100%;
    padding: 0;
    font: inherit;
    color: inherit;
}

/* Outranks Bootstrap reboot's [type=button]:not(:disabled) pointer cursor. */
.sws-image-zoom:not(:disabled) {
    cursor: zoom-in;
}

.sws-image-zoom:focus-visible {
    outline: 2px solid var(--sws-brand);
    outline-offset: 3px;
}

.sws-image-zoom .sws-bottle-image {
    transition: opacity 0.2s ease;
}

.sws-image-zoom:hover .sws-bottle-image {
    opacity: 0.92;
}

.sws-image-zoom-icon {
    position: absolute;
    right: 0.7rem;
    bottom: 0.7rem;
    width: 2.3rem;
    height: 2.3rem;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(255, 255, 255, 0.94);
    border: 1px solid rgba(var(--sws-line-rgb), 0.34);
    color: var(--sws-brand);
    font-size: 1.05rem;
    line-height: 1;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.14);
    transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease;
}

.sws-image-zoom:hover .sws-image-zoom-icon,
.sws-image-zoom:focus-visible .sws-image-zoom-icon {
    background: var(--sws-brand);
    border-color: var(--sws-brand);
    color: #fff;
    transform: scale(1.06);
}

.sws-btn {
    border: 0;
    border-radius: 999px;
    padding: 0.6rem 1.2rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.sws-btn:hover {
    transform: translateY(-1px);
}

.sws-btn-primary {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    color: #fff;
    border: 1px solid rgba(209, 185, 129, 0.34);
    box-shadow: 0 10px 24px rgba(75, 24, 36, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* Bootstrap reboot sets a:hover link colour — keep primary buttons readable */
a.sws-btn-primary:hover,
a.sws-btn-primary:focus,
a.sws-btn-primary:focus-visible,
button.sws-btn-primary:hover,
button.sws-btn-primary:focus,
button.sws-btn-primary:focus-visible {
    color: #fff !important;
}

.sws-btn-primary:hover,
.sws-btn-primary:focus,
.sws-btn-primary:focus-visible {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%);
    color: #fff;
    border-color: rgba(209, 185, 129, 0.52);
}

/* Bid: bronze, matching the browse grid, so an added lot reads differently
 * from the grape Add button. */
.sws-btn-bid {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%);
    color: #fff;
    border: 1px solid rgba(232, 200, 140, 0.42);
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

a.sws-btn-bid:hover,
a.sws-btn-bid:focus,
a.sws-btn-bid:focus-visible {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%);
    color: #fff;
    border-color: rgba(232, 200, 140, 0.6);
}

.sws-btn-secondary {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.88) 0%, rgba(243, 239, 230, 0.82) 100%);
    color: #383632;
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.sws-btn-quiet {
    padding: 0.36rem 0.72rem;
    font-size: 0.78rem;
    font-weight: 600;
}

.sws-action-btn {
    width: 84px;
    height: 38px;
    min-width: 84px;
    padding: 0;
    font-size: 0.82rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    white-space: nowrap;
}

.sws-lot-table [id^="wishlistAdd"] a,
.sws-lot-table [id^="wishlistAdd"] input {
    width: 84px !important;
    height: 38px !important;
    min-width: 84px !important;
    padding: 0 !important;
    border-radius: 999px !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    text-decoration: none !important;
    box-sizing: border-box;
}

.sws-lot-table [id^="wishlistAdd"] .btn,
.sws-lot-table [id^="wishlistAdd"] input {
    background: linear-gradient(180deg, #fcfaf5 0%, #f3efe6 100%) !important;
    border: 1px solid #d2cdc0 !important;
    color: #383632 !important;
}

/* The Bid that add_wishlist.php swaps in after Add: bronze, as everywhere. */
.sws-lot-table [id^="wishlistAdd"] .btn.btn-success,
.sws-lot-table [id^="wishlistAdd"] .btn-success {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%) !important;
    border: 1px solid rgba(232, 200, 140, 0.42) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-lot-table [id^="wishlistAdd"] .btn.btn-success:hover,
.sws-lot-table [id^="wishlistAdd"] .btn-success:hover {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%) !important;
    border-color: rgba(232, 200, 140, 0.6) !important;
    transform: translateY(-1px);
}

.sws-lot-table [id^="wishlistAdd"] .btn.btn-success:active,
.sws-lot-table [id^="wishlistAdd"] .btn-success:active {
    background: linear-gradient(135deg, #9a6a22 0%, #5e3d0e 100%) !important;
    border-color: rgba(232, 200, 140, 0.5) !important;
    transform: translateY(0);
}

/* Browse grid: Add is grape primary; the Bid it turns into is bronze (the
 * home page Buy It Now accent) so the change of state reads at a glance. */
#datatable [id^="wishlistAdd"] .btn,
#datatable [id^="wishlistAdd"] input {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border: 1px solid rgba(209, 185, 129, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

#datatable [id^="wishlistAdd"] input.btn.btn-mini:hover:not(:disabled) {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%) !important;
    border-color: rgba(209, 185, 129, 0.52) !important;
    box-shadow: 0 7px 20px rgba(75, 24, 36, 0.28);
}

#datatable [id^="wishlistAdd"] .btn.btn-success,
#datatable [id^="wishlistAdd"] .btn-success {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%) !important;
    border: 1px solid rgba(232, 200, 140, 0.42) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

#datatable [id^="wishlistAdd"] .btn.btn-success:hover,
#datatable [id^="wishlistAdd"] .btn-success:hover {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%) !important;
    border-color: rgba(232, 200, 140, 0.6) !important;
    box-shadow: 0 7px 20px rgba(111, 73, 18, 0.3);
    transform: translateY(-1px);
}

#datatable [id^="wishlistAdd"] .btn.btn-success:active,
#datatable [id^="wishlistAdd"] .btn-success:active {
    background: linear-gradient(135deg, #9a6a22 0%, #5e3d0e 100%) !important;
    border-color: rgba(232, 200, 140, 0.5) !important;
    transform: translateY(0);
}

.sws-summary-card {
    padding: 1.35rem 1.35rem 1.5rem;
}

.sws-summary-top {
    display: flex;
    justify-content: space-between;
    gap: 0.8rem;
    align-items: center;
    margin-bottom: 1rem;
}

.sws-summary-top h2 {
    margin: 0;
    font-size: 1.2rem;
    font-weight: 700;
}

.sws-pill {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 0.25rem 0.7rem;
    background: linear-gradient(180deg, #fbf8f1 0%, #e3ddce 100%);
    border: 1px solid rgba(var(--sws-line-rgb), 0.44);
    color: var(--sws-brand-strong);
    font-size: 0.74rem;
    font-weight: 700;
}

.sws-metric-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.7rem;
    margin-bottom: 1.1rem;
}

.sws-metric {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.84) 0%, rgba(246, 243, 235, 0.76) 100%);
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    border-radius: 12px;
    padding: 0.8rem;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.74);
    text-align: center;
}

.sws-metric-label {
    margin: 0;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sws-text-muted);
    font-weight: 700;
}

.sws-metric-value {
    margin: 0.3rem 0 0;
    font-size: 1.08rem;
    font-weight: 700;
    color: #272521;
}

.sws-lot-table-wrap {
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    border-radius: 13px;
    overflow: hidden;
    background: rgba(var(--sws-glass-rgb), 0.58);
    box-shadow: 0 12px 30px rgba(var(--sws-shadow-rgb), 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.65);
}

.sws-lot-table {
    width: 100%;
    border-collapse: collapse;
    margin: 0;
}

.sws-lot-table thead th {
    background: linear-gradient(180deg, rgba(250, 248, 242, 0.86) 0%, rgba(242, 239, 230, 0.72) 100%);
    color: #433e37;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.67rem;
    padding: 0.68rem 0.66rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.18);
}

.sws-lot-table td {
    padding: 0.72rem 0.66rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
    font-size: 0.86rem;
    vertical-align: middle;
}

.sws-lot-badge {
    display: inline-block;
    background: linear-gradient(180deg, #fbf9f3 0%, #f3eee3 100%);
    border: 1px solid #d5cfc1;
    color: #48443f;
    border-radius: 10px;
    padding: 0.15rem 0.34rem;
    font-weight: 700;
    line-height: 1.1;
    min-width: 48px;
    font-size: 0.72rem;
    text-align: center;
}

.sws-summary-card > .sws-lot-table-wrap .sws-lot-table thead th:first-child,
.sws-summary-card > .sws-lot-table-wrap .sws-lot-table thead th:last-child {
    text-align: center;
}

.sws-summary-card > .sws-lot-table-wrap .sws-lot-table tbody td:first-child,
.sws-summary-card > .sws-lot-table-wrap .sws-lot-table tbody td:last-child {
    text-align: center;
}

.sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin thead th:first-child,
.sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin tbody td:first-child {
    text-align: left;
}

.sws-summary-card > .sws-lot-table-wrap .sws-lot-badge {
    min-width: 40px;
    padding: 0.08rem 0.26rem;
    font-size: 0.66rem;
    border-radius: 6px;
    background: rgba(249, 247, 241, 0.72);
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    color: #635d55;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
    line-height: 1.1;
    white-space: normal;
}

.sws-summary-card > .sws-lot-table-wrap td:last-child .sws-action-btn {
    min-width: 76px;
    min-height: 2.05rem;
    padding: 0.34rem 0.76rem;
    border-radius: 999px;
    font-size: 0.76rem;
    font-weight: 700;
}

.sws-summary-card > .sws-lot-table-wrap td:last-child .sws-btn-secondary,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] input {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    color: #524c43 !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.sws-summary-card > .sws-lot-table-wrap td:last-child .sws-btn-secondary:hover,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn:hover,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] input:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    color: var(--sws-brand-strong) !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.sws-summary-card > .sws-lot-table-wrap td:last-child .sws-btn-primary {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border: 1px solid rgba(209, 185, 129, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-summary-card > .sws-lot-table-wrap td:last-child .sws-btn-primary:hover {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%) !important;
    border-color: rgba(209, 185, 129, 0.52) !important;
    color: #fff !important;
    box-shadow: 0 7px 20px rgba(75, 24, 36, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

/* The Bid that add_wishlist.php swaps in after Add. */
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn.btn-success,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn-success {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%) !important;
    border: 1px solid rgba(232, 200, 140, 0.42) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn.btn-success:hover,
.sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn-success:hover {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%) !important;
    border-color: rgba(232, 200, 140, 0.6) !important;
    color: #fff !important;
    box-shadow: 0 7px 20px rgba(111, 73, 18, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-qty-cell {
    white-space: nowrap;
}

.sws-mobile-meta {
    display: none;
    margin-top: 0.24rem;
    color: #726e68;
    font-size: 0.74rem;
    line-height: 1.45;
}

.sws-mobile-meta-item {
    display: block;
}

.sws-product-inline-badges {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-left: 0.5rem;
    vertical-align: middle;
}

.sws-product-note-badge {
    border: 1px solid rgba(var(--sws-line-rgb), 0.34);
    border-radius: 999px;
    padding: 0.2rem 0.58rem;
    font-size: 0.64rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    line-height: 1.25;
    text-transform: uppercase;
    color: #a3263c;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82));
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
    cursor: pointer;
}

.sws-product-note-badge:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%);
    border-color: rgba(var(--sws-line-rgb), 0.52);
    color: #8a1d31;
}

/* Lot number above the wine name; phones only, where the Lot column is hidden. */
.sws-lot-fold {
    display: none;
}

.sws-table-note {
    margin-top: 0.8rem;
    margin-bottom: 0;
    font-size: 0.78rem;
    color: var(--sws-text-muted);
}

.sws-upcoming-page {
    max-width: 1100px;
}

.sws-upcoming-table-wrap {
    margin-bottom: 0.4rem;
}

.sws-upcoming-empty {
    padding: 2rem 1rem !important;
    text-align: center;
    color: var(--sws-text-muted);
    font-style: italic;
}

/* Catalogue index */
.sws-catalogue-table {
    min-width: 540px;
}

.sws-catalogue-col-wine a {
    color: var(--sws-brand-strong);
    text-decoration: none;
}

.sws-catalogue-col-wine a:hover {
    text-decoration: underline;
}

.sws-catalogue-col-lots {
    width: 4.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--sws-text-muted);
}

.sws-catalogue-col-action {
    width: 5.5rem;
    text-align: right;
}

.sws-catalogue-show {
    min-width: 0;
    padding: 0.32rem 0.85rem;
    height: auto;
    border-radius: 999px;
    font-size: 0.78rem;
    font-weight: 600;
}

/* Buy It Now catalogue index — wider; right-aligned numeric cols */
.sws-bin-catalogue-table {
    min-width: 720px;
}

.sws-bin-col-avail {
    width: 5.5rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    color: var(--sws-text-muted);
}

.sws-bin-col-price {
    width: 9rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    color: #4a1b27;
    font-weight: 600;
}

.sws-upcoming-table {
    min-width: 720px;
}

.sws-upcoming-table thead th {
    text-align: left;
    white-space: nowrap;
}

.sws-upcoming-th-sub {
    display: block;
    font-size: 0.58rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    color: var(--sws-text-muted);
    text-transform: uppercase;
    margin-top: 0.1rem;
}

.sws-upcoming-table tbody tr:nth-child(even) {
    background: rgba(var(--sws-glass-rgb), 0.56);
}

.sws-upcoming-table tbody tr:hover {
    background: rgba(var(--sws-hover-rgb), 0.28);
}

.sws-upcoming-col-vintage,
.sws-upcoming-col-qty,
.sws-upcoming-col-lots {
    white-space: nowrap;
}

.sws-upcoming-col-est {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    text-align: right;
}

.sws-upcoming-col-lots {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.sws-upcoming-est {
    color: #4a1b27;
    font-weight: 600;
}

.sws-review-grid {
    margin-top: 1.3rem;
    display: grid;
    gap: 1rem;
}

.sws-review-card {
    padding: 1.15rem 1.25rem;
}

.sws-review-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.9rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.22);
    margin-bottom: 0.78rem;
    padding-bottom: 0.72rem;
}

.sws-review-title {
    margin: 0;
    font-size: 1.05rem;
    color: #3f2c26;
    font-weight: 700;
}

.sws-review-meta {
    margin: 0.22rem 0 0;
    font-size: 0.78rem;
    color: var(--sws-text-muted);
}

.sws-score-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    border-radius: 999px;
    background: linear-gradient(180deg, #fbf8f1 0%, #e3ddce 100%);
    border: 1px solid rgba(var(--sws-line-rgb), 0.46);
    color: #6c2735;
    font-size: 0.95rem;
    font-weight: 700;
    padding: 0.4rem 0.82rem;
    white-space: nowrap;
}

.sws-review-body p {
    margin: 0.55rem 0;
    font-size: 0.9rem;
}

.sws-terms {
    margin-top: 1.3rem;
    padding: 1rem 1.1rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.16);
    border-left: 4px solid var(--sws-accent);
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.9) 0%, rgba(248, 245, 237, 0.76) 100%);
    box-shadow: 0 12px 28px rgba(var(--sws-shadow-rgb), 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.sws-terms h3 {
    margin-top: 0;
    font-size: 0.98rem;
}

.sws-terms ul {
    margin-bottom: 0;
    padding-left: 1.15rem;
}

.sws-terms li {
    font-size: 0.84rem;
    color: #4f4c47;
    margin-bottom: 0.35rem;
}

.sws-empty-state {
    padding: 2.1rem 1.2rem;
    text-align: center;
}

.sws-empty-state h2 {
    font-size: 1.35rem;
}

.sws-footer {
    background: linear-gradient(120deg, #201e1c, #181715);
    color: #f6f3ed;
    padding: 2.8rem 0 1.3rem;
    margin-top: 1.5rem;
}

.sws-footer-title {
    margin-top: 0;
    font-size: 1.25rem;
}

.sws-footer-heading {
    font-size: 0.86rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #d8c3c8;
}

.sws-footer-copy {
    font-size: 0.88rem;
    color: #d4d1ca;
}

.sws-footer-copy a {
    color: #eeeae4;
    text-decoration: none;
}

.sws-footer-copy a:hover {
    color: #fff;
    text-decoration: underline;
}

.sws-footer-social {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.3rem;
    font-size: 0.86rem;
    color: #dad6cf;
    text-decoration: none;
}

.sws-footer-social:hover {
    color: #fff;
}

.sws-footer-social .bi {
    font-size: 1.1rem;
}

.sws-footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sws-footer-links li {
    margin-bottom: 0.48rem;
}

.sws-footer-links a {
    color: #f2e8e5;
    font-size: 0.88rem;
}

.sws-footer-links a:hover {
    color: #fff;
}

.sws-footer-base {
    margin-top: 1.7rem;
    border-top: 1px solid rgba(255, 255, 255, 0.16);
    padding-top: 0.95rem;
    font-size: 0.76rem;
    color: #b5b0a9;
}

.sws-lightbox {
    position: fixed;
    inset: 0;
    background: rgba(var(--sws-shadow-rgb), 0.88);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 1200;
    padding: 1rem;
}

.sws-lightbox.is-open {
    display: flex;
}

.sws-lightbox img {
    max-width: min(980px, 94vw);
    max-height: 88vh;
    border-radius: 14px;
    border: 1px solid rgba(255, 255, 255, 0.22);
}

.sws-lightbox-close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: 0;
    background: rgba(255, 255, 255, 0.9);
    color: #1e1816;
    font-size: 1.5rem;
    line-height: 1;
}

.sws-section-title {
    margin: 0 0 0.65rem;
    font-size: 1.18rem;
}

.sws-form-card {
    padding: 1.2rem;
}

.sws-auth-wrap {
    max-width: 460px;
    margin: 0 auto;
}

.sws-auth-card {
    padding: clamp(1.4rem, 3vw, 2rem);
}

.sws-auth-head {
    margin-bottom: 1.25rem;
    text-align: center;
}

.sws-auth-head h2 {
    margin: 0 0 0.35rem;
    color: #4a1b27;
    font-size: clamp(1.45rem, 2.4vw, 1.85rem);
    line-height: 1.15;
}

.sws-auth-head p {
    margin: 0;
    color: var(--sws-text-muted);
    font-size: 0.92rem;
}

.sws-auth-form {
    display: block;
}

.sws-auth-field {
    margin-bottom: 0.95rem;
}

.sws-auth-label-row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}

.sws-auth-forgot {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--sws-brand);
}

/* DOM order: label, password field, then link. Tab skips toggle + Forgotten? (tabindex="-1" in login.php). */
.sws-auth-field--password {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-rows: auto auto;
    column-gap: 0.5rem;
    row-gap: 0.35rem;
    align-items: baseline;
}

.sws-auth-field--password > .sws-form-label {
    grid-column: 1;
    grid-row: 1;
    margin: 0;
}

.sws-auth-field--password > .sws-auth-input-wrap {
    grid-column: 1 / -1;
    grid-row: 2;
}

.sws-auth-field--password > .sws-auth-forgot {
    grid-column: 2;
    grid-row: 1;
    justify-self: end;
}

.sws-auth-input-wrap {
    position: relative;
}

.sws-auth-input-wrap .bi {
    position: absolute;
    top: 50%;
    left: 0.78rem;
    transform: translateY(-50%);
    color: rgba(74, 27, 39, 0.5);
    pointer-events: none;
}

.sws-auth-input-wrap .sws-input {
    min-height: 2.85rem;
    padding-left: 2.35rem;
    padding-right: 2.6rem;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.92);
}

.sws-auth-input-wrap:focus-within .bi {
    color: var(--sws-brand);
}

.sws-auth-toggle {
    position: absolute;
    top: 50%;
    right: 0.4rem;
    transform: translateY(-50%);
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: 8px;
    background: transparent;
    color: rgba(74, 27, 39, 0.55);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.sws-auth-toggle:hover,
.sws-auth-toggle:focus {
    color: var(--sws-brand);
    background: rgba(var(--sws-line-rgb), 0.08);
}

.sws-auth-check {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.4rem 0 1.25rem;
    color: #55524d;
    font-size: 0.9rem;
}

.sws-auth-check input {
    accent-color: var(--sws-brand);
}

.sws-auth-submit {
    display: block;
    width: 100%;
    min-height: 2.95rem;
    font-size: 0.98rem;
}

.sws-auth-foot {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
    text-align: center;
    color: var(--sws-text-muted);
    font-size: 0.9rem;
}

.sws-auth-foot a {
    font-weight: 700;
    color: var(--sws-brand);
}

/* Supporting detail inside an auth alert: the bold line above carries the
 * message, these are the "what to do next" points. */
.sws-auth-notes {
    margin: 0.45rem 0 0;
    padding-left: 1.15rem;
}

.sws-auth-notes li {
    margin-bottom: 0.25rem;
}

.sws-auth-notes li:last-child {
    margin-bottom: 0;
}

.sws-legal-page {
    max-width: 880px;
    margin: 0 auto;
}

.sws-legal-card {
    padding: clamp(1.4rem, 3vw, 2.4rem);
    margin-bottom: 1.2rem;
}

.sws-legal-article h2,
.sws-legal-article h3 {
    color: #4a1b27;
}

.sws-legal-article h2 {
    margin: 0.15rem 0 1rem;
    font-size: clamp(1.6rem, 2.6vw, 2.4rem);
    line-height: 1.12;
}

.sws-legal-article h3 {
    margin: 1.4rem 0 0.65rem;
    font-size: 1.18rem;
}

.sws-legal-article p {
    line-height: 1.72;
}

.sws-legal-lead {
    color: #363430;
    font-size: 1.05rem;
    line-height: 1.7;
    margin-bottom: 1.4rem;
}

.sws-legal-content {
    color: #363430;
    font-size: 0.95rem;
    line-height: 1.72;
}

.sws-legal-content p {
    margin: 0 0 0.85rem;
}

.sws-legal-content b,
.sws-legal-content strong {
    color: #4a1b27;
}

.sws-legal-content a {
    font-weight: 700;
}

.sws-legal-content ul,
.sws-legal-content ol {
    margin: 0 0 0.95rem 1.1rem;
    padding: 0;
}

.sws-legal-content li {
    margin-bottom: 0.35rem;
}

.sws-legal-content table {
    width: 100% !important;
    margin: 1rem 0 1.2rem !important;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid rgba(var(--sws-line-rgb), 0.16);
    border-radius: 12px;
    overflow: hidden;
    background: rgba(var(--sws-glass-rgb), 0.7);
}

.sws-legal-content td {
    padding: 0.62rem 0.72rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
    vertical-align: top;
}

.sws-legal-content tr:first-child td {
    border-top: 0;
}

.sws-legal-content td:first-child {
    width: 32%;
    color: #4a1b27;
    font-weight: 700;
}

.sws-legal-content img {
    max-width: 100%;
    height: auto;
}

/* Terms (beta): numbered clause lists + definitions table column */
.sws-legal-content .sws-terms-numbered {
    margin: 0.65rem 0 1rem;
    padding-left: 1.35rem;
    list-style-position: outside;
}

.sws-legal-content .sws-terms-numbered > li {
    margin-bottom: 0.65rem;
    padding-left: 0.35rem;
}

.sws-legal-content .sws-terms-numbered > li:last-child {
    margin-bottom: 0;
}

.sws-legal-content .sws-terms-sublist {
    margin: 0.5rem 0 0;
    padding-left: 1.25rem;
}

.sws-legal-content .sws-terms-sublist > li {
    margin-bottom: 0.45rem;
}

.sws-legal-content table.sws-terms-definitions td:first-child {
    width: auto;
    max-width: 12.5rem;
}

/* Definitions: stack term / meaning on small phones (avoids wide two-column table) */
@media (max-width: 575.98px) {
    .sws-legal-content table.sws-terms-definitions {
        display: block;
        width: 100% !important;
        border: 0;
        border-radius: 0;
        background: transparent;
        overflow: visible;
    }

    .sws-legal-content table.sws-terms-definitions tbody {
        display: block;
    }

    .sws-legal-content table.sws-terms-definitions tr {
        display: block;
        width: 100%;
        margin: 0 0 0.65rem;
        border: 1px solid rgba(var(--sws-line-rgb), 0.16);
        border-radius: 10px;
        overflow: hidden;
        background: rgba(var(--sws-glass-rgb), 0.7);
    }

    .sws-legal-content table.sws-terms-definitions tr:first-child td {
        border-top: 0;
    }

    .sws-legal-content table.sws-terms-definitions td {
        display: block;
        width: 100% !important;
        max-width: none !important;
        box-sizing: border-box;
    }

    .sws-legal-content table.sws-terms-definitions td:first-child {
        border-top: 0;
        padding-bottom: 0.35rem;
    }

    .sws-legal-content table.sws-terms-definitions td + td {
        border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
        padding-top: 0.5rem;
        font-weight: 400;
        color: #363430;
    }
}

.sws-legal-contact {
    text-align: center;
    color: var(--sws-text-muted);
}

.sws-legal-contact a {
    font-weight: 800;
}

.sws-contact-grid {
    margin: 0.4rem 0 0.5rem;
    padding-top: 1.4rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.2);
}

.sws-contact-grid h3 {
    margin: 0 0 0.85rem;
}

.sws-contact-line {
    display: flex;
    align-items: baseline;
    gap: 0.65rem;
    margin: 0 0 0.55rem;
    color: #363430;
}

.sws-contact-line--top {
    align-items: baseline;
    align-items: first baseline;
}

.sws-contact-line a {
    font-weight: 700;
}

.sws-contact-icon {
    flex-shrink: 0;
    width: 1.1rem;
    height: 1.1rem;
    text-align: center;
    color: var(--sws-brand);
    font-size: 0.95rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transform: translateY(0.05rem);
}

.sws-contact-label {
    flex-shrink: 0;
    min-width: 4.5rem;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--sws-text-muted);
}

.sws-contact-value {
    flex: 1 1 auto;
}

.sws-contact-muted {
    color: var(--sws-text-muted);
    font-size: 0.85em;
}

.sws-contact-address {
    margin: 0;
    color: #363430;
    font-style: normal;
    line-height: 1.55;
    flex: 1 1 auto;
}

.sws-contact-note {
    margin: 0.85rem 0 0;
    color: var(--sws-text-muted);
    font-size: 0.88rem;
    line-height: 1.55;
}

.sws-contact-map {
    margin-top: 1.6rem;
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    background: rgba(var(--sws-glass-rgb), 0.6);
}

.sws-contact-map iframe {
    display: block;
    width: 100%;
    height: clamp(280px, 50vw, 460px);
    border: 0;
}

@media (max-width: 575.98px) {
    .sws-contact-line {
        flex-wrap: wrap;
        gap: 0.4rem 0.55rem;
    }

    .sws-contact-label {
        min-width: 3.5rem;
    }
}

.sws-notes-content h3 {
    margin: 1.6rem 0 0.55rem;
    color: #4a1b27;
    font-size: 1.05rem;
}

/* Legacy notes HTML wraps many terms in <b>; whole cells were bold via td:first-child — keep terms bold only */
.sws-legal-content.sws-notes-content td {
    font-weight: 400;
    color: #363430;
}

.sws-legal-content.sws-notes-content td b,
.sws-legal-content.sws-notes-content td strong {
    font-weight: 700;
    color: #4a1b27;
}

.sws-notes-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.sws-notes-content table tbody {
    display: table;
    width: 100%;
    min-width: 420px;
}

/* Bordeaux ullage: wider definitions column, infographic hugging the right */
.sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) td:first-child:not([rowspan]) {
    width: 70%;
    max-width: none;
}

.sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) td[rowspan] {
    width: 30%;
    max-width: 280px;
    text-align: right;
    vertical-align: top;
}

@media (max-width: 575.98px) {
    .sws-legal-content td:first-child {
        width: 38%;
    }

    .sws-legal-content td {
        padding: 0.55rem 0.6rem;
    }

    /* Phone only: stack ullage definitions first, infographic last */
    .sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) tbody {
        display: flex;
        flex-direction: column;
        min-width: 0;
    }

    .sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) tr {
        display: contents;
    }

    .sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) td:not([rowspan]) {
        order: 1;
        width: 100% !important;
    }

    .sws-legal-content.sws-notes-content table:has(img[src*="ullages_graphic"]) td[rowspan] {
        order: 10;
        width: 100% !important;
        max-width: none;
        text-align: center;
        padding-top: 1rem;
        border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
    }
}

.sws-about-page {
    max-width: 880px;
    margin: 0 auto;
}

.sws-about-article-card {
    padding: clamp(1.4rem, 3vw, 2.4rem);
    margin-bottom: 1.2rem;
}

.sws-about-article h2,
.sws-about-article h3 {
    color: #4a1b27;
}

.sws-about-article h2 {
    margin: 0.15rem 0 1rem;
    font-size: clamp(1.6rem, 2.6vw, 2.4rem);
    line-height: 1.12;
}

.sws-about-article h3 {
    margin: 0 0 0.65rem;
    font-size: 1.18rem;
}

.sws-about-article p {
    line-height: 1.72;
}

.sws-about-lead {
    color: #363430;
    font-size: 1.05rem;
    line-height: 1.7;
}

.sws-about-quote {
    margin: 1.6rem 0;
    padding: 0.4rem 0 0.4rem 1.1rem;
    border-left: 3px solid var(--sws-brand);
    color: #4a1b27;
    font-size: 1.08rem;
    font-weight: 600;
    line-height: 1.5;
    font-style: italic;
}

.sws-about-metrics {
    margin: 0 0 1.85rem;
}

.sws-about-services {
    margin-top: 0.4rem;
    padding-top: 1.6rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.2);
}

.sws-about-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    margin-top: 1rem;
}

.sws-about-contact {
    text-align: center;
    color: var(--sws-text-muted);
}

.sws-about-contact a {
    font-weight: 800;
}

/* Numbered steps used on selling.php */
.sws-selling-steps {
    list-style: none;
    padding: 0;
    margin: 0 0 1.6rem;
    display: grid;
    gap: 0.7rem;
    counter-reset: sws-step;
}

.sws-selling-step {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.95rem;
    align-items: start;
    padding: 0.85rem 1.05rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.2);
    border-radius: 14px;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.85) 0%, rgba(var(--sws-glass-rgb), 0.6) 100%);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) inset, 0 6px 14px -10px rgba(76, 31, 41, 0.18);
}

.sws-selling-step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.15rem;
    height: 2.15rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    flex-shrink: 0;
    box-shadow: 0 4px 10px -4px rgba(76, 31, 41, 0.45), 0 0 0 3px rgba(209, 185, 129, 0.18);
}

.sws-selling-step-body p {
    margin: 0;
}

/* Reusable brand-themed callout (notifyme_wanted.php and other CTA highlights) */
.sws-callout {
    margin: 1rem 0 1.1rem;
    padding: 0.85rem 1rem;
    border-left: 3px solid var(--sws-brand);
    background: rgba(var(--sws-glass-rgb), 0.7);
    border-radius: 0 10px 10px 0;
    font-size: 0.92rem;
    line-height: 1.55;
}

.sws-callout p {
    margin: 0;
}

.sws-callout a {
    color: var(--sws-brand);
    font-weight: 700;
}

/* ============================================================================
 * Most Wanted Wines (new/notifyme_wanted.php)
 * ========================================================================== */

.sws-mw-page {
    max-width: 1080px;
}

.sws-mw-card {
    padding: 1.4rem 1.6rem 1.6rem;
}

.sws-mw-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 0.85rem;
    margin: 0 0 0.9rem;
}

.sws-mw-cta-note {
    color: var(--sws-text-muted);
    font-size: 0.84rem;
}

.sws-mw-count {
    margin: 0 0 0.6rem;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
    letter-spacing: 0.02em;
}

.sws-mw-scroll {
    max-height: 70vh;
    overflow-y: auto;
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    border-radius: 12px;
    background: #fff;
}

.sws-lot-table--mw thead th {
    position: sticky;
    top: 0;
    z-index: 1;
}

.sws-lot-table--mw .sws-mw-col-vint,
.sws-lot-table--mw .sws-mw-col-demand {
    width: 1%;
    white-space: nowrap;
}

.sws-lot-table--mw .sws-mw-col-demand {
    text-align: center;
}

.sws-mw-demand-badge {
    display: inline-block;
    min-width: 2rem;
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    background: var(--sws-brand-soft, rgba(228, 199, 205, 0.55));
    color: var(--sws-brand-strong);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    font-size: 0.82rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
}

.sws-mw-sub {
    display: none;
    color: var(--sws-text-muted);
    font-size: 0.74rem;
    font-weight: 500;
    margin-top: 0.15rem;
}

@media (max-width: 767.98px) {
    .sws-lot-table--mw .sws-mw-col-blend,
    .sws-lot-table--mw .sws-mw-col-region {
        display: none;
    }

    .sws-mw-sub {
        display: block;
    }

    .sws-mw-scroll {
        max-height: 60vh;
    }

    .sws-lot-table--mw thead th,
    .sws-lot-table--mw tbody td {
        font-size: 0.78rem;
        padding: 0.45rem 0.5rem;
    }
}

/* ============================================================================
 * Self Valuation tool (new/draftConsignment.php)
 * Reuses .sws-card, .sws-card-head, .sws-lot-table, .sws-btn, .sws-input,
 * .sws-form-label and .sws-alert. The rules below add only the bits that are
 * unique to this page: typeahead search panel, in-modal selected-wine card,
 * unlisted-wine collapsible, valuation table totals row, and CTA card on the
 * public landing.
 * ========================================================================== */

.sws-sv-page {
    max-width: 1080px;
}

/* Public landing CTA card */
.sws-sv-cta-card {
    margin: 1.6rem 0 1.4rem;
    padding: 1.6rem 1.4rem;
    text-align: center;
    border-radius: 16px;
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92) 0%, rgba(249, 246, 237, 0.6) 100%);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.7) inset, 0 8px 18px -14px rgba(76, 31, 41, 0.2);
}

.sws-sv-cta-eyebrow {
    margin: 0 0 1rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-sv-cta-actions {
    justify-content: center;
}

.sws-sv-cta-fineprint {
    margin: 1rem 0 0;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
}

.sws-sv-feature-list {
    margin: 0 0 1.4rem;
    padding-left: 1.2rem;
    line-height: 1.72;
}

.sws-sv-feature-list li {
    margin-bottom: 0.25rem;
}

.sws-sv-context,
.sws-sv-fineprint {
    font-size: 0.86rem;
    color: var(--sws-text-muted);
    line-height: 1.6;
}

.sws-sv-fineprint {
    font-size: 0.78rem;
    margin-top: 0.6rem;
}

/* Authenticated tool */
.sws-sv-card {
    padding: 1.4rem 1.6rem 1.6rem;
    margin-bottom: 1.1rem;
}

.sws-sv-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin-bottom: 1.1rem;
}

.sws-sv-empty {
    padding: 1.1rem 0.2rem 0.4rem;
    color: var(--sws-text-muted);
    font-size: 0.95rem;
}

.sws-sv-tablewrap {
    margin: 0 -0.4rem;
}

/* Compact table tuning for the valuation pages (uses .sws-lot-table base) */
.sws-lot-table--sv {
    font-size: 0.86rem;
}

.sws-lot-table--sv th,
.sws-lot-table--sv td {
    padding: 0.5rem 0.55rem;
    vertical-align: middle;
}

.sws-lot-table--sv .sws-sv-wine-sub {
    font-size: 0.74rem;
    font-weight: 500;
    color: var(--sws-text-muted);
    margin-top: 0.15rem;
}

.sws-lot-table--sv .sws-sv-muted {
    color: var(--sws-text-muted);
}

.sws-lot-table--sv .sws-sv-col-del {
    width: 2.6rem;
    text-align: center;
}

.sws-lot-table--sv tfoot tr.sws-sv-totals td {
    font-weight: 700;
    border-top: 2px solid rgba(var(--sws-line-rgb), 0.3);
    background: rgba(249, 247, 241, 0.42);
    color: var(--sws-brand-strong);
}

.sws-sv-remove {
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    background: rgba(255, 255, 255, 0.7);
    color: var(--sws-text-muted);
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 999px;
    line-height: 1;
    font-size: 1.05rem;
    cursor: pointer;
    transition: color 0.15s, background 0.15s, border-color 0.15s;
}

.sws-sv-remove:hover {
    color: var(--sws-danger, #b54258);
    background: rgba(248, 234, 235, 0.85);
    border-color: rgba(181, 66, 88, 0.35);
}

.sws-sv-footer-card {
    padding-top: 1.1rem;
}

.sws-sv-footer-actions {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 0.8rem;
}

.sws-sv-poweredby {
    margin: 0.4rem 0 0;
    font-size: 0.7rem;
    color: var(--sws-text-muted);
    text-align: right;
    letter-spacing: 0.04em;
}

/* Add Wine modal: typeahead search */
.sws-sv-search-wrap {
    position: relative;
}

.sws-sv-search-input {
    padding-right: 5.5rem;
}

.sws-sv-spinner {
    display: none;
    position: absolute;
    right: 0.85rem;
    top: 2.05rem;
    font-size: 0.78rem;
    color: var(--sws-text-muted);
}

.sws-sv-spin-icon {
    display: inline-block;
    width: 12px;
    height: 12px;
    border: 2px solid rgba(var(--sws-line-rgb), 0.3);
    border-top-color: var(--sws-brand);
    border-radius: 50%;
    animation: sws-sv-spin 0.6s linear infinite;
    vertical-align: middle;
    margin-right: 0.3rem;
}

@keyframes sws-sv-spin {
    to { transform: rotate(360deg); }
}

/* Float the dropdown as an overlay below the search input so it can extend
 * beyond the modal bounds (instead of resizing the modal). The Add Wine modal
 * (.sws-sv-modal--add) opts out of modal-dialog-scrollable + sets overflow
 * visible on modal-content/body so this absolute layer can spill out. */
.sws-sv-dropdown {
    position: absolute;
    z-index: 5;
    left: 0;
    right: 0;
    top: calc(100% + 0.4rem);
    max-height: 420px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid rgba(var(--sws-line-rgb), 0.28);
    border-radius: 12px;
    box-shadow: 0 14px 30px -14px rgba(var(--sws-shadow-rgb), 0.32);
    display: none;
}

/* Allow the typeahead overlay to escape the Add Wine modal-content/body. */
.sws-sv-modal--add .modal-content,
.sws-sv-modal--add .modal-body {
    overflow: visible;
}

.sws-sv-item {
    padding: 0.6rem 0.85rem;
    cursor: pointer;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.12);
    transition: background 0.12s;
}

.sws-sv-item:last-child {
    border-bottom: 0;
}

.sws-sv-item:hover {
    background: rgba(249, 247, 241, 0.55);
}

.sws-sv-item .sws-sv-vint {
    float: right;
    font-size: 0.74rem;
    color: var(--sws-text-muted);
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.sws-sv-item .sws-sv-title {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--sws-brand-strong);
}

.sws-sv-item .sws-sv-sub {
    font-size: 0.78rem;
    color: var(--sws-text-muted);
    margin-top: 0.1rem;
}

.sws-sv-hint,
.sws-sv-tips {
    padding: 0.7rem 0.85rem;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
    line-height: 1.5;
}

.sws-sv-hint {
    font-style: italic;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.12);
}

.sws-sv-tips a {
    color: var(--sws-brand);
    font-weight: 600;
}

/* Selected-wine card inside the modal */
.sws-sv-selected {
    display: none;
    margin-top: 1rem;
    padding: 1rem 1.05rem 0.95rem;
    background: rgba(249, 247, 241, 0.45);
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    border-radius: 12px;
}

.sws-sv-sel-title {
    font-weight: 700;
    font-size: 0.98rem;
    color: var(--sws-brand-strong);
    margin-bottom: 0.15rem;
}

.sws-sv-sel-sub {
    font-size: 0.78rem;
    color: var(--sws-text-muted);
    margin-bottom: 0.85rem;
}

.sws-sv-form-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem 0.85rem;
    margin-bottom: 0.55rem;
}

.sws-sv-form-row .sws-form-label {
    width: 7rem;
    margin: 0;
}

.sws-sv-select-narrow,
.sws-sv-qty-input {
    width: auto;
    min-width: 5rem;
    flex: 0 0 auto;
}

.sws-sv-select-narrow {
    min-width: 11rem;
}

.sws-sv-qty-input {
    max-width: 5.5rem;
}

.sws-sv-input-wide {
    flex: 1 1 16rem;
    min-width: 14rem;
}

.sws-sv-value-wrap {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.sws-sv-value-input {
    width: 8rem;
}

.sws-sv-value-each {
    font-size: 0.76rem;
    color: var(--sws-text-muted);
}

/* Inline hint placed below an input, indented to line up with the field
 * (after the 7rem .sws-form-label column on desktop). */
.sws-sv-field-hint {
    flex-basis: 100%;
    margin: 0.2rem 0 0 7rem;
    font-size: 0.74rem;
    color: var(--sws-text-muted);
    font-style: italic;
}

.sws-sv-estimate {
    font-weight: 700;
    color: var(--sws-brand-strong);
    font-variant-numeric: tabular-nums;
}

.sws-sv-action-row {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.85rem;
}

.sws-sv-result {
    display: none;
    margin-top: 0.7rem;
}

/* Unlisted-wine collapsible inside the Add Wine modal */
.sws-sv-unlisted-section {
    margin-top: 1.15rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
}

.sws-sv-unlisted-toggle {
    background: none;
    border: 0;
    padding: 0;
    font-weight: 700;
    font-size: 0.88rem;
    color: var(--sws-brand-strong);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.sws-sv-unlisted-toggle:hover {
    color: var(--sws-brand);
}

.sws-sv-unlisted-arrow {
    display: inline-block;
    transition: transform 0.18s ease;
    font-size: 1rem;
    line-height: 1;
}

.sws-sv-unlisted-arrow.is-open {
    transform: rotate(90deg);
}

.sws-sv-unlisted-form {
    margin-top: 0.7rem;
    padding: 0.85rem 0.95rem 0.45rem;
    background: rgba(var(--sws-glass-rgb), 0.7);
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    border-radius: 12px;
}

.sws-sv-unlisted-help {
    margin: 0 0 0.75rem;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
}

@media (max-width: 575.98px) {
    .sws-sv-form-row .sws-form-label {
        width: 100%;
    }

    .sws-sv-field-hint {
        margin-left: 0;
    }

    .sws-sv-select-narrow,
    .sws-sv-input-wide {
        flex: 1 1 100%;
        min-width: 0;
        width: 100%;
    }

    .sws-sv-item .sws-sv-vint {
        float: none;
        display: block;
        text-align: left;
        margin-top: 0.15rem;
    }

    .sws-sv-footer-actions {
        justify-content: stretch;
    }

    .sws-sv-footer-actions .sws-btn {
        width: 100%;
    }
}

.sws-input,
.sws-select,
.sws-textarea {
    width: 100%;
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32);
    border-radius: 10px;
    padding: 0.62rem 0.72rem;
    font-size: 0.93rem;
    color: #292722;
    background: #fffefb;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.sws-input:hover,
.sws-select:hover,
.sws-textarea:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5);
    background: #fffefd;
}

.sws-input:focus,
.sws-select:focus,
.sws-textarea:focus {
    outline: none;
    border-color: var(--sws-brand-strong);
    background: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

/* Site-wide disabled / readonly state. Uses a dashed border + grey
 * fill + not-allowed cursor so users can see at a glance that the
 * field can't be edited. Applied automatically to <input disabled>,
 * [readonly] and the same on <select> / <textarea>. */
.sws-input:disabled,
.sws-input[readonly],
.sws-select:disabled,
.sws-select[readonly],
.sws-textarea:disabled,
.sws-textarea[readonly] {
    background: rgba(var(--sws-shadow-soft-rgb), 0.06);
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.28);
    border-style: dashed;
    color: #747069;
    -webkit-text-fill-color: #747069;
    cursor: not-allowed;
    box-shadow: none;
    opacity: 1;
}

.sws-input:disabled:hover,
.sws-input[readonly]:hover,
.sws-select:disabled:hover,
.sws-select[readonly]:hover,
.sws-textarea:disabled:hover,
.sws-textarea[readonly]:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.28);
    background: rgba(var(--sws-shadow-soft-rgb), 0.06);
}

.sws-form-label {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
    color: #615d57;
    display: block;
    margin-bottom: 0.36rem;
}

.sws-alert {
    border-radius: 12px;
    border: 1px solid transparent;
    padding: 0.8rem 0.95rem;
    font-size: 0.9rem;
}

.sws-alert-info {
    background: #eef1f3;
    border-color: #ccd7de;
    color: #2f414d;
}

.sws-alert-success {
    background: #edf5ef;
    border-color: #bcd9c8;
    color: #2c5f44;
}

.sws-alert-warning {
    background: #fbf8ef;
    border-color: #e0d6bd;
    color: #7a5928;
}

.sws-alert-danger {
    background: #f8eaeb;
    border-color: #e6bec2;
    color: #7b2f35;
}

table.dataTable {
    border-color: rgba(var(--sws-line-rgb), 0.14) !important;
}

table.dataTable thead th {
    background: linear-gradient(180deg, rgba(250, 248, 242, 0.86) 0%, rgba(242, 239, 230, 0.72) 100%);
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.18) !important;
    color: #3b3835;
    text-transform: uppercase;
    font-size: 0.68rem;
    letter-spacing: 0.07em;
}

table.dataTable tbody td {
    border-color: rgba(var(--sws-line-rgb), 0.1) !important;
    font-size: 0.88rem;
}

.dataTables_wrapper .dataTables_filter input {
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32);
    border-radius: 999px;
    padding: 0.34rem 0.72rem;
    background: #fffefb;
    color: #292722;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.dataTables_wrapper .dataTables_filter input:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5);
    background: #fffefd;
}

.dataTables_wrapper .dataTables_filter input:focus {
    outline: none;
    border-color: var(--sws-brand-strong);
    background: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.dataTables_wrapper .dataTables_length select {
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32);
    border-radius: 8px;
    padding: 0.25rem 1.5rem 0.25rem 0.45rem;
    background-color: #fffefb;
    color: #292722;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

.dataTables_wrapper .dataTables_length select:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5);
    background-color: #fffefd;
}

.dataTables_wrapper .dataTables_length select:focus {
    outline: none;
    border-color: var(--sws-brand-strong);
    background-color: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14);
}

/* DataTables 1.13 + Bootstrap 5: pagination uses .page-link (legacy .paginate_button may be on <li>) */
.dataTables_wrapper .dataTables_paginate .paginate_button:not(.page-item) {
    border: 1px solid #d6d3cc !important;
    border-radius: 999px !important;
    background: #fff !important;
    color: #393633 !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button.current:not(.page-item),
.dataTables_wrapper .dataTables_paginate .paginate_button.current:not(.page-item):hover {
    background: var(--sws-brand) !important;
    color: #fff !important;
    border-color: var(--sws-brand) !important;
}

.dataTables_wrapper .dataTables_paginate .paginate_button:not(.page-item):hover {
    background: #f6eff0 !important;
    color: var(--sws-brand-strong) !important;
}

.sws-demo-layout {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 1.2rem;
}

.sws-browse-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(200px, min(26vw, 300px));
    gap: 1rem;
    align-items: start;
}

.sws-browse-sidebar {
    display: flex;
    flex-direction: column;
    gap: 0;
    align-content: start;
    min-width: 0;
}

.sws-browse-main {
    min-width: 0;
}

.sws-browse-panel {
    padding: 0;
    overflow: hidden;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, var(--sws-glass) 100%);
    border-color: var(--sws-glass-border);
    box-shadow: var(--sws-layer-shadow-strong);
}

.sws-browse-panel-pad {
    padding: 1rem 1rem 0.85rem;
}

.sws-browse-panel-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    margin-bottom: 0.85rem;
}

.sws-browse-panel-head h2 {
    margin: 0;
    font-size: 1.25rem;
    line-height: 1.25;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.sws-browse-head-actions {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    flex-shrink: 0;
}

/* SEO-friendly catalogue index: compact control beside auction title */
.sws-browse-catalogue-index {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.35rem;
    height: 2.35rem;
    border-radius: 10px;
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    background: rgba(255, 255, 255, 0.62);
    color: #57544e;
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.sws-browse-catalogue-index:hover {
    background: rgba(var(--sws-glass-rgb), 0.9);
    border-color: rgba(var(--sws-line-rgb), 0.36);
    color: var(--sws-accent-deep);
    box-shadow: 0 8px 18px rgba(var(--sws-shadow-rgb), 0.08);
}

.sws-browse-catalogue-index .bi {
    font-size: 1.18rem;
    line-height: 1;
}

.sws-browse-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.65rem 1rem;
    margin: 0.15rem 0 0;
    padding-bottom: 0.9rem;
}

.sws-browse-search-slot {
    flex: 1 1 220px;
    min-width: 180px;
}

.sws-browse-length-slot {
    flex: 0 0 auto;
}

.sws-browse-toolbar-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
    margin-left: auto;
}

.sws-browse-toolbar-actions .sws-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.38rem;
    white-space: nowrap;
}

.sws-browse-toolbar-actions .sws-btn .bi {
    font-size: 1rem;
    opacity: 0.92;
}

#searchBox .dataTables_filter {
    margin: 0;
    float: none;
}

#searchBox .dataTables_filter label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #615d57;
}

#searchBox .dataTables_filter input {
    flex: 1 1 auto;
    min-width: 0;
    max-width: none;
    width: 100% !important;
    margin: 0 !important;
    padding: 0.5rem 1rem !important;
    border-radius: 999px !important;
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32) !important;
    font-size: 0.9rem;
    color: #292722;
    background: #fffefb;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

#searchBox .dataTables_filter input:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5) !important;
    background: #fffefd;
}

#searchBox .dataTables_filter input:focus {
    outline: none;
    border-color: var(--sws-brand-strong) !important;
    background: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

#swsBrowseLengthSlot {
    margin: 0;
}

#swsBrowseLengthSlot .dataTables_length {
    float: none;
    margin: 0;
}

#swsBrowseLengthSlot .dataTables_length label {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin: 0;
    font-size: 0.8rem;
    font-weight: 600;
    color: #4e4b47;
    white-space: nowrap;
}

#swsBrowseLengthSlot .dataTables_length select {
    border-radius: 999px !important;
    padding: 0.38rem 2rem 0.38rem 0.75rem !important;
    font-size: 0.86rem;
    font-weight: 600;
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32) !important;
    color: #292722;
    background-color: #fffefb;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;
}

#swsBrowseLengthSlot .dataTables_length select:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5) !important;
    background-color: #fffefd;
}

#swsBrowseLengthSlot .dataTables_length select:focus {
    outline: none;
    border-color: var(--sws-brand-strong) !important;
    background-color: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.sws-advanced {
    padding: 0.95rem;
    margin: 0.75rem 0 0;
    border: 1px solid rgba(var(--sws-line-rgb), 0.16);
    border-radius: 12px;
    background: rgba(var(--sws-glass-rgb), 0.72);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.68);
}

.sws-adv-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
}

.sws-browse-table-shell {
    width: 100%;
}

.sws-browse-panel .sws-browse-table-shell .sws-lot-table-wrap {
    margin: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

.sws-browse-table-shell .dataTables_wrapper {
    margin: 0;
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_info,
.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate {
    padding: 0.65rem 0.85rem 0.85rem;
    margin: 0;
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_info {
    padding-bottom: 0.35rem;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate {
    padding-top: 0;
    text-align: right;
}

/* Browse DataTable pagination */
.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate ul.pagination {
    gap: 0.28rem;
    flex-wrap: wrap;
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate ul.pagination .page-link {
    /* Fixed height with min-width to match: single-digit pages are true
     * circles, longer labels (12, Previous, Next) grow into even pills.
     * Bootstrap's -1px joining margin is dropped; the list gap spaces them. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 2rem;
    min-width: 2rem;
    margin-left: 0 !important;
    color: #524c43 !important;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    border-radius: 999px !important;
    padding: 0 0.7rem;
    font-size: 0.82rem;
    font-weight: 700;
    line-height: 1;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
    transition: transform 0.16s ease, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease, color 0.2s ease;
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate ul.pagination .page-item .page-link:hover {
    color: var(--sws-brand-strong) !important;
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
    transform: translateY(-1px);
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate ul.pagination .page-item.active .page-link {
    z-index: 1;
    color: #fff !important;
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border-color: rgba(209, 185, 129, 0.34) !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-browse-table-shell .dataTables_wrapper .dataTables_paginate ul.pagination .page-item.disabled .page-link {
    color: #95928c !important;
    background: rgba(248, 246, 241, 0.72) !important;
    border-color: rgba(var(--sws-line-rgb), 0.18) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.58);
    opacity: 1;
}

.sws-browse-table-shell .dataTables_wrapper::after {
    content: "";
    display: table;
    clear: both;
}

@media (min-width: 768px) {
    .sws-browse-table-shell .dataTables_wrapper .dataTables_info {
        float: left;
        clear: none;
        padding-top: 1rem;
    }

    .sws-browse-table-shell .dataTables_wrapper .dataTables_paginate {
        float: right;
        clear: none;
        padding-top: 0.85rem;
    }
}

.js-datatable-browse tbody td {
    padding: 0.6rem 0.45rem !important;
    font-size: 0.82rem !important;
    vertical-align: middle;
    /* Subtle brand-tinted hairline divider between rows, paired with the
     * faint zebra fill below. */
    border-top-color: rgba(var(--sws-line-rgb), 0.22) !important;
}

/* Browse / buyItNow datatables: white rows with our own faint zebra on
 * even rows (a heavier cream wash read as noise on long lists).
 * Two layers of framework stripe to defeat:
 *   1. Bootstrap 5's .table-striped paints odd cells via the
 *      --bs-table-bg-type / --bs-table-accent-bg custom-property chain,
 *      neutralised by setting --bs-table-striped-bg to transparent.
 *   2. DataTables 1.13's bootstrap5 wrapper *also* paints stripes, but
 *      via box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe),
 *      0.05) on every odd-row cell — completely bypasses background-
 *      colour. We knock that out with a one-class-deeper selector
 *      (the existing .js-datatable-browse) so we win specificity. */
.js-datatable-browse {
    --bs-table-striped-bg: transparent;
    --bs-table-striped-color: inherit;
}

.js-datatable-browse tbody tr {
    background-color: #fff;
    transition: background-color 0.18s ease, box-shadow 0.18s ease;
}

.js-datatable-browse tbody tr:nth-of-type(even) {
    background-color: #f9f7f3;
}

/* Lot number above the name; phones only, where the Lot column is hidden. */
.sws-browse-name-lot {
    display: none;
}

.js-datatable-browse tbody tr > * {
    background-color: transparent; /* defeats Bootstrap's per-cell stripe fill */
}

/* Knock out DataTables' box-shadow stripe on odd-row cells. Selector
 * matches DataTables' own (table.dataTable.table-striped > tbody > tr
 * :nth-of-type(2n+1) > *) plus our .js-datatable-browse class for the
 * extra specificity needed to win. */
table.dataTable.table-striped.js-datatable-browse > tbody > tr:nth-of-type(2n+1) > * {
    box-shadow: none;
}

table.dataTable.table-hover.js-datatable-browse tbody tr:hover > * {
    background-color: rgba(var(--sws-hover-rgb), 0.22) !important;
    box-shadow: none;
}

/* Name (2nd col): priority width on wide layouts; narrow = overridden in @media 991 */
table.dataTable.js-datatable-browse thead th:nth-child(2),
table.dataTable.js-datatable-browse tbody td:nth-child(2) {
    min-width: 17rem !important;
    width: 50% !important;
    max-width: none !important;
    overflow-wrap: anywhere;
    word-wrap: break-word;
}

.sws-browse-name-cell {
    min-width: 0;
}

.sws-browse-name-scaffold {
    display: none;
    margin-top: 0.35rem;
}

.sws-browse-name-scaffold .sws-mobile-meta {
    display: block;
    margin-top: 0;
}

/* Stage 2-only blocks (hidden until full scaffold at ≤768px) */
.sws-browse-meta-rest,
.sws-browse-scaffold-badges {
    display: none;
}

.sws-browse-meta-regqty {
    display: block;
}

.sws-browse-scaffold-badges {
    margin-top: 0.3rem;
}

table.dataTable.js-datatable-browse thead th {
    padding: 0.46rem 0.45rem !important;
    font-size: 0.69rem !important;
    letter-spacing: 0.06em !important;
    white-space: nowrap;
    border-bottom-color: rgba(var(--sws-line-rgb), 0.16) !important;
}

table.dataTable.js-datatable-browse thead th.sws-th-multiline {
    white-space: normal !important;
    line-height: 1.2;
    hyphens: manual;
}

/* VIP Reserve column (VIP users only) — pale yellow band */
table.dataTable.js-datatable-browse thead th.sws-dt-col-vip,
table.dataTable.js-datatable-browse tbody td.sws-dt-col-vip {
    background-color: rgba(253, 246, 223, 0.52);
    box-shadow: none;
}

table.dataTable.js-datatable-browse thead th.sws-dt-col-vip {
    background-color: rgba(250, 240, 210, 0.78);
}

/* Keep VIP column static on row hover (no extra highlight) */
table.dataTable.table-hover.js-datatable-browse tbody tr:hover > td.sws-dt-col-vip {
    background-color: rgba(253, 246, 223, 0.58) !important;
    box-shadow: none;
}

/* Current Bid, VIP Reserve, Action — centered header + cells */
table.dataTable.js-datatable-browse thead th.sws-dt-col-bid,
table.dataTable.js-datatable-browse thead th.sws-dt-col-vip,
table.dataTable.js-datatable-browse thead th.sws-dt-col-action,
table.dataTable.js-datatable-browse tbody td.sws-dt-col-bid,
table.dataTable.js-datatable-browse tbody td.sws-dt-col-vip,
table.dataTable.js-datatable-browse tbody td.sws-dt-col-action {
    text-align: center !important;
}

.sws-table-loader {
    padding: 0.8rem;
    color: #6f6b65;
    font-size: 0.88rem;
}

/* Browse rail — primary member actions (full-width, above categories) */
.sws-browse-rail-primary {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}

/*
 * Primary rail: desktop-first so sidebar buttons always show at full width.
 * Hide sidebar copy only when layout stacks (≤991.98px); show duplicate in main column there.
 */
.sws-browse-rail-primary-wrap--sidebar {
    display: block;
}

@media (max-width: 991.98px) {
    .sws-browse-rail-primary-wrap--sidebar {
        display: none !important;
    }
}

/* Below lg: duplicate rail above category picker + datatable (browse.php) */
.sws-browse-rail-primary-mobile {
    display: none;
    margin-bottom: 0.35rem;
}

.sws-browse-rail-primary-mobile .sws-browse-rail-primary {
    margin-bottom: 0;
}

@media (max-width: 991.98px) {
    .sws-browse-rail-primary-mobile {
        display: block !important;
    }
}

.sws-browse-rail-primary-btn {
    width: 100%;
    justify-content: center;
    text-align: center;
    padding: 0.72rem 1rem;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    border-radius: 12px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    box-sizing: border-box;
}

.sws-browse-rail-primary-btn.sws-btn-primary {
    box-shadow: 0 8px 22px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

/* My Bids: high-contrast “outlined” CTA — reads clearly on pale rail / page */
.sws-browse-rail-primary-btn--mybids {
    background: linear-gradient(180deg, #fffefb 0%, #f9f6ef 100%) !important;
    color: var(--sws-brand-strong) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.55) !important;
    box-shadow:
        0 2px 12px rgba(var(--sws-shadow-rgb), 0.06),
        0 0 0 1px rgba(255, 255, 255, 0.65) inset;
}

a.sws-browse-rail-primary-btn--mybids:hover,
a.sws-browse-rail-primary-btn--mybids:focus,
a.sws-browse-rail-primary-btn--mybids:focus-visible {
    color: var(--sws-brand-strong) !important;
}

.sws-browse-rail-primary-btn--mybids:hover,
.sws-browse-rail-primary-btn--mybids:focus,
.sws-browse-rail-primary-btn--mybids:focus-visible {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.7) !important;
    box-shadow: 0 6px 18px rgba(var(--sws-shadow-soft-rgb), 0.1);
}

.sws-browse-rail-primary-btn:hover {
    transform: translateY(-1px);
}

/* Browse right rail — compact; counts are plain numbers (no chips) */
.sws-browse-rail-block {
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.9) 0%, rgba(var(--sws-glass-rgb), 0.82) 100%);
    border: 1px solid var(--sws-glass-border);
    border-radius: 12px;
    padding: 0.6rem 0.65rem 0.65rem;
    margin-bottom: 0.5rem;
    box-shadow: 0 12px 28px rgba(var(--sws-shadow-rgb), 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.76);
    -webkit-backdrop-filter: blur(9px);
    backdrop-filter: blur(9px);
}

.sws-browse-sidebar > .sws-browse-rail-block:last-child {
    margin-bottom: 0;
}

/* Full-bleed brand band: negative margins cancel the block's padding and
 * the top radius sits just inside the block's 12px corner and 1px border. */
.sws-browse-rail-heading {
    margin: -0.6rem -0.65rem 0.45rem;
    padding: 0.55rem 0.65rem 0.5rem;
    border-radius: 11px 11px 0 0;
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: #fff;
}

.sws-browse-rail-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.sws-browse-rail-list li {
    margin: 0;
}

.sws-browse-rail-list a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.45rem;
    padding: 0.36rem 0.3rem;
    margin: 0 -0.25rem;
    border-radius: 6px;
    font-size: 0.8rem;
    font-weight: 500;
    line-height: 1.28;
    color: var(--sws-text);
    text-decoration: none;
    transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
}

.sws-browse-rail-list a:hover {
    background: rgba(var(--sws-hover-rgb), 0.5);
    color: var(--sws-brand-strong);
    transform: translateX(1px);
}

.sws-browse-rail-label {
    min-width: 0;
    flex: 1;
}

/* Lot lists: one line per lot so every row is the same height; the full
 * name is in the link's title tooltip. */
.sws-browse-rail-list--lots .sws-browse-rail-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sws-browse-rail-count {
    flex-shrink: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: none;
    font-variant-numeric: tabular-nums;
    font-size: 0.78rem;
    font-weight: 600;
    text-align: right;
    color: var(--sws-text-muted);
}

.sws-browse-rail-list a:hover .sws-browse-rail-count {
    color: var(--sws-accent-deep);
}

.sws-browse-rail-count--muted {
    font-weight: 500;
    color: var(--sws-text-muted);
}

.sws-browse-rail-list a:hover .sws-browse-rail-count--muted {
    color: var(--sws-accent-deep);
}

.sws-browse-rail-count--emph {
    font-weight: 700;
    color: var(--sws-accent-deep);
}

.sws-browse-rail-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.4rem;
    padding: 0.32rem 0.3rem 0;
    margin: 0.2rem -0.25rem 0;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.22);
    font-size: 0.76rem;
    font-weight: 600;
    color: #46433f;
}

.sws-browse-rail-summary .sws-browse-rail-label {
    flex: none;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.64rem;
    color: var(--sws-text-muted);
}

.sws-browse-rail-list--links a {
    font-weight: 500;
}

.sws-browse-rail-chevron {
    flex-shrink: 0;
    font-size: 0.8rem;
    color: var(--sws-accent-deep);
    opacity: 0.5;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.sws-browse-rail-list--links a:hover .sws-browse-rail-chevron {
    opacity: 0.85;
    transform: translateX(2px);
}

.sws-browse-rail-more {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.4rem;
    font-size: 0.76rem;
    font-weight: 700;
    color: var(--sws-brand);
    text-decoration: none;
}

.sws-browse-rail-more .bi {
    transition: transform 0.15s ease;
}

.sws-browse-rail-more:hover {
    color: var(--sws-brand-strong);
}

.sws-browse-rail-more:hover .bi {
    transform: translateX(3px);
}

/* Curated guides: text-only links (title, one-line description, arrow).
 * Fine dividers rather than boxes, so the block reads like the other rail
 * lists instead of a stack of mini cards. */
.sws-browse-rail-guides {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sws-browse-rail-guides li + li {
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
}

.sws-browse-rail-guide {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    column-gap: 0.6rem;
    row-gap: 0.08rem;
    padding: 0.55rem 0.3rem;
    margin: 0 -0.25rem;
    border-radius: 8px;
    text-decoration: none;
    color: inherit;
    transition: background 0.15s ease;
}

.sws-browse-rail-guide-title {
    grid-column: 1;
    font-size: 0.86rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    line-height: 1.25;
    color: var(--sws-brand-strong);
    transition: color 0.15s ease;
}

.sws-browse-rail-guide-text {
    grid-column: 1;
    font-size: 0.74rem;
    line-height: 1.35;
    color: var(--sws-text-muted);
}

.sws-browse-rail-guide-go {
    grid-column: 2;
    grid-row: 1 / span 2;
    font-size: 0.9rem;
    color: var(--sws-brand);
    opacity: 0.4;
    transition: opacity 0.15s ease, transform 0.15s ease;
}

.sws-browse-rail-guide:hover,
.sws-browse-rail-guide:focus-visible {
    background: rgba(var(--sws-hover-rgb), 0.5);
}

.sws-browse-rail-guide:hover .sws-browse-rail-guide-title,
.sws-browse-rail-guide:focus-visible .sws-browse-rail-guide-title {
    color: var(--sws-brand);
}

.sws-browse-rail-guide:hover .sws-browse-rail-guide-go,
.sws-browse-rail-guide:focus-visible .sws-browse-rail-guide-go {
    opacity: 1;
    transform: translateX(3px);
}

.sws-browse-rail-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.35rem;
}

.sws-browse-rail-actions .sws-btn {
    width: 100%;
    justify-content: center;
    text-align: center;
}

.sws-browse-rail-login {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid #f3f1ec;
}

.sws-browse-rail-login p {
    margin: 0 0 0.4rem;
    font-size: 0.74rem;
    line-height: 1.4;
    color: var(--sws-text-muted);
}

.sws-browse-rail-login-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.sws-browse-rail-login-link {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--sws-brand);
    text-decoration: none;
}

.sws-browse-rail-login-link:hover {
    color: var(--sws-brand-strong);
    text-decoration: underline;
    text-underline-offset: 0.12em;
}

.sws-mobile-categories {
    display: none;
    margin-bottom: 0.65rem;
}

.sws-browse-mobile-categories {
    background: var(--sws-glass-strong);
    border: 1px solid var(--sws-glass-border);
    border-radius: 12px;
    padding: 0.6rem 0.75rem 0.65rem;
    box-shadow: var(--sws-layer-shadow);
}

.sws-browse-mobile-categories-label {
    display: block;
    margin-bottom: 0.3rem;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--sws-text-muted);
}

.sws-browse-mobile-categories-select {
    display: block;
    width: 100%;
    padding: 0.42rem 2rem 0.42rem 0.75rem;
    font-size: 0.84rem;
    font-weight: 500;
    color: var(--sws-text);
    background-color: #fff;
    border: 1px solid var(--sws-border);
    border-radius: 999px;
    appearance: none;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%236f665c' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.6' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 0.85rem;
}

.sws-browse-mobile-categories-select:focus {
    border-color: var(--sws-brand);
    outline: 0;
    box-shadow: 0 0 0 0.2rem rgba(126, 50, 63, 0.12);
}

.js-datatable-browse {
    width: 100% !important;
    table-layout: fixed;
}

.sws-lot-badge--compact,
.js-datatable-browse .sws-lot-badge {
    min-width: 40px;
    padding: 0.08rem 0.26rem;
    font-size: 0.66rem;
    border-radius: 6px;
    background: rgba(249, 247, 241, 0.72);
    border-color: rgba(var(--sws-line-rgb), 0.18);
    color: #635d55;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
}

.sws-inline-badges {
    margin-top: 0.25rem;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.2rem 0.35rem;
}


/* Browse DataTable: modern pills for server-rendered Bootstrap2 labels & buttons (browse_data.php) */
.js-datatable-browse tbody td:nth-child(3),
.js-datatable-browse .sws-inline-badges {
    line-height: 1.45;
}

/* Icon-only links (history / photo / chart): no circle — flat icon.
 * Excludes .sws-grange-pill so bidding.php's themed critic pills (which are
 * <a> elements without .label/.btn) keep their gradient backgrounds. */
.js-datatable-browse tbody td:nth-child(3) a:not(.label):not(.btn),
.sws-inline-badges a:not(.label):not(.btn):not(.sws-grange-pill) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    min-width: 0;
    height: auto;
    padding: 0.12rem 0.18rem;
    margin: 0.06rem 0.22rem 0.06rem 0;
    border-radius: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
    color: #575550 !important;
    text-decoration: none !important;
    vertical-align: middle;
    transition: color 0.15s ease, opacity 0.15s ease;
}

.js-datatable-browse tbody td:nth-child(3) a:not(.label):not(.btn):hover,
.sws-inline-badges a:not(.label):not(.btn):not(.sws-grange-pill):hover {
    background: transparent;
    border: 0;
    color: var(--sws-brand-strong) !important;
    opacity: 1;
}

.js-datatable-browse tbody td a.label,
.js-datatable-browse tbody td div.label,
.sws-inline-badges a.label,
.sws-inline-badges div.label {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    border-radius: 999px !important;
    padding: 0.22rem 0.62rem !important;
    margin: 0.12rem 0.28rem 0.12rem 0 !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.02em;
    text-decoration: none !important;
    border: 1px solid rgba(209, 185, 129, 0.28) !important;
    line-height: 1.2 !important;
    box-shadow: 0 3px 10px rgba(75, 24, 36, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.14);
    vertical-align: middle;
    max-width: none;
    width: max-content;
    white-space: nowrap !important;
    box-sizing: border-box;
    transition: transform 0.15s ease, box-shadow 0.2s ease;
}

.js-datatable-browse tbody td a.label:hover,
.js-datatable-browse tbody td div.label:hover,
.sws-inline-badges a.label:hover,
.sws-inline-badges div.label:hover {
    transform: translateY(-1px);
    box-shadow: 0 5px 14px rgba(75, 24, 36, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.16);
}

.js-datatable-browse tbody td a.label,
.sws-inline-badges a.label {
    color: #fff !important;
}

.js-datatable-browse tbody td a.label.label-important,
.sws-inline-badges a.label.label-important {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    color: #a3263c !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.js-datatable-browse tbody td a.label.label-important:hover,
.sws-inline-badges a.label.label-important:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    color: #8a1d31 !important;
}

/* Lynton's Picks: soft bronze tint, echoing the bronze Bid button. The data
 * feeds set an inline blue, so this keys off the badge's title attribute. */
.js-datatable-browse tbody td a.label[title="Lynton's Picks"],
.sws-inline-badges a.label[title="Lynton's Picks"] {
    background: linear-gradient(180deg, #faf1df 0%, #f1e2c2 100%) !important;
    border: 1px solid #dcc08a !important;
    color: #6f4912 !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.js-datatable-browse tbody td a.label[title="Lynton's Picks"]:hover,
.sws-inline-badges a.label[title="Lynton's Picks"]:hover {
    background: linear-gradient(180deg, #f6e8cc 0%, #ead5a9 100%) !important;
    border-color: #c9a564 !important;
    color: #5a3a0d !important;
}

.js-datatable-browse tbody td div.label.label-info:not([style*="background-color"]),
.js-datatable-browse .sws-inline-badges div.label.label-info:not([style*="background-color"]) {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92), rgba(243, 238, 225, 0.78)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.3) !important;
    color: #524c43 !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    font-weight: 700 !important;
}

.js-datatable-browse tbody td div.label.label-info[style*="background-color"],
.js-datatable-browse .sws-inline-badges div.label.label-info[style*="background-color"] {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92), rgba(243, 238, 225, 0.78)) !important;
    border-color: rgba(var(--sws-line-rgb), 0.3) !important;
    color: #524c43 !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

/* VIP More: extra inventory hidden until reserve — subtle pill; title attr = tooltip */
.sws-vip-more-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.18rem;
    margin-top: 0.1rem;
    padding: 0.05rem 0.32rem;
    border-radius: 999px;
    background: rgba(249, 246, 236, 0.85);
    border: 1px solid rgba(196, 186, 152, 0.38);
    color: rgba(86, 78, 58, 0.82);
    font-size: 0.625rem;
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: 0.02em;
    white-space: nowrap;
    cursor: help;
    vertical-align: middle;
    box-shadow: none;
}

.sws-vip-more-badge .bi {
    font-size: 0.52rem;
    opacity: 0.7;
    line-height: 1;
}

.js-datatable-browse tbody td span[style*="fffbc1"],
.js-datatable-browse .sws-inline-badges span[style*="fffbc1"] {
    display: inline-flex !important;
    align-items: center;
    gap: 0.2rem;
    margin-top: 0.35rem !important;
    padding: 0.22rem 0.55rem !important;
    border-radius: 999px !important;
    background: #fff7d6 !important;
    border: 1px solid #e5d7a8 !important;
    color: #5c4d26 !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    box-shadow: 0 1px 3px rgba(92, 77, 38, 0.12);
}

.js-datatable-browse tbody td.datatables-center .btn.btn-mini,
.js-datatable-browse tbody td.datatables-center input.btn.btn-mini,
.js-datatable-browse tbody td.datatables-center div.btn.btn-mini {
    min-width: 3.35rem !important;
    width: 3.35rem !important;
    max-width: 3.35rem !important;
    height: 1.72rem !important;
    padding: 0 0.32rem !important;
    border-radius: 999px !important;
    font-size: 0.72rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    box-sizing: border-box;
    border-width: 1px;
    border-style: solid;
    vertical-align: middle;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

/* Badge column (3) uses compact label-sized buttons below — skip tall btn-mini */
.js-datatable-browse tbody td:not(.datatables-center):not(:nth-child(3)) a.btn.btn-mini,
.js-datatable-browse tbody td:not(.datatables-center):not(:nth-child(3)) div.btn.btn-mini {
    min-width: 4.5rem !important;
    width: auto !important;
    height: 2.35rem !important;
    padding: 0 0.85rem !important;
    border-radius: 999px !important;
    font-size: 0.8rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    box-sizing: border-box;
    border-width: 1px;
    border-style: solid;
    vertical-align: middle;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.js-datatable-browse tbody td a.btn.btn-mini:not(.disabled):hover,
.js-datatable-browse tbody td div.btn.btn-mini:not(.disabled):hover,
.js-datatable-browse tbody td input.btn.btn-mini:not(:disabled):hover {
    transform: translateY(-1px);
}

.js-datatable-browse tbody td a.btn.btn-mini:not(.disabled):active,
.js-datatable-browse tbody td div.btn.btn-mini:not(.disabled):active,
.js-datatable-browse tbody td input.btn.btn-mini:not(:disabled):active {
    transform: translateY(0);
}

.js-datatable-browse tbody td a.btn.btn-mini.btn-success {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%) !important;
    border-color: rgba(232, 200, 140, 0.42) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.js-datatable-browse tbody td a.btn.btn-mini.btn-success:hover {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%) !important;
    border-color: rgba(232, 200, 140, 0.6) !important;
    box-shadow: 0 7px 20px rgba(111, 73, 18, 0.3);
}

.js-datatable-browse tbody td a.btn.btn-mini.btn-info {
    background: var(--sws-surface-soft) !important;
    border-color: var(--sws-border) !important;
    color: #383632 !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-rgb), 0.08);
}

.js-datatable-browse tbody td a.btn.btn-mini.btn-info:hover {
    background: #fff !important;
    border-color: var(--sws-border-strong) !important;
    color: var(--sws-brand-strong) !important;
}

.js-datatable-browse tbody td div.btn.btn-mini.disabled,
.js-datatable-browse tbody td div.btn.btn-mini:disabled {
    opacity: 0.72 !important;
    cursor: not-allowed !important;
    transform: none !important;
    box-shadow: none !important;
    background: #f1f0ee !important;
    border-color: #d5d3cd !important;
    color: #6a6762 !important;
}

.js-datatable-browse tbody td.datatables-center div.btn.btn-mini.disabled {
    width: auto !important;
    max-width: none !important;
    min-width: 3.35rem !important;
    padding: 0 0.45rem !important;
    white-space: nowrap;
    font-size: 0.68rem !important;
}

/* Buy It Now & badge-column buttons: same compact pill metrics as NOTES / score badges */
.js-datatable-browse tbody td:nth-child(3) a.btn.btn-mini,
.js-datatable-browse .sws-inline-badges a.btn.btn-mini {
    min-width: 0 !important;
    width: max-content !important;
    max-width: none !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 0.22rem 0.62rem !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.02em;
    line-height: 1.2 !important;
    white-space: nowrap !important;
    border-radius: 999px !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    color: #524c43 !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.js-datatable-browse tbody td:nth-child(3) a.btn.btn-mini:hover,
.js-datatable-browse .sws-inline-badges a.btn.btn-mini:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    color: var(--sws-brand-strong) !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

/* Browse badge icon buttons — Bootstrap Icons (replaced in JS from legacy glyphicons) */
.js-datatable-browse tbody td:nth-child(3) a:not(.label):not(.btn) .bi,
.sws-inline-badges a:not(.label):not(.btn):not(.sws-grange-pill) .bi {
    font-size: 1.12rem;
    line-height: 1;
}

.js-datatable-browse span[style*="fffbc1"] .bi {
    font-size: 0.95rem;
    margin-right: 0.2rem;
    vertical-align: -0.15em;
}

/* Browse lot rows, desktop only: the badge cell sets the row height, so
 * fitting more badges per line is what makes rows shorter.
 *
 * Tiered by measurement against the live catalogue. Below 1200px rows are
 * driven by the name cell (Region/Qty fold into it), so tighter badges buy
 * nothing there and those layouts are left exactly as they were. Wider
 * columns start at 1280px because they come out of Name: at 1200px Name
 * fell to ~160px and long wine names went to three lines.
 *
 * The table is table-layout: fixed, so Qty and Estimate are widened rather
 * than set to nowrap - nowrap would spill long values into the next cell.
 *
 * Scoped off the Buy It Now table, which shares the class but not the
 * column order. */
@media (min-width: 1200px) {
    /* browse_data.php separates the badges with literal spaces; narrowing
     * them is worth a line on the busiest rows. Children reset it so
     * multi-word labels like "Buy It Now" keep normal spacing. */
    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) {
        word-spacing: -0.22em;
    }

    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) > * {
        word-spacing: normal;
    }

    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) a.label,
    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) div.label,
    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) a.btn.btn-mini {
        padding: 0.2rem 0.48rem !important;
        margin: 0.1rem 0.18rem 0.1rem 0 !important;
    }

    table.js-datatable-browse:not(.js-datatable-buynow) tbody td:nth-child(3) a:not(.label):not(.btn) {
        padding: 0.1rem 0.12rem;
        margin: 0.06rem 0.1rem 0.06rem 0;
    }
}

@media (min-width: 1280px) {
    table.dataTable.js-datatable-browse:not(.js-datatable-buynow) thead th:nth-child(3) {
        width: 9.5rem !important;
    }

    table.dataTable.js-datatable-browse:not(.js-datatable-buynow) thead th:nth-child(5) {
        width: 4rem !important;
    }

    table.dataTable.js-datatable-browse:not(.js-datatable-buynow) thead th:nth-child(6) {
        width: 5.25rem !important;
    }
}

/* Bootstrap 5 browse modal — match Sterling shell (above fixed nav z-index 1080) */
.sws-browse-bs-modal {
    z-index: 12000;
}

body > .modal-backdrop.show {
    z-index: 11990;
}

.sws-browse-bs-modal .modal-content {
    border: 1px solid var(--sws-glass-border);
    border-radius: 14px;
    box-shadow: var(--sws-layer-shadow-strong);
}

.sws-browse-bs-modal .modal-header {
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.14);
    padding: 0.85rem 1.1rem;
}

.sws-browse-bs-modal.sws-modal-no-header .modal-header {
    display: none;
}

.sws-browse-bs-modal.sws-modal-no-header .modal-body {
    padding-top: 0.75rem;
}

.sws-browse-bs-modal .modal-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-browse-bs-modal .modal-body {
    padding: 0 1.1rem 1.1rem;
}

/* Bottle / product photos: fit viewport, preserve aspect ratio (Lynton thumb modal, browse image modal) */
.sws-modal-bottle-body {
    min-height: 0;
}

.sws-modal-bottle-img {
    display: block;
    margin-left: auto;
    margin-right: auto;
    width: auto;
    max-width: 100%;
    height: auto;
    object-fit: contain;
    /* Leave room for fixed nav + modal chrome + safe area */
    max-height: calc(100vh - 11rem);
    max-height: min(78dvh, calc(100dvh - 10.5rem));
}

@supports not (height: 100dvh) {
    .sws-modal-bottle-img {
        max-height: min(78vh, calc(100vh - 11rem));
    }
}

.sws-browse-bs-modal .modal-body .sws-modal-fragment:first-child {
    padding-top: 0.35rem;
}

.sws-modal-loading {
    color: var(--sws-text-muted);
    font-size: 0.88rem;
}

/* AJAX modal fragments (new/modal/*.php) */
.sws-modal-fragment {
    padding: 1.15rem 1.25rem 1.35rem;
    font-size: 0.9rem;
    line-height: 1.55;
    color: var(--sws-text);
    max-width: 720px;
    box-sizing: border-box;
}

.sws-modal-fragment a {
    color: var(--sws-brand);
    font-weight: 600;
}

/* Buttons rendered inside modal fragments must keep their .sws-btn colour
 * scheme (the generic .sws-modal-fragment a rule above would otherwise win on
 * specificity and tint Bid/Submit links the brand-maroon link colour). */
.sws-modal-fragment a.sws-btn-primary,
.sws-modal-fragment a.sws-btn-primary:link,
.sws-modal-fragment a.sws-btn-primary:visited,
.sws-modal-fragment a.sws-btn-bid,
.sws-modal-fragment a.sws-btn-bid:link,
.sws-modal-fragment a.sws-btn-bid:visited {
    color: #fff;
}

.sws-modal-fragment a.sws-btn-secondary,
.sws-modal-fragment a.sws-btn-secondary:link,
.sws-modal-fragment a.sws-btn-secondary:visited {
    color: #383632;
}

.sws-modal-title {
    margin: 0 0 0.35rem;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-modal-muted {
    margin: 0 0 0.75rem;
    font-size: 0.82rem;
    color: var(--sws-text-muted);
}

.sws-modal-lead {
    margin: 0 0 0.35rem;
    font-weight: 700;
    font-size: 1rem;
}

.sws-modal-price {
    margin: 0.75rem 0 0.25rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-modal-fineprint {
    margin: 0 0 1rem;
    font-size: 0.75rem;
    color: var(--sws-text-muted);
}

.sws-buy-now-modal {
    max-width: 640px;
    width: 100%;
}

.sws-buy-now-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
    gap: 1.1rem;
    padding: 0.45rem 0.25rem 0.25rem;
}

.sws-buy-now-layout--with-image {
    grid-template-columns: minmax(0, 1fr) minmax(92px, 132px);
}

.sws-buy-now-copy {
    min-width: 0;
}

.sws-modal-price span {
    display: block;
    margin-bottom: 0.12rem;
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--sws-text-muted);
}

.sws-buy-now-modal .sws-modal-price {
    margin: 0.9rem 0 0.35rem;
    color: var(--sws-brand-strong);
    font-size: 1.35rem;
    line-height: 1.1;
}

.sws-buy-now-image-wrap {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 124px;
}

.sws-buy-now-image {
    display: block;
    max-width: 100%;
    max-height: 154px;
    width: auto;
    height: auto;
    object-fit: contain;
    border-radius: 10px;
    filter: drop-shadow(0 14px 18px rgba(var(--sws-shadow-rgb), 0.14));
}

.sws-buy-now-cta {
    min-width: 160px;
    min-height: 2.45rem;
    padding: 0.62rem 1.2rem;
    color: #fff !important;
    text-align: center;
}

@media (max-width: 575.98px) {
    .sws-browse-bs-modal.sws-modal-no-header .modal-body {
        padding: 0.75rem 0.95rem 1rem;
    }

    .sws-buy-now-layout--with-image {
        grid-template-columns: 1fr;
    }

    .sws-buy-now-image-wrap {
        order: -1;
        min-height: 0;
        justify-content: flex-start;
    }

    .sws-buy-now-image {
        max-width: min(46vw, 112px);
        max-height: 132px;
    }

    .sws-buy-now-cta {
        width: 100%;
    }
}

.sws-modal-error {
    margin: 0;
    padding: 1rem;
    color: var(--sws-danger);
    font-weight: 600;
}

.sws-modal-critic-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem 1rem;
}

.sws-modal-critic-head .sws-modal-title,
.sws-modal-critic-head .sws-modal-lead {
    flex: 1;
    margin: 0;
    min-width: 0;
}

.sws-modal-score {
    flex-shrink: 0;
    font-weight: 800;
    font-size: 0.95rem;
    color: var(--sws-brand);
    background: var(--sws-brand-soft);
    border: 1px solid #dfc1c7;
    border-radius: 999px;
    padding: 0.2rem 0.65rem;
}

@media (max-width: 575.98px) {
    .sws-modal-critic-head {
        flex-wrap: wrap;
    }

    .sws-modal-critic-head .sws-modal-lead {
        flex-basis: calc(100% - 5rem);
    }

    .sws-modal-score {
        margin-left: auto;
    }
}

.sws-modal-subtitle {
    margin: 0.35rem 0 0;
    font-style: italic;
    color: #56534f;
    font-size: 0.92rem;
}

.sws-modal-rule {
    border: 0;
    border-top: 1px solid #dfc1c7;
    margin: 0.75rem 0;
}

.sws-modal-reviewer {
    margin: 0 0 0.75rem;
    font-size: 0.88rem;
}

.sws-modal-body-text p {
    margin: 0 0 0.65rem;
}

.sws-modal-table-wrap {
    margin-top: 0.5rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    border-radius: 10px;
    overflow: auto;
    max-height: min(60vh, 420px);
}

.sws-modal-table-wrap--wide {
    max-width: 100%;
}

.sws-modal-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

.sws-modal-table th,
.sws-modal-table td {
    padding: 0.45rem 0.55rem;
    border-bottom: 1px solid #f4f1e9;
    text-align: left;
    vertical-align: top;
}

.sws-modal-table thead th {
    background: linear-gradient(180deg, #faf8f2 0%, #f2efe6 100%);
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #433e37;
}

.sws-modal-table tbody tr:last-child td {
    border-bottom: 0;
}

.sws-modal-table-highlight {
    font-weight: 700;
    background: #fbf8f1;
}

/* Generic alignment helpers for modal table cells; the modal HTML loads in
 * a popup with /new/styles.css but without Bootstrap utility classes, so we
 * provide our own text-end / text-center equivalents. */
.sws-modal-table th.sws-modal-cell-center,
.sws-modal-table td.sws-modal-cell-center {
    text-align: center;
}

.sws-modal-table th.sws-modal-cell-end,
.sws-modal-table td.sws-modal-cell-end {
    text-align: right;
    white-space: nowrap;
}

/* Show-similar modal: notes appear under the wine name as a quiet italic
 * block. Notes can contain HTML, hence the block treatment. */
.sws-modal-similar-notes {
    display: block;
    margin-top: 0.18rem;
    color: var(--sws-text-muted);
    font-size: 0.78rem;
    font-style: italic;
    line-height: 1.4;
}

.sws-modal-table--similar tbody td {
    vertical-align: middle;
}

.sws-modal-table--historic .sws-modal-historic-wine td {
    background: #fefcf7;
    font-size: 0.88rem;
    border-bottom: 1px solid #dad5ca;
}

.sws-modal-table--historic .sws-modal-historic-foot td {
    font-size: 0.78rem;
    color: var(--sws-text-muted);
}

.sws-modal-historic-pager td {
    padding-top: 0.75rem !important;
    border-bottom: 0 !important;
}

.sws-modal-historic-pager .sws-btn {
    margin-right: 0.45rem;
}

.sws-modal-promo .sws-modal-body-text {
    font-size: 0.88rem;
}

@media (max-width: 1199.98px) {
    :root {
        --sws-header-height: 88px;
        --sws-countdown-height: 102px;
        --sws-countdown-float-offset: 8px;
    }

    /*
     * The collapse panel is positioned absolutely so it never affects the header row.
     * Logo + toggler stay in normal flex flow, always vertically centered by the navbar.
     */
    .sws-navbar > .container-fluid {
        position: relative;
    }

    .sws-navbar .navbar-collapse {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        z-index: 1090;
        flex-direction: column;
        align-items: stretch;
        justify-content: flex-start;
        gap: 0;
        width: 100%;
        margin-top: 0.35rem;
        padding: 0.7rem;
        border: 1px solid rgba(240, 219, 223, 0.32);
        border-radius: 12px;
        background: linear-gradient(165deg, rgba(74, 24, 35, 0.95), rgba(110, 42, 56, 0.96));
        box-shadow: 0 14px 30px rgba(24, 11, 17, 0.35);
        max-height: calc(100vh - var(--sws-header-height, 88px) - 1rem);
        max-height: calc(100dvh - var(--sws-header-height, 88px) - 1rem);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }

    .sws-brand-line,
    .sws-brand-est {
        color: #f4ebed;
    }

    .sws-nav-main {
        flex: 0 0 auto;
        width: 100%;
        justify-content: flex-start;
    }

    .sws-nav-list {
        width: 100%;
        margin-top: 0;
        padding-top: 0;
        border-top: 0;
    }

    .sws-nav-list .nav-link {
        width: 100%;
        padding-left: 0.35rem;
        padding-right: 0.35rem;
    }

    .sws-dropdown,
    .submenu-list {
        border: 0;
        box-shadow: none;
        padding-left: 0.9rem;
        margin-top: 0.25rem;
    }

    /* Keep all dropdowns in the column flow (Popper + collapse fights alignment) */
    .sws-navbar .navbar-collapse .dropdown-menu {
        position: static !important;
        inset: auto !important;
        transform: none !important;
        float: none;
        width: 100%;
        margin-top: 0.35rem;
    }

    .submenu-list {
        display: none;
        position: static;
    }

    .dropdown-submenu.is-open > .submenu-list {
        display: block;
    }

    .submenu-toggle::after {
        content: "+";
    }

    .sws-account-zone {
        margin-top: 0.55rem;
        margin-left: 0;
        width: 100%;
        flex-direction: column;
        align-items: stretch;
    }

    .sws-account-pill {
        border: 0;
        border-radius: 0;
        padding: 0;
        background: none;
    }

    .sws-account-pill .nav-link {
        padding: 0.45rem 0.35rem;
    }

    .sws-account-dropdown {
        left: 0;
        right: auto;
    }

    /*
     * Browse: below xl — stage 1 table only (Region + Qty under Name); rail stays beside down to lg.
     */
    .sws-lot-table-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .js-datatable-browse {
        table-layout: auto !important;
    }

    table.dataTable.js-datatable-browse thead th:nth-child(2),
    table.dataTable.js-datatable-browse tbody td:nth-child(2) {
        width: auto !important;
        min-width: 0 !important;
        max-width: none !important;
    }

    .sws-browse-name-scaffold {
        display: block !important;
    }

    .sws-browse-meta-regqty {
        display: block !important;
    }

    .sws-browse-meta-rest,
    .sws-browse-scaffold-badges {
        display: none !important;
    }

    .js-datatable-browse thead .sws-dt-col-region,
    .js-datatable-browse tbody td.sws-dt-col-region,
    .js-datatable-browse thead .sws-dt-col-qty,
    .js-datatable-browse tbody td.sws-dt-col-qty,
    .js-datatable-buynow thead .sws-dt-col-type,
    .js-datatable-buynow tbody td.sws-dt-col-type {
        display: none !important;
    }

    .sws-adv-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 991.98px) {
    .sws-page-grid,
    .sws-demo-layout {
        grid-template-columns: 1fr;
    }

    .sws-metric-grid {
        grid-template-columns: 1fr;
    }

    /* Browse: sidebar under main at Bootstrap lg (≤991.98px). minmax(0, 1fr)
       so a long one-line rail label can't widen the column past the screen. */
    .sws-browse-layout {
        grid-template-columns: minmax(0, 1fr);
        gap: 1rem;
    }

    .sws-browse-main {
        order: 1;
        min-width: 0;
    }

    .sws-browse-sidebar {
        order: 2;
        max-width: 100%;
    }

    .sws-mobile-categories {
        display: block;
    }

    .sws-desktop-categories {
        display: none;
    }
}

@media (max-width: 767.98px) {
    :root {
        --sws-header-height: 80px;
        --sws-countdown-height: 94px;
        --sws-countdown-float-offset: 8px;
    }

    .sws-container {
        width: min(1280px, 100% - 1.25rem);
    }

    /* Browse: table + card flush to screen; toolbar block keeps side inset */
    main.sws-main-content:has(.sws-browse-layout) > .container-fluid.sws-container {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    /* Penfolds Grange valuation: same flush panel + full-width table shell */
    main.sws-main-content:has(.sws-valuation-page) > .container-fluid.sws-container {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    .sws-browse-panel.sws-card {
        border-radius: 0;
        border-left: 0;
        border-right: 0;
    }

    .sws-valuation-page .sws-valuation-panel.sws-card {
        border-radius: 0;
        border-left: 0;
        border-right: 0;
    }

    .sws-brand img {
        width: 156px;
    }

    .sws-countdown-bar .countdown-inner {
        gap: 0.22rem;
    }

    .countdown-box {
        min-width: 74px;
        padding: 0.26rem 0.2rem 0.28rem;
    }

    .countdown-num {
        font-size: 1.72rem;
    }

    .countdown-unit {
        font-size: 0.54rem;
    }

    .sws-countdown-bar.is-compact {
        height: 34px;
    }

    .sws-navbar.is-compact ~ .sws-countdown-bar {
        top: 78px;
    }

    .sws-countdown-bar.is-compact .countdown-value {
        gap: 0.48rem;
    }

    .sws-countdown-bar.is-compact .countdown-value::before {
        content: "Closing:";
        font-size: 0.62rem;
    }

    .sws-countdown-bar.is-compact .countdown-box {
        display: inline-flex;
        gap: 0.16rem;
        min-width: 0;
        padding: 0;
    }

    .sws-countdown-bar.is-compact .countdown-num {
        font-size: 0.78rem;
    }

    .sws-countdown-bar.is-compact .countdown-unit {
        font-size: 0.46rem;
    }

    .sws-header--compact .sws-countdown-bar {
        height: 34px;
    }

    .sws-header--compact .sws-countdown-bar .countdown-value {
        gap: 0.48rem;
    }

    .sws-header--compact .sws-countdown-bar .countdown-value::before {
        content: "Closing:";
        font-size: 0.62rem;
    }

    .sws-header--compact .sws-countdown-bar .countdown-box {
        gap: 0.16rem;
    }

    .sws-header--compact .sws-countdown-bar .countdown-num {
        font-size: 0.78rem;
    }

    .sws-header--compact .sws-countdown-bar .countdown-unit {
        font-size: 0.46rem;
    }

    .sws-header--compact .sws-hero-inner {
        min-height: 150px;
        padding: 3.85rem 0 1.65rem;
        transform: none;
    }

    .sws-bottle-image {
        max-width: 44%;
        max-height: 180px;
    }

    .sws-image-card {
        padding: 0.8rem;
    }

    .sws-image-frame {
        min-height: 210px;
        padding: 0.3rem;
    }

    .sws-lot-table thead th:nth-child(3),
    .sws-lot-table thead th:nth-child(4),
    .sws-lot-table thead th:nth-child(5),
    .sws-lot-table thead th:nth-child(6),
    .sws-lot-table td:nth-child(3),
    .sws-lot-table td:nth-child(4),
    .sws-lot-table td:nth-child(5),
    .sws-lot-table td:nth-child(6) {
        display: none;
    }

    .sws-lot-table-wrap {
        overflow-x: hidden;
    }

    .sws-lot-table {
        min-width: 0;
        width: 100%;
        table-layout: fixed;
    }

    .sws-lot-table th,
    .sws-lot-table td {
        word-wrap: break-word;
        overflow-wrap: anywhere;
    }

    .sws-lot-table thead th:first-child,
    .sws-lot-table td:first-child {
        width: 68px;
    }

    .sws-lot-table thead th:nth-child(7),
    .sws-lot-table td:nth-child(7) {
        width: 76px;
        text-align: center;
    }

    .sws-action-btn {
        width: 62px;
        min-width: 62px;
        height: 34px;
        font-size: 0.76rem;
    }

    .sws-lot-badge {
        min-width: 40px;
        font-size: 0.66rem;
        padding: 0.12rem 0.22rem;
    }

    .sws-lot-table [id^="wishlistAdd"] a,
    .sws-lot-table [id^="wishlistAdd"] input {
        width: 62px !important;
        min-width: 62px !important;
        height: 34px !important;
        font-size: 0.74rem !important;
    }

    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table thead th:nth-child(7),
    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table td:nth-child(7) {
        width: 96px;
        padding-left: 0.34rem;
        padding-right: 0.34rem;
    }

    .sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] {
        display: flex;
        justify-content: center;
        width: 100%;
    }

    .sws-summary-card > .sws-lot-table-wrap td:last-child .sws-action-btn,
    .sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] .btn,
    .sws-summary-card > .sws-lot-table-wrap td:last-child [id^="wishlistAdd"] input {
        width: 74px !important;
        min-width: 74px !important;
        max-width: 74px;
        padding-left: 0.55rem !important;
        padding-right: 0.55rem !important;
    }

    .sws-lot-table--product thead th:first-child,
    .sws-lot-table--product td:first-child {
        display: none;
    }

    .sws-lot-table--product .sws-lot-fold {
        display: block;
        margin-bottom: 0.3rem;
        line-height: 1;
    }

    .sws-lot-table--product .sws-lot-fold .sws-lot-badge {
        white-space: nowrap;
    }

    .js-datatable-browse tbody td.datatables-center .btn.btn-mini,
    .js-datatable-browse tbody td.datatables-center input.btn.btn-mini,
    .js-datatable-browse tbody td.datatables-center div.btn.btn-mini {
        min-width: 3.1rem !important;
        width: 3.1rem !important;
        max-width: 3.1rem !important;
        height: 1.58rem !important;
        font-size: 0.68rem !important;
        padding: 0 0.28rem !important;
    }

    /* Browse stage 2: stack rail; full scaffold; hide remaining detail cols */
    .sws-browse-layout {
        grid-template-columns: minmax(0, 1fr);
        gap: 1rem;
    }

    .sws-browse-main {
        order: 1;
    }

    .sws-browse-sidebar {
        order: 2;
    }

    .sws-mobile-categories {
        display: block !important;
    }

    .sws-desktop-categories {
        display: none !important;
    }

    .sws-browse-meta-rest,
    .sws-browse-scaffold-badges {
        display: block !important;
    }

    .js-datatable-browse thead .sws-dt-col-badges,
    .js-datatable-browse thead .sws-dt-col-est,
    .js-datatable-browse thead .sws-dt-col-bid,
    .js-datatable-browse thead .sws-dt-col-vip,
    .js-datatable-browse tbody td.sws-dt-col-badges,
    .js-datatable-browse tbody td.sws-dt-col-est,
    .js-datatable-browse tbody td.sws-dt-col-bid,
    .js-datatable-browse tbody td.sws-dt-col-vip,
    .js-datatable-buynow thead .sws-dt-col-avail,
    .js-datatable-buynow thead .sws-dt-col-price,
    .js-datatable-buynow tbody td.sws-dt-col-avail,
    .js-datatable-buynow tbody td.sws-dt-col-price {
        display: none !important;
    }

    .js-datatable-browse thead .sws-dt-col-lot,
    .js-datatable-browse tbody td.sws-dt-col-lot {
        display: none !important;
    }

    .sws-browse-name-lot {
        display: block;
        margin-bottom: 0.3rem;
        line-height: 1;
    }

    .sws-browse-name-lot .sws-lot-badge {
        white-space: nowrap;
    }

    .sws-browse-meta-bid {
        display: inline-flex !important;
        flex-wrap: wrap;
        align-items: baseline;
        gap: 0.35rem;
        margin-top: 0.12rem !important;
    }

    .sws-browse-meta-bid-label {
        font-size: 0.74rem !important;
        font-weight: 700 !important;
        color: #363430 !important;
    }

    .sws-browse-meta-bid-value {
        font-size: 0.84rem !important;
        font-weight: 800 !important;
        color: #1a1918 !important;
        font-variant-numeric: tabular-nums;
    }

    .sws-mobile-meta {
        display: block;
    }

    .sws-mobile-meta-item {
        display: block;
    }

    .sws-browse-panel-pad {
        padding: 0.8rem 0.75rem 0.65rem;
    }

    .sws-browse-panel-head {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        gap: 0.5rem;
        margin-bottom: 0.65rem;
    }

    .sws-browse-panel-head h2 {
        min-width: 0;
    }

    .sws-browse-head-actions {
        flex-shrink: 0;
    }

    .sws-browse-toolbar {
        flex-direction: column;
        align-items: stretch;
        gap: 0.55rem;
        padding-bottom: 0.75rem;
    }

    .sws-browse-search-slot,
    .sws-browse-length-slot {
        flex: 1 1 auto;
        width: 100%;
        min-width: 0;
    }

    #swsBrowseLengthSlot .dataTables_length label {
        width: 100%;
        justify-content: space-between;
    }

    .sws-browse-toolbar-actions {
        margin-left: 0;
        width: 100%;
        justify-content: stretch;
        gap: 0.4rem;
    }

    .sws-browse-toolbar-actions .sws-btn {
        flex: 1 1 0;
        justify-content: center;
        min-width: 0;
    }

    #searchBox .dataTables_filter {
        width: 100%;
    }

    #searchBox .dataTables_filter label {
        width: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 0.35rem;
    }

    #searchBox .dataTables_filter input {
        width: 100% !important;
        margin-left: 0;
    }

    .sws-browse-table-shell .dataTables_wrapper .dataTables_info,
    .sws-browse-table-shell .dataTables_wrapper .dataTables_paginate {
        padding-left: 0.35rem;
        padding-right: 0.35rem;
        float: none !important;
        width: 100%;
        text-align: center;
    }

    .sws-adv-grid {
        grid-template-columns: 1fr;
    }

    .sws-countdown-bar.is-compact .countdown-value {
        transform: none;
    }

    .sws-hero-inner {
        min-height: 210px;
        /* Mobile clock is shorter — its boxes end ~84px into the hero, so
         * less top padding keeps the same ~20px clearance under it. */
        padding: 6.5rem 0 1.75rem;
    }

    .sws-hero-subtitle {
        font-size: 0.94rem;
    }

    .sws-hero-live strong {
        font-size: 0.98rem;
    }

    .sws-hero-live-label {
        font-size: 0.68rem;
    }

    .sws-review-head {
        flex-direction: column;
    }

    /*
     * Buy It Now product table: 5 cols (Wine, Region, Qty, Price, Action).
     * Override the 7-col auction product rules above so the right cells
     * collapse and the Action button stays visible.
     */
    .sws-lot-table.sws-lot-table--bin thead th:first-child,
    .sws-lot-table.sws-lot-table--bin td:first-child {
        width: auto;
    }

    .sws-lot-table.sws-lot-table--bin thead th:nth-child(2),
    .sws-lot-table.sws-lot-table--bin td:nth-child(2),
    .sws-lot-table.sws-lot-table--bin thead th:nth-child(3),
    .sws-lot-table.sws-lot-table--bin td:nth-child(3),
    .sws-lot-table.sws-lot-table--bin thead th:nth-child(4),
    .sws-lot-table.sws-lot-table--bin td:nth-child(4) {
        display: none;
    }

    .sws-lot-table.sws-lot-table--bin thead th:nth-child(5),
    .sws-lot-table.sws-lot-table--bin td:nth-child(5) {
        display: table-cell;
        width: 76px;
        text-align: center;
    }

    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin thead th:nth-child(5),
    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin td:nth-child(5) {
        width: 96px;
        padding-left: 0.34rem;
        padding-right: 0.34rem;
    }

    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin td:nth-child(5) [id^="buyNowCartAdd"] {
        display: flex;
        justify-content: center;
        width: 100%;
    }

    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin td:nth-child(5) .sws-action-btn,
    .sws-summary-card > .sws-lot-table-wrap .sws-lot-table.sws-lot-table--bin td:nth-child(5) [id^="buyNowCartAdd"] .sws-btn {
        width: 74px !important;
        min-width: 74px !important;
        max-width: 74px;
        padding-left: 0.55rem !important;
        padding-right: 0.55rem !important;
    }

}

/* After 767 so logo width wins: cover / xs — hide tagline, slightly larger mark */
@media (max-width: 575.98px) {
    .sws-brand {
        min-width: 0;
    }

    .sws-brand-text {
        display: none !important;
    }

    .sws-brand img {
        width: 180px;
    }

    .sws-navbar.is-compact .sws-brand img {
        width: 168px;
    }
}

/* ——— Valuation pages ——— */
.sws-valuation-page {
    padding-bottom: 2.5rem;
}

.sws-valuation-panel {
    overflow: hidden;
    border-radius: 14px;
    border: 1px solid var(--sws-glass-border);
    box-shadow: var(--sws-layer-shadow-strong);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, var(--sws-glass) 100%);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

.sws-valuation-body {
    font-size: 0.94rem;
    line-height: 1.65;
    color: var(--sws-text);
}

.sws-valuation-panel h2 {
    font-weight: 700;
    letter-spacing: -0.01em;
    color: #5b2430;
}

.sws-valuation-prose > h2:first-of-type {
    margin-top: 0;
}

.sws-valuation-list {
    margin: 0.5rem 0 1rem;
    padding-left: 1.15rem;
}

.sws-valuation-list li {
    margin-bottom: 0.35rem;
}

.sws-valuation-lead {
    margin-bottom: 0.75rem;
    font-size: 1.06rem;
    line-height: 1.6;
    color: var(--sws-text);
}

.sws-valuation-highlights {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
    gap: 0.85rem 1.5rem;
    margin: 1.4rem 0 0;
    padding: 0;
    list-style: none;
}

.sws-valuation-highlights li {
    padding-left: 0.8rem;
    border-left: 2px solid var(--sws-accent-light);
    font-size: 0.84rem;
    line-height: 1.45;
    color: var(--sws-text-muted);
}

.sws-valuation-highlights strong {
    display: block;
    margin-bottom: 0.1rem;
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-valuation-table-head p {
    font-size: 0.86rem;
    color: var(--sws-text-muted);
}

.sws-valuation-guide {
    margin-top: 1.25rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
}

.sws-valuation-more {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 1.25rem;
    margin-top: 1.75rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
    font-size: 0.88rem;
}

.sws-valuation-more-label {
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--sws-text-muted);
}

.sws-valuation-more a {
    font-weight: 600;
    color: var(--sws-brand);
    text-decoration: none;
}

.sws-valuation-more a:hover {
    color: var(--sws-brand-strong);
    text-decoration: underline;
    text-underline-offset: 0.15em;
}

.sws-valuation-tabs {
    border-bottom-color: rgba(var(--sws-line-rgb), 0.3);
}

.sws-valuation-tabs .nav-link {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--sws-text-muted);
    border: none;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    padding: 0.65rem 0.9rem;
}

.sws-valuation-tabs .nav-link:hover {
    color: var(--sws-accent-deep);
    border-bottom-color: rgba(var(--sws-line-rgb), 0.55);
}

.sws-valuation-tabs .nav-link.active {
    color: var(--sws-brand-strong);
    background: linear-gradient(180deg, transparent 0%, rgba(243, 238, 225, 0.45) 100%);
    border-bottom-color: var(--sws-accent);
}

.sws-valuation-tab-content {
    border-color: rgba(var(--sws-line-rgb), 0.14) !important;
    border-left: 0;
    border-right: 0;
    border-bottom: 0;
    border-radius: 0 !important;
    overflow: hidden;
}

.sws-grange-table-wrap {
    margin-top: 0;
}

.sws-grange-table {
    font-size: 0.86rem;
    --bs-table-striped-bg: rgba(249, 247, 241, 0.5);
}

.sws-grange-table thead th {
    font-size: 0.65rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #433e37;
    border-bottom-color: rgba(var(--sws-line-rgb), 0.18);
    background: linear-gradient(180deg, rgba(250, 248, 242, 0.86) 0%, rgba(242, 239, 230, 0.72) 100%);
}

.sws-grange-table td {
    vertical-align: middle;
    border-color: rgba(var(--sws-line-rgb), 0.1);
}

.sws-grange-scores {
    white-space: normal;
    line-height: 1.5;
}

.sws-grange-scores .sws-grange-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin: 0.1rem 0.15rem 0.1rem 0;
    min-width: 2.35rem;
    padding: 0.2rem 0.52rem;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.025em;
    line-height: 1.15;
    border-radius: 999px;
    text-decoration: none !important;
    color: #fff !important;
    border: 1px solid rgba(209, 185, 129, 0.34);
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-rgb), 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.16);
    transition: transform 0.15s ease, box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}

.sws-grange-scores .sws-grange-pill:hover {
    transform: translateY(-1px);
    border-color: rgba(209, 185, 129, 0.56);
    box-shadow: 0 5px 14px rgba(var(--sws-shadow-rgb), 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-grange-pill--parker {
    background: linear-gradient(135deg, #34704d 0%, #1f4f35 100%) !important;
}

.sws-grange-pill--halliday {
    background: linear-gradient(135deg, #8a3d4b 0%, #5a1f2c 100%) !important;
}

.sws-grange-pill--ws {
    background: linear-gradient(135deg, #314b78 0%, #1b2d50 100%) !important;
}

.sws-grange-pill--similar {
    background: linear-gradient(135deg, #4d6e7a 0%, #2c4a55 100%) !important;
}

/* Valuation actions */
.sws-grange-col-actions a.btn.btn-mini,
.sws-grange-col-actions input.btn.btn-mini {
    min-width: 4.5rem !important;
    width: auto !important;
    height: 2.35rem !important;
    padding: 0 0.85rem !important;
    border-radius: 999px !important;
    font-size: 0.8rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    box-sizing: border-box;
    border-width: 1px;
    border-style: solid;
    vertical-align: middle;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.sws-grange-col-actions a.btn.btn-mini:not(.disabled):hover,
.sws-grange-col-actions input.btn.btn-mini:not(:disabled):hover {
    transform: translateY(-1px);
}

.sws-grange-col-actions a.btn.btn-mini:not(.disabled):active,
.sws-grange-col-actions input.btn.btn-mini:not(:disabled):active {
    transform: translateY(0);
}

.sws-grange-col-actions a.btn.btn-mini.btn-success,
.sws-grange-col-actions input.btn.btn-mini.btn-success {
    background: linear-gradient(135deg, #263d64 0%, #142642 100%) !important;
    border-color: rgba(174, 197, 226, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(20, 38, 66, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-grange-col-actions a.btn.btn-mini.btn-success:hover,
.sws-grange-col-actions input.btn.btn-mini.btn-success:hover {
    background: linear-gradient(135deg, #304c79 0%, #1b3154 100%) !important;
    border-color: rgba(174, 197, 226, 0.52) !important;
    box-shadow: 0 7px 20px rgba(20, 38, 66, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

.sws-grange-col-actions a.btn.btn-mini.btn-info {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border-color: rgba(209, 185, 129, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-grange-col-actions a.btn.btn-mini.btn-info:hover {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%) !important;
    border-color: rgba(209, 185, 129, 0.52) !important;
    color: #fff !important;
    box-shadow: 0 7px 20px rgba(75, 24, 36, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

/* ——— Lynton's Picks — product-aligned panels ——— */
.sws-lynton-page {
    padding-bottom: 2.5rem;
}

.sws-lynton-intro-card {
    padding: 1.15rem 1.35rem;
    margin-bottom: 1.15rem;
    border-color: var(--sws-glass-border);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.9) 0%, rgba(248, 245, 237, 0.76) 100%);
    box-shadow: var(--sws-layer-shadow);
}

.sws-lynton-pick-card.sws-summary-card {
    padding: 0;
    overflow: hidden;
    margin-bottom: 1.15rem;
    border: 1px solid var(--sws-glass-border);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, var(--sws-glass) 100%);
    box-shadow: var(--sws-layer-shadow);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}

/* Horizontal scroll fallback (e.g. tablet landscape) */
.sws-lynton-table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
}

.sws-lynton-pick-head {
    padding: 1.2rem 1.35rem 0.92rem;
    background: transparent;
    border-bottom: 0;
}

.sws-lynton-pick-head-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: start;
}

.sws-lynton-pick-thumb .sws-image-frame {
    min-height: unset;
    width: 128px;
    padding: 0.4rem;
    border-color: #d2cdc0;
    background: #fff;
}

.sws-lynton-pick-thumb .sws-bottle-image {
    max-width: 100%;
    max-height: 152px;
    object-fit: contain;
}

.sws-lynton-thumb-trigger {
    cursor: zoom-in;
}

.sws-lynton-thumb-trigger:hover .sws-bottle-image {
    opacity: 0.92;
}

.sws-lynton-pick-card .sws-lot-table-wrap {
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    border-radius: 12px;
    background: rgba(var(--sws-glass-rgb), 0.58);
}

.sws-lynton-table-shell {
    padding: 0.82rem 1rem 0.95rem;
    background: transparent;
}

.sws-lynton-pick-card .sws-summary-top {
    margin-bottom: 0.42rem;
}

.sws-lynton-pick-card .sws-summary-top h2 {
    font-size: 1.16rem;
    line-height: 1.28;
    color: #3f2c26;
}

.sws-lynton-pick-meta {
    margin: 0 0 0.45rem;
    font-size: 0.88rem;
    color: var(--sws-text-muted);
    font-style: italic;
}

.sws-lynton-pick-estimate {
    margin: 0 0 0.6rem;
    font-size: 0.9rem;
}

.sws-lynton-pick-data {
    font-size: 0.93rem;
    line-height: 1.62;
    color: var(--sws-text);
}

.sws-lynton-pick-card .sws-lot-table thead th {
    background: linear-gradient(180deg, rgba(250, 248, 242, 0.86) 0%, rgba(242, 239, 230, 0.72) 100%);
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.18);
    padding: 0.52rem 0.56rem;
    font-size: 0.62rem;
    letter-spacing: 0.07em;
}

.sws-lynton-pick-card .sws-lot-table thead th:first-child,
.sws-lynton-pick-card .sws-lot-table thead th:last-child {
    text-align: center !important;
}

.sws-lynton-pick-card .sws-lot-table tbody td {
    padding: 0.58rem 0.56rem;
    font-size: 0.82rem;
}

.sws-lynton-pick-card .sws-lot-table tbody tr:nth-child(even) {
    background: rgba(var(--sws-glass-rgb), 0.56);
}

.sws-lynton-pick-card .sws-lot-table tbody tr:hover {
    background: rgba(var(--sws-hover-rgb), 0.36);
}

.sws-lynton-pick-card .sws-lot-table tbody td:nth-child(1) {
    width: 84px;
}

.sws-lynton-pick-card .sws-lot-table tbody td:nth-child(3) {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.sws-lynton-pick-card .sws-lot-table tbody td:nth-child(4) {
    font-variant-numeric: tabular-nums;
}

.sws-lynton-pick-card .sws-lot-table tbody td:nth-child(5) {
    width: 108px;
}

.sws-lynton-page .sws-lot-badge {
    min-width: 40px;
    padding: 0.08rem 0.26rem;
    font-size: 0.66rem;
    border-radius: 6px;
    background: rgba(249, 247, 241, 0.72);
    border: 1px solid rgba(var(--sws-line-rgb), 0.18);
    color: #635d55;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.62);
    line-height: 1.1;
    white-space: normal;
}

.sws-lynton-lot-cell {
    text-align: center;
}

.sws-lynton-qty {
    font-weight: 600;
    color: #2b2926;
}

.sws-lynton-notes {
    color: #5e564b;
}

.sws-lynton-bid-cell {
    white-space: nowrap;
}

.sws-lynton-estimate-cell {
    white-space: nowrap;
}

.sws-lynton-estimate-value {
    color: #5b2430;
    font-weight: 700;
}

.sws-lynton-action-cell .sws-action-btn {
    min-width: 72px;
    min-height: 1.7rem;
    padding: 0.22rem 0.65rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    line-height: 1.1;
    box-shadow: 0 2px 7px rgba(var(--sws-shadow-soft-rgb), 0.09), inset 0 1px 0 rgba(255, 255, 255, 0.72);
}

.sws-lynton-action-cell .sws-btn-secondary,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn,
.sws-lynton-action-cell [id^="wishlistAdd"] input {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    color: #524c43 !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
}

.sws-lynton-action-cell .sws-btn-secondary:hover,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn:hover,
.sws-lynton-action-cell [id^="wishlistAdd"] input:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    color: var(--sws-brand-strong) !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.sws-lynton-action-cell .sws-btn-primary {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border: 1px solid rgba(209, 185, 129, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-lynton-action-cell .sws-btn-primary:hover {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%) !important;
    border-color: rgba(209, 185, 129, 0.52) !important;
    color: #fff !important;
    box-shadow: 0 7px 20px rgba(75, 24, 36, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.14);
}

.sws-lynton-action-cell .sws-btn-bid,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn.btn-success,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn-success {
    background: linear-gradient(135deg, #b07a2a 0%, #6f4912 100%) !important;
    border: 1px solid rgba(232, 200, 140, 0.42) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(111, 73, 18, 0.24), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-lynton-action-cell .sws-btn-bid:hover,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn.btn-success:hover,
.sws-lynton-action-cell [id^="wishlistAdd"] .btn-success:hover {
    background: linear-gradient(135deg, #c08a38 0%, #7d5418 100%) !important;
    border-color: rgba(232, 200, 140, 0.6) !important;
    color: #fff !important;
    box-shadow: 0 7px 20px rgba(111, 73, 18, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-lynton-sold-pill {
    opacity: 0.85;
    background: linear-gradient(180deg, #817c70 0%, #655f52 100%);
    border-color: rgba(209, 185, 129, 0.38);
    color: #fff;
}

/* ----- Parker Extraordinary (new/parkerperfect.php) -----
 * Reuses the Lynton pick-card chrome; only the per-card head needs a small
 * rating banner and a tasting-notes block tinted toward the brand burgundy. */
.sws-parker-rating-banner {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.1rem 0 0.7rem;
    padding: 0.4rem 0.85rem 0.4rem 0.6rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    color: #fdf9f0;
    font-size: 0.82rem;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(75, 24, 36, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-parker-rating-banner .sws-parker-rating-label {
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 0.68rem;
    font-weight: 800;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: rgba(253, 249, 240, 0.16);
    color: #f6f1de;
}

.sws-parker-rating-banner strong {
    font-weight: 700;
    letter-spacing: 0.02em;
}

.sws-parker-pick-notes {
    color: #4b3027;
    font-size: 0.94rem;
    line-height: 1.55;
}

.sws-parker-pick-notes p {
    margin: 0 0 0.6rem;
}

.sws-parker-pick-notes p:last-child {
    margin-bottom: 0;
}

/* ----- Halliday Extraordinary (new/hallidayextraordinary.php) -----
 * Sister page to Parker Extraordinary — same pick-card chrome but a deep
 * magenta-purple rating banner that echoes the inline Halliday pill colour
 * (rgb(117,0,89)) used in browse / member / popular tables. Tasting notes
 * themselves live behind the Halliday Wine Companion paywall, so the body
 * shows a reviewer line plus a clearly-flagged offsite link instead of
 * inline note text. */
.sws-halliday-rating-banner {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.1rem 0 0.7rem;
    padding: 0.4rem 0.85rem 0.4rem 0.6rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #960073 0%, #4d002e 100%);
    color: #fdf9f0;
    font-size: 0.82rem;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(75, 0, 50, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-halliday-rating-banner .sws-halliday-rating-label {
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 0.68rem;
    font-weight: 800;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: rgba(253, 249, 240, 0.16);
    color: #f6f1de;
}

.sws-halliday-rating-banner strong {
    font-weight: 700;
    letter-spacing: 0.02em;
}

.sws-halliday-pick-notes {
    color: #4b3027;
    font-size: 0.94rem;
    line-height: 1.55;
}

.sws-halliday-pick-notes p {
    margin: 0 0 0.6rem;
}

.sws-halliday-pick-notes p:last-child {
    margin-bottom: 0;
}

.sws-halliday-reviewer {
    color: #524c43;
    font-size: 0.86rem;
    letter-spacing: 0.01em;
}

.sws-halliday-companion-link {
    color: #750059;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.sws-halliday-companion-link:hover {
    color: #4d002e;
}

.sws-halliday-companion-meta {
    color: #655f54;
    font-size: 0.82rem;
}

/* ----- Birth Year Wines (new/birthyear.php) -----
 * Reuses the Lynton pick-card chrome; the vintage banner echoes the legacy
 * "Birth Year" badge colour (browse_data.php uses rgb(151,6,248)) for instant
 * brand familiarity. */
.sws-birthyear-intro-card .sws-summary-title {
    margin: 0 0 0.4rem;
    font-size: 1.4rem;
}

.sws-vintage-banner {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    margin: 0.1rem 0 0.7rem;
    padding: 0.4rem 0.95rem 0.4rem 0.6rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #5b1f8a 0%, #2e0d54 100%);
    color: #fdf9f0;
    font-size: 0.86rem;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(46, 13, 84, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-vintage-banner .sws-vintage-banner-label {
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 0.68rem;
    font-weight: 800;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: rgba(253, 249, 240, 0.16);
    color: #f6f1de;
}

.sws-vintage-banner strong {
    font-weight: 700;
    letter-spacing: 0.06em;
    font-variant-numeric: tabular-nums;
    font-size: 1rem;
}

/* ----- Top 100 Most Popular Lots (new/popular100_lots.php) -----
 * Flat themed table (no DataTable) reusing .sws-lot-table chrome plus the
 * shared .sws-inline-badges pill family. The toolbar card holds the auction
 * picker; the results card is the table itself. Responsive collapse mirrors
 * .sws-lot-table--bidding so Region / Qty / Scores / Current bid fold into
 * the Wine cell as the viewport narrows. */
.sws-popular-page {
    padding-bottom: 2.5rem;
}

.sws-popular-toolbar-card {
    padding: 1.15rem 1.35rem 1rem;
    margin-bottom: 1.15rem;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 1.25rem;
    align-items: end;
    border-color: var(--sws-glass-border);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.9) 0%, rgba(248, 245, 237, 0.76) 100%);
    box-shadow: var(--sws-layer-shadow);
}

.sws-popular-intro {
    min-width: 0;
}

.sws-popular-title {
    margin: 0 0 0.35rem;
    font-size: 1.4rem;
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

.sws-popular-lead {
    margin: 0;
    color: #524c43;
    font-size: 0.93rem;
    line-height: 1.5;
}

.sws-popular-selector {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 240px;
}

.sws-popular-selector .sws-form-label {
    margin: 0;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #625d54;
}

.sws-popular-selector-row {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.sws-popular-auction-select {
    width: 100%;
    min-width: 220px;
}

.sws-popular-results-card {
    padding: 0;
    overflow: hidden;
    margin-bottom: 1.15rem;
    border: 1px solid var(--sws-glass-border);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.94) 0%, var(--sws-glass) 100%);
    box-shadow: var(--sws-layer-shadow);
}

.sws-popular-tablewrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-x: contain;
}

.sws-popular-empty {
    padding: 1.4rem 1.5rem;
    color: #625d54;
}

/* Bid-count pill — prominent since the page exists to surface bid heat. Top-3
 * rows pick up the flame icon + a warmer brand-burgundy gradient; ranks 4-100
 * use the cream pill style so the heat indicator stays meaningful. */
.sws-popular-bid-count {
    display: inline-flex;
    align-items: center;
    gap: 0.32rem;
    padding: 0.28rem 0.7rem;
    min-width: 3rem;
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82));
    border: 1px solid rgba(var(--sws-line-rgb), 0.3);
    color: #524c43;
    font-size: 0.86rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    box-shadow: 0 2px 8px rgba(var(--sws-shadow-soft-rgb), 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.sws-popular-bid-count strong {
    font-weight: 800;
    letter-spacing: 0.01em;
}

.sws-popular-rank-hot .sws-popular-bid-count {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    border-color: rgba(209, 185, 129, 0.34);
    color: #fdf9f0;
    box-shadow: 0 4px 12px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-popular-rank-hot .sws-popular-bid-count .bi {
    color: #f4ad55;
    font-size: 0.95rem;
}

/* Table chrome — picks up .sws-lot-table base styles, then tightens column
 * widths for the popular layout and dampens the default tablet collapse so
 * the right cells stay visible at each breakpoint. */
.sws-popular-table .sws-popular-col-bids {
    width: 78px;
    text-align: center;
    white-space: nowrap;
}

.sws-popular-table .sws-popular-col-lot {
    width: 64px;
    white-space: nowrap;
}

.sws-popular-table .sws-popular-col-region {
    width: 8.5rem;
    color: #524c43;
}

.sws-popular-table .sws-popular-col-qty {
    width: 5.5rem;
    color: #524c43;
}

.sws-popular-table .sws-popular-col-bid {
    width: 7rem;
    white-space: nowrap;
}

.sws-popular-table .sws-popular-col-action {
    width: 88px;
}

.sws-popular-table .sws-popular-col-scores {
    width: 12rem;
}

.sws-popular-wine-name {
    color: var(--sws-brand-strong);
    font-size: 0.98rem;
}

/* Inline scores duplicate appears under the wine name once the dedicated
 * Scores column collapses at the tablet breakpoint. */
.sws-popular-table .sws-popular-wine-scores {
    display: none;
}

/* The shared .sws-lot-table mobile rule hides cols 3-6 across the board
 * (assumes a Lot/Wine/Action layout). Popular has 8 cols and a leading
 * Bids cell, so neutralise that cascade and hand-pick which cells fold
 * away as the viewport shrinks. */
.sws-popular-table thead th,
.sws-popular-table td {
    display: table-cell !important;
}

@media (max-width: 1199.98px) {
    .sws-popular-table .sws-popular-col-region,
    .sws-popular-table .sws-popular-col-qty {
        display: none !important;
    }
    .sws-popular-table .sws-mobile-meta {
        display: block;
    }
}

@media (max-width: 991.98px) {
    .sws-popular-table .sws-popular-col-scores {
        display: none !important;
    }
    .sws-popular-table .sws-popular-wine-scores {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.32rem;
        margin-top: 0.3rem;
    }
}

@media (max-width: 767.98px) {
    .sws-popular-toolbar-card {
        grid-template-columns: 1fr;
    }

    .sws-popular-selector {
        min-width: 0;
    }

    .sws-popular-table .sws-popular-col-bid {
        display: none !important;
    }

    .sws-popular-table .sws-popular-col-bids {
        width: 64px;
    }

    .sws-popular-bid-count {
        padding: 0.22rem 0.55rem;
        font-size: 0.78rem;
    }
}

/* ----- Top 100 Uncontested Lots (new/uncontested100_lots.php) -----
 * Reuses the .sws-popular-table chrome but swaps the leading Bids column for
 * Estimate + Reserve, and adds a "hours left" status pill in the toolbar. The
 * page is gated to the auction's last 24 hours; outside the window a locked
 * state explains when it reopens. */
.sws-uncontested-status {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.3rem;
}

.sws-uncontested-status-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.36rem 0.85rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%);
    color: #fdf9f0;
    font-size: 0.86rem;
    font-weight: 700;
    box-shadow: 0 4px 12px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-uncontested-status-pill .bi {
    color: #f4ad55;
    font-size: 0.95rem;
}

.sws-uncontested-status-desc {
    margin: 0;
    color: #524c43;
    font-size: 0.78rem;
    letter-spacing: 0.02em;
}

/* Reserve / Estimate columns share widths; Reserve gets a slightly stronger
 * tint via <strong> inside the cell (kept text-only, no extra pill chrome). */
.sws-uncontested-table .sws-uncontested-col-est,
.sws-uncontested-table .sws-uncontested-col-reserve {
    width: 6.4rem;
    white-space: nowrap;
    color: #524c43;
    font-variant-numeric: tabular-nums;
}

.sws-uncontested-table .sws-uncontested-col-reserve strong {
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

/* Unlike the popular table we have no Bids column — keep the popular column
 * collapse cascade but make sure col widths line up around the new Reserve
 * cell at intermediate breakpoints. */
@media (max-width: 991.98px) {
    .sws-uncontested-table .sws-uncontested-col-est {
        display: none !important;
    }
}

@media (max-width: 767.98px) {
    .sws-uncontested-table .sws-uncontested-col-reserve {
        display: none !important;
    }

    .sws-uncontested-status {
        align-items: flex-start;
    }
}

/* Locked-state card (rendered outside the 24h window). Centred, generous
 * padding, single CTA back to browse. */
.sws-uncontested-locked-card {
    padding: 0;
}

.sws-uncontested-locked {
    padding: 2.4rem 1.6rem 2.6rem;
    text-align: center;
    color: #4b3027;
}

.sws-uncontested-locked-icon {
    display: block;
    margin: 0 auto 0.7rem;
    font-size: 2.2rem;
    color: var(--sws-brand-strong);
    opacity: 0.78;
}

.sws-uncontested-locked-title {
    margin: 0 0 0.6rem;
    font-size: 1.18rem;
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

.sws-uncontested-locked-body {
    max-width: 38rem;
    margin: 0 auto 1.1rem;
    font-size: 0.95rem;
    line-height: 1.55;
    color: #524c43;
}

.sws-uncontested-locked-cta {
    margin: 0;
}

/* Stack the primary bid action and the optional Buy It Now button vertically
 * inside the Lynton action cell (matches browse.php which exposes both). */
.sws-lynton-action-cell .sws-lynton-action-stack {
    display: inline-flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.28rem;
    width: auto;
    min-width: 88px;
}

.sws-lynton-action-cell .sws-lynton-action-stack > * {
    width: 100%;
}

.sws-lynton-action-cell .sws-action-btn-bin {
    background: linear-gradient(180deg, #fdf9f0 0%, #f4ebcf 100%) !important;
    border: 1px solid rgba(151, 6, 248, 0.28) !important;
    color: #5b2430 !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.78);
}

.sws-lynton-action-cell .sws-action-btn-bin:hover {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(151, 6, 248, 0.48) !important;
    color: var(--sws-brand-strong) !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.82);
}

/* Closed (disabled) action button — used when the viewed auction has ended.
 * Mirrors the look of `.js-datatable-buynow .sws-btn-disabled`, but lives
 * outside that scope so it can be reused on lynton.php and other surfaces. */
.sws-btn.sws-btn-disabled,
.sws-btn.sws-btn-disabled:hover,
.sws-btn.sws-btn-disabled:focus {
    opacity: 0.78;
    cursor: not-allowed;
    background: #f1f0ee !important;
    border-color: #d5d3cd !important;
    color: #6a6762 !important;
    box-shadow: none !important;
    transform: none !important;
    pointer-events: none;
}

@media (max-width: 767.98px) {
    .sws-lynton-pick-head-grid {
        grid-template-columns: 1fr;
    }

    .sws-lynton-pick-thumb {
        justify-self: end;
    }

    main.sws-main-content:has(.sws-lynton-page) > .container-fluid.sws-container {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    .sws-lynton-intro-card {
        margin-left: 1rem;
        margin-right: 1rem;
    }

    .sws-lynton-pick-card {
        margin-left: 0;
        margin-right: 0;
        border-radius: 0;
        border-left: 0;
        border-right: 0;
    }

    .sws-lynton-table-shell {
        padding-left: 0.7rem;
        padding-right: 0.7rem;
        padding-bottom: 0.75rem;
    }

    /* Stacked lot rows — no clipped columns */
    .sws-lynton-pick-card.sws-summary-card {
        overflow: visible;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive {
        display: block;
        width: 100%;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive thead {
        display: none;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody {
        display: block;
        width: 100%;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody tr {
        display: block;
        width: 100%;
        border: 1px solid rgba(var(--sws-line-rgb), 0.12);
        border-radius: 12px;
        margin-bottom: 0.65rem;
        overflow: hidden;
        background: rgba(var(--sws-glass-rgb), 0.92);
        box-shadow: 0 12px 28px rgba(var(--sws-shadow-rgb), 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.74);
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody tr:nth-child(even) {
        background: rgba(var(--sws-glass-rgb), 0.92);
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td {
        display: grid;
        grid-template-columns: minmax(0, 42%) minmax(0, 1fr);
        gap: 0.35rem 0.65rem;
        align-items: start;
        width: 100% !important;
        max-width: none !important;
        padding: 0.5rem 0.65rem;
        border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
        text-align: left !important;
        white-space: normal !important;
        vertical-align: top;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td:first-child {
        border-top: 0;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td::before {
        content: attr(data-label);
        grid-column: 1;
        grid-row: 1 / -1;
        font-size: 0.6rem;
        font-weight: 700;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: #666460;
        line-height: 1.35;
        padding-top: 0.1rem;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td > * {
        grid-column: 2;
        justify-self: end;
        text-align: right;
        max-width: 100%;
    }

    /* Ticket stays flush right; two-line lot text centered inside the pill */
    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-lot-cell > .sws-lot-badge {
        text-align: center;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-action-cell > [id^="wishlistAdd"] {
        display: flex;
        justify-content: flex-end;
        width: 100%;
        max-width: 11rem;
    }

    /* On mobile, let the action stack (bid + optional BIN) span the right
     * column width like the single-button variant. */
    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-action-cell > .sws-lynton-action-stack {
        display: flex;
        width: 100%;
        max-width: 11rem;
        align-items: stretch;
    }

    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-action-cell .sws-action-btn,
    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-action-cell [id^="wishlistAdd"] .btn,
    .sws-lynton-pick-card .sws-lot-table--lynton-responsive tbody td.sws-lynton-action-cell [id^="wishlistAdd"] input {
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
        width: 100% !important;
        min-width: 5.25rem !important;
        max-width: 10rem;
        height: auto !important;
        min-height: 1.95rem;
        padding: 0.36rem 0.75rem !important;
        font-size: 0.74rem !important;
        line-height: 1 !important;
    }
}

/* ----- Buy It Now (browse_buyItNow.php) ----- */

.sws-buynow-cart-pill {
    width: 100%;
    justify-content: center;
    text-align: center;
    padding: 0.72rem 1rem;
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    border-radius: 12px;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    box-sizing: border-box;
    box-shadow: 0 8px 22px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.sws-buynow-cart-pill .bi {
    font-size: 1.05rem;
}

.sws-buynow-cart-pill:hover {
    transform: translateY(-1px);
}

.sws-buynow-cart-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.5rem;
    height: 1.5rem;
    padding: 0 0.4rem;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.92);
    color: var(--sws-brand-strong);
    font-size: 0.75rem;
    font-weight: 800;
    line-height: 1;
    box-shadow: inset 0 0 0 1px rgba(209, 185, 129, 0.4);
}

/* Image thumbnail cell */
.sws-dt-col-image {
    width: 3.5rem;
    padding: 0.4rem 0.5rem !important;
    text-align: center;
}

.sws-buynow-thumb {
    display: inline-block;
    max-width: 45px;
    max-height: 60px;
    width: auto;
    height: auto;
    border-radius: 4px;
    background: #fff;
    padding: 2px;
    box-shadow: 0 1px 3px rgba(var(--sws-shadow-rgb), 0.08);
}

.sws-buynow-thumb-trigger {
    display: inline-block;
    cursor: zoom-in;
}

.sws-buynow-thumb-trigger:hover .sws-buynow-thumb {
    opacity: 0.92;
}

/* Buy / View Cart action cell — match browse Add/Bid pill metrics. */
.js-datatable-buynow tbody td.sws-dt-col-buy .sws-btn,
.js-datatable-buynow tbody td.sws-dt-col-buy button,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] .sws-btn,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] button {
    min-width: 3.35rem !important;
    width: auto !important;
    max-width: none !important;
    height: 1.72rem !important;
    padding: 0 0.7rem !important;
    border-radius: 999px !important;
    font-size: 0.72rem !important;
    font-weight: 600 !important;
    line-height: 1 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    white-space: nowrap;
    box-sizing: border-box;
    border-width: 1px;
    border-style: solid;
    vertical-align: middle;
    cursor: pointer;
    transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.js-datatable-buynow tbody td.sws-dt-col-buy .sws-btn-primary,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] .sws-btn-primary,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] button.sws-btn-primary {
    background: linear-gradient(135deg, #7c3441 0%, #4b1824 100%) !important;
    border-color: rgba(209, 185, 129, 0.34) !important;
    color: #fff !important;
    box-shadow: 0 6px 18px rgba(75, 24, 36, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.js-datatable-buynow tbody td.sws-dt-col-buy .sws-btn-primary:hover,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] .sws-btn-primary:hover,
.js-datatable-buynow tbody td.sws-dt-col-buy [id^="buyNowCartAdd"] button.sws-btn-primary:hover {
    background: linear-gradient(135deg, #8a3d4b 0%, #562030 100%) !important;
    border-color: rgba(209, 185, 129, 0.52) !important;
    box-shadow: 0 7px 20px rgba(75, 24, 36, 0.28);
    transform: translateY(-1px);
}

.js-datatable-buynow tbody td.sws-dt-col-buy a.sws-btn-secondary {
    background: var(--sws-surface-soft) !important;
    border-color: var(--sws-border) !important;
    color: #383632 !important;
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-rgb), 0.08);
}

.js-datatable-buynow tbody td.sws-dt-col-buy a.sws-btn-secondary:hover {
    background: #fff !important;
    border-color: var(--sws-border-strong) !important;
    color: var(--sws-brand-strong) !important;
    transform: translateY(-1px);
}

.js-datatable-buynow tbody td.sws-dt-col-buy .sws-btn-disabled {
    opacity: 0.72 !important;
    cursor: not-allowed !important;
    background: #f1f0ee !important;
    border-color: #d5d3cd !important;
    color: #6a6762 !important;
    box-shadow: none !important;
}

/* Noscript SEO table */
.sws-browse-noscript {
    max-width: 1100px;
    margin: 1rem auto;
    padding: 0 1rem;
}

/* ============================================================================
 * Buy It Now cart / checkout (new/show_buynowlist.php, new/buynow_checkout.php)
 * ========================================================================== */

.sws-cart-page {
    max-width: 1080px;
}

.sws-cart-card {
    padding: 1.4rem 1.6rem 1.6rem;
}

.sws-card-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.6rem;
    margin-bottom: 1rem;
    padding-bottom: 0.7rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.16);
}

.sws-card-title {
    margin: 0;
    font-size: 1.18rem;
    color: var(--sws-brand-strong);
    font-weight: 700;
}

.sws-card-meta {
    margin: 0;
    color: var(--sws-text-muted);
    font-size: 0.86rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    font-variant-numeric: tabular-nums;
}

/* Cart table modifier: 5 cols (Description, Type, Per Unit, Qty, Total) */
.sws-lot-table.sws-lot-table--cart thead th,
.sws-lot-table.sws-lot-table--cart tbody td {
    vertical-align: middle;
}

/* Type — muted, secondary metadata */
.sws-lot-table.sws-lot-table--cart tbody td:nth-child(2) {
    color: var(--sws-text-muted);
    font-size: 0.84rem;
    letter-spacing: 0.04em;
}

/* Per Unit + Total — right-aligned, tabular figures so prices line up */
.sws-lot-table.sws-lot-table--cart thead th:nth-child(3),
.sws-lot-table.sws-lot-table--cart tbody td:nth-child(3),
.sws-lot-table.sws-lot-table--cart thead th:nth-child(5),
.sws-lot-table.sws-lot-table--cart tbody td:nth-child(5),
.sws-lot-table.sws-lot-table--cart .sws-cart-col-total {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

/* Qty — centered (the stepper sits in this cell) */
.sws-lot-table.sws-lot-table--cart thead th:nth-child(4),
.sws-lot-table.sws-lot-table--cart tbody td:nth-child(4),
.sws-lot-table.sws-lot-table--cart .sws-cart-col-qty {
    text-align: center;
    white-space: nowrap;
}

.sws-lot-table.sws-lot-table--cart tbody tr:hover .sws-qty-stepper {
    background: rgba(249, 247, 241, 0.4);
}

/* Zebra striping for long carts */
.sws-lot-table.sws-lot-table--cart tbody tr:nth-child(odd) {
    background: rgba(249, 247, 241, 0.32);
}

.sws-lot-table.sws-lot-table--cart tbody tr:nth-child(odd):hover {
    background: rgba(249, 247, 241, 0.55);
}

.sws-lot-table.sws-lot-table--cart tbody tr:nth-child(even):hover {
    background: rgba(var(--sws-glass-rgb), 0.55);
}

/* Per-row remove (trash) icon */
.sws-cart-col-remove {
    width: 2.6rem;
    text-align: center;
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.sws-cart-remove {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.05rem;
    height: 2.05rem;
    border-radius: 999px;
    border: 1px solid transparent;
    background: transparent;
    color: rgba(74, 27, 39, 0.42);
    text-decoration: none;
    transition: color 0.18s ease, background 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}

.sws-cart-remove .bi {
    font-size: 0.96rem;
    line-height: 1;
}

.sws-cart-remove:hover,
.sws-cart-remove:focus {
    color: #b3213a;
    background: rgba(248, 234, 235, 0.74);
    border-color: rgba(230, 190, 194, 0.62);
    text-decoration: none;
    transform: translateY(-1px);
}

/* Inline currency hierarchy: dimmed "AU$" prefix */
.sws-currency-prefix {
    color: var(--sws-text-muted);
    font-weight: 600;
    margin-right: 0.18rem;
    font-size: 0.86em;
    letter-spacing: 0.02em;
}

.sws-cart-stock-note {
    display: inline-block;
    margin-top: 0.32rem;
    padding: 0.18rem 0.5rem;
    background: #fbf8ef;
    border: 1px solid #e0d6bd;
    border-radius: 999px;
    color: #7a5928;
    font-size: 0.72rem;
    font-weight: 600;
}

/* Quantity stepper */
.sws-qty-stepper {
    display: inline-flex;
    align-items: center;
    gap: 0.18rem;
    padding: 0.14rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    border-radius: 999px;
    background: rgba(var(--sws-glass-rgb), 0.86);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.78);
    transition: background 0.2s ease, border-color 0.2s ease;
}

.sws-qty-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 999px;
    color: var(--sws-brand-strong);
    background: transparent;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    transition: background 0.18s ease, color 0.18s ease;
}

.sws-qty-btn:hover,
.sws-qty-btn:focus {
    background: rgba(var(--sws-line-rgb), 0.14);
    color: var(--sws-brand);
    text-decoration: none;
}

.sws-qty-value {
    min-width: 1.65rem;
    text-align: center;
    font-weight: 700;
    color: #36332f;
    font-size: 0.94rem;
}

/* Subtotal line under the cart table */
.sws-cart-subtotal {
    display: flex;
    justify-content: flex-end;
    align-items: baseline;
    gap: 0.6rem;
    padding: 0.85rem 0.2rem 0.4rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.18);
    margin-top: 0.4rem;
}

.sws-cart-subtotal-label {
    color: var(--sws-text-muted);
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
}

.sws-cart-subtotal-value {
    font-size: 1.14rem;
    font-weight: 800;
    color: var(--sws-brand-strong);
    font-variant-numeric: tabular-nums;
}

.sws-cart-actions {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.6rem;
}

.sws-cart-checkout {
    padding: 1.3rem 1.5rem 1.5rem;
}

.sws-alert-title {
    margin: 0 0 0.4rem;
    font-size: 1.02rem;
    font-weight: 700;
    color: inherit;
}

/* Checkout grid: Delivery + Shipping (left), Order Summary + Conditions (right) */
.sws-checkout-grid {
    display: grid;
    grid-template-columns: 1.1fr 0.9fr;
    gap: 1.1rem;
    margin-top: 1.2rem;
}

.sws-cart-panel {
    padding: 1.2rem 1.35rem 1.3rem;
}

.sws-cart-panel-title {
    margin: 0 0 0.95rem;
    padding-bottom: 0.55rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.16);
    font-size: 1.02rem;
    color: var(--sws-brand-strong);
    font-weight: 700;
}

.sws-cart-field {
    margin-bottom: 0.78rem;
}

.sws-cart-field:last-child {
    margin-bottom: 0;
}

.sws-cart-field-row {
    display: grid;
    grid-template-columns: 1.4fr 0.8fr 0.8fr;
    gap: 0.7rem;
}

.sws-cart-field-row .sws-cart-field {
    margin-bottom: 0.78rem;
}

.sws-cart-optional {
    color: var(--sws-text-muted);
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
    font-size: 0.74rem;
}

/* Form check rows (radio + checkbox options) */
.sws-cart-check {
    display: flex;
    align-items: flex-start;
    gap: 0.62rem;
    padding: 0.6rem 0.7rem;
    border-radius: 10px;
    border: 1px solid rgba(var(--sws-line-rgb), 0.14);
    background: rgba(var(--sws-glass-rgb), 0.62);
    cursor: pointer;
    margin-bottom: 0.55rem;
    transition: border-color 0.2s ease, background 0.2s ease;
}

.sws-cart-check:hover {
    border-color: rgba(var(--sws-line-rgb), 0.32);
    background: rgba(var(--sws-glass-rgb), 0.88);
}

.sws-cart-check input[type="checkbox"],
.sws-cart-check input[type="radio"] {
    margin-top: 0.22rem;
    accent-color: var(--sws-brand);
    flex-shrink: 0;
}

.sws-cart-check span {
    flex: 1;
    color: #363431;
    font-size: 0.9rem;
    line-height: 1.45;
}

.sws-cart-check span strong {
    display: inline;
    color: var(--sws-brand-strong);
    font-weight: 700;
}

.sws-cart-check span small {
    display: block;
    margin-top: 0.18rem;
    color: var(--sws-text-muted);
    font-size: 0.78rem;
    line-height: 1.45;
}

.sws-cart-check--quiet {
    border-color: transparent;
    background: transparent;
    padding: 0.45rem 0;
}

.sws-cart-check--quiet:hover {
    border-color: transparent;
    background: rgba(var(--sws-line-rgb), 0.06);
}

.sws-cart-section-label {
    margin: 1rem 0 0.45rem;
    color: var(--sws-text-muted);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    font-weight: 700;
}

.sws-cart-detail-link {
    color: var(--sws-brand);
    font-weight: 600;
    text-decoration: none;
}

.sws-cart-detail-link:hover {
    text-decoration: underline;
}

/* Order summary table */
.sws-summary-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 0.1rem;
}

.sws-summary-table td {
    padding: 0.42rem 0;
    font-size: 0.93rem;
    color: #363431;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.1);
}

.sws-summary-table tr:first-child td {
    border-top: 0;
    padding-top: 0;
}

.sws-summary-amount {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.sws-summary-meta {
    color: var(--sws-text-muted);
    font-weight: 500;
    font-size: 0.82rem;
}

.sws-summary-total-row td {
    padding-top: 0.7rem;
    border-top: 2px solid rgba(var(--sws-line-rgb), 0.32);
    font-weight: 800;
    font-size: 1.02rem;
    color: var(--sws-brand-strong);
}

.sws-summary-tag {
    display: inline-block;
    margin-left: 0.32rem;
    padding: 0.04rem 0.42rem;
    border-radius: 999px;
    background: #edf5ef;
    color: #2c5f44;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

/* Conditions of Sale (lighter card text) */
.sws-cart-panel--terms p {
    margin-bottom: 0.6rem;
    color: #45423d;
    font-size: 0.9rem;
}

.sws-cart-panel--terms ul {
    margin: 0;
    padding-left: 1.15rem;
    color: var(--sws-text-muted);
    font-size: 0.86rem;
    line-height: 1.55;
}

.sws-cart-panel--terms li {
    margin-bottom: 0.2rem;
}

/* Submit row */
.sws-cart-submit {
    display: flex;
    justify-content: center;
    margin: 1.4rem 0 1.4rem;
}

.sws-btn-lg {
    padding: 0.85rem 2.6rem;
    font-size: 1rem;
    border-radius: 999px;
    font-weight: 700;
    letter-spacing: 0.02em;
}

.sws-btn-sm {
    padding: 0.36rem 0.95rem;
    font-size: 0.78rem;
    border-radius: 999px;
    letter-spacing: 0.02em;
}

/* ----- Cart / checkout responsive ----- */
@media (max-width: 991.98px) {
    .sws-checkout-grid {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 767.98px) {
    .sws-cart-card,
    .sws-cart-checkout,
    .sws-cart-panel {
        padding: 1rem 1.05rem 1.1rem;
    }

    .sws-card-head {
        gap: 0.3rem;
    }

    .sws-cart-field-row {
        grid-template-columns: 1fr;
        gap: 0;
    }

    /*
     * Cart table on mobile: keep Description (col 1), Qty stepper (col 4),
     * Remove icon (col 6); fold Type / Per Unit / Total into the description
     * scaffold meta.
     */
    .sws-lot-table.sws-lot-table--cart thead th:first-child,
    .sws-lot-table.sws-lot-table--cart td:first-child {
        width: auto;
        text-align: left;
    }

    .sws-lot-table.sws-lot-table--cart thead th:nth-child(2),
    .sws-lot-table.sws-lot-table--cart td:nth-child(2),
    .sws-lot-table.sws-lot-table--cart thead th:nth-child(3),
    .sws-lot-table.sws-lot-table--cart td:nth-child(3),
    .sws-lot-table.sws-lot-table--cart thead th:nth-child(5),
    .sws-lot-table.sws-lot-table--cart td:nth-child(5) {
        display: none;
    }

    .sws-lot-table.sws-lot-table--cart thead th:nth-child(4),
    .sws-lot-table.sws-lot-table--cart td:nth-child(4) {
        display: table-cell;
        width: 116px;
        padding-left: 0.4rem;
        padding-right: 0.4rem;
    }

    .sws-lot-table.sws-lot-table--cart thead th:nth-child(6),
    .sws-lot-table.sws-lot-table--cart td:nth-child(6) {
        display: table-cell;
    }

    .sws-cart-actions {
        justify-content: stretch;
    }

    .sws-cart-actions .sws-btn {
        width: 100%;
    }

    .sws-cart-submit .sws-btn-lg {
        width: 100%;
    }
}

/* ============================================================================
 * Bidding pages (/new/bidding.php, /new/confirmbid.php)
 *
 * Reuses .sws-card, .sws-lot-table, .sws-mobile-meta, .sws-inline-badges,
 * .sws-grange-pill and .sws-bidding-actions stays close to .sws-cart-actions.
 * Only the bid-form atoms (autobid input group, "WD" label, fineprint grid,
 * mobile column collapse) are new.
 * ========================================================================== */
.sws-bidding-page .sws-card {
    margin-top: 1.6rem;
}

/* Lean variant skips the in-card head + intro paragraph because the
 * compact hero already carries the page heading and the auction date. */
.sws-bidding-page .sws-bidding-card--lean {
    margin-top: 0.4rem;
}

/* Tighten the cream gap below the compact hero on bidding pages -- the
 * generic .sws-main-content padding-top of 2.7rem leaves a lot of empty
 * space before the table when the hero is the page header. */
main.sws-main-content:has(.sws-bidding-page) {
    padding-top: 0.6rem;
}

@media (max-width: 767.98px) {
    main.sws-main-content:has(.sws-bidding-page) {
        padding-top: 0.4rem;
    }
}

.sws-bidding-card,
.sws-bidding-fineprint {
    padding: 1.4rem 1.6rem 1.6rem;
}

/* Lean variant skips the in-card head entirely so the table is the very
 * first child of the card. Drop the top padding and let the cream
 * gradient header become the literal "lid" of the panel - it inherits
 * the card's rounded top corners via per-th radii below.
 *
 * overflow: clip is a defensive guard for Safari / older Chromium where
 * a child gradient can occasionally bleed past the rounded ancestor. We
 * use clip rather than hidden so future positioned children (tooltips,
 * popovers) aren't accidentally trapped inside the card's box.
 */
.sws-bidding-card--lean {
    padding-top: 0;
    overflow: clip;
}

.sws-bidding-card .sws-card-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.4rem 1rem;
}

.sws-bidding-card .sws-sv-tablewrap {
    margin: 0 -0.4rem;
}

/* Lean: pull the table flush to the card's left/right padding too so
 * the cream header reaches the rounded corners cleanly. */
.sws-bidding-card--lean .sws-sv-tablewrap {
    margin: 0 -1.6rem 1.4rem;
}

/* The first/last header cells round to match .sws-card border-radius
 * (16px) at the corners that meet the card edge. The middle header
 * cells stay square because their top edge sits flush with the card's
 * straight top edge - only the corner cells need the curve. */
.sws-bidding-card--lean .sws-lot-table thead th:first-child {
    border-top-left-radius: 16px;
}
.sws-bidding-card--lean .sws-lot-table thead th:last-child {
    border-top-right-radius: 16px;
}

@media (max-width: 767.98px) {
    .sws-bidding-card,
    .sws-bidding-fineprint {
        padding: 1rem 1.05rem 1.15rem;
    }
}

.sws-lot-table--bidding .sws-bid-col-pick,
.sws-lot-table--bidconfirm .sws-bid-col-pick {
    width: 36px;
    text-align: center;
}

.sws-lot-table--bidding .sws-bid-col-sub {
    display: block;
    font-size: 0.7rem;
    font-weight: 500;
    color: var(--sws-text-muted);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.sws-lot-table--bidding .sws-bid-col-vip {
    background: rgba(255, 247, 197, 0.55);
    border-left: 1px solid rgba(185, 154, 99, 0.18);
    border-right: 1px solid rgba(185, 154, 99, 0.18);
}

.sws-lot-table--bidding tbody td.sws-bid-col-vip {
    background: rgba(255, 247, 197, 0.4);
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.sws-bid-input-group {
    display: inline-flex;
    align-items: stretch;
    border: 1px solid rgba(var(--sws-line-rgb), 0.32);
    border-radius: 10px;
    overflow: hidden;
    background: rgba(var(--sws-glass-rgb), 0.85);
}

.sws-bid-input-prefix {
    padding: 0 0.55rem;
    display: inline-flex;
    align-items: center;
    color: var(--sws-text-muted);
    background: rgba(209, 185, 129, 0.12);
    font-weight: 600;
    font-size: 0.85rem;
}

.sws-bid-input.sws-bid-input { /* double class to outweigh .sws-input */
    width: 86px;
    padding: 0.42rem 0.55rem;
    border: 0;
    border-radius: 0;
    background: transparent;
    text-align: right;
    font-variant-numeric: tabular-nums;
    box-shadow: none;
}

.sws-bid-input.sws-bid-input:focus {
    outline: none;
    box-shadow: inset 0 0 0 2px rgba(123, 32, 50, 0.18);
}

.sws-bid-wd {
    display: inline-block;
    padding: 0.18rem 0.55rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.04);
    color: var(--sws-text-muted);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.06em;
}

.sws-bidding-actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.6rem;
    flex-wrap: wrap;
    margin-top: 1.1rem;
}

.sws-bidding-actions .sws-btn {
    text-align: center;
    justify-content: center;
}

/* Money columns on the confirmation table never wrap mid-amount. */
.sws-lot-table--bidconfirm tbody td.text-end,
.sws-lot-table--bidconfirm thead th.text-end {
    white-space: nowrap;
}

.sws-bidding-fineprint {
    margin-top: 1.5rem;
}

/* Two-up layout for confirmbid.php's "Conditions of sale" + "Estimated
 * shipping" cards. Each child is a separate .sws-card so they read as
 * independent panels rather than two columns of one card. The pair
 * carries the top-margin once; child fineprint cards reset to zero so
 * stacking on mobile doesn't compound spacing. */
.sws-bidding-fineprint-pair {
    margin-top: 1.5rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}

.sws-bidding-fineprint-pair > .sws-bidding-fineprint {
    margin-top: 0;
}

/* Legacy single-card-with-two-columns variant. Still defined for any
 * page that hasn't switched to the .sws-bidding-fineprint-pair layout. */
.sws-bidding-fineprint-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.6rem;
}

.sws-bidding-fineprint-title {
    font-size: 1rem;
    margin: 0 0 0.5rem;
    color: var(--sws-brand-strong);
}

.sws-bidding-fineprint p,
.sws-bidding-fineprint li {
    font-size: 0.86rem;
    line-height: 1.5;
}

/* Lot ticket + GST asterisk live in an inline-flex wrapper so the asterisk
 * never wraps below the pill -- even when the cell is narrow on mobile. */
.sws-bid-lot-wrap {
    display: inline-flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.18rem;
    line-height: 1;
}

/* Mobile-only: the Pick cell holds both the checkbox and the lot ticket
 * stacked vertically, so the dedicated Lot column can collapse. */
.sws-bid-pick-content {
    display: inline-flex;
    align-items: center;
}

.sws-bid-pick-lot {
    display: none;
}

.sws-bid-gst {
    display: inline-block;
    color: var(--sws-brand-strong);
    font-weight: 700;
    font-size: 0.95em;
    line-height: 1;
    cursor: help;
}

.sws-bidding-footnote {
    margin: 0.9rem 0 0;
    color: var(--sws-text-muted);
    font-size: 0.78rem;
    line-height: 1.45;
}

.sws-bidding-footnote .sws-bid-gst {
    margin-right: 0.25rem;
    vertical-align: baseline;
    font-size: 1em;
}

/* Subtle, on-brand row hover that doesn't recolour the text. */
.sws-lot-table--bidding tbody tr:hover,
.sws-lot-table--bidconfirm tbody tr:hover {
    background-color: rgba(var(--sws-hover-rgb), 0.22);
}

.sws-lot-table--bidding tbody tr:hover td,
.sws-lot-table--bidding tbody tr:hover td strong,
.sws-lot-table--bidconfirm tbody tr:hover td,
.sws-lot-table--bidconfirm tbody tr:hover td strong {
    color: inherit;
}

.sws-lot-table--bidding .sws-product-note-badge,
.sws-lot-table--bidconfirm .sws-product-note-badge {
    text-decoration: none;
}

/* ----------------------------------------------------------------------
 * Tablet scaffold for /new/bidding.php
 *
 * As columns hide on smaller screens, their values fold INTO the Wine
 * cell (.sws-mobile-meta) and the dedicated Scores column's pills get
 * an inline duplicate (.sws-bid-wine-scores) under the wine name.
 *
 *   <= 1199.98px : Region + Qty columns collapse  -> meta becomes visible
 *                  with Region + Qty rows. Other meta rows still hidden
 *                  while their column is visible.
 *   <=  991.98px : Estimate + Scores columns collapse -> Estimate row in
 *                  meta turns on, plus inline scores duplicate appears
 *                  under the wine name.
 *   <=  767.98px : Current-bid + VIP columns also collapse (handled by
 *                  the phone scaffold below); the remaining meta rows
 *                  fall in via .sws-mobile-meta-item's default block.
 * --------------------------------------------------------------------*/

/* Inline scores duplicate sits under the wine name; hidden until the
   dedicated Scores column collapses at the tablet breakpoint below. */
.sws-lot-table--bidding .sws-bid-wine-scores {
    display: none;
}

@media (max-width: 1199.98px) {
    .sws-lot-table--bidding .sws-bid-col-region,
    .sws-lot-table--bidding .sws-bid-col-qty {
        display: none;
    }
    /* Mobile meta becomes visible at tablet so the hidden Region/Qty
       (and at the next breakpoint, Estimate) scaffold into the Wine
       cell. Individual rows still hide while their column is visible. */
    .sws-lot-table--bidding .sws-mobile-meta {
        display: block;
    }
}

/* While Estimate + Current bid + VIP columns are still visible at
   wide-tablet, suppress their duplicates inside the meta block. */
@media (min-width: 992px) and (max-width: 1199.98px) {
    .sws-lot-table--bidding .sws-bid-mobile-estimate,
    .sws-lot-table--bidding .sws-bid-mobile-bid,
    .sws-lot-table--bidding .sws-bid-mobile-vip {
        display: none;
    }
}

@media (max-width: 991.98px) {
    .sws-lot-table--bidding .sws-bid-col-estimate,
    .sws-lot-table--bidding .sws-bid-col-scores {
        display: none;
    }
    .sws-lot-table--bidconfirm .sws-bid-col-qty {
        display: none;
    }
    /* Show the inline scores duplicate beneath the wine name once the
       dedicated Scores column has collapsed. */
    .sws-lot-table--bidding .sws-bid-wine-scores {
        display: flex;
        flex-wrap: wrap;
        align-items: center;
        gap: 0.32rem;
        margin-top: 0.3rem;
    }
}

/* Current bid and VIP columns are still visible between phone and
   tablet small (768-991.98px), so hide their meta duplicates there. */
@media (min-width: 768px) and (max-width: 991.98px) {
    .sws-lot-table--bidding .sws-bid-mobile-bid,
    .sws-lot-table--bidding .sws-bid-mobile-vip {
        display: none;
    }
}

/* ----------------------------------------------------------------------
 * Mobile scaffold for /new/bidding.php
 *
 * Below 768px we override the generic .sws-lot-table 3-6 hide rule and
 * collapse the table into 3 columns:
 *      [ checkbox ] [ lot + name + meta ] [ autobid ]
 * The lot ticket, scores, region, qty, estimate, current bid (per unit)
 * and VIP reserve all render inside .sws-mobile-meta within the Wine TD.
 * Hidden inputs (ItemNo[]/WinningBid[]) inside the Current bid TD still
 * submit because display:none on a parent doesn't disable form controls.
 * --------------------------------------------------------------------*/
@media (max-width: 767.98px) {
    .sws-bidding-fineprint-grid {
        grid-template-columns: 1fr;
        gap: 1rem;
    }

    /* Stack the Conditions / Shipping cards on phones. Tightened gap to
       match the existing fineprint-grid mobile spacing. */
    .sws-bidding-fineprint-pair {
        grid-template-columns: 1fr;
        gap: 1rem;
    }

    /* On phones, stack the action buttons full-width with the primary
       action (last DOM child) on top via column-reverse. */
    .sws-bidding-actions {
        flex-direction: column-reverse;
        justify-content: stretch;
        align-items: stretch;
    }

    .sws-bidding-actions .sws-btn {
        width: 100%;
        display: flex;
    }

    .sws-bid-input.sws-bid-input {
        width: 100%;
        min-width: 70px;
    }

    /* Edge-to-edge container so the table fills the screen on phones.
       Mirrors the .sws-browse-layout flush rule. */
    main.sws-main-content:has(.sws-bidding-page) > .container-fluid.sws-container {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    .sws-bidding-card,
    .sws-bidding-fineprint {
        padding-left: 0.7rem;
        padding-right: 0.7rem;
    }

    .sws-bidding-card .sws-sv-tablewrap {
        margin-left: -0.7rem;
        margin-right: -0.7rem;
    }

    /* Lean variant on phones: full -0.7rem horizontal bleed (matching the
       0.7rem mobile card padding) + flush top + a smaller bottom margin.
       Corner radii drop to 14px to suit the card's tighter mobile feel.

       padding-top: 0 has to be re-asserted here because an earlier mobile
       rule (.sws-bidding-card { padding: 1rem 1.05rem 1.15rem }) uses the
       padding shorthand and clobbers the desktop --lean override. Without
       this re-assertion the cream header sits ~1rem below the card top
       on phones, leaving a white strip above it. */
    .sws-bidding-card--lean {
        padding-top: 0;
    }

    .sws-bidding-card--lean .sws-sv-tablewrap {
        margin: 0 -0.7rem 1rem;
    }

    .sws-bidding-card--lean .sws-lot-table thead th:first-child {
        border-top-left-radius: 14px;
    }
    .sws-bidding-card--lean .sws-lot-table thead th:last-child {
        border-top-right-radius: 14px;
    }

    /* The generic .sws-lot-table mobile rule forces table-layout: fixed and
       sets ~70px column widths for first/seventh child. We need natural
       sizing so the bidding columns can negotiate their own space. */
    .sws-lot-table--bidding {
        table-layout: auto !important;
    }

    /* Hide every column, then re-enable just Pick (1), Wine (3) and Autobid
       (last child). The dedicated Lot column collapses; its lot ticket is
       rendered inside the Pick cell via .sws-bid-pick-lot. Hidden form
       inputs inside hidden TDs still submit. */
    .sws-lot-table--bidding thead th,
    .sws-lot-table--bidding tbody td {
        display: none;
    }

    .sws-lot-table--bidding thead th:first-child,
    .sws-lot-table--bidding tbody td:first-child,
    .sws-lot-table--bidding thead th:nth-child(3),
    .sws-lot-table--bidding tbody td:nth-child(3),
    .sws-lot-table--bidding thead th:last-child,
    .sws-lot-table--bidding tbody td:last-child {
        display: table-cell;
    }

    /* Pick + Lot scaffold: checkbox on top, lot ticket below. */
    .sws-bid-pick-content {
        display: inline-flex;
        flex-direction: column;
        align-items: center;
        gap: 0.28rem;
    }

    .sws-bid-pick-lot {
        display: inline-flex;
        align-items: center;
        gap: 0.16rem;
        line-height: 1;
    }

    .sws-lot-table--bidding thead th:first-child,
    .sws-lot-table--bidding tbody td:first-child {
        width: 1%;
        padding-left: 0.4rem;
        padding-right: 0.4rem;
        text-align: center;
        vertical-align: middle;
    }

    /* Wine cell soaks up the rest. */
    .sws-lot-table--bidding tbody td:nth-child(3) {
        white-space: normal;
        font-size: 0.86rem;
        word-break: break-word;
    }

    /* Autobid - AU$ prefix hidden on phones (the placeholder/digits in the
       input are unambiguous). Input gets the saved real estate. */
    .sws-lot-table--bidding thead th:last-child,
    .sws-lot-table--bidding tbody td:last-child {
        width: 1%;
        white-space: nowrap;
        padding-left: 0.3rem;
        padding-right: 0.5rem;
        text-align: right;
    }

    .sws-lot-table--bidding tbody td:last-child .sws-bid-input-prefix {
        display: none;
    }

    .sws-lot-table--bidding tbody td:last-child .sws-bid-input.sws-bid-input {
        width: 78px;
        min-width: 78px;
        padding: 0.42rem 0.55rem;
        font-size: 0.9rem;
        text-align: right;
    }

    .sws-lot-table--bidding tbody td:last-child .sws-bid-input-group {
        border-radius: 8px;
    }

    .sws-lot-table--bidding tbody td:last-child .sws-bid-wd {
        font-size: 0.7rem;
        padding: 0.16rem 0.45rem;
    }

    /* ------------- /new/confirmbid.php parity ------------- */
    main.sws-main-content:has(.sws-bidding-page) .sws-bidding-fineprint-grid {
        gap: 1rem;
    }

    /* Edge-to-edge confirmation table too. */
    .sws-lot-table--bidconfirm {
        table-layout: auto !important;
    }

    .sws-lot-table--bidconfirm tbody td.text-end,
    .sws-lot-table--bidconfirm thead th.text-end {
        font-variant-numeric: tabular-nums;
    }

    /* Confirmation table also tightens to a 2-column scaffold. */
    .sws-lot-table--bidconfirm thead th:nth-child(3),
    .sws-lot-table--bidconfirm tbody td:nth-child(3),
    .sws-lot-table--bidconfirm thead th:nth-child(6),
    .sws-lot-table--bidconfirm tbody td:nth-child(6) {
        display: none;
    }

    /* ------------- /new/member.php phone scaffold ------------- */
    /* Member columns run [ lot ] [ wine + meta ] ... [ status ] [ change bid ],
       so the inherited --bidding first/3rd/last positions land on Lot, Scores
       and Change bid. These class-keyed rules swap Scores for Wine and Status;
       they must stay after the --bidding scaffold to win the specificity tie. */
    .sws-lot-table--member thead th.sws-bid-col-scores,
    .sws-lot-table--member tbody td.sws-bid-col-scores,
    .sws-lot-table--member-closed thead th.sws-bid-col-pick,
    .sws-lot-table--member-closed tbody td.sws-bid-col-pick {
        display: none;
    }
    .sws-lot-table--member thead th.sws-bid-col-wine,
    .sws-lot-table--member tbody td.sws-bid-col-wine,
    .sws-lot-table--member thead th.sws-bid-col-status,
    .sws-lot-table--member tbody td.sws-bid-col-status {
        display: table-cell;
    }
    .sws-lot-table--member tbody td.sws-bid-col-wine {
        white-space: normal;
        font-size: 0.86rem;
        word-break: break-word;
    }
    .sws-lot-table--member tbody td.sws-bid-col-lot .sws-lot-badge {
        white-space: nowrap;
    }
    .sws-lot-table--member thead th.sws-bid-col-pick,
    .sws-lot-table--member tbody td.sws-bid-col-pick {
        white-space: normal;
        overflow-wrap: normal;
        text-align: center;
    }

    /* Status badge sizes down a touch on phones. min-width gives the
     * Under-reserve pill enough room to wrap "Under" and "reserve" onto two
     * lines at the natural word boundary instead of spilling letter by
     * letter when the table column auto-shrinks for the icon-only winning /
     * outbid rows. */
    .sws-lot-table--member tbody td.sws-bid-col-status {
        text-align: right;
        padding-right: 0.5rem;
        white-space: normal;
        min-width: 4.4rem;
    }

    .sws-bid-status {
        font-size: 0.6rem;
        padding: 0.16rem 0.42rem;
    }

    /* Allow the under-reserve pill to wrap as two lines without breaking
     * mid-word. word-break: keep-all keeps each English word whole; the
     * inline-block pill grows to its natural two-line height. */
    .sws-bid-status--reserve {
        white-space: normal;
        word-break: keep-all;
        overflow-wrap: normal;
        max-width: 4.4rem;
    }

    /* Member-specific toolbar collapses the meta below the toggle on phones. */
    .sws-member-toolbar {
        flex-direction: column;
        align-items: stretch;
        gap: 0.5rem;
    }

    .sws-member-toolbar .sws-btn {
        align-self: flex-end;
    }

    .sws-bidding-pagination {
        flex-wrap: wrap;
        gap: 0.5rem;
        justify-content: space-between;
    }

    .sws-member-bank-alert {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.6rem;
    }
}

/* ----------------------------------------------------------------------
 * /new/member.php - "My Bids" dashboard
 *
 * Reuses the .sws-lot-table--bidding base + lean card. Adds:
 *   - .sws-grange-pill--history     bidding history pill (history-modal opener)
 *   - .sws-bid-status (+ variants)  winning / outbid / under-reserve labels
 *   - .sws-bid-row-- variants       optional subtle row tint
 *   - .sws-member-toolbar           "Showing X of Y" + "Show winning only" row
 *   - .sws-bidding-pagination       prev / page-meta / next strip
 *   - .sws-member-bank-alert        vendor BSB-missing inline alert
 *   - .sws-member-closed-note       brief next-auction note
 *   - .sws-member-empty / -text     empty-state card body
 *   - .sws-lot-table--member-closed hides the empty pick column on desktop
 * --------------------------------------------------------------------*/

.sws-grange-pill--history {
    background: linear-gradient(135deg, #433e37 0%, #28241e 100%) !important;
}

.sws-bid-col-status {
    width: 86px;
    white-space: nowrap;
}

.sws-bid-status {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    line-height: 1.25;
    color: #fff;
    border: 1px solid rgba(209, 185, 129, 0.28);
    box-shadow: 0 3px 9px rgba(var(--sws-shadow-rgb), 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.16);
    text-align: center;
}

.sws-bid-status--winning {
    background: linear-gradient(135deg, #34704d 0%, #1f4f35 100%);
}

.sws-bid-status--outbid {
    background: linear-gradient(135deg, #8a3d4b 0%, #5a1f2c 100%);
}

.sws-bid-status--reserve {
    background: linear-gradient(135deg, #b88a3e 0%, #8c6429 100%);
}

/* Tick / cross status indicators - replaces the WINNING / OUTBID text
 * pills with a quieter glanceable icon. The under-reserve case keeps the
 * .sws-bid-status text variant above because it isn't a binary win/lose. */
.sws-bid-status-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.sws-bid-status-icon .bi {
    font-size: 1.55rem;
    line-height: 1;
}

.sws-bid-status-icon--winning {
    color: #2f7a52;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
}

.sws-bid-status-icon--outbid {
    color: #b1474a;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.06);
}

/* Subtle row tint - keeps the table calm but lets the eye scan winning vs
 * outbid quickly. We tint the TD background rather than the TR so the
 * border-collapse hover/border treatment from .sws-lot-table still applies.
 * Opacities tuned so the wash is visible against the cream card without
 * fighting the wine-name typography. */
.sws-lot-table--member tbody tr.sws-bid-row--winning td {
    background-color: rgba(52, 112, 77, 0.11);
}

.sws-lot-table--member tbody tr.sws-bid-row--outbid td {
    background-color: rgba(177, 71, 74, 0.09);
}

.sws-lot-table--member tbody tr.sws-bid-row--reserve td {
    background-color: rgba(184, 138, 62, 0.09);
}

/* Hide the empty pick column on desktop when the auction is closed. The
 * mobile scaffold rule above takes over once we drop below 768px. */
.sws-lot-table--member-closed .sws-bid-col-pick {
    display: none;
}

.sws-member-toolbar {
    margin-top: 0.4rem;
    margin-bottom: 0.6rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    color: #545049;
    font-size: 0.86rem;
}

.sws-member-toolbar-meta {
    font-weight: 600;
}

.sws-member-toolbar-sub {
    font-weight: 500;
    color: #716c64;
    margin-left: 0.25rem;
    font-size: 0.82rem;
}

.sws-bidding-pagination {
    margin-top: 1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    color: #545049;
    font-size: 0.85rem;
}

.sws-bidding-pagination-meta {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    text-align: center;
    flex: 1;
}

/* Bank-details warning - sits at the very top of the page above the toolbar
 * and uses the existing .sws-alert-warning palette. */
.sws-member-bank-alert {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 0.4rem;
    margin-bottom: 0.4rem;
}

.sws-member-bank-alert-body {
    flex: 1;
    line-height: 1.45;
}

.sws-member-closed-note {
    margin: 0.2rem 0 0.6rem;
    color: #625d55;
    font-style: italic;
    font-size: 0.92rem;
}

.sws-member-empty {
    margin-top: 0.4rem;
    text-align: center;
    padding: 2.2rem 1.4rem;
}

.sws-member-empty-text {
    margin: 0;
    color: #545049;
    font-size: 1rem;
    line-height: 1.5;
}

.sws-member-empty-text a {
    font-weight: 700;
    text-decoration: underline;
}

/* "How this works" helper card under the bid table. Quiet card chrome so
 * the table itself remains the focus; tick / cross / clipboard icons inside
 * inherit the same colours as their in-table counterparts. */
.sws-member-instructions {
    margin: 1.6rem 0 0.4rem;
    padding: 1.05rem 1.25rem 1.15rem;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.85) 0%, rgba(247, 244, 235, 0.78) 100%);
    border: 1px solid rgba(var(--sws-line-rgb), 0.28);
    border-radius: 14px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
    color: #4c4841;
    font-size: 0.9rem;
    line-height: 1.55;
}

.sws-member-instructions-title {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

.sws-member-instructions-list {
    margin: 0;
    padding-left: 1.1rem;
}

.sws-member-instructions-list li {
    margin-bottom: 0.32rem;
}

.sws-member-instructions-list li:last-child {
    margin-bottom: 0;
}

.sws-member-instructions-list .bi {
    font-size: 1rem;
    vertical-align: -2px;
    margin: 0 0.06rem;
}

.sws-member-instructions-list .bi-check-circle-fill {
    color: #2f7a52;
}

.sws-member-instructions-list .bi-x-circle-fill {
    color: #b1474a;
}

.sws-member-instructions-list .bi-clipboard-data {
    color: #575550;
}

.sws-member-instructions-pill {
    display: inline-block;
    padding: 0.08rem 0.5rem;
    margin: 0 0.1rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #fff;
    background-color: rgb(77, 110, 122);
    border: 1px solid rgba(209, 185, 129, 0.28);
    vertical-align: 1px;
}

@media (max-width: 767.98px) {
    .sws-member-instructions {
        margin-top: 1.2rem;
        padding: 0.95rem 1rem 1rem;
        font-size: 0.86rem;
    }
}

/* ============================================================
 * HISTORIC AUCTION VALUES (searchhistoric.php)
 * Hub-and-spoke layout reusing .sws-card, .sws-btn and .sws-input.
 * Wine-name "header bars" mimic the legacy dark band that groups
 * each wine's sale rows, but now in brand maroon -> deep ink so it
 * sits cleanly inside a glass card.
 * ============================================================ */
.sws-historic-page {
    margin-top: 1.4rem;
    margin-bottom: 2.4rem;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

.sws-historic-card {
    padding: 1.1rem 1.25rem 1.25rem;
}

.sws-historic-toolbar-card {
    padding: 0.9rem 1.1rem 0.95rem;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.sws-historic-search {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}

.sws-historic-search-input {
    flex: 1;
    max-width: 28rem;
}

.sws-historic-alpha {
    display: flex;
    flex-wrap: wrap;
    gap: 0.28rem 0.32rem;
    align-items: center;
}

.sws-historic-alpha-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.85rem;
    padding: 0.24rem 0.5rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.32);
    border-radius: 8px;
    background: rgba(var(--sws-glass-rgb), 0.78);
    color: #524c43;
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-decoration: none;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.sws-historic-alpha-link:hover,
.sws-historic-alpha-link:focus {
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%);
    border-color: rgba(var(--sws-line-rgb), 0.55);
    color: var(--sws-brand-strong);
    text-decoration: none;
}

.sws-historic-alpha-link.is-active {
    background: linear-gradient(180deg, var(--sws-brand) 0%, var(--sws-brand-strong) 100%);
    border-color: var(--sws-brand-strong);
    color: #fff;
    box-shadow: 0 2px 6px rgba(126, 50, 63, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.sws-historic-hub p {
    margin: 0 0 0.7rem;
    color: #4c4841;
    line-height: 1.6;
}

.sws-historic-stat {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    margin-bottom: 0.6rem !important;
}

.sws-historic-cta {
    margin-top: 1rem;
    padding: 0.9rem 1.05rem;
    background: rgba(243, 232, 234, 0.7);
    border: 1px solid rgba(126, 50, 63, 0.18);
    border-left: 3px solid var(--sws-brand);
    border-radius: 10px;
    color: #4c4841;
    font-size: 0.92rem;
    line-height: 1.55;
}

.sws-historic-cta strong {
    color: var(--sws-brand-strong);
    margin-right: 0.25rem;
}

.sws-historic-cta-link {
    margin-left: 0.35rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    text-decoration: underline;
}

.sws-historic-cta-link:hover {
    color: var(--sws-brand);
}

.sws-historic-tablewrap {
    -webkit-overflow-scrolling: touch;
    overflow-x: auto;
    border-radius: 12px;
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    background: rgba(var(--sws-glass-rgb), 0.6);
}

.sws-historic-table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: 0.9rem;
    color: #292722;
}

.sws-historic-table thead th {
    background: rgba(247, 244, 235, 0.72);
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.32);
    padding: 0.55rem 0.75rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #69655d;
    text-align: left;
}

.sws-historic-table tbody td {
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.14);
    vertical-align: middle;
}

.sws-historic-table tbody tr:last-child td {
    border-bottom: none;
}

.sws-historic-cell-end {
    text-align: right;
}

.sws-historic-table tbody tr.sws-historic-sale-row:hover {
    background: rgba(243, 232, 234, 0.45);
}

.sws-historic-month,
.sws-historic-year {
    font-weight: 700;
    color: #34302b;
    white-space: nowrap;
}

.sws-historic-qty {
    color: #545049;
}

.sws-historic-price {
    text-align: right;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: #292722;
}

/* Dedicated narrow column for the NOTES pill - sits between Qty and Sale
 * price so the price column itself stays cleanly right-aligned. The pill
 * picks up the same maroon-gradient chrome as the NOTES badge on
 * browse.php / member.php / bidding.php. */
.sws-historic-col-notes,
.sws-historic-notes {
    width: 1%;
    white-space: nowrap;
    text-align: center;
    padding-left: 0.3rem !important;
    padding-right: 0.3rem !important;
}

.sws-historic-notes-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.22rem 0.62rem !important;
    border-radius: 999px !important;
    font-size: 0.68rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #a3263c !important;
    text-decoration: none !important;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.94), rgba(243, 238, 225, 0.82)) !important;
    border: 1px solid rgba(var(--sws-line-rgb), 0.34) !important;
    box-shadow: 0 3px 10px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.76);
    transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

.sws-historic-notes-pill:hover,
.sws-historic-notes-pill:focus {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(var(--sws-shadow-soft-rgb), 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8);
    background: linear-gradient(180deg, var(--sws-hover-top) 0%, var(--sws-hover-bottom) 100%) !important;
    border-color: rgba(var(--sws-line-rgb), 0.52) !important;
    color: #8a1d31 !important;
    text-decoration: none !important;
}

/* Wine "header bar" - cream gradient with bold maroon text + a maroon
 * underline. Lighter-touch than the solid maroon block; reads as an
 * editorial section divider rather than a heavy banner. */
.sws-historic-wine-header td {
    padding: 0.85rem 0.95rem 0.55rem;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.96) 0%, rgba(247, 244, 235, 0.62) 100%);
    color: var(--sws-brand-strong);
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.32);
    border-bottom: 2px solid var(--sws-brand);
    font-size: 0.95rem;
}

.sws-historic-table tbody tr.sws-historic-wine-header:first-child td {
    border-top: none;
}

.sws-historic-wine-header td strong {
    font-weight: 700;
    letter-spacing: 0.01em;
}

.sws-historic-wine-link {
    color: var(--sws-brand);
    font-weight: 700;
    text-decoration: none;
}

.sws-historic-wine-link:hover {
    color: var(--sws-brand-strong);
    text-decoration: underline;
}

.sws-historic-wine-link--inv,
.sws-historic-wine-link--inv:hover,
.sws-historic-wine-link--inv:focus {
    color: var(--sws-brand-strong);
    text-decoration: none;
}

.sws-historic-wine-link--inv:hover strong {
    text-decoration: underline;
}

.sws-historic-back {
    margin: 0 0 0.85rem;
    font-size: 0.86rem;
}

.sws-historic-back a {
    color: var(--sws-brand);
    font-weight: 600;
}

.sws-historic-meta {
    margin: 0 0 0.85rem;
    font-size: 0.85rem;
    color: #69655d;
    font-style: italic;
}

.sws-historic-foot {
    margin: 0.7rem 0 0;
    font-size: 0.82rem;
    color: #69655d;
    text-align: right;
}

.sws-historic-empty {
    margin: 1rem 0 0.4rem;
    padding: 1.4rem 1rem;
    text-align: center;
    color: #545049;
    background: rgba(247, 244, 235, 0.5);
    border: 1px dashed rgba(var(--sws-line-rgb), 0.4);
    border-radius: 10px;
}

@media (max-width: 767.98px) {
    .sws-historic-page {
        margin-top: 1rem;
    }

    .sws-historic-card {
        padding: 0.95rem 1rem 1.05rem;
    }

    .sws-historic-toolbar-card {
        padding: 0.85rem 1rem 0.9rem;
    }

    .sws-historic-search {
        flex-wrap: wrap;
    }

    .sws-historic-search-input {
        flex: 1 1 100%;
        max-width: 100%;
    }

    .sws-historic-alpha-link {
        min-width: 1.6rem;
        padding: 0.2rem 0.4rem;
        font-size: 0.78rem;
    }

    .sws-historic-table thead th,
    .sws-historic-table tbody td {
        padding: 0.45rem 0.55rem;
        font-size: 0.85rem;
    }

    .sws-historic-wine-header td {
        padding: 0.5rem 0.65rem;
        font-size: 0.85rem;
    }

    .sws-mob-hide {
        display: none;
    }
}

/* ============================================================
 * VENDOR (SELLING) DASHBOARDS
 * Pages: clientConsignments_current/unsold/sold/hold + clientVender_summary
 *        + lower_reserve.
 *
 * Reuses .sws-card, .sws-btn, .sws-input, .sws-lot-table chrome plus the
 * .sws-mobile-meta / data-label scaffolding from /new/member.php so each
 * row collapses neatly to a stacked card on mobile. Row-tint colours
 * (over / under reserve) are intentionally close to the bid-page winning
 * / outbid tints so the visual language stays consistent across buyer
 * and seller dashboards.
 * ============================================================ */
.sws-vendor-page {
    margin-top: 0.4rem;
    margin-bottom: 2.4rem;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
}

/* Tighten the cream gap below the compact hero on vendor pages -- the
 * generic .sws-main-content padding-top of 2.7rem leaves a lot of empty
 * space before the first card when the hero is the page header. Mirrors
 * the same treatment applied on bidding/member pages. */
main.sws-main-content:has(.sws-vendor-page) {
    padding-top: 0.6rem;
}

@media (max-width: 767.98px) {
    main.sws-main-content:has(.sws-vendor-page) {
        padding-top: 0.4rem;
    }
}

/* Sub-page tabs - sit above any cards. Two flavours:
 *   Default (4 tabs): Current / Unsold / Sold / Hold
 *   --invoices       : Buying vs Selling on the invoices page */
/* Segmented tab bar - resembles file-folder tabs sitting on a baseline.
 * The bottom hairline runs the full width of the strip, and the active
 * tab "lifts" off it with a coloured top-edge highlight + cream fill.
 * Inactive tabs are subdued and underline only on hover. */
.sws-vendor-tabs {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 0;
    padding: 0;
    margin-bottom: 1rem;
    background: transparent;
    border: 0;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.42);
    border-radius: 0;
    box-shadow: none;
}

.sws-vendor-tab {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.7rem 1.15rem 0.65rem;
    margin-bottom: -1px;
    font-size: 0.9rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: #625d54;
    text-decoration: none;
    background: transparent;
    border: 1px solid transparent;
    border-bottom: 0;
    border-top-left-radius: 10px;
    border-top-right-radius: 10px;
    transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease;
}

.sws-vendor-tab::after {
    content: "";
    position: absolute;
    left: 0.9rem;
    right: 0.9rem;
    bottom: 4px;
    height: 2px;
    border-radius: 2px;
    background: transparent;
    transition: background 0.15s ease;
}

.sws-vendor-tab:hover,
.sws-vendor-tab:focus {
    color: var(--sws-brand-strong);
    text-decoration: none;
    background: rgba(var(--sws-glass-rgb), 0.55);
}

.sws-vendor-tab:hover::after,
.sws-vendor-tab:focus::after {
    background: rgba(126, 50, 63, 0.25);
}

.sws-vendor-tab.is-active {
    color: var(--sws-brand-strong);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.96) 0%, rgba(247, 244, 235, 0.78) 100%);
    border-color: rgba(var(--sws-line-rgb), 0.42);
    border-bottom-color: rgba(var(--sws-glass-rgb), 1);
    box-shadow: inset 0 2px 0 var(--sws-brand-strong);
}

.sws-vendor-tab.is-active::after {
    background: transparent;
}

.sws-vendor-card {
    padding: 1.1rem 1.25rem 1.25rem;
}

.sws-vendor-card--lean {
    padding: 0;
    overflow: hidden;
}

.sws-vendor-card--lean .sws-sv-tablewrap {
    border-radius: 16px;
}

.sws-vendor-empty {
    text-align: center;
    padding: 2rem 1.4rem;
}

.sws-vendor-empty-text {
    margin: 0;
    color: #545049;
    font-size: 1rem;
    line-height: 1.55;
}

.sws-vendor-empty-text a {
    font-weight: 700;
    text-decoration: underline;
}

/* Vendor tables - inherit .sws-lot-table chrome from member.php so headers,
 * borders, hover and mobile data-label scaffolding match. The class also
 * acts as the hook for scripts.js's badge-click interceptor (so invoice
 * NOTES and view-modal links route into the shared Bootstrap modal). */
.sws-vendor-table {
    width: 100%;
    margin: 0;
}

.sws-vendor-table thead th a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px dashed transparent;
}

.sws-vendor-table thead th a:hover {
    color: var(--sws-brand-strong);
    border-bottom-color: rgba(126, 50, 63, 0.35);
}

/* Row tint: only "over reserve / selling" rows get a soft green wash so
 * the eye is drawn to lots that are actively going to clear. Under-reserve
 * rows fall back to default striping so the table stays calm. */
.sws-vendor-row--over > td {
    background: rgba(52, 112, 77, 0.09);
}

.sws-vendor-row--sold > td {
    background: rgba(52, 112, 77, 0.05);
}

.sws-vendor-cell-blank {
    color: rgba(85, 79, 69, 0.4);
}

/* Compact "Accept +$1" link styled as a small ghost button - sits inline
 * within the action cell without dominating the row. Tighter padding +
 * smaller font than the standard .sws-btn-sm so it never wraps awkwardly
 * on tablet widths. */
.sws-vendor-accept-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.18rem 0.5rem;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: 0.02em;
    color: var(--sws-brand-strong);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92), rgba(243, 232, 234, 0.7));
    border: 1px solid rgba(126, 50, 63, 0.32);
    border-radius: 7px;
    text-decoration: none;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
    white-space: nowrap;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}

.sws-vendor-accept-btn:hover,
.sws-vendor-accept-btn:focus {
    background: linear-gradient(180deg, var(--sws-brand) 0%, var(--sws-brand-strong) 100%);
    border-color: var(--sws-brand-strong);
    color: #fff;
    text-decoration: none;
    transform: translateY(-1px);
}

/* Inline reserve editor in the Unsold table. Compact pill layout that wraps
 * gracefully on narrow viewports; the dollar prefix is a separate element so
 * the input stays a clean numeric field. */
.sws-vendor-reserve-form {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0;
    flex-wrap: nowrap;
}

.sws-vendor-reserve-prefix {
    font-weight: 600;
    color: #545049;
}

.sws-vendor-reserve-input.sws-vendor-reserve-input { /* double class to outweigh .sws-input */
    width: 5.4rem;
    padding: 0.32rem 0.45rem;
    font-size: 0.88rem;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Totals card - sits below the table on Current and Sold dashboards.
 * Two-column dl using grid so labels and figures align cleanly without a
 * second html table. The "strong" row is the headline figure (total selling
 * over reserve, or total sold value). */
.sws-vendor-totals {
    margin: 0.4rem 0 0;
    padding: 1.1rem 1.3rem 1.2rem;
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92) 0%, rgba(247, 244, 235, 0.78) 100%);
    border: 1px solid rgba(var(--sws-line-rgb), 0.3);
    border-radius: 14px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.72);
    color: #4c4841;
}

.sws-vendor-totals-title {
    margin: 0 0 0.6rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

.sws-vendor-totals-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.38rem;
    margin: 0;
}

.sws-vendor-totals-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.7rem;
    padding: 0.32rem 0;
    border-bottom: 1px dashed rgba(var(--sws-line-rgb), 0.35);
}

.sws-vendor-totals-row:last-child {
    border-bottom: none;
}

.sws-vendor-totals-row dt {
    margin: 0;
    font-weight: 500;
    color: #69655d;
    font-size: 0.9rem;
}

.sws-vendor-totals-row dd {
    margin: 0;
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: #292722;
    font-size: 0.95rem;
}

.sws-vendor-totals-row--strong {
    margin-top: 0.2rem;
    padding-top: 0.55rem;
    border-top: 2px solid var(--sws-brand);
}

.sws-vendor-totals-row--strong dt,
.sws-vendor-totals-row--strong dd {
    color: var(--sws-brand-strong);
    font-weight: 700;
    font-size: 1rem;
}

.sws-vendor-footnote {
    margin: 0.85rem 0 0;
    font-size: 0.82rem;
    color: #69655d;
    line-height: 1.5;
}

/* Inline pill swatches inside instructions copy - reused for "green" /
 * "red" colour callouts that mirror the row tints, and as the "Uncontested"
 * flag rendered next to wine names in-table. */
.sws-vendor-pill {
    display: inline-block;
    padding: 0.06rem 0.5rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    vertical-align: 1px;
}

.sws-vendor-pill--over {
    background: rgba(52, 112, 77, 0.15);
    color: #2c5f44;
    border: 1px solid rgba(52, 112, 77, 0.32);
}

/* Uncontested flag - neutral gold so it doesn't compete with the green
 * "selling" tint. Sits inline next to the wine name with a small gap. */
.sws-vendor-pill--uncontested {
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.92), rgba(243, 238, 225, 0.78));
    color: #6f5630;
    border: 1px solid rgba(var(--sws-line-rgb), 0.5);
    margin-left: 0.4rem;
}

/* Cascaded "Reserve / Current bid" pair surfaced inside the wine cell on
 * mobile (the dedicated money columns are hidden on phones). Hidden on
 * desktop / tablet via display:none; the inner @media block opts it in. */
.sws-vendor-mobile-money {
    display: none;
}

/* ----------------------------------------------------------------------
 * Selling invoices (clientVender_summary.php)
 * Invoice link sits inline with a print-icon affordance.
 * Status pill borrows the +over / -under colours.
 * ---------------------------------------------------------------------- */
.sws-vendor-invoice-link {
    font-weight: 700;
    color: var(--sws-brand);
}

.sws-vendor-invoice-link:hover {
    color: var(--sws-brand-strong);
    text-decoration: underline;
}

.sws-vendor-invoice-print {
    margin-left: 0.5rem;
    color: #69655d;
    font-size: 1rem;
}

.sws-vendor-invoice-print:hover {
    color: var(--sws-brand-strong);
}

.sws-vendor-status {
    display: inline-block;
    padding: 0.18rem 0.6rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.sws-vendor-status--paid {
    background: rgba(52, 112, 77, 0.16);
    color: #275a3f;
    border: 1px solid rgba(52, 112, 77, 0.36);
}

.sws-vendor-status--unpaid {
    background: rgba(184, 138, 62, 0.18);
    color: #7b5f34;
    border: 1px solid rgba(184, 138, 62, 0.36);
}

/* ----------------------------------------------------------------------
 * lower_reserve.php confirm/result card
 * ---------------------------------------------------------------------- */
.sws-vendor-confirm {
    max-width: 640px;
    margin: 0.4rem auto 0;
    padding: 1.4rem 1.6rem 1.5rem;
    text-align: left;
}

.sws-vendor-confirm-title {
    margin: 0 0 0.7rem;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-vendor-confirm-lead {
    margin: 0 0 0.8rem;
    color: #4c4841;
    font-size: 0.95rem;
    line-height: 1.55;
}

.sws-vendor-confirm-meta {
    margin: 1rem 0 1.2rem;
    padding: 0.8rem 1rem;
    background: rgba(var(--sws-glass-rgb), 0.85);
    border: 1px solid rgba(var(--sws-line-rgb), 0.3);
    border-radius: 10px;
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.4rem;
}

.sws-vendor-confirm-row {
    display: grid;
    grid-template-columns: 9rem 1fr;
    gap: 0.7rem;
    align-items: baseline;
    padding: 0.18rem 0;
    border-bottom: 1px dashed rgba(var(--sws-line-rgb), 0.3);
}

.sws-vendor-confirm-row:last-child {
    border-bottom: none;
}

.sws-vendor-confirm-row dt {
    margin: 0;
    font-weight: 500;
    color: #69655d;
    font-size: 0.86rem;
}

.sws-vendor-confirm-row dd {
    margin: 0;
    font-variant-numeric: tabular-nums;
    color: #292722;
}

.sws-vendor-confirm-row--strong {
    margin-top: 0.2rem;
    padding-top: 0.45rem;
    border-top: 2px solid var(--sws-brand);
}

.sws-vendor-confirm-row--strong dt,
.sws-vendor-confirm-row--strong dd {
    color: var(--sws-brand-strong);
    font-weight: 700;
}

/* Status notice on the Accept +$1 confirmation card. Two variants:
 *   --contested   : a real bidder is in -> green accent, mirrors the
 *                   "selling" tint used in the consignments table.
 *   --uncontested : no real bidder yet  -> warm gold accent, mirrors
 *                   the Uncontested pill so the language is consistent. */
.sws-vendor-confirm-notice {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    margin: 0.2rem 0 1rem;
    padding: 0.75rem 0.9rem 0.85rem;
    border: 1px solid transparent;
    border-left-width: 4px;
    border-radius: 10px;
    background: rgba(var(--sws-glass-rgb), 0.88);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.6);
}

.sws-vendor-confirm-notice--contested {
    border-color: rgba(52, 112, 77, 0.32);
    border-left-color: rgba(52, 112, 77, 0.85);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.95) 0%, rgba(232, 244, 234, 0.6) 100%);
}

.sws-vendor-confirm-notice--uncontested {
    border-color: rgba(185, 154, 99, 0.45);
    border-left-color: rgba(185, 154, 99, 0.95);
    background: linear-gradient(180deg, rgba(var(--sws-glass-rgb), 0.95) 0%, rgba(247, 243, 230, 0.65) 100%);
}

.sws-vendor-confirm-notice-pill {
    align-self: flex-start;
    margin-left: 0;
}

.sws-vendor-confirm-notice-body {
    margin: 0;
    color: #393631;
    font-size: 0.95rem;
    line-height: 1.55;
}

.sws-vendor-confirm-footnote {
    margin: -0.4rem 0 1rem;
    color: #69655d;
    font-size: 0.82rem;
    font-style: italic;
}

.sws-vendor-confirm-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    justify-content: flex-end;
    margin-top: 0.4rem;
}

/* ----------------------------------------------------------------------
 * Vendor invoice modal fragment
 * ---------------------------------------------------------------------- */
.sws-modal-vinvoice {
    color: #292722;
}

.sws-vinvoice-meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: 0.9rem;
    margin: 0.4rem 0 1rem;
}

.sws-vinvoice-meta-block {
    padding: 0.8rem 0.95rem;
    background: rgba(var(--sws-glass-rgb), 0.7);
    border: 1px solid rgba(var(--sws-line-rgb), 0.26);
    border-radius: 10px;
}

.sws-vinvoice-meta-block p {
    margin: 0;
    font-size: 0.88rem;
    line-height: 1.55;
    color: #292722;
}

.sws-vinvoice-meta-title {
    margin: 0 0 0.4rem;
    font-size: 0.74rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #69655d;
    font-weight: 700;
}

.sws-vinvoice-event {
    margin: 0.3rem 0 0.9rem;
    padding: 0.55rem 0.85rem;
    background: rgba(243, 232, 234, 0.55);
    border-left: 3px solid var(--sws-brand);
    border-radius: 8px;
    font-size: 0.92rem;
}

.sws-vinvoice-section-title {
    margin: 0.6rem 0 0.4rem;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--sws-brand-strong);
}

.sws-modal-table--vinvoice tfoot th {
    font-weight: 600;
    color: #4c4841;
    background: rgba(247, 244, 235, 0.55);
}

.sws-modal-table--vinvoice tfoot tr.sws-vinvoice-grand th,
.sws-modal-table--vinvoice tfoot tr.sws-vinvoice-grand td {
    background: rgba(243, 232, 234, 0.65);
    color: var(--sws-brand-strong);
    border-top: 2px solid var(--sws-brand);
    font-weight: 700;
}

.sws-vinvoice-footnote {
    margin: 1rem 0 0;
    padding-top: 0.6rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.26);
    font-size: 0.85rem;
    line-height: 1.55;
    color: #4c4841;
}

/* ----------------------------------------------------------------------
 * Buying invoices (custInvoice.php, modal/cust_invoice.php,
 * buynow_payment_result.php). The list reuses the selling-invoice table;
 * the Pay step reuses the Buy It Now checkout panels.
 * ---------------------------------------------------------------------- */
/* Table sits flush in the card with its outer cells inset to the card's
 * padding, as on the bidding and My Bids cards. */
.sws-buyinv-card {
    padding-bottom: 0.35rem;
}

.sws-buyinv-card .sws-sv-tablewrap {
    margin: 0;
}

.sws-vendor-table--buying thead th:first-child,
.sws-vendor-table--buying tbody td:first-child {
    padding-left: 1.4rem;
}

.sws-vendor-table--buying thead th:last-child,
.sws-vendor-table--buying tbody td:last-child {
    padding-right: 1.4rem;
}

.sws-vendor-table--buying .sws-buyinv-col-action {
    width: 1%;
    white-space: nowrap;
}

.sws-vendor-table--buying .sws-buyinv-col-auction {
    color: #545049;
}

.sws-vendor-table--buying .sws-buyinv-col-status,
.sws-vendor-table--buying .sws-vendor-status {
    white-space: nowrap;
}

/* Date and auction under the invoice number, phones only. */
.sws-buyinv-mobile-meta {
    display: none;
}

/* Copy of the status pill in the Pay column, for when Status folds away. */
.sws-buyinv-action-status {
    display: none;
}

.sws-invoice-notice {
    margin-bottom: 1rem;
}

.sws-invoice-notice .sws-alert-title {
    margin: 0 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: inherit;
}

.sws-invoice-notice p {
    margin-bottom: 0.4rem;
}

.sws-invoice-summary-title {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
}

.sws-invoice-summary-no {
    font-size: 0.8rem;
    font-weight: 600;
    color: #69655d;
}

.sws-invoice-summary-link {
    margin-top: 0.9rem;
    font-size: 0.86rem;
}

.sws-invoice-summary-link a {
    color: var(--sws-brand);
    font-weight: 600;
}

.sws-invoice-summary-link a.sws-invoice-summary-print {
    margin-left: 0.5rem;
    color: #69655d;
    font-size: 1rem;
}

.sws-invoice-summary-link a.sws-invoice-summary-print:hover {
    color: var(--sws-brand-strong);
}

.sws-invoice-topup-note {
    font-size: 0.8rem;
    color: #69655d;
    line-height: 1.5;
}

.sws-invoice-redirect-note {
    margin-top: 1rem;
    text-align: center;
    font-size: 0.85rem;
}

.sws-bn-result .sws-alert {
    margin-bottom: 1.2rem;
    text-align: left;
}

.sws-bn-result .sws-alert-title {
    margin: 0 0 0.35rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: inherit;
}

.sws-cinvoice-note {
    color: #69655d;
}

.sws-cinvoice-terms {
    margin-top: 0.9rem;
    font-size: 0.8rem;
    color: #4c4841;
}

.sws-cinvoice-terms summary {
    cursor: pointer;
    font-weight: 700;
    color: var(--sws-brand-strong);
}

.sws-cinvoice-terms-body {
    margin-top: 0.5rem;
    line-height: 1.5;
}

/* .sws-lot-table fixes a 68px first column and hides columns 3-6 on
 * phones; this table sizes to its content and keeps Invoice, Subtotal,
 * Status and Pay, with Date and Auction moved under the invoice number. */
@media (max-width: 767.98px) {
    .sws-lot-table.sws-vendor-table--buying {
        table-layout: auto;
    }

    .sws-lot-table.sws-vendor-table--buying thead th:first-child,
    .sws-lot-table.sws-vendor-table--buying tbody td:first-child {
        width: auto;
    }

    .sws-lot-table.sws-vendor-table--buying thead th,
    .sws-lot-table.sws-vendor-table--buying tbody td {
        padding-left: 0.45rem;
        padding-right: 0.45rem;
        vertical-align: middle;
    }

    .sws-lot-table.sws-vendor-table--buying thead th:first-child,
    .sws-lot-table.sws-vendor-table--buying tbody td:first-child {
        padding-left: 0.85rem;
    }

    .sws-lot-table.sws-vendor-table--buying thead th:last-child,
    .sws-lot-table.sws-vendor-table--buying tbody td:last-child {
        padding-right: 0.85rem;
    }

    .sws-lot-table.sws-vendor-table--buying thead th.sws-buyinv-col-subtotal,
    .sws-lot-table.sws-vendor-table--buying tbody td.sws-buyinv-col-subtotal,
    .sws-lot-table.sws-vendor-table--buying thead th.sws-buyinv-col-status,
    .sws-lot-table.sws-vendor-table--buying tbody td.sws-buyinv-col-status {
        display: table-cell;
    }

    .sws-vendor-table--buying .sws-buyinv-col-date,
    .sws-vendor-table--buying .sws-buyinv-col-auction,
    .sws-vendor-table--buying .sws-buyinv-col-paid {
        display: none;
    }

    .sws-buyinv-mobile-meta {
        display: block;
        margin-top: 0.2rem;
        font-size: 0.76rem;
        line-height: 1.35;
        color: #69655d;
        white-space: normal;
    }

    .sws-buyinv-mobile-meta-item {
        display: block;
    }
}

@media (max-width: 479.98px) {
    .sws-vendor-table--buying .sws-currency-prefix {
        display: none;
    }

    .sws-lot-table.sws-vendor-table--buying thead th {
        white-space: nowrap;
    }

    .sws-lot-table.sws-vendor-table--buying thead th,
    .sws-lot-table.sws-vendor-table--buying tbody td {
        padding-left: 0.3rem;
        padding-right: 0.3rem;
    }

    .sws-lot-table.sws-vendor-table--buying thead th:first-child,
    .sws-lot-table.sws-vendor-table--buying tbody td:first-child {
        padding-left: 0.7rem;
    }

    .sws-lot-table.sws-vendor-table--buying thead th:last-child,
    .sws-lot-table.sws-vendor-table--buying tbody td:last-child {
        padding-right: 0.7rem;
    }

    .sws-vendor-table--buying .sws-vendor-invoice-print {
        margin-left: 0.15rem;
    }

    .sws-vendor-table--buying .sws-vendor-status {
        font-size: 0.62rem;
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }

    .sws-vendor-table--buying .sws-buyinv-col-action .sws-btn-sm {
        padding-left: 0.7rem;
        padding-right: 0.7rem;
        font-size: 0.78rem;
    }
}

/* Narrowest phones: Status folds into the Pay column (Pay now already
 * means unpaid; other rows show their pill there). */
@media (max-width: 399.98px) {
    .sws-lot-table.sws-vendor-table--buying thead th.sws-buyinv-col-status,
    .sws-lot-table.sws-vendor-table--buying tbody td.sws-buyinv-col-status {
        display: none;
    }

    .sws-buyinv-action-status {
        display: inline-block;
    }
}

/* ----------------------------------------------------------------------
 * Mobile - desktop column hides + stacked card layout from .sws-lot-table
 * already collapse the grid. Tighten the tabs and totals + reserve editor.
 * ---------------------------------------------------------------------- */
@media (max-width: 1199.98px) {
    /* Hide narrow secondary columns when room runs out (region, blend,
     * vintage). The data-label scaffolding surfaces them under the wine
     * name so nothing is lost. */
    .sws-vendor-table .sws-vendor-col-blend,
    .sws-vendor-table .sws-vendor-col-region,
    .sws-vendor-table .sws-vendor-col-vintage {
        display: none;
    }

    /* Mobile-meta becomes visible at the tablet breakpoint so the values
     * we just hid above still surface under the wine name. (The default
     * .sws-mobile-meta rule only flips to display:block at 767.98px, which
     * would otherwise leave a 768-1199px gap with missing data.) */
    .sws-vendor-table .sws-mobile-meta {
        display: block;
    }
}

@media (max-width: 991.98px) {
    .sws-vendor-table .sws-vendor-col-date,
    .sws-vendor-table .sws-vendor-col-auctcount,
    .sws-vendor-table .sws-vendor-col-flag {
        display: none;
    }
}

@media (max-width: 767.98px) {
    .sws-vendor-page {
        margin-top: 1rem;
        gap: 0.85rem;
    }

    .sws-vendor-tabs {
        gap: 0.2rem;
        padding: 0.25rem 0.3rem;
        border-radius: 12px;
    }

    .sws-vendor-tab {
        flex: 1 1 calc(50% - 0.4rem);
        padding: 0.42rem 0.6rem;
        font-size: 0.8rem;
        text-align: center;
    }

    .sws-vendor-tabs--invoices .sws-vendor-tab {
        flex: 1 1 calc(50% - 0.4rem);
    }

    /* Edge-to-edge container on phones so the table can run full bleed.
     * Mirrors the bidding-page treatment - drops the left/right margin
     * imposed by .sws-container and bleeds the lean card past the card
     * padding so it touches the viewport edges. */
    main.sws-main-content:has(.sws-vendor-page) > .container-fluid.sws-container {
        width: 100%;
        max-width: 100%;
        padding-left: 0;
        padding-right: 0;
    }

    .sws-vendor-tabs,
    .sws-vendor-totals,
    .sws-member-instructions,
    .sws-bidding-pagination,
    .sws-member-bank-alert,
    .sws-alert {
        margin-left: 0.7rem;
        margin-right: 0.7rem;
    }

    .sws-vendor-card {
        padding: 0.95rem 1rem 1rem;
    }

    .sws-vendor-card,
    .sws-vendor-empty {
        margin-left: 0.7rem;
        margin-right: 0.7rem;
    }

    /* Lean card goes full bleed - no horizontal padding, no margin, square
     * outer corners so it visually meets the viewport edges. */
    .sws-vendor-card--lean {
        margin-left: 0;
        margin-right: 0;
        border-left: none;
        border-right: none;
        border-radius: 0;
    }

    .sws-vendor-totals {
        padding: 0.95rem 1rem 1rem;
    }

    .sws-vendor-totals-row dt {
        font-size: 0.86rem;
    }

    .sws-vendor-totals-row dd {
        font-size: 0.92rem;
    }

    /* ----- Vendor table mobile collapse (current / unsold / sold / hold) -----
     * Show ONLY the Lot badge column, the Wine cell and one optional action
     * column on phones; everything else surfaces inside the wine cell as
     * either .sws-mobile-meta items or a cascaded .sws-vendor-mobile-money
     * pair. The "action" column varies per page:
     *   - current: .sws-vendor-col-action       (Accept +$1)
     *   - unsold : .sws-vendor-col-reserve-edit (inline reserve form)
     *   - sold   : (no action - Reserve/Sale price cascaded as money pair)
     *   - hold   : (no action - admin notes cascaded inline)
     */
    .sws-vendor-table--current,
    .sws-vendor-table--unsold,
    .sws-vendor-table--sold,
    .sws-vendor-table--hold {
        table-layout: auto !important;
    }

    .sws-vendor-table--current thead th,
    .sws-vendor-table--current tbody td,
    .sws-vendor-table--unsold  thead th,
    .sws-vendor-table--unsold  tbody td,
    .sws-vendor-table--sold    thead th,
    .sws-vendor-table--sold    tbody td,
    .sws-vendor-table--hold    thead th,
    .sws-vendor-table--hold    tbody td {
        display: none;
    }

    /* Always-visible: Lot badge column (col 1) + Wine cell (the Wine cell
     * is identified by .sws-vendor-col-lot's sibling - we target by class
     * on the Wine <td> not its position, since col 1 is now Lot). */
    .sws-vendor-table--current thead th.sws-vendor-col-lot,
    .sws-vendor-table--current tbody td.sws-vendor-col-lot,
    .sws-vendor-table--unsold  thead th.sws-vendor-col-lot,
    .sws-vendor-table--unsold  tbody td.sws-vendor-col-lot,
    .sws-vendor-table--sold    thead th.sws-vendor-col-lot,
    .sws-vendor-table--sold    tbody td.sws-vendor-col-lot,
    .sws-vendor-table--hold    thead th.sws-vendor-col-lot,
    .sws-vendor-table--hold    tbody td.sws-vendor-col-lot {
        display: table-cell;
    }

    /* The wine cell is the only <th>/<td> without a sws-vendor-col-* class,
     * so target it by the absence of a column class via :not(). This keeps
     * the rule simple as we add more vendor tables. */
    .sws-vendor-table--current thead th:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--current tbody td:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--unsold  thead th:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--unsold  tbody td:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--sold    thead th:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--sold    tbody td:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--hold    thead th:not([class*="sws-vendor-col-"]),
    .sws-vendor-table--hold    tbody td:not([class*="sws-vendor-col-"]) {
        display: table-cell;
    }

    /* Per-page extra "action" columns visible on mobile. */
    .sws-vendor-table--current thead th.sws-vendor-col-action,
    .sws-vendor-table--current tbody td.sws-vendor-col-action,
    .sws-vendor-table--unsold  thead th.sws-vendor-col-reserve-edit,
    .sws-vendor-table--unsold  tbody td.sws-vendor-col-reserve-edit {
        display: table-cell;
    }

    /* Lot badge cell sits top-aligned next to the wine block. */
    .sws-vendor-table--current tbody td.sws-vendor-col-lot,
    .sws-vendor-table--unsold  tbody td.sws-vendor-col-lot,
    .sws-vendor-table--sold    tbody td.sws-vendor-col-lot,
    .sws-vendor-table--hold    tbody td.sws-vendor-col-lot {
        vertical-align: top;
        padding-top: 0.85rem;
    }

    /* Cascaded Reserve / Current bid (current) and Reserve / Sale price
     * (sold) pair only render on phones. Two vertical mini-cards
     * side-by-side, with a thin divider between them and a soft cream
     * backdrop so the values pop. */
    .sws-vendor-table--current tbody .sws-vendor-mobile-money,
    .sws-vendor-table--sold    tbody .sws-vendor-mobile-money {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0;
        margin-top: 0.55rem;
        padding: 0.42rem 0;
        background: rgba(var(--sws-glass-rgb), 0.78);
        border: 1px solid rgba(var(--sws-line-rgb), 0.28);
        border-radius: 10px;
    }

    .sws-vendor-mobile-money-cell {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 0.1rem;
        padding: 0 0.4rem;
        text-align: center;
    }

    .sws-vendor-mobile-money-cell + .sws-vendor-mobile-money-cell {
        border-left: 1px solid rgba(var(--sws-line-rgb), 0.28);
    }

    .sws-vendor-mobile-money-label {
        font-size: 0.68rem;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        color: #69655d;
    }

    .sws-vendor-mobile-money-value {
        font-size: 0.95rem;
        font-weight: 600;
        font-variant-numeric: tabular-nums;
        color: #292722;
    }

    .sws-vendor-mobile-money-value--strong {
        color: var(--sws-brand-strong);
        font-weight: 700;
    }

    /* Accept +$1 column (current) and Reserve-edit column (unsold) on
     * mobile sit aligned-right and live inside the row with the lot
     * badge + wine name. Smaller variant for the buttons. */
    .sws-vendor-table--current tbody td.sws-vendor-col-action,
    .sws-vendor-table--unsold  tbody td.sws-vendor-col-reserve-edit {
        vertical-align: top;
        padding-top: 0.85rem;
        white-space: nowrap;
    }

    .sws-vendor-accept-btn {
        padding: 0.16rem 0.42rem;
        font-size: 0.68rem;
    }

    /* Reserve-edit form on mobile - allow the form to wrap so the input
     * sits above the Update button when the column gets cramped. */
    .sws-vendor-table--unsold tbody td.sws-vendor-col-reserve-edit .sws-vendor-reserve-form {
        flex-wrap: wrap;
        justify-content: flex-end;
        gap: 0.25rem;
    }

    /* Move the Uncontested pill to its own line under the wine name on
     * phones so the wine name stays readable. */
    .sws-vendor-pill--uncontested {
        display: inline-block;
        margin: 0.18rem 0 0.05rem;
        margin-left: 0;
    }

    /* Reserve editor on mobile - keep field + button on the same row but
     * let the cell span the full data-label area. */
    .sws-vendor-reserve-input.sws-vendor-reserve-input {
        width: 4.2rem;
    }

    .sws-vendor-confirm {
        padding: 1.1rem 1.05rem 1.2rem;
    }

    .sws-vendor-confirm-row {
        grid-template-columns: 1fr;
        gap: 0.1rem;
    }

    .sws-vendor-confirm-row dt {
        font-size: 0.78rem;
        text-transform: uppercase;
        letter-spacing: 0.06em;
    }

    .sws-vendor-confirm-actions {
        justify-content: stretch;
    }

    .sws-vendor-confirm-actions .sws-btn {
        flex: 1 1 100%;
    }
}

/* ======================================================================
 * "My Account" pages -- /new/user_edit.php, /new/user_bank_edit.php,
 * /new/updatesuccess.php, /new/updatefailed.php.
 *
 * Reuses .sws-vendor-page (tabs + edge-to-edge mobile container) plus
 * .sws-card + .sws-input + .sws-form-label + .sws-alert. Adds:
 *   - .sws-account-card        : section card with header + grid body
 *   - .sws-account-grid        : 12-col responsive form grid
 *   - .sws-account-field       : a single label+input column (full or
 *                                 half width via --full / --narrow modifiers)
 *   - .sws-account-readonly    : displays a stored-but-not-editable value
 *   - .sws-account-help        : helper text under an input
 *   - .sws-account-checkboxes  : email-list opt-in stack
 *   - .sws-account-actions     : sticky-feeling save/cancel button row
 *   - .sws-account-cta         : "manage bank details" closing card
 *   - .sws-account-fineprint   : bank-page legal/fine-print list
 * ====================================================================== */
/* Constrain the account pages to a comfortable reading width to match
 * the legal / contact_us pages -- a 1200px+ wide form was too sprawled
 * and made the inputs look subtle. The .sws-vendor-page mobile rules
 * still strip horizontal padding so the cards go edge-to-edge on
 * phones. */
.sws-account-page {
    max-width: 880px;
    margin-left: auto;
    margin-right: auto;
}

.sws-account-card {
    padding: 0.95rem 1.15rem 1.05rem;
}

.sws-account-section-head {
    margin-bottom: 0.7rem;
    padding-bottom: 0.55rem;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.22);
}

.sws-account-section-title {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: 0.01em;
}

.sws-account-section-lead {
    margin: 0.18rem 0 0;
    font-size: 0.86rem;
    line-height: 1.45;
    color: #545049;
}

.sws-account-form {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

/* 12-column grid; each .sws-account-field is 6 columns by default
 * (two per row on desktop). Modifiers stretch or shrink as needed. */
.sws-account-grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 0.6rem 0.85rem;
}

.sws-account-field {
    grid-column: span 6;
    display: flex;
    flex-direction: column;
    gap: 0;
    min-width: 0;
}

.sws-account-field--full {
    grid-column: span 12;
}

.sws-account-field--narrow {
    grid-column: span 4;
}

.sws-account-field .sws-form-label {
    margin-bottom: 0.22rem;
}

.sws-account-field .sws-input,
.sws-account-field .sws-select {
    padding: 0.5rem 0.68rem;
    background: rgba(255, 255, 255, 0.92);
}

.sws-account-readonly {
    margin: 0;
    padding: 0.5rem 0.68rem;
    border: 1px dashed rgba(var(--sws-line-rgb), 0.28);
    border-radius: 10px;
    background: rgba(var(--sws-glass-rgb), 0.78);
    color: #48443f;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

.sws-account-help {
    margin: 0.28rem 0 0;
    font-size: 0.8rem;
    color: #69655d;
    line-height: 1.4;
}

.sws-account-mono {
    font-family: ui-monospace, "SFMono-Regular", "Menlo", "Consolas", monospace;
    background: rgba(var(--sws-glass-rgb), 0.85);
    padding: 0 0.3rem;
    border-radius: 4px;
    font-size: 0.86rem;
}

/* Email-subscription list. Each <li> is a clickable row with a primary
 * checkbox accent, a title and a description -- looks like a settings
 * panel rather than the legacy table of bare checkboxes. */
.sws-account-checkboxes {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.sws-account-check {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.6rem;
    align-items: flex-start;
    padding: 0.55rem 0.75rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.22);
    border-radius: 10px;
    background: rgba(var(--sws-glass-rgb), 0.7);
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease;
}

.sws-account-check:hover,
.sws-account-check:focus-within {
    background: rgba(var(--sws-glass-rgb), 0.92);
    border-color: rgba(var(--sws-line-rgb), 0.44);
}

.sws-account-check input[type="checkbox"] {
    margin-top: 0.18rem;
    width: 1rem;
    height: 1rem;
    accent-color: var(--sws-brand-strong);
}

.sws-account-check-body {
    display: flex;
    flex-direction: column;
    gap: 0.08rem;
}

.sws-account-check-title {
    font-weight: 700;
    color: #292722;
    font-size: 0.9rem;
}

.sws-account-check-desc {
    font-size: 0.82rem;
    color: #545049;
    line-height: 1.4;
}

/* Action row: simple right-aligned button strip with a hairline
 * divider above. Stripped the gradient/border/shadow panel — it
 * was reading as a third card and bloating the bottom of the page. */
.sws-account-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: flex-end;
    align-items: center;
    margin-top: 0.15rem;
    padding: 0.7rem 0 0;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.22);
}

.sws-account-cta {
    margin-top: 0.5rem;
    padding: 0.85rem 1rem;
    border: 1px dashed rgba(var(--sws-line-rgb), 0.42);
    border-radius: 12px;
    background: rgba(var(--sws-glass-rgb), 0.62);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.sws-account-cta-lead {
    margin: 0;
    color: #4c4841;
    font-size: 0.9rem;
    line-height: 1.45;
}

.sws-account-fineprint {
    padding: 0.85rem 1rem 0.95rem;
    border: 1px solid rgba(var(--sws-line-rgb), 0.28);
    border-radius: 12px;
    background: rgba(var(--sws-glass-rgb), 0.7);
}

.sws-account-fineprint-title {
    margin: 0 0 0.4rem;
    font-size: 0.76rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--sws-brand-strong);
}

.sws-account-fineprint-list {
    margin: 0;
    padding-left: 1.05rem;
    color: #4c4841;
    font-size: 0.86rem;
    line-height: 1.5;
}

.sws-account-fineprint-list > li + li {
    margin-top: 0.3rem;
}

/* Tablet collapse: drop --narrow back to 6 cols, default fields stay
 * at 6, full stays full. Looks tidy on iPad widths. */
@media (max-width: 991.98px) {
    .sws-account-field--narrow {
        grid-column: span 6;
    }
}

/* Phone collapse: every field becomes full width. The actions row
 * stays right-aligned with natural button widths -- stretching them
 * full-width on mobile made the Save button feel oversized. */
@media (max-width: 767.98px) {
    .sws-account-card {
        padding: 0.85rem 0.95rem 0.95rem;
    }

    .sws-account-grid {
        grid-template-columns: 1fr;
        gap: 0.6rem;
    }

    .sws-account-field,
    .sws-account-field--full,
    .sws-account-field--narrow {
        grid-column: 1 / -1;
    }

    .sws-account-actions {
        justify-content: flex-end;
    }

    .sws-account-actions .sws-btn {
        flex: 0 0 auto;
    }

    .sws-account-cta {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
    }

    .sws-account-cta .sws-btn {
        width: 100%;
    }
}

/* ======================================================================
 * Registration form — additions on top of the .sws-account-* base
 *   /new/subscribe.php uses:
 *     - .sws-radio-group / .sws-radio   for the Title selector (Mr/Ms/...)
 *     - .sws-uname-status               for live UserID availability hint
 *     - .sws-shipping-hint              for the country-change shipping
 *                                        cost preview under the Country
 *                                        select
 * ====================================================================== */
.sws-radio-group {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.sws-radio {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.34rem 0.7rem;
    border: 1px solid rgba(var(--sws-shadow-soft-rgb), 0.32);
    border-radius: 999px;
    background: #fffefb;
    cursor: pointer;
    font-size: 0.88rem;
    color: #292722;
    transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease;
}

.sws-radio input[type="radio"] {
    margin: 0;
    width: 0.95rem;
    height: 0.95rem;
    accent-color: var(--sws-brand-strong);
}

.sws-radio:hover {
    border-color: rgba(var(--sws-shadow-soft-rgb), 0.5);
    background: #fffefd;
}

.sws-radio:has(input[type="radio"]:checked) {
    border-color: var(--sws-brand-strong);
    background: #fff;
    box-shadow: 0 0 0 0.18rem rgba(75, 24, 36, 0.14);
}

/* Live UserID-availability hint inside the help text under the Username
 * field. Three states are rendered by the inline JS in subscribe.php. */
.sws-uname-status {
    display: inline-block;
    font-weight: 700;
    margin-left: 0.25rem;
}

.sws-uname-status.is-ok   { color: #2c7a3f; }
.sws-uname-status.is-err  { color: #b02525; }
.sws-uname-status.is-warn { color: #a0681a; }

/* Shipping cost preview under the Country select. Italic + brand-tinted
 * to read as supplementary advice rather than another input label. */
.sws-shipping-hint {
    margin-top: 0.45rem;
    font-style: italic;
    color: #6b3140;
}

.sws-shipping-hint strong {
    color: #4a1b27;
}

@media (max-width: 480px) {
    .sws-radio {
        flex: 1 1 calc(33.333% - 0.4rem);
        justify-content: center;
    }
}

/* =====================================================================
 * Homepage (/new/index.php)
 * ---------------------------------------------------------------------
 * Photo-led hero — the vineyard panel (header_hero_home.jpg) carries the
 * page on its own. The dark tint stack the other variants use is stripped
 * out here so the image reads vibrant. Below the hero sits a single H1
 * tagline, then three pillar cards, Live Market dashboards, curated picks
 * and the Instagram embed.
 * ===================================================================== */

/* ---------- Hero variant: home ----------
 * Strips the default 4-layer dark gradient stack from .sws-hero so only
 * the photo shows. Other variants (default / compact) keep the tint.
 *
 * Height is keyed to the slide artwork's 3.2:1 ratio (2243x701 / 2400x750):
 * 100vw / 3.2 = 31.25vw. Between ~900px and ~1980px viewports the full
 * image is visible edge-to-edge with no crop at all. Wider than that the
 * height caps at 620px and only sky is trimmed off the top (slides are
 * bottom-anchored). Narrower than ~900px the 280px floor kicks in and the
 * sides trim evenly, keeping the centred subject and the bottom edge. */
.sws-header--home .sws-hero {
    /* Photo only — no radial / linear overlays. Fallback for the moment
     * before the slider's first <img> paints; bottom-anchored to match. */
    background-image: var(--hero-image);
    background-position: center bottom;
    /* No hairline border: the slide <img> only covers the area above it,
     * so a border row would expose the background beneath — the photo
     * should meet the cream body directly. */
    border-bottom: 0;
    box-shadow: 0 14px 28px rgba(var(--sws-shadow-rgb), 0.10);
    height: clamp(280px, 31.25vw, 620px);
}

/* The hero carries no text on the home page ($heroHideText) — collapse the
 * inner spacer entirely so height is governed by the clamp above. */
.sws-header--home .sws-hero-inner {
    min-height: 0;
    padding: 0;
    transform: none;
}

main.sws-main-content:has(.sws-home-page) {
    padding-top: 0;
}

.sws-home-page {
    display: flex;
    flex-direction: column;
    gap: 3.2rem;
    padding-bottom: 1rem;
}

/* Extra air between content sections; tagline-to-pillars keeps the base gap. */
.sws-home-page > .sws-home-section + .sws-home-section {
    margin-top: 2.6rem;
}

/* ---------- 1. Tagline ----------
 * Sits directly under the photo-led hero and carries the page's single H1.
 * Intentionally restrained: smaller than any other heading on the page so
 * it reads as a sophisticated description, not a giant callout. The thin
 * gold flourish above ties it back to the brand chrome. */
.sws-home-tagline-section {
    margin: 1.6rem 0 0.4rem;
    padding: 0 1rem;
    text-align: center;
}

.sws-home-tagline {
    margin: 0 auto;
    max-width: 820px;
    font-size: clamp(1.35rem, 1.95vw, 1.7rem);
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.32;
    color: var(--sws-brand-strong);
    position: relative;
    padding-top: 1.15rem;
}

/* Hair-line gold flourish above the tagline — 60px centered divider. */
.sws-home-tagline::before {
    content: "";
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 60px;
    height: 1px;
    background: linear-gradient(90deg,
        rgba(185, 154, 99, 0) 0%,
        rgba(185, 154, 99, 0.7) 50%,
        rgba(185, 154, 99, 0) 100%);
}

/* ---------- Section shell ---------- */
.sws-home-section {
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.sws-home-section-head {
    max-width: 720px;
    margin: 0 auto;
    text-align: center;
}

.sws-home-section-head .sws-eyebrow {
    margin: 0 0 0.3rem;
}

.sws-home-section-title {
    margin: 0 0 0.55rem;
    font-size: clamp(1.32rem, 1.9vw, 1.85rem);
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: -0.01em;
}

.sws-home-section-title a {
    color: inherit;
    text-decoration: none;
    border-bottom: 1px solid rgba(126, 50, 63, 0.25);
}

.sws-home-section-title a:hover {
    color: var(--sws-brand);
    border-bottom-color: rgba(126, 50, 63, 0.55);
}

.sws-home-section-lead {
    margin: 0;
    color: var(--sws-text-muted);
    font-size: 0.96rem;
    line-height: 1.55;
}

/* ---------- 2. Pillar cards (Auction / BIN / Sell) ----------
 * Editorial three-card row. Each card is one large <a> click target;
 * identity comes from a full-width top-edge ribbon in the pillar's signature
 * colour (burgundy / amber / forest green), a dot-led eyebrow keying off the
 * same colour, and a meta footnote line at the bottom that doubles as the
 * "soft CTA". */
.sws-home-pillars-section {
    gap: 0;
}

.sws-home-pillars {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1.35rem;
}

.sws-home-pillar {
    --sws-pillar-accent: #7c3441;
    --sws-pillar-accent-deep: #4b1824;
    padding: 1.65rem 1.55rem 1.3rem;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    text-align: left;
    text-decoration: none;
    color: inherit;
    position: relative;
    overflow: hidden;
    background: linear-gradient(180deg, #ffffff 0%, #fbf9f1 100%);
    transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}

.sws-home-pillar--bin {
    --sws-pillar-accent: #b07a2a;
    --sws-pillar-accent-deep: #6f4912;
}

.sws-home-pillar--sell {
    --sws-pillar-accent: #4a6a3b;
    --sws-pillar-accent-deep: #243d18;
}

/* Top-edge accent ribbon — the strongest per-pillar identity signal.
 * Replaces the older near-invisible 3px left bar with a confident 5px band
 * that scans from across the page. */
.sws-home-pillar::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 5px;
    background: linear-gradient(90deg,
        var(--sws-pillar-accent) 0%,
        var(--sws-pillar-accent-deep) 100%);
    transition: height 0.22s ease;
}

.sws-home-pillar:hover,
.sws-home-pillar:focus-visible {
    transform: translateY(-5px);
    box-shadow: 0 26px 44px rgba(var(--sws-shadow-rgb), 0.16);
    border-color: rgba(var(--sws-line-rgb), 0.55);
    color: inherit;
}

.sws-home-pillar:hover::before,
.sws-home-pillar:focus-visible::before {
    height: 6px;
}

.sws-home-pillar-chevron {
    position: absolute;
    top: 1rem;
    right: 1rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: #ffffff;
    border: 1px solid rgba(126, 50, 63, 0.22);
    color: var(--sws-brand);
    font-size: 1.05rem;
    transition: background 0.22s ease, color 0.22s ease, transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
    z-index: 1;
}

.sws-home-pillar:hover .sws-home-pillar-chevron,
.sws-home-pillar:focus-visible .sws-home-pillar-chevron {
    background: linear-gradient(135deg,
        var(--sws-pillar-accent) 0%,
        var(--sws-pillar-accent-deep) 100%);
    border-color: transparent;
    color: #fdf9f0;
    transform: translate(2px, -2px);
    box-shadow: 0 8px 16px rgba(var(--sws-shadow-rgb), 0.18);
}

.sws-home-pillar-eyebrow {
    margin: 0.15rem 0 0;
    font-size: 0.7rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: var(--sws-accent-deep);
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    position: relative;
    z-index: 1;
}

/* Tiny accent dot before the eyebrow text — picks up the pillar's signature
 * colour so eyebrow + ribbon + numeral all hum on the same chord. */
.sws-home-pillar-eyebrow::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--sws-pillar-accent);
}

.sws-home-pillar-title {
    margin: 0;
    font-size: clamp(1.35rem, 1.75vw, 1.6rem);
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: -0.015em;
    line-height: 1.12;
    position: relative;
    z-index: 1;
    transition: color 0.22s ease;
}

.sws-home-pillar:hover .sws-home-pillar-title {
    color: var(--sws-brand);
}

.sws-home-pillar-body {
    margin: 0.15rem 0 0;
    color: var(--sws-text);
    font-size: 0.94rem;
    line-height: 1.5;
    position: relative;
    z-index: 1;
    flex-grow: 1;
}

/* Meta footnote line — sits at the foot of the card, tied back to the
 * eyebrow with a thin top border. Acts as a soft CTA-equivalent without
 * adding a button. */
.sws-home-pillar-meta {
    margin: 0.8rem 0 0;
    padding-top: 0.55rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.32);
    font-size: 0.76rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--sws-text-muted);
    position: relative;
    z-index: 1;
}

.sws-home-pillar:hover .sws-home-pillar-meta,
.sws-home-pillar:focus-visible .sws-home-pillar-meta {
    color: var(--sws-pillar-accent-deep);
}

/* ---------- 3. Live Market cards ----------
 * Compact 4-up grid (Grange / Hill of Grace / Mosswood / Rockford). Each
 * card opens with a small 3:2 landscape thumbnail that crowns the body —
 * the marketing-graphic photos still set the tone, just at a fraction of
 * the size they had in the previous 2-up layout. */
.sws-home-market-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.sws-home-market-card {
    display: flex;
    flex-direction: column;
    padding: 0;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
}

.sws-home-market-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 22px 38px rgba(var(--sws-shadow-rgb), 0.14);
    border-color: rgba(var(--sws-line-rgb), 0.5);
    color: inherit;
}

.sws-home-market-hero {
    display: block;
    width: 100%;
    aspect-ratio: 3 / 2;
    overflow: hidden;
    background: #f4f1e5;
    border-bottom: 1px solid rgba(var(--sws-line-rgb), 0.22);
}

.sws-home-market-hero img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease;
}

.sws-home-market-card:hover .sws-home-market-hero img {
    transform: scale(1.035);
}

.sws-home-market-body {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.9rem 0.95rem 1rem;
    min-width: 0;
    flex-grow: 1;
}

.sws-home-market-eyebrow {
    margin: 0 0 0.05rem;
    color: var(--sws-accent-deep);
}

.sws-home-market-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: -0.01em;
    line-height: 1.22;
}

.sws-home-market-copy {
    color: var(--sws-text-muted);
    font-size: 0.84rem;
    line-height: 1.45;
    flex-grow: 1;
}

.sws-home-market-cta {
    margin-top: 0.5rem;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--sws-brand);
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

.sws-home-market-card:hover .sws-home-market-cta {
    color: var(--sws-brand-strong);
}

/* ---------- 4. Curated picks ----------
 * Same editorial language as the pillar row above (top-edge ribbon +
 * watermark numeral + dot-led eyebrow + soft meta footnote), just at a
 * smaller scale to suit a 4-up grid. Each card has its own accent colour
 * pair so the row reads as a four-note chord against the pillar row's
 * three-note chord above. */
.sws-home-curated-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
}

.sws-home-curated-card {
    --sws-curated-accent: #6b4226;
    --sws-curated-accent-deep: #382112;
    padding: 1.85rem 1.2rem 1.15rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    text-decoration: none;
    color: inherit;
    transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease;
    position: relative;
    overflow: hidden;
    background: linear-gradient(180deg, #ffffff 0%, #fbf9f1 100%);
}

/* Per-card accent pairs. Distinct from the pillar row (burgundy / amber /
 * green) so the two rows feel like coordinated chapters, not echoes. */
.sws-home-curated--parker {
    --sws-curated-accent: #8c1a2a;
    --sws-curated-accent-deep: #4a0c14;
}

.sws-home-curated--halliday {
    --sws-curated-accent: #960073;
    --sws-curated-accent-deep: #4d002e;
}

.sws-home-curated--birth {
    --sws-curated-accent: #314765;
    --sws-curated-accent-deep: #16243d;
}

/* Top-edge ribbon. 4px (lighter than the pillar 5px) since the curated
 * cards are smaller and need less weight on the lid. */
.sws-home-curated-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(90deg,
        var(--sws-curated-accent) 0%,
        var(--sws-curated-accent-deep) 100%);
    transition: height 0.22s ease;
}

/* Watermark numeral — uses [data-curated-index] from the markup. Smaller
 * (6.5rem vs the pillar's 8.5rem) and tucked further down so it doesn't
 * fight the meta footnote line at this scale. */
.sws-home-curated-card::after {
    content: attr(data-curated-index);
    position: absolute;
    right: -0.3rem;
    bottom: -1.4rem;
    font-size: 6.5rem;
    font-weight: 800;
    line-height: 1;
    color: var(--sws-curated-accent);
    opacity: 0.06;
    letter-spacing: -0.04em;
    pointer-events: none;
    transition: opacity 0.25s ease, transform 0.45s ease;
}

.sws-home-curated-card:hover,
.sws-home-curated-card:focus-visible {
    transform: translateY(-4px);
    box-shadow: 0 22px 38px rgba(var(--sws-shadow-rgb), 0.15);
    border-color: rgba(var(--sws-line-rgb), 0.55);
    color: inherit;
}

.sws-home-curated-card:hover::before,
.sws-home-curated-card:focus-visible::before {
    height: 5px;
}

.sws-home-curated-card:hover::after,
.sws-home-curated-card:focus-visible::after {
    opacity: 0.1;
    transform: translate(-0.3rem, -0.3rem);
}

/* Chevron — 34px square (vs pillar 40px) to suit the smaller card frame. */
.sws-home-curated-chevron {
    position: absolute;
    top: 0.9rem;
    right: 0.9rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 9px;
    background: #ffffff;
    border: 1px solid rgba(126, 50, 63, 0.22);
    color: var(--sws-brand);
    font-size: 0.92rem;
    transition: background 0.22s ease, color 0.22s ease, transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
    z-index: 1;
}

.sws-home-curated-card:hover .sws-home-curated-chevron,
.sws-home-curated-card:focus-visible .sws-home-curated-chevron {
    background: linear-gradient(135deg,
        var(--sws-curated-accent) 0%,
        var(--sws-curated-accent-deep) 100%);
    border-color: transparent;
    color: #fdf9f0;
    transform: translate(2px, -2px);
    box-shadow: 0 7px 14px rgba(var(--sws-shadow-rgb), 0.18);
}

.sws-home-curated-eyebrow {
    margin: 0.15rem 0 0;
    font-size: 0.66rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: var(--sws-accent-deep);
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    position: relative;
    z-index: 1;
}

.sws-home-curated-eyebrow::before {
    content: "";
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--sws-curated-accent);
}

.sws-home-curated-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--sws-brand-strong);
    letter-spacing: -0.015em;
    line-height: 1.15;
    position: relative;
    z-index: 1;
    transition: color 0.22s ease;
}

.sws-home-curated-card:hover .sws-home-curated-title {
    color: var(--sws-brand);
}

.sws-home-curated-copy {
    margin: 0.2rem 0 0;
    color: var(--sws-text-muted);
    font-size: 0.86rem;
    line-height: 1.5;
    position: relative;
    z-index: 1;
    flex-grow: 1;
}

/* Meta footnote — same idea as the pillar meta line, tighter type to suit
 * the smaller frame. */
.sws-home-curated-meta {
    margin: 0.8rem 0 0;
    padding-top: 0.6rem;
    border-top: 1px solid rgba(var(--sws-line-rgb), 0.32);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--sws-text-muted);
    position: relative;
    z-index: 1;
}

.sws-home-curated-card:hover .sws-home-curated-meta,
.sws-home-curated-card:focus-visible .sws-home-curated-meta {
    color: var(--sws-curated-accent-deep);
}

/* ---------- 5. Instagram embed ---------- */
.sws-home-instagram-card {
    padding: 1.2rem 1.1rem 0.9rem;
}

.sws-home-instagram-card behold-widget {
    display: block;
}

/* ---------- Responsive ---------- */
@media (max-width: 991.98px) {
    .sws-home-pillars {
        grid-template-columns: 1fr;
    }

    .sws-home-market-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .sws-home-curated-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .sws-home-market-grid {
        gap: 0.85rem;
    }

    .sws-home-market-body {
        padding: 0.85rem 0.9rem 0.95rem;
        gap: 0.18rem;
    }
}

@media (max-width: 540px) {
    .sws-home-page {
        gap: 2.4rem;
    }

    .sws-home-page > .sws-home-section + .sws-home-section {
        margin-top: 1.6rem;
    }

    .sws-home-market-grid {
        grid-template-columns: 1fr;
    }

    .sws-home-curated-grid {
        grid-template-columns: 1fr;
    }
}

/* Product pages (auction lot and Buy It Now): summary cards. */
.sws-metric-grid--bin .sws-metric,
.sws-metric-grid--lot .sws-metric {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.sws-metric-grid--bin .sws-metric-value,
.sws-metric-grid--lot .sws-metric-value {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.sws-metric-currency {
    margin-right: 0.22em;
    font-size: 0.7em;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--sws-text-muted);
}

.sws-metric-unit {
    font-size: 0.78em;
    font-weight: 600;
    color: var(--sws-text-muted);
}

.sws-metric-sub {
    margin: 0.2rem 0 0;
    font-size: 0.76rem;
    line-height: 1.3;
    color: var(--sws-text-muted);
}

.sws-num-cell {
    white-space: nowrap;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* Auction lot table beside a bottle photo: seven columns don't fit the
 * narrower panel on small desktops, and Region is the same for every lot. */
@media (min-width: 992px) and (max-width: 1199.98px) {
    .sws-page-grid:not(.sws-page-grid--no-image) > .sws-summary-card .sws-lot-table:not(.sws-lot-table--bin) thead th:nth-child(3),
    .sws-page-grid:not(.sws-page-grid--no-image) > .sws-summary-card .sws-lot-table:not(.sws-lot-table--bin) td:nth-child(3) {
        display: none;
    }
}

@media (min-width: 576px) and (max-width: 991.98px) {
    .sws-metric-grid--bin,
    .sws-metric-grid--lot {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}
