/* Storefront tokens and shared components. All selectors are scoped with sf-. */
.sf-storefront {
    --sf-accent: var(--main);
    --sf-muted: var(--muted);
    --sf-line: var(--border);
    --sf-card: var(--surface);
    width: 100%;
    max-width: 1120px;
    margin: 0 auto;
    color: var(--font);
}
.sf-storefront *, .sf-storefront *::before, .sf-storefront *::after { box-sizing: border-box; }
.sf-storefront a { color: inherit; text-decoration: none; }
.sf-storefront button, .sf-storefront input, .sf-storefront select { font: inherit; }
.sf-storefront a:focus-visible, .sf-storefront button:focus-visible, .sf-storefront input:focus-visible, .sf-storefront select:focus-visible { outline: 2px solid var(--main); outline-offset: 5px; }
.sf-storefront h1, .sf-storefront h2, .sf-storefront h3, .sf-storefront p { margin-top: 0; }
.sf-storefront [hidden] { display: none !important; }
.sf-icon { display: inline-block; width: 21px; height: 21px; flex-shrink: 0; vertical-align: middle; }
.sf-eyebrow { display: inline-flex; align-items: center; gap: 9px; color: var(--muted); font-family: inherit; font-size: 9px; font-weight: 600; letter-spacing: 2px; line-height: 1.6; }
.sf-status-dot { display: inline-block; width: 6px; height: 6px; flex: 0 0 6px; border-radius: 50%; background: var(--sf-accent); box-shadow: 0 0 10px color-mix(in srgb, var(--main) 33.33%, transparent); }
.sf-button { min-height: 46px; padding: 11px 21px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; border: 1px solid transparent; border-radius: 8px; font-size: 13px; font-weight: 600; cursor: pointer; transition: transform .2s ease, background .2s ease, box-shadow .2s ease; }
.sf-button .sf-icon { width: 17px; height: 17px; }
.sf-button:hover { transform: translateY(-2px); }
.sf-button--primary { color: var(--on-primary) !important; background: var(--sf-accent); box-shadow: 0 5px 26px color-mix(in srgb, var(--main) 12.55%, transparent); }
.sf-button--primary:hover { background: var(--main); box-shadow: 0 5px 30px color-mix(in srgb, var(--main) 25.10%, transparent); }
.sf-button--outline { border-color: var(--border); background: color-mix(in srgb, var(--font) 1.18%, transparent); color: var(--font); }
.sf-button--outline:hover { border-color: color-mix(in srgb, var(--main) 53.33%, transparent); background: color-mix(in srgb, var(--main) 3.92%, transparent); }
.sf-text-link { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 500; white-space: nowrap; }
.sf-text-link .sf-icon { width: 16px; height: 16px; transition: transform .2s; }
.sf-text-link:hover { color: var(--sf-accent); }
.sf-text-link:hover .sf-icon { transform: translateX(3px); }
.sf-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* Hero artwork is local SVG and CSS, so it stays crisp at every screen size. */
.sf-hero { position: relative; overflow: hidden; border: 1px solid var(--surface-raised); border-radius: 16px; background: var(--surface); isolation: isolate; }
.sf-hero-slide { min-height: 390px; position: relative; overflow: hidden; }
.sf-hero-slide--image > img { position: absolute; width: 100%; height: 100%; inset: 0; object-fit: cover; }
.sf-carousel-action { position: absolute; left: 28px; bottom: 35px; }
.sf-carousel-controls { position: absolute; z-index: 5; right: 15px; bottom: 11px; display: flex; gap: 6px; align-items: center; border-radius: 50px; padding: 3px 6px; background: color-mix(in srgb, var(--background) 85.10%, transparent); }
.sf-carousel-dot { width: 6px; height: 6px; margin: 8px 2px; padding: 0; background: var(--muted); border: 0; border-radius: 5px; cursor: pointer; transition: width .2s, background .2s; }
.sf-carousel-dot.is-active { width: 18px; background: var(--sf-accent); }
.sf-carousel-arrow { display: grid; place-items: center; border: 0; padding: 5px; color: var(--font); background: transparent; cursor: pointer; }
.sf-carousel-arrow .sf-icon { width: 13px; height: 13px; }
.sf-carousel-arrow--previous { transform: rotate(180deg); }

/* Announcements and four compact shortcuts mirror the reference hierarchy. */
.sf-announcement { display: flex; align-items: center; gap: 16px; min-height: 48px; margin-top: 15px; padding: 9px 16px; border: 1px solid var(--sf-line); border-radius: 8px; background: var(--surface); }
.sf-announcement-label { display: flex; gap: 9px; align-items: center; flex-shrink: 0; border-right: 1px solid var(--border); padding-right: 17px; font-size: 11px; font-weight: 600; }
.sf-announcement-label .sf-icon { width: 16px; height: 16px; color: var(--sf-accent); }
.sf-announcement > p { flex: 1; margin: 0; font-size: 11px; color: var(--muted); overflow-wrap: anywhere; }
.sf-announcement-live { display: flex; align-items: center; gap: 7px; font-size: 8px; letter-spacing: 1px; color: var(--muted); }
.sf-announcement-live .sf-status-dot { width: 4px; height: 4px; flex-basis: 4px; }
.sf-quick-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; margin-top: 17px; }
.sf-quick-card { position: relative; display: flex; align-items: center; gap: 12px; min-height: 91px; padding: 15px; overflow: hidden; border: 1px solid var(--surface-raised); border-radius: 10px; isolation: isolate; background: linear-gradient(120deg, var(--surface), var(--surface)); transition: border-color .25s, transform .25s; }
.sf-quick-card::after { content: ""; position: absolute; width: 39px; height: 150px; top: -20px; right: -12px; transform: rotate(32deg); border-left: 1px solid color-mix(in srgb, var(--main) 13.33%, transparent); background: color-mix(in srgb, var(--main) 2.75%, transparent); z-index: -1; }
.sf-quick-card:hover { transform: translateY(-4px); border-color: var(--main); }
.sf-quick-icon { display: grid; place-items: center; width: 38px; height: 42px; flex: 0 0 38px; color: var(--main); }
.sf-quick-icon .sf-icon { width: 29px; height: 29px; stroke-width: 1.35; }
.sf-quick-copy { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 5px; }
.sf-quick-copy > strong { font-size: 12px; font-weight: 600; }
.sf-quick-copy > small { color: var(--muted); font-size: 10px; }
.sf-quick-arrow { width: 13px; height: 13px; color: var(--main); }
.sf-quick-poster { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .13; z-index: -1; }

