/*
 * WooCommerce presentation layer for the production commerce routes.
 *
 * The theme owns the page chrome, spacing, and field treatment while
 * WooCommerce and Product Add-ons continue to own markup, validation, cart
 * state, totals, Stripe handoff, and order creation.
 */
.ccm-page--woocommerce .ccm-woocommerce-section {
    box-sizing: border-box;
    min-height: 520px;
    padding-top: calc(138px + clamp(56px, 7vw, 96px));
    padding-bottom: clamp(72px, 8vw, 120px);
    background: var(--ccm-color-surface-review);
}

.ccm-page--woocommerce .ccm-woocommerce-container {
    min-width: 0;
}

.ccm-page--woocommerce .woocommerce {
    color: var(--ccm-color-ink);
}

.ccm-page--woocommerce .woocommerce a {
    color: var(--ccm-color-brand-slate);
}

.ccm-page--woocommerce .woocommerce a:hover,
.ccm-page--woocommerce .woocommerce a:focus-visible {
    color: var(--ccm-color-ink);
}

.ccm-page--woocommerce .woocommerce h1,
.ccm-page--woocommerce .woocommerce h2,
.ccm-page--woocommerce .woocommerce h3,
.ccm-page--woocommerce .woocommerce h4 {
    color: var(--ccm-color-ink);
}

.ccm-page--woocommerce .woocommerce .page-title,
.ccm-page--woocommerce .woocommerce-products-header__title {
    max-width: 18ch;
    margin: 0 0 32px;
    font-size: clamp(40px, 5vw, 72px);
    line-height: 1.04;
}

.ccm-page--woocommerce .woocommerce-products-header {
    margin-bottom: 42px;
}

.ccm-page--woocommerce .woocommerce-result-count,
.ccm-page--woocommerce .woocommerce-ordering {
    margin-bottom: 24px;
    color: var(--ccm-color-brand-slate);
}

.ccm-page--woocommerce .woocommerce-ordering select,
.ccm-page--woocommerce .woocommerce form select,
.ccm-page--woocommerce .woocommerce form input:not([type="hidden"]):not([type="submit"]):not([type="checkbox"]):not([type="radio"]),
.ccm-page--woocommerce .woocommerce form textarea {
    box-sizing: border-box;
    min-height: 52px;
    padding: 12px 14px;
    border: 1px solid rgba(49, 65, 86, 0.28);
    border-radius: var(--ccm-radius-none);
    background: var(--ccm-color-surface);
    color: var(--ccm-color-ink);
    font: inherit;
}

.ccm-page--woocommerce .woocommerce form textarea {
    min-height: 132px;
    resize: vertical;
}

.ccm-page--woocommerce .woocommerce form input:focus,
.ccm-page--woocommerce .woocommerce form select:focus,
.ccm-page--woocommerce .woocommerce form textarea:focus {
    border-color: var(--ccm-color-brand-slate);
    outline: 2px solid rgba(60, 111, 173, 0.25);
    outline-offset: 2px;
}

.ccm-page--woocommerce .woocommerce form label,
.ccm-page--woocommerce .woocommerce form .wc-pao-addon-name {
    display: block;
    margin: 0 0 8px;
    color: var(--ccm-color-ink);
    font-size: var(--ccm-text-sm);
    font-weight: var(--ccm-weight-ui);
    line-height: 1.4;
}

.ccm-page--woocommerce .woocommerce .woocommerce-message,
.ccm-page--woocommerce .woocommerce .woocommerce-info,
.ccm-page--woocommerce .woocommerce .woocommerce-error {
    margin: 0 0 28px;
    padding: 16px 20px;
    border-top: 2px solid var(--ccm-color-gold);
    background: var(--ccm-color-surface);
    color: var(--ccm-color-ink);
    list-style: none;
}

.ccm-page--woocommerce .woocommerce .woocommerce-error {
    border-top-color: #9b2f35;
}

/* Product detail and product archive layouts. */
.ccm-page--woocommerce-catalog .woocommerce div.product {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(36px, 6vw, 96px);
    align-items: start;
}

.ccm-page--woocommerce-catalog .woocommerce div.product::before,
.ccm-page--woocommerce-catalog .woocommerce div.product::after {
    display: none;
}

