/*
 * TikiCore WooCommerce skin.
 * Native WooCommerce templates are preserved; styling is done around their
 * public classes so updates remain low-maintenance.
 */
.tc-main--shop { padding-block: clamp(2rem, 4vw, 4rem) 5rem; }

.woocommerce .woocommerce-breadcrumb {
    margin: 0 0 1.4rem;
    color: var(--tc-muted);
    font-size: .78rem;
}
.woocommerce .woocommerce-breadcrumb a { text-decoration: none; }
.woocommerce .woocommerce-breadcrumb a:hover { color: var(--tc-accent); }

.woocommerce .woocommerce-result-count { margin: .6rem 0 1.2rem; color: var(--tc-muted); font-size: .84rem; }
.woocommerce .woocommerce-ordering { margin: 0 0 1.3rem; }
.woocommerce .woocommerce-ordering select { min-width: 210px; font-size: .86rem; }

/* Product archives */
.woocommerce ul.products {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: clamp(1.5rem, 2.5vw, 2.5rem) clamp(1rem, 2vw, 1.7rem);
    margin-top: 1.5rem;
}
.woocommerce ul.products::before,
.woocommerce ul.products::after { display: none; }
.woocommerce ul.products li.product {
    display: flex;
    width: auto;
    margin: 0;
    float: none;
    flex-direction: column;
}
.woocommerce ul.products li.product a { text-decoration: none; }
.woocommerce ul.products li.product a img {
    width: 100%;
    aspect-ratio: 4 / 3;
    margin: 0 0 .9rem;
    object-fit: cover;
    border-radius: var(--tc-radius);
    background: var(--tc-soft);
    transition: opacity .18s ease;
}
.woocommerce ul.products li.product a:hover img { opacity: .93; }
.woocommerce ul.products li.product .woocommerce-loop-product__title {
    min-height: 2.9em;
    margin: 0 0 .45rem;
    padding: 0;
    color: var(--tc-brand);
    font-size: .92rem;
    font-weight: 650;
    line-height: 1.35;
}
.woocommerce ul.products li.product .price {
    margin: 0 0 .65rem;
    color: #8f6939;
    font-size: .9rem;
    font-weight: 700;
}
.woocommerce ul.products li.product .button {
    align-self: flex-start;
    margin-top: auto;
    padding: .65rem .85rem;
    background: var(--tc-brand);
    color: #fff;
    font-size: .78rem;
    text-decoration: none;
}
.woocommerce ul.products li.product .button:hover { background: var(--tc-accent); color: var(--tc-brand); }
.woocommerce ul.products li.product .button.disabled,
.woocommerce ul.products li.product .button:disabled { opacity: .38; }