/* Activity never displays sample sales or private delivered product details. */
.sf-section { margin-top: 40px; scroll-margin-top: 95px; }
.sf-section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 18px; margin-bottom: 18px; }
.sf-section-heading .sf-eyebrow { color: var(--main); font-size: 8px; letter-spacing: 1.8px; margin-bottom: 3px; }
.sf-section-heading h2 { margin: 0; color: var(--font); font-size: 21px; font-weight: 700; line-height: 1.5; }
.sf-heading-dot { padding-left: 2px; color: var(--sf-accent); }
.sf-section-heading p { margin: 3px 0 0; color: var(--sf-muted); font-size: 11px; }
.sf-section-heading .sf-text-link { padding-bottom: 4px; }
.sf-section--activity { margin-top: 29px; }
.sf-section--activity .sf-section-heading { margin-bottom: 13px; }
.sf-section--activity .sf-section-heading h2 { font-size: 17px; }
.sf-live-label { display: inline-flex; align-items: center; gap: 7px; color: var(--muted); font-size: 9px; padding-bottom: 5px; }
.sf-live-label .sf-status-dot { width: 4px; height: 4px; flex-basis: 4px; }
.sf-purchase-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.sf-purchase-card { display: flex; align-items: center; gap: 13px; padding: 15px; border: 1px solid var(--sf-line); border-radius: 10px; background: var(--sf-card); }
.sf-purchase-avatar { display: grid; place-items: center; flex: 0 0 42px; height: 42px; border-radius: 10px; background: linear-gradient(135deg, var(--main), var(--surface)); color: var(--main); }
.sf-purchase-avatar .sf-icon { width: 23px; height: 23px; }
.sf-purchase-card > div { min-width: 0; flex: 1; }
.sf-purchase-card strong { font-size: 12px; font-weight: 600; }
.sf-purchase-card p { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 4px 0 1px; color: var(--muted); font-size: 10px; }
.sf-purchase-card small { font-size: 9px; color: var(--muted); }
.sf-purchase-check { width: 21px; height: 21px; display: grid; place-items: center; border: 1px solid var(--success); background: color-mix(in srgb, var(--success) 20.00%, transparent); color: var(--success); border-radius: 50%; }
.sf-purchase-check .sf-icon { width: 11px; height: 11px; }
.sf-activity-empty { display: flex; align-items: center; gap: 15px; padding: 17px 20px; background: var(--surface); border: 1px solid var(--sf-line); border-radius: 10px; }
.sf-activity-empty > .sf-icon { color: var(--main); width: 25px; height: 25px; }
.sf-activity-empty > span { flex: 1; font-size: 12px; color: var(--font); }
.sf-activity-empty small { display: block; font-size: 10px; margin-top: 4px; color: var(--muted); }
.sf-activity-empty > a { display: flex; align-items: center; gap: 6px; color: var(--main); font-size: 10px; }
.sf-activity-empty > a .sf-icon { width: 14px; height: 14px; }

/* Category cards show only administrator-provided artwork. */
.sf-category-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px; }
.sf-category-card { position: relative; overflow: hidden; min-height: 0; padding: 0; border: 1px solid var(--border); border-radius: 11px; background: var(--surface); transition: transform .3s, border-color .3s; }
.sf-category-card:hover { transform: translateY(-4px); border-color: var(--main); }
.sf-category-card::before, .sf-category-card::after { display: none; content: none; }
.sf-category-copy { position: relative; z-index: 2; max-width: 78%; }
.sf-category-copy .sf-eyebrow { font-size: 8px; letter-spacing: 2.4px; color: var(--main); }
.sf-category-copy h3 { font-size: 24px; font-weight: 700; line-height: 1.5; margin: 5px 0 2px; overflow-wrap: anywhere; }
.sf-category-copy p { margin: 0; color: var(--main); font-size: 11px; max-width: 250px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; }
.sf-category-count { display: inline-flex; align-items: center; gap: 12px; margin-top: 16px; font-size: 10px; font-weight: 500; color: var(--main); }
.sf-category-count .sf-icon { width: 15px; height: 15px; transition: transform .3s; }
.sf-category-card:hover .sf-category-count .sf-icon { transform: translateX(5px); }
.sf-category-photo { display: block; width: 100%; height: auto; object-fit: contain; object-position: center; opacity: 1; }

/* A single product card is reused across the home and paginated catalog. */
.sf-product-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.sf-product-card { min-width: 0; border: 1px solid var(--sf-line); background: var(--sf-card); border-radius: 12px; overflow: hidden; transition: transform .25s, border-color .25s, box-shadow .25s; }
.sf-product-card:hover { transform: translateY(-5px); border-color: var(--main); box-shadow: 0 12px 35px color-mix(in srgb, var(--background) 20.00%, transparent); }
.sf-product-image-link { position: relative; display: grid; place-items: center; overflow: hidden; aspect-ratio: 1; background: var(--surface); }
.sf-product-image { display: block; width: 100%; height: auto; object-fit: contain; object-position: center; transition: none; }
.sf-product-card:hover .sf-product-image { transform: none; }
.sf-stock-badge { position: absolute; top: 11px; left: 11px; padding: 5px 8px; display: inline-flex; align-items: center; gap: 5px; color: var(--font); font-size: 8px; border: 1px solid color-mix(in srgb, var(--font) 14.51%, transparent); border-radius: 4px; background: color-mix(in srgb, var(--surface) 87.06%, transparent); backdrop-filter: blur(8px); }
.sf-stock-badge > span { width: 4px; height: 4px; border-radius: 50%; background: var(--success); }
.sf-stock-badge--empty { color: var(--font); }
.sf-stock-badge--empty > span { background: var(--main); }
.sf-product-view { position: absolute; display: grid; place-items: center; width: 32px; height: 32px; right: 11px; bottom: 11px; color: var(--font); background: var(--sf-accent); border-radius: 50%; opacity: 0; transform: translateY(5px); transition: opacity .2s, transform .2s; }
.sf-product-view .sf-icon { width: 17px; height: 17px; }
.sf-product-card:hover .sf-product-view, .sf-product-card:focus-within .sf-product-view { opacity: 1; transform: none; }
.sf-product-info { padding: 17px 15px 13px; }
.sf-product-category { display: block; color: var(--main) !important; font-size: 9px; margin-bottom: 5px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sf-product-info h3 { margin-bottom: 14px; font-size: 13px; font-weight: 600; line-height: 1.55; min-height: 40px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.sf-product-price-row { display: flex; gap: 10px; justify-content: space-between; align-items: center; }
.sf-product-price-row > strong { font-size: 20px; color: var(--main); font-weight: 700; }
.sf-product-price-row > span { color: var(--muted); font-size: 9px; }
.sf-product-button { display: flex; justify-content: space-between; align-items: center; margin-top: 13px; border-top: 1px solid var(--surface-raised); padding-top: 12px; font-size: 10px; color: var(--font) !important; }
.sf-product-button .sf-icon { width: 15px; height: 15px; color: var(--sf-accent); }
.sf-product-button:hover { color: var(--font) !important; }
.sf-empty-state { display: flex; align-items: center; gap: 25px; min-height: 167px; padding: 30px; border: 1px solid var(--surface-raised); border-radius: 12px; background: radial-gradient(ellipse at 3% 50%, color-mix(in srgb, var(--main) 3.92%, transparent), transparent 60%), var(--surface); }
.sf-empty-icon { flex: 0 0 70px; width: 70px; height: 70px; display: grid; place-items: center; border: 1px solid var(--main); border-radius: 20px; background: linear-gradient(145deg, var(--main), var(--surface)); color: var(--main); transform: rotate(-8deg); }
.sf-empty-icon .sf-icon { width: 34px; height: 34px; stroke-width: 1; }
.sf-empty-state > div { flex: 1; }
.sf-empty-state .sf-eyebrow { font-size: 8px; color: var(--main); }
.sf-empty-state h3 { font-size: 18px; margin: 6px 0; font-weight: 600; }
.sf-empty-state p { margin: 0; color: var(--muted); font-size: 11px; }
.sf-empty-state > .sf-button { flex-shrink: 0; font-size: 11px; min-height: 40px; padding: 9px 15px; }

/* Support call to action closes the page without distracting from the catalog. */
.sf-help-banner { position: relative; display: flex; align-items: center; gap: 22px; padding: 28px 30px; overflow: hidden; isolation: isolate; margin-top: 40px; border: 1px solid var(--surface-raised); border-radius: 11px; background: var(--surface); }
.sf-help-icon { display: grid; place-items: center; width: 63px; height: 63px; flex: 0 0 63px; border: 1px solid var(--main); border-radius: 50%; color: var(--main); background: var(--surface); }
.sf-help-icon .sf-icon { width: 30px; height: 30px; stroke-width: 1.3; }
.sf-help-banner > div { flex: 1; }
.sf-help-banner .sf-eyebrow { color: var(--main); font-size: 8px; }
.sf-help-banner h2 { font-size: 20px; font-weight: 600; margin: 5px 0; }
.sf-help-banner p { font-size: 11px; color: var(--muted); margin: 0; }
.sf-help-banner > .sf-button { padding: 9px 19px; font-size: 11px; min-height: 41px; }
.sf-help-decoration { position: absolute; z-index: -1; top: 0; right: 100px; font-size: 106px; font-weight: 900; letter-spacing: -6px; line-height: 1.5; color: color-mix(in srgb, var(--font) 0.78%, transparent); pointer-events: none; }

/* Search, filtering and pagination work as regular GET links without JavaScript. */
.sf-catalog { padding-top: 5px; min-height: 56vh; }
.sf-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; color: var(--muted); font-size: 11px; margin: 0 0 23px; }
.sf-breadcrumb .sf-icon { width: 12px; height: 12px; color: var(--muted); }
.sf-breadcrumb [aria-current="page"] { color: var(--font); }
.sf-breadcrumb a:hover { color: var(--sf-accent); }
.sf-catalog-header { display: flex; align-items: center; justify-content: space-between; min-height: 154px; overflow: hidden; padding: 28px 34px; margin-bottom: 24px; background: radial-gradient(ellipse at 100% 30%, color-mix(in srgb, var(--main) 27.06%, transparent), transparent 55%), var(--surface); border: 1px solid var(--main); border-radius: 12px; }
.sf-catalog-header h1 { margin: 8px 0; font-size: clamp(24px, 3.4vw, 35px); line-height: 1.5; font-weight: 700; overflow-wrap: anywhere; }
.sf-catalog-header p { color: var(--muted); font-size: 12px; margin: 0; }
.sf-catalog-header .sf-eyebrow { color: var(--main); font-size: 8px; }
.sf-catalog-header-icon { display: grid; place-items: center; width: 106px; height: 106px; margin: 0 20px 0 30px; flex-shrink: 0; color: var(--main); border: 1px solid color-mix(in srgb, var(--main) 30.20%, transparent); border-radius: 23px; background: color-mix(in srgb, var(--main) 20.78%, transparent); transform: rotate(-13deg); box-shadow: 15px 15px 0 color-mix(in srgb, var(--main) 3.53%, transparent); }
.sf-catalog-header-icon .sf-icon { width: 58px; height: 58px; stroke-width: 1; }
.sf-catalog-tools { display: flex; align-items: stretch; gap: 12px; }
.sf-search-field { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; padding: 0 15px; border: 1px solid var(--border); border-radius: 8px; background: var(--sf-card); color: var(--muted); }
.sf-search-field > input { display: block; width: 100%; min-width: 0; height: 46px; padding: 10px 0; border: 0; background: transparent; color: var(--font); font-size: 12px; box-shadow: none; }
.sf-search-field:focus-within { border-color: var(--main); }
.sf-search-field > input:focus-visible { outline: none; }
.sf-search-field > input::placeholder { color: var(--muted); }
.sf-search-field > .sf-icon { width: 18px; height: 18px; }
.sf-sort-field { display: flex; align-items: center; gap: 10px; padding: 0 12px; border: 1px solid var(--border); border-radius: 8px; background: var(--sf-card); font-size: 11px; }
.sf-sort-field > span { color: var(--muted); }
.sf-sort-field > select { padding: 12px 20px 12px 0; border: 0; background: transparent; color: var(--font); font-size: 11px; color-scheme: inherit; }
.sf-category-filters { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 18px; }
.sf-filter-chip { display: inline-flex; gap: 8px; align-items: center; padding: 9px 13px; border: 1px solid var(--surface-raised); border-radius: 7px; background: var(--surface); color: var(--muted) !important; font-size: 11px; transition: border-color .2s, background .2s; }
.sf-filter-chip > .sf-icon { width: 13px; height: 13px; }
.sf-filter-chip > span { min-width: 16px; padding: 1px 4px; border-radius: 3px; background: color-mix(in srgb, var(--font) 3.53%, transparent); color: var(--muted); font-size: 9px; text-align: center; }
.sf-filter-chip:hover { border-color: var(--main); }
.sf-filter-chip.is-active { border-color: var(--main); color: var(--font) !important; background: color-mix(in srgb, var(--main) 8.63%, transparent); }
.sf-results-heading { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin: 30px 0 19px; }
.sf-results-heading h2 { margin: 0; font-size: 17px; font-weight: 600; }
.sf-results-heading h2 > span { font-size: 11px; color: var(--muted); padding-left: 10px; font-weight: 400; }
.sf-catalog-note { color: var(--muted); font-size: 12px; }
.sf-pagination { display: flex; justify-content: center; gap: 8px; margin-top: 30px; }
.sf-pagination a { display: grid; place-items: center; width: 38px; height: 38px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--muted); font-size: 12px; }
.sf-pagination a[aria-current="page"] { background: var(--main); color: var(--on-primary); border-color: var(--main); }