.ccm-page--woocommerce-catalog .woocommerce div.product .woocommerce-product-gallery,
.ccm-page--woocommerce-catalog .woocommerce div.product .summary {
    float: none;
    width: auto;
    margin: 0;
}

.ccm-page--woocommerce-catalog .woocommerce div.product .woocommerce-product-gallery {
    position: relative;
    box-sizing: border-box;
    padding: clamp(18px, 3vw, 36px);
    border-top: 3px solid var(--ccm-color-gold);
    border-right: 1px solid rgba(49, 65, 86, 0.14);
    border-bottom: 1px solid rgba(49, 65, 86, 0.14);
    border-left: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-catalog .woocommerce-product-gallery .flex-viewport,
.ccm-page--woocommerce-catalog .woocommerce-product-gallery__wrapper {
    margin: 0;
}

.ccm-page--woocommerce-catalog .woocommerce-product-gallery img.wp-post-image {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    object-fit: contain;
    background: var(--ccm-color-section-soft);
}

.ccm-page--woocommerce-catalog .woocommerce-product-gallery .zoomImg {
    display: none !important;
}

.ccm-page--woocommerce-catalog .woocommerce div.product .summary {
    padding-top: 4px;
}

.ccm-page--woocommerce-catalog .woocommerce div.product .product_title {
    max-width: 14ch;
    margin: 0 0 20px;
    font-size: clamp(38px, 4.4vw, 64px);
    line-height: 1.04;
}

.ccm-page--woocommerce-catalog .woocommerce div.product p.price,
.ccm-page--woocommerce-catalog .woocommerce div.product span.price {
    margin: 0 0 24px;
    color: var(--ccm-color-brand-slate);
    font-size: clamp(24px, 2vw, 32px);
    font-weight: var(--ccm-weight-ui);
}

.ccm-page--woocommerce-catalog .woocommerce div.product .woocommerce-product-details__short-description,
.ccm-page--woocommerce-catalog .woocommerce div.product .summary > p:not(.price) {
    color: var(--ccm-color-brand-slate);
    font-size: var(--ccm-text-body);
    line-height: 1.7;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart {
    margin: 30px 0 0;
    padding-top: 26px;
    border-top: 1px solid var(--ccm-color-line);
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .wc-pao-addon-container {
    margin: 0 0 22px;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .wc-pao-addon-heading {
    margin: 32px 0 18px;
    color: var(--ccm-color-ink);
    font-size: clamp(22px, 2vw, 30px);
    line-height: 1.15;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .wc-pao-addon-heading:first-child {
    margin-top: 0;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .form-row,
.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .wc-pao-addon-wrap {
    margin-bottom: 18px;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .quantity {
    display: inline-flex;
    align-items: center;
    margin: 0 12px 0 0;
}

.ccm-page--woocommerce-catalog .woocommerce div.product form.cart .quantity input.qty {
    width: 76px;
    min-height: 48px;
    text-align: center;
}

.ccm-page--woocommerce .woocommerce button.button,
.ccm-page--woocommerce .woocommerce a.button,
.ccm-page--woocommerce .woocommerce input.button,
.ccm-page--woocommerce .woocommerce #payment #place_order {
    min-height: 48px;
    padding: 13px 22px;
    border: 1px solid var(--ccm-color-brand-slate);
    border-radius: var(--ccm-radius-none);
    color: var(--ccm-color-surface);
    background: var(--ccm-color-brand-slate);
    font-family: var(--ccm-font-sans);
    font-size: var(--ccm-text-action);
    font-weight: var(--ccm-weight-ui);
    letter-spacing: var(--ccm-tracking-button);
    line-height: 1.2;
    text-transform: uppercase;
}

.ccm-page--woocommerce .woocommerce button.button:hover,
.ccm-page--woocommerce .woocommerce button.button:focus-visible,
.ccm-page--woocommerce .woocommerce a.button:hover,
.ccm-page--woocommerce .woocommerce a.button:focus-visible,
.ccm-page--woocommerce .woocommerce input.button:hover,
.ccm-page--woocommerce .woocommerce input.button:focus-visible,
.ccm-page--woocommerce .woocommerce #payment #place_order:hover,
.ccm-page--woocommerce .woocommerce #payment #place_order:focus-visible {
    color: var(--ccm-color-surface);
    background: var(--ccm-color-brand-slate-hover);
}

.ccm-page--woocommerce-catalog .woocommerce ul.products {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    margin: 0;
    padding: 0;
}

.ccm-page--woocommerce-catalog .woocommerce ul.products::before,
.ccm-page--woocommerce-catalog .woocommerce ul.products::after {
    display: none;
}

.ccm-page--woocommerce-catalog .woocommerce ul.products li.product {
    float: none;
    width: auto;
    margin: 0;
    padding: 24px;
    border: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-catalog .woocommerce ul.products li.product img {
    width: 100%;
    aspect-ratio: 1;
    margin: 0 0 20px;
    object-fit: contain;
    background: var(--ccm-color-section-soft);
}

.ccm-page--woocommerce-catalog .woocommerce ul.products li.product .woocommerce-loop-product__title {
    min-height: 2.5em;
    padding: 0;
    color: var(--ccm-color-ink);
    font-size: 20px;
    line-height: 1.25;
}

.ccm-page--woocommerce-catalog .woocommerce ul.products li.product .price {
    margin: 14px 0 18px;
    color: var(--ccm-color-brand-slate);
    font-size: 18px;
}

.ccm-page--woocommerce-catalog .woocommerce ul.products li.product .button {
    margin: 0;
}

.ccm-page--woocommerce-catalog .woocommerce section.related.products {
    grid-column: 1 / -1;
    clear: both;
    margin: 28px 0 0;
    padding-top: 42px;
    border-top: 1px solid var(--ccm-color-line);
}

.ccm-page--woocommerce-catalog .woocommerce section.related.products > h2 {
    margin: 0 0 24px;
    font-size: clamp(28px, 3vw, 40px);
}

/* Cart, checkout, and account pages use the real WooCommerce shortcodes. */
.ccm-page--woocommerce-cart .woocommerce-cart-form,
.ccm-page--woocommerce-cart .cart-collaterals,
.ccm-page--woocommerce-checkout .woocommerce-checkout,
.ccm-page--woocommerce-my-account .woocommerce-MyAccount-content,
.ccm-page--woocommerce-my-account .woocommerce-MyAccount-navigation {
    padding: clamp(24px, 4vw, 48px);
    border: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-cart .woocommerce-cart-form {
    margin-bottom: 24px;
}

.ccm-page--woocommerce .woocommerce table.shop_table {
    width: 100%;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    border-radius: 0;
}

.ccm-page--woocommerce .woocommerce table.shop_table th,
.ccm-page--woocommerce .woocommerce table.shop_table td {
    padding: 16px 12px;
    border: 0;
    border-bottom: 1px solid var(--ccm-color-line);
    text-align: left;
    vertical-align: middle;
}

.ccm-page--woocommerce .woocommerce table.shop_table th {
    color: var(--ccm-color-brand-slate);
    font-size: var(--ccm-text-xs);
    letter-spacing: var(--ccm-tracking-eyebrow);
    text-transform: uppercase;
}

.ccm-page--woocommerce .woocommerce .cart_totals {
    float: none;
    width: auto;
}

.ccm-page--woocommerce .woocommerce .cart_totals h2,
.ccm-page--woocommerce-checkout .woocommerce h3 {
    margin: 0 0 24px;
    font-size: clamp(24px, 2.5vw, 34px);
}

.ccm-page--woocommerce .woocommerce .cart_totals .checkout-button {
    display: inline-flex;
    margin-top: 18px;
}

.ccm-page--woocommerce-checkout .woocommerce-checkout {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(300px, 0.9fr);
    gap: 28px;
    padding: 0;
    border: 0;
    background: transparent;
}

.ccm-page--woocommerce-checkout #customer_details,
.ccm-page--woocommerce-checkout #order_review_heading,
.ccm-page--woocommerce-checkout #order_review {
    padding: clamp(24px, 4vw, 48px);
    border: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-checkout #customer_details {
    grid-column: 1;
}

.ccm-page--woocommerce-checkout #order_review_heading,
.ccm-page--woocommerce-checkout #order_review {
    grid-column: 2;
}

.ccm-page--woocommerce-checkout #order_review_heading {
    margin: 0;
    padding-bottom: 0;
    border-bottom: 0;
}

.ccm-page--woocommerce-checkout #order_review {
    margin-top: -29px;
    border-top: 0;
}

.ccm-page--woocommerce-checkout .col2-set,
.ccm-page--woocommerce-checkout .col2-set .col-1,
.ccm-page--woocommerce-checkout .col2-set .col-2 {
    float: none;
    width: auto;
}

.ccm-page--woocommerce-checkout .col2-set .col-2 {
    margin-top: 28px;
}

.ccm-page--woocommerce-checkout .form-row {
    width: 100%;
    margin: 0 0 18px;
    padding: 0;
}

.ccm-page--woocommerce-checkout .form-row-first,
.ccm-page--woocommerce-checkout .form-row-last {
    float: none;
    width: 100%;
}

.ccm-page--woocommerce-my-account .woocommerce-MyAccount-navigation {
    float: none;
    width: auto;
    margin-bottom: 24px;
}

.ccm-page--woocommerce-my-account .woocommerce-MyAccount-navigation ul {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.ccm-page--woocommerce-my-account .woocommerce-MyAccount-content {
    float: none;
    width: auto;
}

@media (max-width: 1180px) {
    .ccm-page--woocommerce .ccm-woocommerce-section {
        padding-top: calc(120px + clamp(52px, 6vw, 80px));
    }
}

@media (max-width: 840px) {
    .ccm-page--woocommerce-catalog .woocommerce div.product,
    .ccm-page--woocommerce-checkout .woocommerce-checkout {
        grid-template-columns: 1fr;
    }

    .ccm-page--woocommerce-catalog .woocommerce section.related.products {
        grid-column: auto;
    }

    .ccm-page--woocommerce-checkout #customer_details,
    .ccm-page--woocommerce-checkout #order_review_heading,
    .ccm-page--woocommerce-checkout #order_review {
        grid-column: auto;
    }

    .ccm-page--woocommerce-checkout #order_review {
        margin-top: -29px;
    }

    .ccm-page--woocommerce-catalog .woocommerce ul.products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .ccm-page--woocommerce .ccm-woocommerce-section {
        padding-top: calc(114px + 48px);
        padding-bottom: 64px;
    }

    .ccm-page--woocommerce-catalog .woocommerce ul.products {
        grid-template-columns: 1fr;
    }

    .ccm-page--woocommerce .woocommerce table.shop_table thead {
        display: none;
    }

    .ccm-page--woocommerce .woocommerce table.shop_table,
    .ccm-page--woocommerce .woocommerce table.shop_table tbody,
    .ccm-page--woocommerce .woocommerce table.shop_table tr,
    .ccm-page--woocommerce .woocommerce table.shop_table td {
        display: block;
        width: 100%;
        box-sizing: border-box;
    }

    .ccm-page--woocommerce .woocommerce table.shop_table tr {
        padding: 16px 0;
        border-bottom: 1px solid var(--ccm-color-line);
    }

    .ccm-page--woocommerce .woocommerce table.shop_table td {
        padding: 8px 0;
        border: 0;
    }

    .ccm-page--woocommerce .woocommerce table.shop_table .product-remove {
        text-align: right;
    }

    .ccm-page--woocommerce-checkout #order_review {
        margin-top: -29px;
    }
}

/* WooCommerce's single-product renderer does not add a .woocommerce wrapper
 * around the product node, so keep the catalog rules scoped to the template
 * instead of relying on that incidental wrapper. */
.ccm-page--woocommerce-catalog div.product {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: clamp(36px, 6vw, 96px);
    align-items: start;
}

.ccm-page--woocommerce-catalog div.product::before,
.ccm-page--woocommerce-catalog div.product::after {
    display: none;
}

.woocommerce .ccm-page--woocommerce-catalog div.product .woocommerce-product-gallery,
.woocommerce .ccm-page--woocommerce-catalog div.product .summary {
    float: none;
    width: auto;
    margin: 0;
}

.ccm-page--woocommerce-catalog div.product .woocommerce-product-gallery {
    box-sizing: border-box;
    padding: clamp(18px, 3vw, 36px);
    border-top: 3px solid var(--ccm-color-gold);
    border-right: 1px solid rgba(49, 65, 86, 0.14);
    border-bottom: 1px solid rgba(49, 65, 86, 0.14);
    border-left: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-catalog div.product .woocommerce-product-gallery img.wp-post-image {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    object-fit: contain;
    background: var(--ccm-color-section-soft);
}

.ccm-page--woocommerce-catalog div.product .woocommerce-product-gallery .zoomImg {
    display: none !important;
}

.ccm-page--woocommerce-catalog div.product .summary {
    padding-top: 4px;
}

.ccm-page--woocommerce-catalog div.product .product_title {
    max-width: 14ch;
    margin: 0 0 20px;
    font-size: clamp(38px, 4.4vw, 64px);
    line-height: 1.04;
}

.ccm-page--woocommerce-catalog div.product p.price,
.ccm-page--woocommerce-catalog div.product span.price {
    margin: 0 0 24px;
    color: var(--ccm-color-brand-slate);
    font-size: clamp(24px, 2vw, 32px);
    font-weight: var(--ccm-weight-ui);
}

.ccm-page--woocommerce-catalog div.product .woocommerce-product-details__short-description,
.ccm-page--woocommerce-catalog div.product .summary > p:not(.price) {
    color: var(--ccm-color-brand-slate);
    font-size: var(--ccm-text-body);
    line-height: 1.7;
}

.ccm-page--woocommerce-catalog div.product form.cart {
    margin: 30px 0 0;
    padding-top: 26px;
    border-top: 1px solid var(--ccm-color-line);
}

.ccm-page--woocommerce-catalog div.product form.cart .wc-pao-addon-heading {
    margin: 32px 0 18px;
    color: var(--ccm-color-ink);
    font-size: clamp(22px, 2vw, 30px);
    line-height: 1.15;
}

.ccm-page--woocommerce-catalog div.product form.cart .wc-pao-addon-heading:first-child {
    margin-top: 0;
}

.ccm-page--woocommerce-catalog div.product form.cart .form-row,
.ccm-page--woocommerce-catalog div.product form.cart .wc-pao-addon-wrap {
    margin-bottom: 18px;
}

.ccm-page--woocommerce-catalog div.product form.cart .quantity {
    display: inline-flex;
    align-items: center;
    margin: 0 12px 0 0;
}

.ccm-page--woocommerce-catalog div.product form.cart .quantity input.qty {
    width: 76px;
    min-height: 48px;
    text-align: center;
}

.ccm-page--woocommerce-catalog div.product form.cart .single_add_to_cart_button {
    min-height: 48px;
    padding: 13px 22px;
    border: 1px solid var(--ccm-color-brand-slate);
    border-radius: var(--ccm-radius-none);
    color: var(--ccm-color-surface);
    background: var(--ccm-color-brand-slate);
    font-family: var(--ccm-font-sans);
    font-size: var(--ccm-text-action);
    font-weight: var(--ccm-weight-ui);
    letter-spacing: var(--ccm-tracking-button);
    text-transform: uppercase;
}

.ccm-page--woocommerce-catalog div.product form.cart .single_add_to_cart_button:hover,
.ccm-page--woocommerce-catalog div.product form.cart .single_add_to_cart_button:focus-visible {
    background: var(--ccm-color-brand-slate-hover);
}

.ccm-page--woocommerce-catalog div.product section.related.products {
    grid-column: 1 / -1;
    clear: both;
    margin: 28px 0 0;
    padding-top: 42px;
    border-top: 1px solid var(--ccm-color-line);
}

.ccm-page--woocommerce-catalog div.product section.related.products > h2 {
    margin: 0 0 24px;
    font-size: clamp(28px, 3vw, 40px);
}

.ccm-page--woocommerce-catalog div.product section.related.products ul.products {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
    margin: 0;
    padding: 0;
}

.ccm-page--woocommerce-catalog div.product section.related.products ul.products li.product {
    float: none;
    width: auto;
    margin: 0;
    padding: 24px;
    border: 1px solid rgba(49, 65, 86, 0.14);
    background: var(--ccm-color-surface);
}

.ccm-page--woocommerce-catalog div.product section.related.products ul.products li.product img {
    width: 100%;
    aspect-ratio: 1;
    margin: 0 0 20px;
    object-fit: contain;
    background: var(--ccm-color-section-soft);
}

@media (max-width: 840px) {
    .ccm-page--woocommerce-catalog div.product {
        grid-template-columns: 1fr;
    }

    .ccm-page--woocommerce-catalog div.product section.related.products {
        grid-column: auto;
    }

    .ccm-page--woocommerce-catalog div.product section.related.products ul.products {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .ccm-page--woocommerce-catalog div.product section.related.products ul.products {
        grid-template-columns: 1fr;
    }
}