/* Common swatch plugins: keep their own behaviour, harmonize presentation. */
.woocommerce .variable-items-wrapper { gap: .3rem; margin: .25rem 0 .7rem; }
.woocommerce .variable-items-wrapper .variable-item { box-shadow: none !important; border: 1px solid #d5d0ca !important; }
.woocommerce .variable-items-wrapper .variable-item.selected { border-color: var(--tc-brand) !important; box-shadow: 0 0 0 1px var(--tc-brand) !important; }

/* Single product */
.single-product .tc-main--shop { padding-top: 2.5rem; }
.woocommerce div.product { display: flow-root; }
.woocommerce div.product div.images,
.woocommerce div.product div.summary { margin-bottom: 2.4rem; }
.woocommerce div.product .woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce div.product div.images img { border-radius: var(--tc-radius); background: var(--tc-soft); }
.woocommerce div.product .product_title {
    margin: 0 0 .8rem;
    font-size: clamp(1.6rem, 2.6vw, 2.6rem);
    letter-spacing: -.025em;
}
.woocommerce div.product p.price,
.woocommerce div.product span.price { color: #8f6939; font-size: 1.05rem; font-weight: 700; }
.woocommerce div.product form.cart { margin-top: 1.3rem; }
.woocommerce div.product form.cart .variations { margin-bottom: 1rem; }
.woocommerce div.product form.cart .variations th { padding-right: 1rem; color: var(--tc-brand); font-size: .8rem; text-align: left; }
.woocommerce div.product form.cart .variations select { min-width: 0; }
.woocommerce div.product form.cart div.quantity { margin-right: .6rem; }
.woocommerce div.product form.cart .button { min-height: 44px; background: var(--tc-brand); }
.woocommerce div.product form.cart .button:hover { background: var(--tc-accent); color: var(--tc-brand); }
.woocommerce div.product .product_meta { color: var(--tc-muted); font-size: .78rem; }
.woocommerce div.product .product_meta a { text-decoration: none; }

.woocommerce div.product .woocommerce-tabs { clear: both; padding-top: 1.5rem; }
.woocommerce div.product .woocommerce-tabs ul.tabs { margin-bottom: 1.5rem; padding: 0; border-bottom: 1px solid var(--tc-border); }
.woocommerce div.product .woocommerce-tabs ul.tabs::before { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li {
    margin: 0 .3rem 0 0;
    padding: 0;
    border: 0;
    background: transparent;
}
.woocommerce div.product .woocommerce-tabs ul.tabs li::before,
.woocommerce div.product .woocommerce-tabs ul.tabs li::after { display: none; }
.woocommerce div.product .woocommerce-tabs ul.tabs li a { padding: .75rem .9rem; font-size: .85rem; font-weight: 650; }
.woocommerce div.product .woocommerce-tabs ul.tabs li.active a { border-bottom: 2px solid var(--tc-accent); }
.woocommerce div.product .woocommerce-tabs .panel { max-width: 900px; }
.woocommerce div.product .woocommerce-tabs .panel h2:first-child { font-size: 1.35rem; }

.woocommerce .related.products,
.woocommerce .up-sells { clear: both; padding-top: 2rem; }
.woocommerce .related.products > h2,
.woocommerce .up-sells > h2 { margin-bottom: 1.5rem; font-size: clamp(1.35rem, 2vw, 1.8rem); }

/* Cart / checkout / account */
.woocommerce table.shop_table { border-collapse: collapse; border-color: var(--tc-border); border-radius: 0; }
.woocommerce table.shop_table th,
.woocommerce table.shop_table td { padding: .9rem; border-color: var(--tc-border); }
.woocommerce-message,
.woocommerce-info,
.woocommerce-error { border-top-color: var(--tc-accent); background: var(--tc-soft); }
.woocommerce-message::before,
.woocommerce-info::before { color: #8f6939; }
.woocommerce-cart .cart-collaterals .cart_totals,
.woocommerce-checkout #order_review { padding: 1.25rem; background: var(--tc-soft); }
.woocommerce a.button,
.woocommerce button.button,
.woocommerce input.button,
.woocommerce #respond input#submit {
    border: 1px solid var(--tc-brand);
    border-radius: var(--tc-radius);
    background: var(--tc-brand);
    color: #fff;
    font-weight: 650;
}
.woocommerce a.button:hover,
.woocommerce button.button:hover,
.woocommerce input.button:hover,
.woocommerce #respond input#submit:hover { background: var(--tc-accent); border-color: var(--tc-accent); color: var(--tc-brand); }

@media (min-width: 769px) {
    .woocommerce div.product div.images { width: 52%; }
    .woocommerce div.product div.summary { width: 43%; }
}
@media (max-width: 1050px) {
    .woocommerce ul.products { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
    .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem .9rem; }
    .woocommerce ul.products li.product .woocommerce-loop-product__title { min-height: 0; font-size: .88rem; }
    .woocommerce .woocommerce-ordering { float: none; }
    .woocommerce .woocommerce-ordering select { width: 100%; }
}
@media (max-width: 420px) {
    .woocommerce ul.products { grid-template-columns: 1fr; }
}


/* 0.2.1 — archive and single-product refinements validated on Loft staging. */
.woocommerce .woocommerce-products-header {
    max-width: 930px;
    margin-bottom: 2.1rem;
}
.woocommerce .woocommerce-products-header__title.page-title {
    margin: 0 0 .7rem;
    font-size: clamp(2rem, 3vw, 2.8rem);
    letter-spacing: -.035em;
}
.woocommerce .woocommerce-products-header .term-description {
    max-width: 900px;
    color: #45413d;
}
.woocommerce .woocommerce-products-header .term-description > :first-child { margin-top: 0; }
.woocommerce .woocommerce-products-header .term-description > :last-child { margin-bottom: 0; }

/* Keep result count and sorting visually on the same toolbar line on wide screens. */
.woocommerce .woocommerce-result-count {
    margin-top: .75rem;
    margin-bottom: 1.3rem;
}
.woocommerce .woocommerce-ordering select {
    border-color: var(--tc-border);
    background-color: #fff;
}

/* Product cards: align controls without forcing large fixed-height cards. */
.woocommerce ul.products li.product .price { min-height: 1.5em; }
.woocommerce ul.products li.product .variable-items-wrapper { margin-top: .1rem; }
.woocommerce ul.products li.product .button { margin-top: .65rem; }

/* Slightly calmer product heading for long SEO titles. */
.woocommerce div.product .product_title {
    max-width: 18ch;
    font-size: clamp(1.75rem, 2.25vw, 2.25rem);
    line-height: 1.08;
}
.woocommerce div.product .summary .price { margin-bottom: 1rem; }

/* When the legacy Loft snippet moves the short description out of .summary,
   force it below BOTH gallery and summary instead of letting it wrap alongside
   the floated gallery. This can be removed once the product template is fully
   migrated away from Code Snippets. */
.single-product .woocommerce div.product > .woocommerce-product-details__short-description {
    clear: both;
    max-width: 920px;
    margin: 0 auto 2.2rem;
    padding-top: 1.5rem;
}
.single-product .woocommerce div.product > .woocommerce-product-details__short-description > :first-child { margin-top: 0; }
.single-product .woocommerce div.product > .woocommerce-product-details__short-description h2,
.single-product .woocommerce div.product > .woocommerce-product-details__short-description h3 {
    max-width: 26ch;
}

/* Gallery thumbnails stay compact and consistent with the main image. */
.woocommerce div.product div.images .flex-control-thumbs {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .5rem;
    margin-top: .55rem;
}
.woocommerce div.product div.images .flex-control-thumbs li {
    width: auto;
    float: none;
}
.woocommerce div.product div.images .flex-control-thumbs img {
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border: 1px solid transparent;
}
.woocommerce div.product div.images .flex-control-thumbs img.flex-active {
    border-color: var(--tc-accent);
}

@media (max-width: 768px) {
    .woocommerce .woocommerce-products-header { margin-bottom: 1.4rem; }
    .woocommerce div.product .product_title { max-width: none; }
    .single-product .woocommerce div.product > .woocommerce-product-details__short-description {
        margin-inline: 0;
        padding-top: .5rem;
    }
}

/* 0.2.3 — optional visual catalogue mode. Scoped to a per-site body class so
   Loft can use it without changing the behaviour of other TikiCore sites. */
.tc-product-archive--catalogue ul.products li.product .price,
.tc-product-archive--catalogue ul.products li.product .button,
.tc-product-archive--catalogue ul.products li.product .added_to_cart,
.tc-product-archive--catalogue ul.products li.product .variable-items-wrapper,
.tc-product-archive--catalogue ul.products li.product .variations_form,
.tc-product-archive--catalogue ul.products li.product .wvs_archive_variation_wrapper,
.tc-product-archive--catalogue ul.products li.product .woo-variation-swatches,
.tc-product-archive--catalogue ul.products li.product [class*="variation-swatches"],
.tc-product-archive--catalogue ul.products li.product [class*="archive-variation"] {
    display: none !important;
}

.woocommerce ul.products li.product .tc-product-image {
    position: relative;
    display: block;
    overflow: hidden;
    width: 100%;
    aspect-ratio: 4 / 3;
    margin: 0 0 .9rem;
    border-radius: var(--tc-radius);
    background: var(--tc-soft);
}

.woocommerce ul.products li.product .tc-product-image img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    object-fit: cover;
    border-radius: 0;
    background: transparent;
    transition: opacity .28s ease, transform .45s ease;
}

.woocommerce ul.products li.product .tc-product-image__primary { opacity: 1; }
.woocommerce ul.products li.product .tc-product-image__hover { opacity: 0; }

.tc-product-archive--hover-image ul.products li.product a:hover .tc-product-image__primary,
.tc-product-archive--hover-image ul.products li.product a:focus-visible .tc-product-image__primary { opacity: 0; }

.tc-product-archive--hover-image ul.products li.product a:hover .tc-product-image__hover,
.tc-product-archive--hover-image ul.products li.product a:focus-visible .tc-product-image__hover {
    opacity: 1;
    transform: scale(1.015);
}

/* Products without a gallery image keep the featured image visible. */
.woocommerce ul.products li.product .tc-product-image:not(:has(.tc-product-image__hover)) .tc-product-image__primary {
    opacity: 1 !important;
}

.tc-product-archive--catalogue ul.products li.product .woocommerce-loop-product__title {
    min-height: 0;
    margin-bottom: 0;
}

@media (prefers-reduced-motion: reduce) {
    .woocommerce ul.products li.product .tc-product-image img { transition: none; }
}

/* 0.2.10 — Loft single-product clarity: one title, compact variations, and
   editorial related products (image + title only). */
.tc-site-profile--loft.single-product .woocommerce div.product form.cart {
    margin-top: 1rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations {
    width: 100%;
    margin: .8rem 0 .45rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tbody {
    display: block;
    width: 100%;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
    display: grid;
    grid-template-columns: minmax(88px, 112px) minmax(0, 1fr);
    gap: .5rem .9rem;
    width: 100%;
    margin: 0 0 .55rem;
    align-items: start;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    display: block;
    width: auto;
    padding: 0;
    text-align: left;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    padding-top: .45rem;
    color: var(--tc-brand);
    font-size: .96rem;
    font-weight: 750;
    line-height: 1.2;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label label {
    font: inherit;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    display: flex;
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: .28rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    gap: .5rem;
    margin: 0;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    min-width: 38px;
    min-height: 38px;
    border: 1px solid #cfc8bf !important;
    border-radius: 7px !important;
    box-shadow: none !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.selected {
    border-color: var(--tc-accent) !important;
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--tc-accent) 28%, transparent) !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .reset_variations {
    display: inline-block;
    margin: .08rem 0 0;
    color: var(--tc-muted);
    font-size: .72rem;
    line-height: 1.2;
    text-decoration: underline;
    text-underline-offset: .18em;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .15rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
    align-items: center;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart div.quantity {
    margin: 0;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
        grid-template-columns: 1fr;
        gap: .35rem;
    }
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
        padding-top: 0;
    }
}

/* The legacy snippet can move the short description below the top product
   columns. If a duplicate heading still reaches the markup, hide only the
   first heading in that moved description as a visual safety net. */
.tc-site-profile--loft.single-product .woocommerce div.product > .woocommerce-product-details__short-description > h1:first-child,
.tc-site-profile--loft.single-product .woocommerce div.product > .woocommerce-product-details__short-description > h2:first-child,
.tc-site-profile--loft.single-product .woocommerce div.product > .woocommerce-product-details__short-description > h3:first-child {
    display: none;
}

/* Related products are discovery cards, not miniature purchase forms. The
   product page remains the place to choose colours/options and add to cart. */
.tc-site-profile--loft.single-product .related.products ul.products li.product > :not(.woocommerce-LoopProduct-link):not(.woocommerce-loop-product__link),
.tc-site-profile--loft.single-product .related.products ul.products li.product .price,
.tc-site-profile--loft.single-product .related.products ul.products li.product .button,
.tc-site-profile--loft.single-product .related.products ul.products li.product .added_to_cart,
.tc-site-profile--loft.single-product .related.products ul.products li.product form,
.tc-site-profile--loft.single-product .related.products ul.products li.product .variable-items-wrapper,
.tc-site-profile--loft.single-product .related.products ul.products li.product .variations_form,
.tc-site-profile--loft.single-product .related.products ul.products li.product .wvs_archive_variation_wrapper,
.tc-site-profile--loft.single-product .related.products ul.products li.product .woo-variation-swatches,
.tc-site-profile--loft.single-product .related.products ul.products li.product [class*="variation-swatches"],
.tc-site-profile--loft.single-product .related.products ul.products li.product [class*="archive-variation"],
.tc-site-profile--loft.single-product .related.products ul.products li.product .quantity {
    display: none !important;
}

.tc-site-profile--loft.single-product .related.products ul.products li.product .woocommerce-LoopProduct-link > :not(.tc-product-image):not(.woocommerce-loop-product__title),
.tc-site-profile--loft.single-product .related.products ul.products li.product .woocommerce-loop-product__link > :not(.tc-product-image):not(.woocommerce-loop-product__title) {
    display: none !important;
}

.tc-site-profile--loft.single-product .related.products ul.products li.product .woocommerce-loop-product__title {
    min-height: 0;
    margin: 0;
    padding: 0;
    font-size: .92rem;
    line-height: 1.35;
}

.tc-site-profile--loft.single-product .related.products ul.products li.product .tc-product-image {
    margin-bottom: .8rem;
}

/* 0.2.12 — Loft product page: breadcrumb, compact multi-attribute variations,
   purchase-column intro and full-width editorial continuation. */
.tc-site-profile--loft.single-product .tc-main--shop {
    padding-top: 1.35rem;
}

.tc-site-profile--loft.single-product .tc-product-breadcrumb {
    margin: 0 0 1.35rem;
}

.tc-site-profile--loft.single-product .tc-product-breadcrumb .woocommerce-breadcrumb {
    display: flex;
    flex-wrap: wrap;
    gap: .32rem;
    align-items: center;
    margin: 0;
    color: #77716a;
    font-size: .76rem;
    line-height: 1.35;
}

.tc-site-profile--loft.single-product .tc-product-breadcrumb .woocommerce-breadcrumb a {
    color: #5c5751;
    text-decoration: none;
}

.tc-site-profile--loft.single-product .tc-product-breadcrumb .woocommerce-breadcrumb a:hover {
    color: #c9a06c;
}

/* Product meta is removed server-side in 0.2.12. Keep this as a safe fallback
   for third-party snippets that may inject another product_meta block. */
.tc-site-profile--loft.single-product .summary .product_meta {
    display: none !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product .summary {
    padding-top: .15rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product .summary .price {
    margin: 0 0 1.1rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart {
    margin-top: .4rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations {
    width: auto;
    max-width: 100%;
    margin: .35rem 0 .65rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
    grid-template-columns: 104px minmax(0, max-content);
    justify-content: start;
    gap: .35rem .75rem;
    margin: 0;
    padding: .7rem 0;
    border-bottom: 1px solid #ece7e1;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:first-child {
    border-top: 1px solid #ece7e1;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    display: flex;
    min-height: 42px;
    padding: 0;
    align-items: center;
    color: #19191b;
    font-size: .86rem;
    font-weight: 750;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    width: fit-content;
    max-width: 100%;
    gap: .45rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    display: flex;
    flex-wrap: wrap;
    gap: .55rem;
    align-items: center;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    min-width: 42px;
    min-height: 42px;
    margin: 0 !important;
    border: 1px solid #d7d1ca !important;
    border-radius: 8px !important;
    background: #fff !important;
    box-shadow: none !important;
    transition: border-color .15s ease, opacity .15s ease, outline-color .15s ease;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.button-variable-item {
    min-width: 56px;
    padding-inline: .65rem !important;
}

/* The outline is deliberate: some swatch plugins use a highly-specific border
   colour, while outline remains reliable and keeps the Loft gold consistent. */
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.selected,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item[aria-checked="true"] {
    border-color: #c9a06c !important;
    outline: 2px solid #c9a06c !important;
    outline-offset: 2px;
    box-shadow: none !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.disabled,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item[aria-disabled="true"] {
    opacity: .32 !important;
    cursor: not-allowed !important;
    filter: grayscale(.65);
}

/* Native dropdown fallback: remains usable when a product attribute does not
   use visual swatches. Multiple attributes keep one independent control each. */
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations select {
    min-width: 180px;
    min-height: 42px;
    padding: .45rem 2rem .45rem .65rem;
    border: 1px solid #d7d1ca;
    border-radius: 6px;
    background-color: #fff;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .reset_variations {
    margin: .15rem 0 0;
    color: #77716a;
    font-size: .7rem;
    text-decoration: none;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .reset_variations:hover {
    color: #19191b;
    text-decoration: underline;
    text-underline-offset: .16em;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .35rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation.single_variation {
    margin-bottom: .55rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-price .price {
    margin: 0;
    font-size: 1rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
    gap: .65rem;
    margin-top: .2rem;
}

.tc-site-profile--loft.single-product .tc-product-intro {
    max-width: 48ch;
    margin-top: 1rem;
    color: #3d3935;
    font-size: .94rem;
    line-height: 1.62;
}

.tc-site-profile--loft.single-product .tc-product-intro > :first-child {
    margin-top: 0;
}

.tc-site-profile--loft.single-product .tc-product-intro > :last-child {
    margin-bottom: 0;
}

/* Hide any legacy snippet copy of the short description outside .summary.
   TikiCore 0.2.12 renders the same source safely as intro + continuation. */
.tc-site-profile--loft.single-product .woocommerce div.product > .woocommerce-product-details__short-description {
    display: none !important;
}

.tc-site-profile--loft.single-product .tc-product-editorial {
    clear: both;
    width: 100%;
    margin: 0 0 2rem;
    padding-top: .75rem;
    color: #252321;
    line-height: 1.7;
}

.tc-site-profile--loft.single-product .tc-product-editorial > :first-child {
    margin-top: 0;
}

.tc-site-profile--loft.single-product .tc-product-editorial h2,
.tc-site-profile--loft.single-product .tc-product-editorial h3 {
    margin-top: 1.7rem;
    margin-bottom: .65rem;
    color: #19191b;
    line-height: 1.15;
}

@media (max-width: 768px) {
    .tc-site-profile--loft.single-product .tc-product-breadcrumb {
        margin-bottom: 1rem;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
        grid-template-columns: 1fr;
        gap: .4rem;
        padding: .65rem 0;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
        min-height: 0;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations select {
        width: 100%;
        min-width: 0;
    }

    .tc-site-profile--loft.single-product .tc-product-intro {
        max-width: none;
    }
}


/* 0.2.13 — Loft product data convention: the WooCommerce short description is
   the detailed editorial copy, so it is rendered full-width below the complete
   gallery + purchase block. Variations remain native and multi-attribute safe. */
.tc-site-profile--loft.single-product .woocommerce div.product .summary .woocommerce-product-details__short-description,
.tc-site-profile--loft.single-product .woocommerce div.product > .woocommerce-product-details__short-description {
    display: none !important;
}

.tc-site-profile--loft.single-product .tc-product-editorial {
    clear: both;
    width: 100%;
    max-width: none;
    margin: 0 0 2.4rem;
    padding-top: 1.15rem;
    color: #252321;
    font-size: 1rem;
    line-height: 1.72;
}

.tc-site-profile--loft.single-product .tc-product-editorial > :first-child {
    margin-top: 0;
}

.tc-site-profile--loft.single-product .tc-product-editorial > :last-child {
    margin-bottom: 0;
}

.tc-site-profile--loft.single-product .tc-product-editorial h2,
.tc-site-profile--loft.single-product .tc-product-editorial h3 {
    margin: 1.8rem 0 .7rem;
    color: #19191b;
    line-height: 1.16;
}

.tc-site-profile--loft.single-product .tc-variation-heading {
    margin: 1.15rem 0 .3rem;
    padding-bottom: .72rem;
    border-bottom: 1px solid #ddd6ce;
}

.tc-site-profile--loft.single-product .tc-variation-heading strong {
    display: block;
    margin-bottom: .18rem;
    color: #19191b;
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.25;
}

.tc-site-profile--loft.single-product .tc-variation-heading span {
    display: block;
    color: #77716a;
    font-size: .76rem;
    line-height: 1.45;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations {
    width: 100%;
    margin: 0 0 .45rem;
    border-bottom: 1px solid #ddd6ce;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
    grid-template-columns: 108px minmax(0, 1fr);
    gap: .45rem 1rem;
    padding: .8rem 0;
    border-bottom: 1px solid #eee9e3;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:last-child {
    border-bottom: 0;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    min-height: 42px;
    padding: 0;
    align-content: center;
    color: #19191b;
    font-size: .9rem;
    font-weight: 750;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    gap: .38rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    gap: .6rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    min-width: 42px;
    min-height: 42px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.button-variable-item {
    min-width: 58px;
    padding-inline: .72rem !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.selected,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item[aria-checked="true"] {
    border-color: #c9a06c !important;
    outline: 2px solid #c9a06c !important;
    outline-offset: 2px;
    box-shadow: none !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.disabled,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item[aria-disabled="true"] {
    opacity: .3 !important;
    filter: grayscale(.7);
    cursor: not-allowed !important;
}

.tc-site-profile--loft.single-product .tc-selected-variation {
    display: block;
    min-height: 1em;
    margin-top: .05rem;
    color: #77716a;
    font-size: .72rem;
    line-height: 1.35;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .reset_variations {
    margin-top: .05rem;
    color: #8a847d;
    font-size: .68rem;
    text-decoration: none;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .reset_variations:hover {
    color: #19191b;
    text-decoration: underline;
    text-underline-offset: .16em;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
        grid-template-columns: 1fr;
        gap: .42rem;
        padding: .72rem 0;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
        min-height: 0;
    }
}

/* 0.2.14 — Loft variation chooser polish.
   Keep WooCommerce in charge of combinations; only improve hierarchy and
   compactness. Selected values sit beside each attribute label and the native
   reset action is presented once, below all attributes. */
.tc-site-profile--loft.single-product .tc-variation-heading {
    margin: 1.05rem 0 0;
    padding: .8rem .9rem .7rem;
    border: 1px solid #e6dfd7;
    border-bottom: 0;
    border-radius: 8px 8px 0 0;
    background: #faf8f5;
}

.tc-site-profile--loft.single-product .tc-variation-heading strong {
    margin-bottom: .12rem;
    font-size: .96rem;
}

.tc-site-profile--loft.single-product .tc-variation-heading span {
    font-size: .72rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations {
    width: 100%;
    margin: 0;
    padding: 0 .9rem;
    border: 1px solid #e6dfd7;
    border-top: 0;
    border-bottom: 0;
    background: #fff;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:first-child {
    grid-template-columns: 118px minmax(0, 1fr);
    gap: .35rem .8rem;
    padding: .72rem 0;
    border-top: 0;
    border-bottom: 1px solid #eee8e1;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:last-child {
    border-bottom: 0;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    min-height: 44px;
    padding: 0;
    align-items: center;
    font-size: .86rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label label {
    display: flex;
    flex-wrap: wrap;
    gap: .22rem .38rem;
    align-items: baseline;
}

.tc-site-profile--loft.single-product .tc-current-value {
    color: #9a754b;
    font-size: .72rem;
    font-weight: 600;
    white-space: nowrap;
}

.tc-site-profile--loft.single-product .tc-current-value::before {
    content: "—";
    margin-right: .28rem;
    color: #bbb1a6;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    gap: .25rem;
    justify-content: center;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    gap: .5rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    min-width: 44px;
    min-height: 44px;
    border-radius: 7px !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.button-variable-item {
    min-width: 62px;
    padding-inline: .78rem !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.selected,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item[aria-checked="true"] {
    border-color: #c9a06c !important;
    outline: 1px solid #c9a06c !important;
    outline-offset: 2px;
}

.tc-site-profile--loft.single-product .tc-selected-variation {
    display: none !important;
}

.tc-site-profile--loft.single-product .tc-variation-reset {
    display: flex;
    justify-content: flex-end;
    padding: .48rem .9rem .62rem;
    border: 1px solid #e6dfd7;
    border-top: 0;
    border-radius: 0 0 8px 8px;
    background: #fff;
}

.tc-site-profile--loft.single-product .tc-variation-reset .reset_variations {
    margin: 0;
    color: #8a847d;
    font-size: .67rem;
    line-height: 1.2;
    text-decoration: none;
}

.tc-site-profile--loft.single-product .tc-variation-reset .reset_variations:hover {
    color: #19191b;
    text-decoration: underline;
    text-underline-offset: .16em;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .55rem;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:first-child {
        grid-template-columns: 1fr;
        gap: .42rem;
        padding: .72rem 0;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
        min-height: 0;
    }

    .tc-site-profile--loft.single-product .tc-variation-reset {
        justify-content: flex-start;
    }
}

/* 0.2.15 — Loft cart: use the full theme container and turn the cart into a
   clear two-column checkout-preparation layout on desktop. WooCommerce's
   native form, totals, shipping methods and update logic remain untouched. */
.tc-site-profile--loft.woocommerce-cart .tc-prose > .woocommerce {
    width: 100%;
    max-width: none;
}

@media (min-width: 981px) {
    .tc-site-profile--loft.woocommerce-cart .tc-prose > .woocommerce {
        display: grid;
        grid-template-columns: minmax(0, 1.75fr) minmax(330px, .8fr);
        gap: clamp(2rem, 4vw, 4rem);
        align-items: start;
    }

    .tc-site-profile--loft.woocommerce-cart .woocommerce > .woocommerce-notices-wrapper,
    .tc-site-profile--loft.woocommerce-cart .woocommerce > .woocommerce-message,
    .tc-site-profile--loft.woocommerce-cart .woocommerce > .woocommerce-info,
    .tc-site-profile--loft.woocommerce-cart .woocommerce > .woocommerce-error {
        grid-column: 1 / -1;
    }

    .tc-site-profile--loft.woocommerce-cart .woocommerce-cart-form {
        grid-column: 1;
        min-width: 0;
        margin: 0;
    }

    .tc-site-profile--loft.woocommerce-cart .cart-collaterals {
        grid-column: 2;
        width: 100%;
        margin: 0;
        float: none;
    }
}

.tc-site-profile--loft.woocommerce-cart .woocommerce-cart-form table.shop_table {
    width: 100%;
    margin: 0;
    border: 1px solid var(--tc-border);
    background: #fff;
}

.tc-site-profile--loft.woocommerce-cart .woocommerce-cart-form table.shop_table th {
    padding: .95rem .8rem;
    background: #faf9f7;
    color: var(--tc-brand);
    font-size: .83rem;
    font-weight: 700;
}

.tc-site-profile--loft.woocommerce-cart .woocommerce-cart-form table.shop_table td {
    padding: 1rem .8rem;
    vertical-align: middle;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-remove {
    width: 34px;
    padding-inline: .45rem;
    text-align: center;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-remove a.remove {
    display: inline-grid;
    width: 28px;
    height: 28px;
    place-items: center;
    margin: 0 auto;
    border-radius: 999px;
    color: #9b2721 !important;
    font-size: 1.15rem;
    line-height: 1;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-remove a.remove:hover {
    background: #9b2721;
    color: #fff !important;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-thumbnail {
    width: 92px;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-thumbnail img {
    width: 72px !important;
    max-width: 72px;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border: 1px solid var(--tc-border);
    background: var(--tc-soft);
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-name a {
    color: var(--tc-brand);
    font-weight: 650;
    text-decoration: none;
}

.tc-site-profile--loft.woocommerce-cart table.cart .product-name a:hover {
    color: #8f6939;
}

.tc-site-profile--loft.woocommerce-cart table.cart .variation {
    margin: .25rem 0 0;
    color: var(--tc-muted);
    font-size: .8rem;
}

.tc-site-profile--loft.woocommerce-cart table.cart .variation dt,
.tc-site-profile--loft.woocommerce-cart table.cart .variation dd {
    margin: 0 .25rem 0 0;
    padding: 0;
}

.tc-site-profile--loft.woocommerce-cart table.cart .quantity .qty {
    width: 64px;
    min-height: 44px;
    text-align: center;
}

.tc-site-profile--loft.woocommerce-cart table.cart td.actions {
    padding: 1rem;
    background: #faf9f7;
}

.tc-site-profile--loft.woocommerce-cart table.cart td.actions .coupon {
    display: flex;
    gap: .55rem;
    align-items: center;
}

.tc-site-profile--loft.woocommerce-cart table.cart td.actions .coupon #coupon_code {
    width: 160px;
    min-width: 150px;
    min-height: 44px;
    margin: 0;
}

.tc-site-profile--loft.woocommerce-cart table.cart td.actions .button {
    min-height: 44px;
    padding: .7rem 1rem;
}

/* WooCommerce intentionally disables this button until the quantity changes.
   Keep that state obvious but readable instead of grey text on grey. */
.tc-site-profile--loft.woocommerce-cart button[name="update_cart"]:disabled,
.tc-site-profile--loft.woocommerce-cart button[name="update_cart"].disabled {
    border-color: #d6d1ca !important;
    background: #e8e4df !important;
    color: #5f5a54 !important;
    opacity: 1 !important;
    cursor: not-allowed;
}

.tc-site-profile--loft.woocommerce-cart button[name="update_cart"]:not(:disabled) {
    border-color: var(--tc-brand);
    background: var(--tc-brand);
    color: #fff;
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: clamp(1.25rem, 2.2vw, 1.7rem);
    float: none;
    border: 1px solid var(--tc-border);
    background: #faf9f7;
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals > h2 {
    margin: 0 0 1rem;
    font-size: clamp(1.45rem, 2vw, 1.8rem);
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals table.shop_table {
    margin: 0 0 1rem;
    border: 0;
    background: transparent;
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals table.shop_table th,
.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals table.shop_table td {
    padding: .9rem .7rem;
    border-top: 1px solid var(--tc-border);
    vertical-align: top;
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals table.shop_table tr:first-child th,
.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals table.shop_table tr:first-child td {
    border-top: 0;
}

.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals .order-total th,
.tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals .order-total td {
    color: var(--tc-brand);
    font-size: 1rem;
    font-weight: 750;
}

.tc-site-profile--loft.woocommerce-cart .wc-proceed-to-checkout {
    margin: 1rem 0 0;
    padding: 0;
}

.tc-site-profile--loft.woocommerce-cart .wc-proceed-to-checkout a.checkout-button {
    display: flex;
    width: 100%;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    margin: 0;
    border: 1px solid var(--tc-brand) !important;
    border-radius: var(--tc-radius);
    background: var(--tc-brand) !important;
    color: #fff !important;
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.2;
    text-align: center;
}

.tc-site-profile--loft.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover {
    border-color: var(--tc-accent) !important;
    background: var(--tc-accent) !important;
    color: var(--tc-brand) !important;
}

.tc-site-profile--loft.woocommerce-cart .woocommerce-shipping-methods {
    margin: 0;
    padding: 0;
    list-style: none;
}

.tc-site-profile--loft.woocommerce-cart .woocommerce-shipping-methods li + li {
    margin-top: .65rem;
}

@media (max-width: 980px) {
    .tc-site-profile--loft.woocommerce-cart .cart-collaterals {
        width: 100%;
        margin-top: 2rem;
        float: none;
    }

    .tc-site-profile--loft.woocommerce-cart .cart-collaterals .cart_totals {
        width: 100%;
    }
}

@media (max-width: 680px) {
    .tc-site-profile--loft.woocommerce-cart .tc-prose {
        padding-top: 2rem;
    }

    .tc-site-profile--loft.woocommerce-cart table.cart .product-thumbnail {
        width: auto;
    }

    .tc-site-profile--loft.woocommerce-cart table.cart .product-thumbnail img {
        width: 84px !important;
        max-width: 84px;
    }

    .tc-site-profile--loft.woocommerce-cart table.cart td.actions .coupon {
        display: grid;
        grid-template-columns: 1fr;
    }

    .tc-site-profile--loft.woocommerce-cart table.cart td.actions .coupon #coupon_code,
    .tc-site-profile--loft.woocommerce-cart table.cart td.actions .coupon .button,
    .tc-site-profile--loft.woocommerce-cart table.cart td.actions > button[name="update_cart"] {
        width: 100%;
    }
}

/* 0.2.16 — Loft product variations: compact stacked chooser.
   Keep WooCommerce and the swatch plugin fully responsible for availability,
   combinations, variation images and prices; this is presentation only. */
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form {
    margin-top: 1rem;
}

.tc-site-profile--loft.single-product .tc-variation-heading {
    margin: 0;
    padding: .82rem .95rem .68rem;
    border: 1px solid #e3ddd6;
    border-bottom: 0;
    border-radius: 7px 7px 0 0;
    background: #faf8f5;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations {
    width: 100%;
    margin: 0;
    padding: 0 .95rem;
    border: 1px solid #e3ddd6;
    border-top: 0;
    border-bottom: 0;
    background: #fff;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:first-child {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: .45rem;
    width: 100%;
    margin: 0;
    padding: .72rem 0 .78rem;
    border: 0;
    border-bottom: 1px solid #eee8e1;
    align-items: start;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:last-child {
    border-bottom: 0;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    display: block;
    width: 100%;
    min-height: 0;
    padding: 0;
    color: #19191b;
    font-size: .84rem;
    font-weight: 750;
    line-height: 1.25;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label label {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: .2rem .35rem;
}

.tc-site-profile--loft.single-product .tc-current-value {
    color: #9a754b;
    font-size: .72rem;
    font-weight: 600;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    display: flex;
    width: 100%;
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: .28rem;
    padding: 0;
    text-align: left;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: .52rem;
    width: 100%;
    margin: 0;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    min-width: 42px;
    min-height: 42px;
    margin: 0 !important;
    border-radius: 7px !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item.button-variable-item {
    min-width: 60px;
    padding-inline: .72rem !important;
}

.tc-site-profile--loft.single-product .tc-variation-reset {
    display: flex;
    justify-content: flex-start;
    padding: .48rem .95rem .62rem;
    border: 1px solid #e3ddd6;
    border-top: 0;
    border-radius: 0 0 7px 7px;
    background: #fff;
}

.tc-site-profile--loft.single-product .tc-variation-reset .reset_variations {
    margin: 0;
    color: #8a847d;
    font-size: .68rem;
    line-height: 1.25;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .62rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation.single_variation {
    margin-bottom: .42rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-price .price {
    font-size: 1.02rem;
    font-weight: 700;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .tc-variation-heading,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
    .tc-site-profile--loft.single-product .tc-variation-reset {
        padding-left: .78rem;
        padding-right: .78rem;
    }
}

/* 0.2.17 — Loft checkout.
   Keep WooCommerce's checkout logic and payment/shipping gateways intact while
   giving the classic checkout a clearer two-column hierarchy on desktop. */
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-prose > .woocommerce {
    width: 100%;
    max-width: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-page-title {
    max-width: none;
    margin-bottom: 1.4rem;
    font-size: clamp(2rem, 3vw, 2.8rem);
    letter-spacing: -.035em;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-coupon-toggle,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-login-toggle {
    width: 100%;
    max-width: none;
    margin-bottom: 1.2rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-coupon-toggle .woocommerce-info,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-login-toggle .woocommerce-info {
    margin: 0;
    padding: .95rem 1.1rem .95rem 2.6rem;
    border-top: 2px solid var(--tc-accent);
    background: #faf9f7;
    color: #4e4944;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout_coupon,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.login {
    max-width: 620px;
    margin: 0 0 1.5rem;
    padding: 1rem;
    border: 1px solid var(--tc-border);
    background: #fff;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout_coupon .form-row {
    margin: 0;
}

@media (min-width: 981px) {
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout {
        display: grid;
        grid-template-columns: minmax(0, 1.25fr) minmax(390px, .85fr);
        grid-template-rows: auto auto;
        gap: 0 clamp(2.2rem, 4vw, 4.4rem);
        align-items: start;
        width: 100%;
        max-width: none;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details {
        grid-column: 1;
        grid-row: 1 / span 2;
        min-width: 0;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading {
        grid-column: 2;
        grid-row: 1;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review {
        grid-column: 2;
        grid-row: 2;
        min-width: 0;
    }
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details.col2-set {
    width: 100%;
    margin: 0;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-1,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2 {
    width: 100%;
    margin: 0;
    float: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2 {
    margin-top: 1.8rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields > h3,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-shipping-fields > h3,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-additional-fields > h3 {
    margin: 0 0 1.1rem;
    color: var(--tc-brand);
    font-size: clamp(1.2rem, 1.7vw, 1.45rem);
    line-height: 1.2;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields__field-wrapper,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-shipping-fields__field-wrapper {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .15rem 1rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row {
    width: 100%;
    margin: 0 0 .9rem;
    padding: 0;
    float: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row.form-row-wide,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#billing_company_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#billing_country_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#billing_address_1_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#billing_address_2_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#shipping_company_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#shipping_country_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#shipping_address_1_field,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row#shipping_address_2_field {
    grid-column: 1 / -1;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row label {
    margin-bottom: .32rem;
    color: #5f5a55;
    font-size: .82rem;
    font-weight: 600;
    line-height: 1.25;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row .required {
    color: #9f5b43;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .input-text,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) select,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) textarea {
    width: 100%;
    min-height: 46px;
    padding: .68rem .78rem;
    border: 1px solid #cfc8c1;
    border-radius: var(--tc-radius);
    background: #fff;
    color: var(--tc-brand);
    box-shadow: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) textarea {
    min-height: 112px;
    resize: vertical;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .input-text:focus,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) select:focus,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) textarea:focus {
    border-color: var(--tc-accent);
    outline: 2px solid color-mix(in srgb, var(--tc-accent) 34%, transparent);
    outline-offset: 0;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .select2-container {
    width: 100% !important;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single {
    height: 46px;
    border-color: #cfc8c1;
    border-radius: var(--tc-radius);
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single .select2-selection__rendered {
    padding-left: .78rem;
    line-height: 44px;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .select2-container .select2-selection--single .select2-selection__arrow {
    height: 44px;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #ship-to-different-address {
    margin: 0 0 1rem;
    font-size: 1rem;
    line-height: 1.35;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #ship-to-different-address label {
    display: inline-flex;
    gap: .5rem;
    align-items: center;
    font-weight: 700;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading {
    margin: 0;
    padding: 1.35rem 1.4rem .8rem;
    border: 1px solid var(--tc-border);
    border-bottom: 0;
    background: #faf9f7;
    color: var(--tc-brand);
    font-size: clamp(1.3rem, 1.8vw, 1.6rem);
    line-height: 1.2;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review {
    margin: 0;
    padding: 0 1.4rem 1.4rem;
    border: 1px solid var(--tc-border);
    border-top: 0;
    background: #faf9f7;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table {
    width: 100%;
    margin: 0 0 1rem;
    border: 0;
    background: transparent;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table th,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table td {
    padding: .85rem .45rem;
    border-top: 1px solid #e5dfd8;
    vertical-align: top;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table thead th {
    border-top: 0;
    color: #6b655f;
    font-size: .78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .025em;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table .product-name {
    padding-right: 1rem;
    color: var(--tc-brand);
    font-size: .88rem;
    line-height: 1.4;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table .product-total,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table tfoot td {
    text-align: right;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table tfoot th {
    color: var(--tc-brand);
    font-weight: 700;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table .order-total th,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table .order-total td {
    font-size: 1rem;
    font-weight: 800;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review .woocommerce-shipping-methods {
    margin: 0;
    padding: 0;
    list-style: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review .woocommerce-shipping-methods li + li {
    margin-top: .55rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment {
    border: 0;
    border-radius: 0;
    background: transparent;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods {
    margin: 0;
    padding: 1rem 0 .75rem;
    border-top: 1px solid #e5dfd8;
    border-bottom: 1px solid #e5dfd8;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods li {
    margin: 0;
    padding: .25rem 0;
    color: var(--tc-brand);
    line-height: 1.4;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods li label {
    color: var(--tc-brand);
    font-size: .88rem;
    font-weight: 600;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment ul.payment_methods li img {
    width: auto;
    max-width: 110px;
    max-height: 28px;
    margin-left: .35rem;
    vertical-align: middle;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment div.payment_box {
    margin: .6rem 0 .35rem;
    padding: .85rem 1rem;
    border: 1px solid #e5dfd8;
    border-radius: var(--tc-radius);
    background: #fff;
    color: #5f5a55;
    font-size: .82rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment div.payment_box::before {
    display: none;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order {
    margin: 0;
    padding: 1rem 0 0;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment .woocommerce-terms-and-conditions-wrapper {
    margin-bottom: .9rem;
    color: #5f5a55;
    font-size: .8rem;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment #place_order {
    width: 100%;
    min-height: 54px;
    margin: 0;
    padding: .85rem 1rem;
    border: 1px solid var(--tc-brand) !important;
    border-radius: var(--tc-radius);
    background: var(--tc-brand) !important;
    color: #fff !important;
    font-size: 1rem;
    font-weight: 750;
    line-height: 1.2;
    text-align: center;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment #place_order:hover,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment #place_order:focus-visible {
    border-color: var(--tc-accent) !important;
    background: var(--tc-accent) !important;
    color: var(--tc-brand) !important;
}

/* Make third-party payment styling inherit Loft rather than introducing a
   purple/grey block around the complete payment area. */
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment .payment_methods,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #payment .place-order {
    box-shadow: none !important;
}

@media (max-width: 980px) {
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout {
        display: block;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading {
        margin-top: 2rem;
    }
}

@media (max-width: 680px) {
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields__field-wrapper,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-shipping-fields__field-wrapper {
        grid-template-columns: 1fr;
        gap: 0;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .form-row {
        grid-column: 1 !important;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading {
        padding: 1.1rem 1rem .7rem;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review {
        padding: 0 1rem 1rem;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table th,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review table.shop_table td {
        padding: .75rem .3rem;
    }
}

/* 0.2.17 — final Loft single-product spacing polish. */
.tc-site-profile--loft.single-product .tc-variation-reset {
    padding-top: .38rem;
    padding-bottom: .48rem;
}
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .35rem;
}
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation.single_variation {
    margin-bottom: .2rem;
}

/* 0.2.18 — Loft cart / checkout alignment polish.
   Use the same top rhythm and left edge on both transactional pages, and
   explicitly place paired checkout fields so WooCommerce/third-party CSS
   cannot swap or stagger them. */
.tc-site-profile--loft.woocommerce-cart .tc-prose,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-prose {
    padding-top: clamp(3.25rem, 4.4vw, 4rem);
}

.tc-site-profile--loft.woocommerce-cart .tc-page-title,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-page-title {
    max-width: none;
    margin: 0 0 clamp(1.8rem, 2.5vw, 2.35rem);
    font-size: clamp(2rem, 3vw, 2.8rem);
    letter-spacing: -.035em;
}

/* The generic prose rule caps direct children at 780px. The WooCommerce
   wrapper must occupy the same full container as the page title. */
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-prose > .woocommerce,
.tc-site-profile--loft.woocommerce-cart .tc-prose > .woocommerce {
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-coupon-toggle,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-form-login-toggle,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-1,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #customer_details .col-2,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-billing-fields,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-shipping-fields,
.tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .woocommerce-additional-fields {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

@media (min-width: 981px) {
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) form.checkout {
        grid-template-columns: minmax(0, 1.35fr) minmax(390px, .85fr);
        column-gap: clamp(2.4rem, 4vw, 4rem);
    }

    /* Force the common paired fields onto one clean row. */
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #billing_first_name_field,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #shipping_first_name_field {
        grid-column: 1 !important;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #billing_last_name_field,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #shipping_last_name_field {
        grid-column: 2 !important;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #billing_email_field,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #shipping_email_field {
        grid-column: 1 !important;
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #billing_phone_field,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #shipping_phone_field {
        grid-column: 2 !important;
    }

    /* Align the top of the order summary visually with the billing heading. */
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review_heading {
        padding-top: .15rem;
        padding-bottom: 1rem;
        border-top: 0;
        border-left: 0;
        border-right: 0;
        background: transparent;
        font-size: clamp(1.2rem, 1.7vw, 1.45rem);
    }

    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) #order_review {
        border-top: 1px solid var(--tc-border);
        padding-top: .35rem;
    }
}

@media (max-width: 980px) {
    .tc-site-profile--loft.woocommerce-cart .tc-prose,
    .tc-site-profile--loft.woocommerce-checkout:not(.woocommerce-order-received) .tc-prose {
        padding-top: 2.4rem;
    }
}

/* 0.2.19 — Final Loft variation chooser layout.
   Force swatch plugins to follow a compact stacked rhythm: attribute label,
   selected value, then the actual choices directly below. WooCommerce still
   owns availability, valid combinations, price and gallery updates. */
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form {
    width: 100%;
    max-width: 430px;
}

.tc-site-profile--loft.single-product .tc-variation-heading,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
.tc-site-profile--loft.single-product .tc-variation-reset {
    width: 100%;
    max-width: 430px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tbody {
    display: block !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:first-child,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:last-child {
    display: block !important;
    width: 100% !important;
    padding: .72rem 0 .78rem !important;
    border: 0 !important;
    border-bottom: 1px solid #eee8e1 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr:last-child {
    border-bottom: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    display: block !important;
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    padding: 0 !important;
    text-align: left !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    margin: 0 0 .5rem !important;
    min-height: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label label {
    display: flex !important;
    flex-wrap: wrap;
    gap: .18rem .36rem;
    align-items: baseline;
    justify-content: flex-start !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    margin-top: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    display: flex !important;
    width: auto !important;
    max-width: 100%;
    flex-wrap: wrap;
    justify-content: flex-start !important;
    gap: .5rem !important;
    margin: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    flex: 0 0 auto !important;
    min-width: 42px;
    min-height: 42px;
}

.tc-site-profile--loft.single-product .tc-current-value {
    color: #9a754b;
    font-size: .72rem;
    font-weight: 600;
}

.tc-site-profile--loft.single-product .tc-variation-reset {
    padding: .42rem .95rem .55rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    max-width: 430px;
    margin-top: .38rem;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .woocommerce div.product form.variations_form,
    .tc-site-profile--loft.single-product .tc-variation-heading,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
    .tc-site-profile--loft.single-product .tc-variation-reset,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
        max-width: none;
    }
}

/* 0.2.21 — Loft variation chooser: real visual rebuild.
   Previous releases mostly restyled WooCommerce's table. Some swatch plugins
   re-applied flex/table rules afterwards, so the result could still look like
   the old layout. This layer turns each attribute into a compact card with the
   label and selected value on top, then choices immediately below. */
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form {
    max-width: 390px;
}

.tc-site-profile--loft.single-product .tc-variation-heading,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
.tc-site-profile--loft.single-product .tc-variation-reset,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    max-width: 390px;
}

.tc-site-profile--loft.single-product .tc-variation-heading {
    margin-bottom: .7rem;
    padding: .78rem .9rem .7rem;
    border: 1px solid #e7e1da;
    border-radius: 6px;
    background: #faf8f5;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr.tc-variation-row-enhanced,
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations tr {
    box-sizing: border-box !important;
    margin: 0 0 .65rem !important;
    padding: .78rem .9rem .82rem !important;
    border: 1px solid #e7e1da !important;
    border-radius: 6px !important;
    background: #fff !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label {
    margin: 0 0 .58rem !important;
    padding: 0 !important;
    border: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations th.label label {
    display: flex !important;
    align-items: baseline !important;
    justify-content: flex-start !important;
    gap: .38rem !important;
    font-size: .82rem !important;
    line-height: 1.25 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations td.value {
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper {
    justify-content: flex-start !important;
    gap: .48rem !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .variable-items-wrapper .variable-item {
    margin: 0 !important;
}

.tc-site-profile--loft.single-product .tc-current-value {
    color: var(--tc-accent, #c9a06c) !important;
    font-size: .76rem !important;
    font-weight: 600 !important;
}

.tc-site-profile--loft.single-product .tc-variation-reset {
    margin: -.1rem 0 .3rem !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    text-align: left !important;
}

.tc-site-profile--loft.single-product .tc-variation-reset .reset_variations {
    display: inline-block !important;
    padding: .18rem 0 !important;
    color: #8b8177 !important;
    font-size: .72rem !important;
    line-height: 1.3 !important;
    text-decoration: underline !important;
    text-underline-offset: 2px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    margin-top: .35rem !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
    gap: .55rem !important;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product .woocommerce div.product form.variations_form,
    .tc-site-profile--loft.single-product .tc-variation-heading,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .variations,
    .tc-site-profile--loft.single-product .tc-variation-reset,
    .tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
        max-width: none;
    }
}


/* 0.2.31 — Product performance: reserve the final variable-form geometry.
   Lighthouse identified .single_variation_wrap, td.value and the swatches as
   the main CLS source. These dimensions exist before JS initialises, so the
   editorial block below no longer jumps when WooCommerce finds a variation. */
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variations th.label label {
    min-height: 18px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variations td.value,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variable-items-wrapper {
    min-height: 42px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variable-items-wrapper .variable-item,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variable-items-wrapper .swatch,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .swatch-item-wrapper .swatch {
    box-sizing: border-box;
    min-width: 42px;
    width: 42px;
    min-height: 42px;
    height: 42px;
    flex: 0 0 42px;
}

.tc-site-profile--loft.single-product .tc-variation-reset {
    min-height: 24px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    min-height: 74px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
    min-height: 48px;
}

/* Reserve just enough total height for the number of actual attributes. This
   is intentionally a minimum, not a fixed height, so long labels or extra
   options can still grow naturally without clipping. */
.tc-site-profile--loft.single-product.tc-variable-attributes-1 .woocommerce div.product form.variations_form {
    min-height: 220px;
}
.tc-site-profile--loft.single-product.tc-variable-attributes-2 .woocommerce div.product form.variations_form {
    min-height: 300px;
}
.tc-site-profile--loft.single-product.tc-variable-attributes-3 .woocommerce div.product form.variations_form {
    min-height: 380px;
}
.tc-site-profile--loft.single-product.tc-variable-attributes-4 .woocommerce div.product form.variations_form {
    min-height: 460px;
}

@media (max-width: 520px) {
    .tc-site-profile--loft.single-product.tc-variable-attributes-1 .woocommerce div.product form.variations_form { min-height: 225px; }
    .tc-site-profile--loft.single-product.tc-variable-attributes-2 .woocommerce div.product form.variations_form { min-height: 305px; }
    .tc-site-profile--loft.single-product.tc-variable-attributes-3 .woocommerce div.product form.variations_form { min-height: 385px; }
    .tc-site-profile--loft.single-product.tc-variable-attributes-4 .woocommerce div.product form.variations_form { min-height: 465px; }
}

/* 0.2.32 — Product stability pass.
   Match the final variation geometry in CSS before any swatch JavaScript runs,
   and permanently reserve the native WooCommerce variation/result rows. This
   avoids the repeated table -> block restyling that Chrome reported as dozens
   of layout shifts on some variable products. */
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations tbody,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations tr,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations th.label,
.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations td.value {
    display: block !important;
    box-sizing: border-box;
    width: 100% !important;
    max-width: none !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form table.variations td.value {
    text-align: left !important;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.variations_form .variable-items-wrapper {
    display: flex !important;
    width: auto !important;
    margin-left: 0 !important;
    justify-content: flex-start !important;
    align-items: center !important;
    flex-wrap: wrap !important;
}

/* WooCommerce normally toggles this node between display:none/block after a
   variation is resolved. Keeping an empty, fixed-height result row in flow
   means the price/availability can appear without moving the editorial copy. */
.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation.single_variation {
    display: block !important;
    box-sizing: border-box;
    min-height: 30px;
    margin-bottom: .45rem;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .single_variation_wrap {
    box-sizing: border-box;
    min-height: 86px;
}

.tc-site-profile--loft.single-product .woocommerce div.product form.cart .woocommerce-variation-add-to-cart {
    min-height: 48px;
    align-items: center;
}

/* The zoom plugin is disabled for Loft, but this guards against a cached or
   third-party zoom layer so it can never become the page's LCP element. */
.tc-site-profile--loft.single-product .woocommerce-product-gallery img.zoomImg {
    display: none !important;
}



/* Stable first product image: reserve the exact server-known ratio before
   WooCommerce/FlexSlider starts. */
.tc-site-profile--loft.single-product .woocommerce-product-gallery__image.tc-product-gallery__image--initial {
    aspect-ratio: var(--tc-product-image-ratio);
}

.tc-site-profile--loft.single-product .woocommerce-product-gallery__image.tc-product-gallery__image--initial > a {
    display: block;
    width: 100%;
    aspect-ratio: var(--tc-product-image-ratio);
}

.tc-site-profile--loft.single-product .woocommerce-product-gallery__image.tc-product-gallery__image--initial img {
    display: block;
    width: 100%;
    height: auto;
}


/* Mobile product gallery geometry. The gallery image and thumbnail strip are
   layered into a footprint reserved before FlexSlider initialises. */
@media (max-width: 768px) {
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery {
        position: relative;
        box-sizing: border-box;
        width: 100%;
        min-height: 0;
        margin-bottom: 2rem;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery::before {
        content: "";
        display: block;
        width: 100%;
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1);
        pointer-events: none;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery::after {
        content: "";
        display: block;
        height: var(--tc-gallery-thumbs-reserve, 0px);
        pointer-events: none;
    }

    /* Before FlexSlider: WooCommerce's raw wrapper. After FlexSlider: the
       generated viewport. In both states the visible image occupies exactly
       the same reserved rectangle. */
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery > .flex-viewport {
        position: absolute !important;
        z-index: 1;
        top: 0;
        right: 0;
        left: 0;
        width: 100% !important;
        height: auto !important;
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1);
        overflow: hidden;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery > .flex-viewport .woocommerce-product-gallery__wrapper {
        height: 100% !important;
        margin: 0 !important;
    }

    /* Keep the pre-JS DOM from adding the secondary gallery slides to layout.
       FlexSlider can still read and initialise them; they are revealed inside
       its generated viewport after initialisation. */
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery > .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:not(:first-child) {
        position: absolute !important;
        top: 0;
        left: 0;
        visibility: hidden;
        pointer-events: none;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery > .flex-viewport .woocommerce-product-gallery__image {
        visibility: visible;
        pointer-events: auto;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image > a {
        box-sizing: border-box;
        height: 100%;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image img:not(.zoomImg) {
        display: block;
        width: 100%;
        height: 100%;
        object-fit: contain;
    }

    /* FlexSlider creates this node after first paint. Put it inside the space
       already reserved by ::after so its arrival cannot push .summary. */
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .flex-control-thumbs {
        position: absolute !important;
        z-index: 2;
        right: 0;
        bottom: 0;
        left: 0;
        box-sizing: border-box;
        height: var(--tc-gallery-thumbs-reserve, 0px);
        margin: 0 !important;
        padding-top: 8px;
        overflow: hidden;
        align-content: start;
    }
}


/* Mobile gallery flow stabilisation. A dedicated placeholder owns the gallery
   footprint in normal flow and the real gallery is layered over it. */
@media (max-width: 768px) {
    .tc-site-profile--loft.single-product .woocommerce div.product {
        position: relative;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product > .tc-product-gallery-reserve {
        display: block;
        box-sizing: content-box;
        width: 100%;
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1);
        padding-bottom: var(--tc-gallery-thumbs-reserve, 0px);
        margin: 0 0 2rem;
        pointer-events: none;
    }


    /* Remove the real gallery from document flow; the placeholder owns its
       footprint and prevents the summary from shifting. */
    .tc-site-profile--loft.single-product .woocommerce div.product > div.images.woocommerce-product-gallery {
        position: absolute !important;
        z-index: 2;
        top: 0;
        left: 0;
        right: 0;
        float: none !important;
        clear: none !important;
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
    }


    /* Keep deterministic image and thumbnail geometry inside the absolute
       gallery; these pseudo-elements no longer affect document flow. */
    .tc-site-profile--loft.single-product .woocommerce div.product > div.images.woocommerce-product-gallery::before {
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1);
    }

    .tc-site-profile--loft.single-product .woocommerce div.product > div.images.woocommerce-product-gallery::after {
        height: var(--tc-gallery-thumbs-reserve, 0px);
    }


    /* Summary starts after the permanent placeholder, independently of gallery
       initialisation or a default-variation refresh. */
    .tc-site-profile--loft.single-product .woocommerce div.product > .summary.entry-summary {
        display: block !important;
        position: relative;
        z-index: 1;
        float: none !important;
        clear: both !important;
        width: 100% !important;
        max-width: none !important;
        margin-top: 0 !important;
    }
}



/* Native variation gallery: let the first image's intrinsic ratio drive its
   height instead of the slider's generic 100% height rule. */
@media (max-width: 768px) {
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image.tc-product-gallery__image--initial,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image.tc-product-gallery__image--initial > a {
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: var(--tc-product-image-ratio, var(--tc-gallery-initial-ratio, 1 / 1)) !important;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__image.tc-product-gallery__image--initial img.tc-product-image--initial {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        aspect-ratio: var(--tc-product-image-ratio, var(--tc-gallery-initial-ratio, 1 / 1)) !important;
        object-fit: contain !important;
    }
}


/* 0.2.41 — Native WooCommerce variation gallery safety net.
   The native default-variation gallery can render its first slide without the
   theme's helper class. Target the actual first slide structurally so it keeps
   a deterministic intrinsic ratio on mobile before FlexSlider initialises. */
@media (max-width: 768px) {
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child > a,
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child > a {
        height: auto !important;
        min-height: 0 !important;
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1) !important;
    }

    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child img:not(.zoomImg),
    .tc-site-profile--loft.single-product .woocommerce div.product div.images.woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:first-child img:not(.zoomImg) {
        display: block !important;
        width: 100% !important;
        max-width: 100% !important;
        height: auto !important;
        aspect-ratio: var(--tc-gallery-initial-ratio, 1 / 1) !important;
        object-fit: contain !important;
    }
}