/* Progressive enhancement: content remains visible when JS is unavailable. */
.sf-reveal-pending { opacity: 0; transform: translateY(14px); }
.sf-reveal-visible { animation: sf-reveal .55s cubic-bezier(.2, .7, .25, 1) both; }
@keyframes sf-reveal { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes sf-float { 0%, 100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-9px) rotate(1deg); } }

/* Tablet layouts preserve the four-column shortcuts with two-column products. */
@media (max-width: 1000px) {
    .sf-quick-links { gap: 10px; }
    .sf-quick-card { padding: 14px 11px; gap: 7px; }
    .sf-quick-icon { width: 28px; flex-basis: 28px; }
    .sf-quick-icon .sf-icon { width: 24px; height: 24px; }
    .sf-quick-copy > strong { font-size: 11px; }
    .sf-quick-copy > small { font-size: 9px; }
    .sf-quick-arrow { display: none; }
    .sf-category-copy h3 { font-size: 22px; }
    .sf-category-card { padding: 25px 23px; }
    .sf-product-grid { gap: 13px; }
    .sf-product-info { padding: 13px 12px; }
    .sf-product-price-row { gap: 4px; }
    .sf-product-price-row > strong { font-size: 17px; }
}
@media (max-width: 760px) {
    .sf-hero-slide { min-height: 360px; }
    .sf-quick-links { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
    .sf-quick-card { min-height: 79px; padding: 12px 16px; gap: 12px; }
    .sf-quick-icon { width: 32px; flex-basis: 32px; }
    .sf-quick-icon .sf-icon { width: 27px; height: 27px; }
    .sf-quick-copy > strong { font-size: 12px; }
    .sf-quick-copy > small { font-size: 10px; }
    .sf-quick-arrow { display: block; }
    .sf-announcement { gap: 11px; padding: 11px 13px; }
    .sf-announcement-label { padding-right: 11px; gap: 6px; }
    .sf-announcement > p { font-size: 10px; }
    .sf-announcement-live { display: none; }
    .sf-purchase-grid { grid-template-columns: 1fr; gap: 9px; }
    .sf-purchase-card { padding: 12px 15px; }
    .sf-purchase-card p { margin-top: 1px; }
    .sf-purchase-card small { display: none; }
    .sf-purchase-avatar { height: 35px; flex-basis: 35px; }
    .sf-section { margin-top: 30px; }
    .sf-section-heading { margin-bottom: 14px; }
    .sf-section-heading h2 { font-size: 19px; }
    .sf-section-heading p { font-size: 10px; }
    .sf-text-link { font-size: 10px; gap: 5px; }
    .sf-category-grid { gap: 13px; }
    .sf-category-card { min-height: 174px; padding: 23px 20px; }
    .sf-category-copy { max-width: 100%; }
    .sf-category-copy h3 { font-size: 20px; }
    .sf-category-copy p { font-size: 10px; max-width: 150px; }
    .sf-category-copy .sf-eyebrow { font-size: 7px; letter-spacing: 1.3px; }
    .sf-product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
    .sf-product-info { padding: 16px; }
    .sf-product-price-row > strong { font-size: 20px; }
    .sf-product-price-row > span { font-size: 10px; }
    .sf-empty-state { gap: 20px; padding: 25px; flex-wrap: wrap; }
    .sf-empty-state > div { flex-basis: calc(100% - 100px); }
    .sf-empty-state > .sf-button { margin-left: 90px; }
    .sf-empty-state h3 { font-size: 16px; }
    .sf-empty-state p { font-size: 10px; line-height: 1.8; }
    .sf-help-banner { gap: 17px; padding: 22px; flex-wrap: wrap; margin-top: 30px; }
    .sf-help-banner h2 { font-size: 18px; }
    .sf-help-banner p { font-size: 10px; }
    .sf-help-icon { width: 52px; height: 52px; flex-basis: 52px; }
    .sf-help-banner > .sf-button { margin-left: 69px; }
    .sf-catalog-header { padding: 24px; }
    .sf-catalog-header h1 { font-size: 27px; }
    .sf-catalog-header-icon { width: 80px; height: 80px; margin-right: 0; }
    .sf-catalog-header-icon .sf-icon { width: 45px; height: 45px; }
    .sf-catalog-tools { flex-wrap: wrap; gap: 10px; }
    .sf-search-field { flex-basis: 100%; }
    .sf-sort-field { flex: 1; }
    .sf-sort-field > select { flex: 1; }
}
/* Small phones keep actions usable without horizontal page overflow. */
@media (max-width: 440px) {
    .sf-hero { border-radius: 12px; }
    .sf-quick-links { gap: 9px; }
    .sf-quick-card { padding: 12px 10px; gap: 8px; }
    .sf-quick-icon { width: 25px; flex-basis: 25px; }
    .sf-quick-icon .sf-icon { width: 24px; height: 24px; }
    .sf-quick-copy > strong { font-size: 11px; }
    .sf-quick-copy > small { font-size: 9px; }
    .sf-quick-arrow { display: none; }
    .sf-section-heading { gap: 10px; }
    .sf-section-heading h2 { font-size: 18px; }
    .sf-section-heading .sf-eyebrow { font-size: 7px; letter-spacing: 1.4px; }
    .sf-live-label { font-size: 8px; }
    .sf-activity-empty { padding: 15px; gap: 12px; }
    .sf-activity-empty > span { font-size: 10px; }
    .sf-activity-empty small { font-size: 9px; line-height: 1.7; }
    .sf-activity-empty > a { display: none; }
    .sf-category-grid { gap: 10px; }
    .sf-category-card { min-height: 161px; padding: 20px 15px; }
    .sf-category-copy h3 { font-size: 17px; margin-top: 7px; }
    .sf-category-copy .sf-eyebrow { font-size: 6px; letter-spacing: 1px; }
    .sf-category-copy p { font-size: 9px; max-width: 132px; }
    .sf-category-count { font-size: 9px; gap: 7px; }
    .sf-product-grid { gap: 10px; }
    .sf-product-info { padding: 12px; }
    .sf-product-info h3 { font-size: 12px; margin-bottom: 9px; }
    .sf-product-price-row > strong { font-size: 18px; }
    .sf-product-price-row > span { font-size: 8px; }
    .sf-product-button { font-size: 9px; }
    .sf-empty-state { gap: 15px; padding: 23px 19px; }
    .sf-empty-icon { flex-basis: 48px; width: 48px; height: 55px; border-radius: 14px; }
    .sf-empty-icon .sf-icon { width: 27px; height: 27px; }
    .sf-empty-state h3 { font-size: 15px; }
    .sf-empty-state .sf-eyebrow { font-size: 6px; letter-spacing: 1px; }
    .sf-empty-state > .sf-button { margin-left: 63px; }
    .sf-help-banner { padding: 20px; gap: 13px; }
    .sf-help-icon { width: 42px; height: 42px; flex-basis: 42px; }
    .sf-help-icon .sf-icon { width: 24px; height: 24px; }
    .sf-help-banner h2 { font-size: 17px; }
    .sf-help-banner .sf-eyebrow { font-size: 7px; }
    .sf-help-banner > .sf-button { margin-left: 55px; }
    .sf-catalog-header { padding: 23px 20px; }
    .sf-catalog-header h1 { font-size: 24px; }
    .sf-catalog-header-icon { display: none; }
    .sf-catalog-header p { font-size: 11px; }
    .sf-results-heading h2 { font-size: 15px; }
    .sf-results-heading h2 > span { font-size: 10px; display: block; padding-left: 0; margin-top: 5px; }
}
@media (prefers-reduced-motion: reduce) {
    .sf-storefront *, .sf-storefront *::before, .sf-storefront *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
    .sf-reveal-pending { opacity: 1; transform: none; }
}

/* Configured artwork is shown as supplied by SQL, without a replacement or color filter. */
.sf-storefront { width: min(1120px, calc(100% - 48px)); }
.sf-hero--configured .sf-hero-slide { min-height: 0; aspect-ratio: 10 / 3; }
.sf-hero--configured .sf-hero-slide > img { object-fit: contain; }
.sf-image-placeholder { display: grid; place-items: center; width: 100%; min-height: 130px; padding: 24px; background: var(--surface); color: var(--muted); font-size: 12px; text-align: center; }
.sf-product-image-link > .sf-image-placeholder { aspect-ratio: 1; }
.sf-hero-slide > .sf-image-placeholder { height: 100%; }
.sf-quick-card--configured { display: block; padding: 0; min-height: 0; background: var(--surface); }
.sf-quick-card--configured::after { display: none; }
.sf-quick-image { display: block; width: 100%; height: auto; }
.sf-quick-card--configured .sf-quick-copy { padding: 13px 15px; }
.sf-category-card--configured { padding: 0; min-height: 0; border-color: var(--border); background: var(--surface); }
.sf-category-card--configured::after { display: none; }
.sf-category-card--configured .sf-category-photo { display: block; position: static; width: 100%; height: auto; aspect-ratio: 1640 / 500; object-fit: contain; opacity: 1; }
.sf-category-card--configured .sf-category-copy { max-width: none; padding: 17px 20px; }
.sf-category-card--configured .sf-category-copy h3 { margin: 0; font-size: 18px; }
.sf-category-card--configured .sf-category-copy p { max-width: none; color: var(--muted); margin-top: 4px; }
.sf-category-card--configured .sf-category-count { margin-top: 10px; color: var(--muted); }
.sf-button--primary { color: var(--on-primary) !important; }
@media(max-width:640px) { .sf-storefront { width: calc(100% - 32px); } }

/* Storefront polish update: keep the same layout, but make cards softer and more modern. */
.sf-storefront {
    --sf-soft-shadow: 0 18px 48px color-mix(in srgb, var(--background) 46%, transparent);
    --sf-card-shadow: 0 12px 34px color-mix(in srgb, var(--background) 28%, transparent);
    --sf-soft-border: color-mix(in srgb, var(--border) 76%, var(--main) 24%);
    max-width: 1160px;
    padding-bottom: 42px;
}

.sf-hero,
.sf-announcement,
.sf-quick-card,
.sf-category-card,
.sf-product-card,
.sf-help-banner,
.sf-activity-empty {
    border-color: color-mix(in srgb, var(--border) 84%, var(--main) 16%);
    box-shadow: var(--sf-card-shadow);
}

.sf-hero {
    border-radius: 22px;
    background: linear-gradient(145deg, color-mix(in srgb, var(--surface) 92%, var(--main) 8%), var(--surface));
}

.sf-hero--configured .sf-hero-slide {
    aspect-ratio: 2000 / 600;
}

.sf-hero--configured .sf-hero-slide > img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.sf-carousel-controls {
    border: 1px solid color-mix(in srgb, var(--border) 76%, transparent);
    box-shadow: 0 10px 24px color-mix(in srgb, var(--background) 28%, transparent);
    backdrop-filter: blur(12px);
}

.sf-announcement {
    border-radius: 13px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--surface) 94%, var(--main) 6%), var(--surface));
}

.sf-announcement-label {
    color: var(--font);
}

.sf-section-heading h2 {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    letter-spacing: -.01em;
}

.sf-section-heading h2::after {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 99px;
    background: var(--main);
    box-shadow: 0 0 0 6px color-mix(in srgb, var(--main) 12%, transparent);
}

.sf-section-heading p {
    max-width: 560px;
    line-height: 1.8;
}

.sf-quick-card--configured,
.sf-category-card--configured,
.sf-product-card {
    border-radius: 18px;
}

.sf-quick-card--configured {
    transition: transform .24s ease, border-color .24s ease, box-shadow .24s ease;
}

.sf-quick-card--configured:hover,
.sf-category-card--configured:hover,
.sf-product-card:hover {
    transform: translateY(-6px);
    border-color: color-mix(in srgb, var(--main) 72%, var(--border));
    box-shadow: var(--sf-soft-shadow);
}

.sf-quick-image,
.sf-category-photo,
.sf-product-image {
    background: color-mix(in srgb, var(--surface) 88%, var(--background) 12%);
}

.sf-category-card--configured {
    background: var(--surface);
}

.sf-category-card--configured .sf-category-photo {
    border-radius: inherit;
}

.sf-product-card {
    background: linear-gradient(180deg, color-mix(in srgb, var(--surface) 94%, var(--font) 6%), var(--surface));
}

.sf-product-image-link {
    background: color-mix(in srgb, var(--surface) 88%, var(--background) 12%);
}

.sf-product-info {
    border-top: 1px solid color-mix(in srgb, var(--border) 78%, transparent);
}

.sf-product-category {
    width: fit-content;
    padding: 4px 8px;
    border-radius: 999px;
    background: color-mix(in srgb, var(--main) 9%, transparent);
    color: var(--main) !important;
}

.sf-product-price-row > strong {
    letter-spacing: -.02em;
}

.sf-product-button {
    border-top-color: color-mix(in srgb, var(--border) 78%, transparent);
    transition: color .2s ease, transform .2s ease;
}

.sf-product-button:hover {
    transform: translateX(3px);
}

/* Recent orders now scroll continuously. */
.sf-purchase-marquee {
    position: relative;
    overflow: hidden;
    padding: 2px 0 4px;
    border-radius: 16px;
    mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
}

.sf-purchase-track {
    display: flex;
    width: max-content;
    min-width: 100%;
    gap: 14px;
    will-change: transform;
    animation: sf-purchase-marquee 34s linear infinite;
}

.sf-purchase-marquee:hover .sf-purchase-track {
    animation-play-state: paused;
}

.sf-purchase-card {
    min-width: 315px;
    max-width: 315px;
    flex: 0 0 315px;
    border-radius: 15px;
    background: linear-gradient(135deg, color-mix(in srgb, var(--surface) 94%, var(--main) 6%), var(--surface));
    box-shadow: none;
}

.sf-purchase-avatar {
    color: var(--on-primary);
    background: linear-gradient(135deg, var(--main), var(--sub));
    box-shadow: 0 10px 24px color-mix(in srgb, var(--main) 18%, transparent);
}

.sf-purchase-check {
    flex: 0 0 23px;
    width: 23px;
    height: 23px;
}

@keyframes sf-purchase-marquee {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

/* Mobile category cards should be stacked vertically instead of a 2x2 grid. */
@media (max-width: 760px) {
    .sf-storefront { width: calc(100% - 28px); }
    .sf-hero { border-radius: 18px; }
    .sf-hero-slide { min-height: 0; }
    .sf-category-grid {
        grid-template-columns: 1fr !important;
        gap: 14px;
    }
    .sf-category-card,
    .sf-category-card--configured {
        min-height: 0;
        padding: 0;
    }
    .sf-category-card--configured .sf-category-photo,
    .sf-category-card--configured > .sf-image-placeholder {
        width: 100%;
        aspect-ratio: 1640 / 500;
        object-fit: contain;
    }
    .sf-purchase-card {
        min-width: 285px;
        max-width: 285px;
        flex-basis: 285px;
    }
    .sf-purchase-track {
        animation-duration: 28s;
    }
}

@media (max-width: 440px) {
    .sf-storefront { width: calc(100% - 22px); }
    .sf-category-grid {
        grid-template-columns: 1fr !important;
        gap: 12px;
    }
    .sf-section-heading {
        align-items: flex-start;
    }
    .sf-section-heading .sf-text-link {
        padding-top: 4px;
    }
    .sf-purchase-card {
        min-width: 255px;
        max-width: 255px;
        flex-basis: 255px;
        padding: 13px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sf-purchase-track {
        animation: none !important;
        transform: none !important;
    }
    .sf-purchase-marquee {
        overflow-x: auto;
        mask-image: none;
        -webkit-mask-image: none;
    }
}


/* Stock-aware product display: available products are listed first by PHP; sold-out artwork is greyed out. */
.sf-product-card--sold-out .sf-product-image {
    filter: grayscale(1) saturate(0) opacity(.58);
}

.sf-product-card--sold-out .sf-product-image-link {
    background: color-mix(in srgb, var(--surface) 70%, var(--muted) 30%);
}

.sf-product-card--sold-out .sf-product-info h3,
.sf-product-card--sold-out .sf-product-price-row > strong {
    color: color-mix(in srgb, var(--font) 58%, var(--muted) 42%);
}

.sf-product-card--sold-out .sf-product-button .sf-icon {
    color: var(--muted);
}

.sf-stock-badge {
    z-index: 2;
}

.sf-stock-badge--empty {
    border-color: color-mix(in srgb, var(--muted) 38%, transparent);
    background: color-mix(in srgb, var(--background) 72%, transparent);
    color: color-mix(in srgb, var(--font) 72%, var(--muted));
}

.sf-stock-badge--empty > span {
    background: var(--muted);
}

/* Direct home background layer. This is rendered by home.php so it does not rely
   on body classes or the global theme stylesheet. */
.sf-home-background {
    position: fixed !important;
    inset: 0 !important;
    z-index: 0 !important;
    pointer-events: none !important;
    background-size: cover !important;
    background-position: center top !important;
    background-repeat: no-repeat !important;
    background-attachment: fixed !important;
}
body.storefront-page .site-main,
body.storefront-page .sf-storefront {
    position: relative !important;
}
body.storefront-page .sf-storefront {
    z-index: 1 !important;
    background: transparent !important;
}
body.storefront-page.has-site-background .sf-home-background,
body.storefront-page[data-page="home"] .sf-home-background {
    display: block !important;
}
@media (max-width: 640px) {
    .sf-home-background { background-attachment: scroll !important; }
}

/* Product cards refreshed to match the compact shop-card reference. */
.sf-product-grid {
    gap: 16px;
}

.sf-product-card {
    position: relative;
    border-radius: 10px;
    border: 1px solid color-mix(in srgb, var(--border) 72%, transparent);
    background: color-mix(in srgb, var(--surface) 96%, var(--font) 4%);
    box-shadow: 0 8px 22px color-mix(in srgb, var(--background) 18%, transparent);
    overflow: hidden;
    padding: 7px;
    isolation: isolate;
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}

.sf-product-card:hover {
    transform: translateY(-3px);
    border-color: color-mix(in srgb, var(--main) 45%, var(--border));
    box-shadow: 0 14px 30px color-mix(in srgb, var(--background) 24%, transparent);
}

.sf-product-card::after {
    content: "";
    position: absolute;
    inset: -45% auto -45% -70%;
    width: 42%;
    z-index: 5;
    pointer-events: none;
    opacity: 0;
    transform: skewX(-22deg) translateX(0);
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--font) 34%, transparent), transparent);
    filter: blur(.5px);
}

.sf-product-card:hover::after {
    animation: sf-product-shine .72s ease-out 1;
}

@keyframes sf-product-shine {
    0% { opacity: 0; transform: skewX(-22deg) translateX(0); }
    18% { opacity: .75; }
    100% { opacity: 0; transform: skewX(-22deg) translateX(420%); }
}

.sf-product-image-link {
    display: block;
    position: relative;
    aspect-ratio: 1 / 1;
    border-radius: 7px;
    overflow: hidden;
    background: color-mix(in srgb, var(--surface) 90%, var(--background) 10%);
}

.sf-product-image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    border-radius: inherit;
    background: color-mix(in srgb, var(--surface) 86%, var(--background) 14%);
}

.sf-product-card:hover .sf-product-image {
    transform: none;
}

.sf-product-ribbon {
    display: none !important;
}

.sf-stock-badge {
    display: none;
}

.sf-product-info {
    padding: 8px 0 0;
    border-top: 0;
    text-align: center;
}

.sf-product-category {
    display: none;
}

.sf-product-info h3 {
    min-height: 0;
    margin: 0 0 4px;
    color: var(--muted);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.45;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.sf-product-info h3 a {
    color: inherit;
}

.sf-product-price-row {
    justify-content: center;
    margin: 0 0 7px;
}

.sf-product-price-row > strong {
    color: var(--font);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 0;
}

.sf-product-button {
    position: relative;
    min-height: 34px;
    width: 100%;
    margin: 0;
    padding: 8px 12px;
    justify-content: center;
    gap: 7px;
    border: 1px solid color-mix(in srgb, var(--font) 11%, transparent);
    border-radius: 10px;
    overflow: hidden;
    background:
        radial-gradient(circle at 20% 0%, color-mix(in srgb, var(--font) 20%, transparent), transparent 34%),
        linear-gradient(135deg, color-mix(in srgb, var(--main) 76%, #ff7aa6 24%) 0%, color-mix(in srgb, var(--sub) 58%, var(--main) 42%) 100%);
    color: var(--on-primary) !important;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: .01em;
    text-shadow: 0 1px 0 color-mix(in srgb, #000 18%, transparent);
    transition: transform .16s ease, filter .16s ease, box-shadow .16s ease;
    box-shadow:
        0 9px 18px color-mix(in srgb, var(--main) 18%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--font) 18%, transparent);
}

.sf-product-button::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--font) 16%, transparent), transparent);
    transform: translateX(-120%);
    transition: transform .36s ease;
}

.sf-product-button:hover {
    transform: translateY(-1px);
    filter: brightness(1.04);
    color: var(--on-primary) !important;
    box-shadow:
        0 12px 24px color-mix(in srgb, var(--main) 24%, transparent),
        inset 0 1px 0 color-mix(in srgb, var(--font) 22%, transparent);
}

.sf-product-button:hover::before {
    transform: translateX(120%);
}

.sf-product-button .sf-icon {
    display: none;
}

.sf-product-button-icon {
    display: inline-grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border-radius: 999px;
    font-size: 11px;
    line-height: 1;
    background: color-mix(in srgb, var(--font) 18%, transparent);
    box-shadow: inset 0 1px 0 color-mix(in srgb, var(--font) 18%, transparent);
}

.sf-product-stock-note {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    width: 100%;
    margin-top: 5px;
    color: var(--muted);
    font-size: 10px;
    line-height: 1.2;
}

.sf-product-stock-note .sf-icon {
    width: 11px;
    height: 11px;
    stroke-width: 1.7;
}

.sf-product-card--sold-out .sf-product-image {
    filter: grayscale(1) saturate(0) opacity(.72);
}

.sf-product-card--sold-out .sf-product-button {
    background: linear-gradient(135deg, color-mix(in srgb, var(--muted) 44%, var(--surface) 56%), color-mix(in srgb, var(--muted) 28%, var(--surface) 72%));
    color: color-mix(in srgb, var(--font) 76%, var(--muted) 24%) !important;
    box-shadow: none;
}

.sf-product-card--sold-out .sf-product-button-icon {
    background: color-mix(in srgb, var(--font) 8%, transparent);
}

.sf-product-card--sold-out .sf-product-price-row > strong,
.sf-product-card--sold-out .sf-product-info h3 {
    color: color-mix(in srgb, var(--font) 62%, var(--muted) 38%);
}

@media (prefers-reduced-motion: reduce) {
    .sf-product-card:hover::after,
    .sf-product-button::before {
        animation: none !important;
        transition: none !important;
    }
}

@media (max-width: 760px) {
    .sf-product-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 12px;
    }
    .sf-product-card {
        padding: 6px;
        border-radius: 9px;
    }
    .sf-product-info h3 {
        font-size: 11px;
    }
    .sf-product-button {
        min-height: 32px;
        font-size: 11px;
        border-radius: 9px;
    }
    .sf-product-button-icon {
        width: 17px;
        height: 17px;
        font-size: 10px;
    }
}

/* Prompt typography refresh for storefront pages. */
body.storefront-page,
.sf-storefront,
.sf-storefront button,
.sf-storefront input,
.sf-storefront select,
.site-header,
.site-footer,
.topup-shell {
    font-family: var(--site-font-family, 'Prompt','Noto Sans Thai',system-ui,sans-serif) !important;
    font-weight: 400;
}
.sf-storefront h1,
.sf-storefront h2,
.sf-storefront h3,
.sf-section-heading h2,
.topup-shell h1,
.topup-shell h2,
.topup-shell h3 {
    font-family: var(--site-font-family, 'Prompt','Noto Sans Thai',system-ui,sans-serif) !important;
    font-weight: 600 !important;
    letter-spacing: -.02em;
}
.sf-product-info h3 {
    font-family: var(--site-font-family, 'Prompt','Noto Sans Thai',system-ui,sans-serif) !important;
    font-weight: 400 !important;
}
.sf-product-button {
    font-family: var(--site-font-family, 'Prompt','Noto Sans Thai',system-ui,sans-serif) !important;
    font-weight: 500 !important;
}
.sf-product-button-icon .sf-icon {
    display: block !important;
    width: 12px !important;
    height: 12px !important;
    color: currentColor !important;
    stroke-width: 2 !important;
}

/* Global font from theme editor */
body, button, input, select, textarea { font-family: var(--site-font-family, 'Prompt','Noto Sans Thai',system-ui,sans-serif) !important; }

/* Storefront polish: section icons, latest orders with product thumbnails, and modern user pages. */
.sf-heading-icon,
.sf-page-hero-icon,
.sf-stat-card > span {
    display: inline-grid;
    place-items: center;
    flex: 0 0 auto;
    width: 36px;
    height: 36px;
    border-radius: 13px;
    color: var(--on-primary);
    background:
        radial-gradient(circle at 30% 15%, color-mix(in srgb, var(--font) 30%, transparent), transparent 34%),
        linear-gradient(135deg, var(--main), var(--sub));
    box-shadow: 0 12px 28px color-mix(in srgb, var(--main) 22%, transparent);
}
.sf-heading-icon .sf-icon,
.sf-page-hero-icon .sf-icon,
.sf-stat-card > span .sf-icon { width: 19px; height: 19px; }
.sf-section-heading h2::after { display: none; }
.sf-section-heading h2 { gap: 11px; }
.sf-section-heading .sf-text-link {
    padding: 9px 13px;
    border: 1px solid color-mix(in srgb, var(--border) 78%, transparent);
    border-radius: 999px;
    background: color-mix(in srgb, var(--surface) 78%, transparent);
}
.sf-section-heading .sf-text-link:hover { border-color: color-mix(in srgb, var(--main) 52%, var(--border)); }

.sf-purchase-card {
    min-width: 350px;
    max-width: 350px;
    flex-basis: 350px;
    padding: 12px;
    gap: 12px;
    align-items: center;
}
.sf-purchase-product {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    flex: 0 0 58px;
    overflow: hidden;
    border-radius: 14px;
    border: 1px solid color-mix(in srgb, var(--font) 10%, transparent);
    background: color-mix(in srgb, var(--surface) 78%, var(--background) 22%);
}
.sf-purchase-product img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.sf-purchase-product .sf-icon { width: 24px; height: 24px; color: var(--main); }
.sf-purchase-user {
    display: inline-grid;
    place-items: center;
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    border-radius: 999px;
    overflow: hidden;
    border: 2px solid color-mix(in srgb, var(--surface) 84%, transparent);
    box-shadow: 0 8px 20px color-mix(in srgb, var(--background) 30%, transparent);
}
.sf-purchase-user img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-purchase-card strong { font-size: 12px; font-weight: 600; }
.sf-purchase-card p { max-width: 190px; }

.sf-page-shell {
    width: min(1120px, calc(100% - 48px));
    margin: 0 auto;
    padding-block: 30px 44px;
}
.sf-page-hero {
    display: flex;
    align-items: center;
    gap: 18px;
    margin-bottom: 18px;
    padding: 24px;
    border: 1px solid color-mix(in srgb, var(--border) 78%, transparent);
    border-radius: 22px;
    background:
        radial-gradient(circle at 92% 0%, color-mix(in srgb, var(--main) 14%, transparent), transparent 38%),
        linear-gradient(135deg, color-mix(in srgb, var(--surface) 95%, var(--main) 5%), var(--surface));
    box-shadow: 0 18px 55px color-mix(in srgb, var(--background) 22%, transparent);
}
.sf-page-hero h1 {
    margin: 4px 0 4px;
    font-size: clamp(24px, 3vw, 34px);
    line-height: 1.25;
    letter-spacing: -.04em;
}
.sf-page-hero p { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.8; }
.sf-page-hero .sf-button { margin-left: auto; flex: 0 0 auto; }
.sf-page-hero--compact .sf-page-hero-icon { width: 56px; height: 56px; border-radius: 18px; }
.sf-page-hero--compact .sf-page-hero-icon .sf-icon { width: 27px; height: 27px; }

.sf-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 16px;
}
.sf-stat-card {
    display: flex;
    align-items: center;
    gap: 13px;
    min-width: 0;
    padding: 15px;
    border: 1px solid color-mix(in srgb, var(--border) 80%, transparent);
    border-radius: 18px;
    background: color-mix(in srgb, var(--surface) 94%, var(--font) 6%);
}
.sf-stat-card > span { width: 42px; height: 42px; border-radius: 15px; }
.sf-stat-card small { display: block; color: var(--muted); font-size: 11px; margin-bottom: 3px; }
.sf-stat-card strong { display: block; color: var(--font); font-size: 18px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.sf-history-list {
    display: grid;
    gap: 12px;
}
.sf-history-card {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr) auto;
    align-items: center;
    gap: 14px;
    padding: 13px;
    border: 1px solid color-mix(in srgb, var(--border) 78%, transparent);
    border-radius: 18px;
    background:
        linear-gradient(135deg, color-mix(in srgb, var(--surface) 96%, var(--font) 4%), var(--surface));
    transition: transform .18s ease, border-color .18s ease, box-shadow .18s ease;
}
.sf-history-card:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--main) 42%, var(--border));
    box-shadow: 0 14px 34px color-mix(in srgb, var(--background) 18%, transparent);
}
.sf-history-image {
    display: grid;
    place-items: center;
    width: 74px;
    height: 74px;
    overflow: hidden;
    border-radius: 16px;
    background: color-mix(in srgb, var(--surface) 78%, var(--background) 22%);
    border: 1px solid color-mix(in srgb, var(--font) 8%, transparent);
}
.sf-history-image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sf-history-image .sf-icon { width: 30px; height: 30px; color: var(--main); }
.sf-history-copy { min-width: 0; }
.sf-history-copy small { display: block; color: var(--muted); font-size: 10px; margin-bottom: 4px; }
.sf-history-copy h2 { margin: 0 0 5px; font-size: 15px; font-weight: 600; color: var(--font); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-history-copy p { margin: 0; color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sf-history-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.sf-history-meta strong { color: var(--main); font-size: 15px; }
.sf-copy-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: 34px;
    padding: 8px 12px;
    border: 1px solid color-mix(in srgb, var(--main) 35%, var(--border));
    border-radius: 999px;
    background: color-mix(in srgb, var(--main) 10%, transparent);
    color: var(--font);
    cursor: pointer;
    font: inherit;
    font-size: 11px;
}
.sf-copy-button .sf-icon { width: 13px; height: 13px; color: var(--main); }
.sf-copy-button:hover { background: color-mix(in srgb, var(--main) 18%, transparent); }

@media (max-width: 760px) {
    .sf-page-shell { width: calc(100% - 28px); padding-block: 20px 34px; }
    .sf-page-hero { align-items: flex-start; flex-wrap: wrap; padding: 20px; border-radius: 18px; }
    .sf-page-hero .sf-button { width: 100%; margin-left: 0; }
    .sf-stat-grid { grid-template-columns: 1fr; }
    .sf-history-card { grid-template-columns: 62px minmax(0, 1fr); align-items: start; }
    .sf-history-image { width: 62px; height: 62px; border-radius: 14px; }
    .sf-history-meta { grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: space-between; }
    .sf-purchase-card { min-width: 300px; max-width: 300px; flex-basis: 300px; }
    .sf-purchase-product { width: 52px; height: 52px; flex-basis: 52px; }
}
@media (max-width: 440px) {
    .sf-page-shell { width: calc(100% - 20px); }
    .sf-section-heading { flex-direction: column; align-items: stretch; }
    .sf-section-heading .sf-text-link { width: fit-content; }
    .sf-history-card { gap: 11px; padding: 11px; }
    .sf-purchase-card { min-width: 275px; max-width: 275px; flex-basis: 275px; }
    .sf-purchase-card p { max-width: 145px; }
}
.sf-catalog-title-wrap { display: flex; align-items: center; gap: 15px; }
.sf-catalog-title-wrap p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
@media (max-width: 560px) { .sf-catalog-title-wrap { align-items: flex-start; } }

/* Smart carousel image sizing: every uploaded slide keeps its own ratio, but the frame stays usable on desktop and mobile. */
.sf-hero--configured {
    overflow: hidden;
}
.sf-hero--configured .sf-hero-slide {
    --sf-slide-ratio-number: 3.3333;
    position: relative;
    height: clamp(170px, calc(min(1160px, calc(100vw - 48px)) / var(--sf-slide-ratio-number)), 460px);
    min-height: 0 !important;
    max-height: min(520px, 62vh);
    aspect-ratio: auto !important;
    display: grid;
    place-items: center;
    overflow: hidden;
    background:
        radial-gradient(circle at 18% 0%, color-mix(in srgb, var(--main) 14%, transparent), transparent 34%),
        linear-gradient(135deg, color-mix(in srgb, var(--surface) 90%, var(--background) 10%), var(--surface));
}
.sf-hero--configured .sf-hero-slide::before {
    content: "";
    position: absolute;
    inset: -22px;
    z-index: 0;
    background-image: var(--sf-slide-bg);
    background-size: cover;
    background-position: center;
    filter: blur(22px) saturate(1.08);
    opacity: .32;
    transform: scale(1.05);
    transition: opacity .22s ease;
}
.sf-hero--configured .sf-hero-slide::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    background:
        linear-gradient(90deg, color-mix(in srgb, var(--background) 17%, transparent), transparent 18%, transparent 82%, color-mix(in srgb, var(--background) 17%, transparent)),
        linear-gradient(180deg, color-mix(in srgb, var(--background) 5%, transparent), color-mix(in srgb, var(--background) 11%, transparent));
    pointer-events: none;
}
.sf-hero--configured .sf-hero-slide > img {
    position: relative !important;
    inset: auto !important;
    z-index: 1;
    display: block;
    width: 100% !important;
    height: 100% !important;
    max-width: 100%;
    max-height: 100%;
    object-fit: contain !important;
    object-position: center;
    background: transparent;
}
.sf-hero--configured .sf-hero-slide.sf-slide-is-panorama {
    height: clamp(150px, calc(min(1160px, calc(100vw - 48px)) / var(--sf-slide-ratio-number)), 320px);
}
.sf-hero--configured .sf-hero-slide.sf-slide-is-square,
.sf-hero--configured .sf-hero-slide.sf-slide-is-tall {
    height: clamp(260px, 45vw, 500px);
}
.sf-hero--configured .sf-hero-slide.sf-slide-is-square > img,
.sf-hero--configured .sf-hero-slide.sf-slide-is-tall > img {
    width: auto !important;
    max-width: 100%;
}
.sf-hero--configured .sf-image-placeholder {
    position: relative;
    z-index: 2;
    min-height: 100%;
}
@media (max-width: 760px) {
    .sf-hero--configured .sf-hero-slide {
        height: clamp(136px, calc((100vw - 28px) / var(--sf-slide-ratio-number)), 360px);
        max-height: 58vh;
    }
    .sf-hero--configured .sf-hero-slide.sf-slide-is-panorama {
        height: clamp(118px, calc((100vw - 28px) / var(--sf-slide-ratio-number)), 210px);
    }
    .sf-hero--configured .sf-hero-slide.sf-slide-is-square,
    .sf-hero--configured .sf-hero-slide.sf-slide-is-tall {
        height: clamp(220px, 76vw, 390px);
    }
    .sf-carousel-controls {
        right: 10px;
        bottom: 9px;
    }
}
@media (max-width: 440px) {
    .sf-hero--configured .sf-hero-slide {
        height: clamp(118px, calc((100vw - 22px) / var(--sf-slide-ratio-number)), 300px);
    }
    .sf-hero--configured .sf-hero-slide.sf-slide-is-panorama {
        height: clamp(108px, calc((100vw - 22px) / var(--sf-slide-ratio-number)), 180px);
    }
    .sf-hero--configured .sf-hero-slide.sf-slide-is-square,
    .sf-hero--configured .sf-hero-slide.sf-slide-is-tall {
        height: clamp(205px, 82vw, 340px);
    }
}

/* Final override: make configured carousel/category artwork fill matching frames by real ratio. */
.sf-storefront .sf-hero--configured .sf-hero-slide { height: auto !important; min-height: 0 !important; max-height: none !important; aspect-ratio: var(--sf-slide-ratio-number, 3.28) / 1 !important; }
.sf-storefront .sf-hero--configured .sf-hero-slide > img { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; max-width: none !important; max-height: none !important; object-fit: cover !important; object-position: center; }
.sf-storefront .sf-hero--configured .sf-hero-slide.sf-slide-fit-contain { aspect-ratio: 16 / 9 !important; }
.sf-storefront .sf-hero--configured .sf-hero-slide.sf-slide-fit-contain > img { object-fit: contain !important; padding: clamp(8px, 1.4vw, 18px); }
.sf-storefront .sf-category-card--configured { aspect-ratio: var(--sf-category-ratio-number, 3.28) / 1; position: relative; min-height: 0 !important; }
.sf-storefront .sf-category-card--configured .sf-category-photo { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; max-width: none !important; max-height: none !important; object-fit: cover !important; object-position: center; }
.sf-storefront .sf-category-card--configured.sf-category-fit-contain .sf-category-photo { object-fit: contain !important; padding: clamp(6px, 1.2vw, 14px); }

/* Auto banner: hide the old arrows/dots pill and let JavaScript cycle slides. */
.sf-storefront .sf-hero--configured .sf-carousel-controls {
    display: none !important;
}
.sf-storefront .sf-hero--configured .sf-hero-slide {
    will-change: contents;
}

/* Smooth autoplay carousel transition: fade + soft slide, no controls. */
.sf-storefront .sf-hero--configured {
    --sf-active-slide-ratio: 3.28;
    position: relative !important;
    aspect-ratio: var(--sf-active-slide-ratio) / 1 !important;
    min-height: 0 !important;
    overflow: hidden !important;
}
.sf-storefront .sf-hero--configured .sf-carousel-controls,
.sf-storefront .sf-hero--configured .carousel-control-prev,
.sf-storefront .sf-hero--configured .carousel-control-next,
.sf-storefront .sf-hero--configured .carousel-indicators {
    display: none !important;
}
.sf-storefront .sf-hero--configured .sf-hero-slide {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateX(18px) scale(.985);
    transition:
        opacity .72s ease,
        transform .72s cubic-bezier(.2,.75,.2,1),
        visibility 0s linear .72s;
    will-change: opacity, transform;
}
.sf-storefront .sf-hero--configured .sf-hero-slide.is-active {
    z-index: 2;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(0) scale(1);
    transition-delay: 0s;
}
.sf-storefront .sf-hero--configured .sf-hero-slide.is-leaving {
    z-index: 1;
    opacity: 0;
    visibility: visible;
    transform: translateX(-14px) scale(.99);
    transition-delay: 0s;
}
.sf-storefront .sf-hero--configured[data-sf-effect="fade"] .sf-hero-slide,
.sf-storefront .sf-hero--configured[data-sf-effect="fade"] .sf-hero-slide.is-leaving {
    transform: scale(1.01);
}
.sf-storefront .sf-hero--configured[data-sf-effect="fade"] .sf-hero-slide.is-active {
    transform: scale(1);
}
@media (prefers-reduced-motion: reduce) {
    .sf-storefront .sf-hero--configured .sf-hero-slide,
    .sf-storefront .sf-hero--configured .sf-hero-slide.is-active,
    .sf-storefront .sf-hero--configured .sf-hero-slide.is-leaving {
        transition: none !important;
        transform: none !important;
    }
}



/* 20260926 - Category hover polish: soft lift, image zoom, and light sweep. */
.sf-storefront .sf-category-card,
.sf-storefront .sf-category-card--configured {
    overflow: hidden !important;
    transform: translateZ(0);
    transition: transform .26s ease, border-color .26s ease, box-shadow .26s ease, filter .26s ease !important;
}
.sf-storefront .sf-category-card--configured::before {
    content: '' !important;
    display: block !important;
    position: absolute;
    inset: 0;
    z-index: 2;
    pointer-events: none;
    background: linear-gradient(115deg, transparent 0 35%, color-mix(in srgb, #fff 20%, transparent) 48%, transparent 62% 100%);
    transform: translateX(-120%);
    opacity: 0;
    transition: transform .62s ease, opacity .26s ease;
}
.sf-storefront .sf-category-card--configured::after {
    content: '' !important;
    display: block !important;
    position: absolute;
    inset: auto 12px 12px 12px;
    height: 28%;
    z-index: 1;
    pointer-events: none;
    border-radius: inherit;
    background: linear-gradient(180deg, transparent, color-mix(in srgb, var(--background) 38%, transparent));
    opacity: .28;
    transition: opacity .26s ease;
}
.sf-storefront .sf-category-card--configured:hover,
.sf-storefront .sf-category-card--configured:focus-visible {
    transform: translateY(-7px) scale(1.012) !important;
    border-color: color-mix(in srgb, var(--main) 62%, var(--border)) !important;
    box-shadow: 0 18px 46px color-mix(in srgb, var(--main) 14%, transparent), 0 20px 55px color-mix(in srgb, #000 24%, transparent) !important;
    filter: brightness(1.04);
}
.sf-storefront .sf-category-card--configured:hover::before,
.sf-storefront .sf-category-card--configured:focus-visible::before {
    opacity: 1;
    transform: translateX(120%);
}
.sf-storefront .sf-category-card--configured:hover::after,
.sf-storefront .sf-category-card--configured:focus-visible::after { opacity: .44; }
.sf-storefront .sf-category-card--configured .sf-category-photo {
    transition: transform .42s cubic-bezier(.2,.8,.2,1), filter .34s ease !important;
    will-change: transform;
}
.sf-storefront .sf-category-card--configured:hover .sf-category-photo,
.sf-storefront .sf-category-card--configured:focus-visible .sf-category-photo {
    transform: scale(1.045) !important;
    filter: saturate(1.08) contrast(1.02);
}
@media (hover: none) {
    .sf-storefront .sf-category-card--configured:active { transform: scale(.985) !important; }
}

/* Lightweight copy feedback used by purchase history. */
.sf-copy-toast{position:fixed;right:20px;bottom:20px;z-index:12000;padding:11px 15px;border:1px solid var(--border);border-radius:12px;background:var(--surface-raised);color:var(--font);box-shadow:0 12px 34px color-mix(in srgb,var(--background) 45%,transparent);opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}.sf-copy-toast.is-visible{opacity:1;transform:translateY(0)}
