/* ==========================================================================
   VIORA × WordPress/WooCommerce: styles for markup generated by WordPress,
   WooCommerce and plugins (notices, checkout fields, tables, account, reviews,
   block content). Design tokens come from tokens.css.
   ========================================================================== */

.admin-bar .site-header { top: 32px; }
@media (max-width: 782px) { .admin-bar .site-header { top: 0; } }
.js .update-cart { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.is-loading .listing-main { opacity: .55; transition: opacity var(--dur) var(--ease); }
img { height: auto; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.screen-reader-text:focus { clip: auto; width: auto; height: auto; padding: var(--s-2) var(--s-3); background: var(--c-paper); z-index: 200; }

/* Buttons generated by WooCommerce and plugins */
.woocommerce .button, .woocommerce-button, a.button, button.button, input.button, .wp-element-button, .wp-block-button__link {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2); min-height: 2.75rem; padding: 0 var(--s-5);
  border: 1.5px solid var(--c-aubergine); border-radius: var(--r-pill); background: transparent; color: var(--c-aubergine);
  font: 600 var(--t-sm)/1 var(--f-sans); text-decoration: none; cursor: pointer; transition: background var(--dur) var(--ease), color var(--dur) var(--ease);
}
.woocommerce .button:hover, .woocommerce-button:hover, a.button:hover, button.button:hover, .wp-element-button:hover, .wp-block-button__link:hover { background: var(--c-aubergine); color: var(--c-on-dark); }
.woocommerce .button.alt, .checkout-button, #place_order, .single_add_to_cart_button { background: var(--c-aubergine); color: var(--c-on-dark); }
.woocommerce .button.alt:hover, .checkout-button:hover, #place_order:hover { background: var(--c-aubergine-2); border-color: var(--c-aubergine-2); }
.button.disabled, .button:disabled, button[disabled] { opacity: .55; cursor: not-allowed; }
.checkout-button { width: 100%; min-height: 3.5rem; font-size: var(--t-md); }

/* Notices */
.woocommerce-notices-wrapper:empty { display: none; }
.woocommerce-message, .woocommerce-info, .woocommerce-error, .notice-ok, .notice-err {
  list-style: none; margin: 0 0 var(--s-6); padding: var(--s-4) var(--s-5); border-radius: var(--r-md);
  display: flex; flex-wrap: wrap; gap: var(--s-3); align-items: center; justify-content: space-between; font-size: var(--t-sm); font-weight: 550;
}
.woocommerce-message, .notice-ok { background: var(--c-success-bg); color: var(--c-success); }
.woocommerce-info { background: var(--c-mist-2); color: var(--c-ink); }
.woocommerce-error, .notice-err { background: var(--c-error-bg); color: var(--c-error); border: 1.5px solid var(--c-error); }
.woocommerce-error li { width: 100%; }
.woocommerce-message .button, .woocommerce-info .button { order: 2; min-height: 2.25rem; }
.single-product .woocommerce-notices-wrapper, .page-listing .woocommerce-notices-wrapper { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }

/* Form rows (checkout, account, address forms) */
.form-row { margin: 0 0 var(--s-4); display: flex; flex-direction: column; gap: var(--s-1); }
.form-row label { font-size: var(--t-sm); font-weight: 600; }
.form-row .required { color: var(--c-error); text-decoration: none; border: 0; }
.form-row .optional { font-weight: 400; color: var(--c-muted); }
.form-row .description { font-size: var(--t-xs); color: var(--c-muted); }
.woocommerce-input-wrapper { display: block; }
.form-row.woocommerce-invalid input.input-text, .form-row.woocommerce-invalid select { border-color: var(--c-error); background: #fffafa; }
.form-row.woocommerce-validated input.input-text { border-color: var(--c-line-strong); }
.checkout-inline-error-message { margin: 0; font-size: var(--t-sm); color: var(--c-error); font-weight: 550; }
.woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper, .woocommerce-additional-fields__field-wrapper {
  display: grid; grid-template-columns: 1fr; column-gap: var(--s-4);
}
@media (min-width: 640px) {
  .woocommerce-billing-fields__field-wrapper, .woocommerce-shipping-fields__field-wrapper, .woocommerce-address-fields__field-wrapper { grid-template-columns: 1fr 1fr; }
  .form-row-wide, .form-row.notes, #billing_country_field, #shipping_country_field { grid-column: 1 / -1; }
}
.woocommerce-billing-fields > h3, .woocommerce-additional-fields > h3 { display: none; }
#ship-to-different-address { font-size: var(--t-base); margin: var(--s-4) 0; }
#ship-to-different-address label { display: flex; gap: var(--s-3); align-items: center; font-weight: 600; cursor: pointer; }
input[type="checkbox"], input[type="radio"] { accent-color: var(--c-aubergine); }
.woocommerce-form__label-for-checkbox { display: flex; gap: var(--s-3); align-items: flex-start; font-size: var(--t-sm); cursor: pointer; }
.woocommerce-form__label-for-checkbox input { width: 1.2rem; height: 1.2rem; margin: .1rem 0 0; flex: none; }

/* select2 / selectWoo (state field) */
.select2-container { width: 100% !important; font-size: 1rem; }
.select2-container .select2-selection--single { height: 3rem; border: 1.5px solid var(--c-line-strong); border-radius: var(--r-sm); background: var(--c-white); }
.select2-container .select2-selection--single .select2-selection__rendered { line-height: 2.85rem; padding-left: .9rem; color: var(--c-ink); }
.select2-container .select2-selection--single .select2-selection__arrow { height: 2.9rem; right: .5rem; }
.select2-container--focus .select2-selection--single, .select2-container--open .select2-selection--single { border-color: var(--c-aubergine); outline: 2.5px solid var(--c-aubergine); outline-offset: 1px; }
.select2-dropdown { border: 1.5px solid var(--c-aubergine); border-radius: var(--r-sm); overflow: hidden; }
.select2-results__option { padding: .55rem .9rem; }
.select2-container--default .select2-results__option--highlighted[aria-selected], .select2-results__option--highlighted { background: var(--c-aubergine); color: var(--c-on-dark); }
.select2-search--dropdown .select2-search__field { min-height: 2.5rem; border: 1px solid var(--c-line-strong); border-radius: var(--r-xs); padding: .4rem .6rem; }

/* Checkout */
.wc-content { padding-bottom: var(--section); }
.woocommerce-checkout .checkout-layout { padding-bottom: 0; }
.checkout-main .co-step:first-child { border-top: 0; padding-top: 0; }
.checkout-summary { align-self: start; }
.checkout-summary h2 { margin-bottom: var(--s-4); }
.blockUI.blockOverlay { background: rgba(251, 251, 248, .6) !important; }
.shop_table { width: 100%; border-collapse: collapse; font-size: var(--t-sm); }
.shop_table th, .shop_table td { text-align: left; padding: var(--s-3) var(--s-2) var(--s-3) 0; border-bottom: 1px solid var(--c-line); vertical-align: top; }
.shop_table thead th { color: var(--c-muted); font-weight: 600; border-bottom-color: var(--c-line-strong); }
.shop_table td:last-child, .shop_table th:last-child { text-align: right; padding-right: 0; }
.shop_table .product-quantity { color: var(--c-muted); font-weight: 450; }
.shop_table tfoot th { font-weight: 450; color: var(--c-muted); }
.shop_table .order-total th, .shop_table .order-total td { font-size: var(--t-md); font-weight: 700; color: var(--c-aubergine); border-bottom: 0; padding-top: var(--s-4); }
.shop_table .variation { margin: var(--s-1) 0 0; color: var(--c-muted); font-size: var(--t-xs); }
.shop_table .variation dt, .shop_table .variation dd { display: inline; margin: 0; }
.shop_table .variation dd p { display: inline; margin: 0; }
.woocommerce-shipping-totals td, .woocommerce-shipping-totals th { text-align: left !important; }
.woocommerce-shipping-totals td { display: block; }
.woocommerce-shipping-totals th { display: block; color: var(--c-ink); font-weight: 650; border-bottom: 0; padding-bottom: 0; }
#shipping_method { list-style: none; margin: var(--s-2) 0 0; padding: 0; display: grid; gap: var(--s-2); }
#shipping_method li { display: flex; align-items: center; gap: var(--s-3); padding: var(--s-3); border: 1.5px solid var(--c-line); border-radius: var(--r-sm); background: var(--c-white); }
#shipping_method li:has(input:checked), #shipping_method li:only-child { border-color: var(--c-aubergine); }
#shipping_method input { margin: 0; width: 1.1rem; height: 1.1rem; flex: none; }
#shipping_method label { font-size: var(--t-sm); display: flex; justify-content: space-between; width: 100%; gap: var(--s-2); cursor: pointer; }
.woocommerce-shipping-destination, .woocommerce-shipping-calculator { font-size: var(--t-xs); color: var(--c-muted); margin: var(--s-2) 0 0; }
#payment ul.payment_methods { list-style: none; margin: 0 0 var(--s-6); padding: 0; display: grid; gap: var(--s-2); }
#payment li.wc_payment_method { border: 1.5px solid var(--c-line); border-radius: var(--r-md); background: var(--c-paper); padding: var(--s-4); }
#payment li.wc_payment_method:has(input:checked) { border-color: var(--c-aubergine); background: var(--c-white); }
#payment li.wc_payment_method > input { width: 1.2rem; height: 1.2rem; margin: 0 var(--s-3) 0 0; vertical-align: middle; }
#payment li.wc_payment_method > label { font-weight: 650; cursor: pointer; display: inline-flex; align-items: center; gap: var(--s-2); }
#payment li.wc_payment_method > label img { max-height: 1.5rem; width: auto; display: inline-block; }
#payment .payment_box { margin: var(--s-3) 0 0 2rem; font-size: var(--t-sm); color: var(--c-muted); }
#payment .payment_box p:last-child { margin-bottom: 0; }
#payment .place-order { padding: 0; margin: 0; }
.woocommerce-terms-and-conditions-wrapper { margin-bottom: var(--s-5); font-size: var(--t-sm); }
.woocommerce-privacy-policy-text { color: var(--c-muted); font-size: var(--t-xs); }
.woocommerce-form-coupon-toggle .woocommerce-info, .woocommerce-form-login-toggle .woocommerce-info { justify-content: flex-start; }
.checkout_coupon, .woocommerce-form-login { background: var(--c-paper); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: var(--s-5); margin-bottom: var(--s-6); }
.checkout_coupon { display: flex; flex-wrap: wrap; gap: var(--s-2); align-items: flex-end; }
.checkout_coupon p { margin: 0; }
.checkout_coupon .form-row-first { flex: 1 1 12rem; }

/* Cart */
.cart-line img { width: 100%; height: auto; border-radius: var(--r-sm); }
.cart-line-meta dl { margin: 0; }
.cart-line-meta dt, .cart-line-meta dd { display: inline; margin: 0; }
.cart-line-meta dd p { display: inline; }
.cart-actions { display: flex; flex-wrap: wrap; gap: var(--s-4); align-items: flex-end; justify-content: space-between; padding: var(--s-6) 0; }
.cart-actions .coupon { flex: 1 1 18rem; max-width: 26rem; margin: 0; }
.cart-actions .coupon label { display: block; margin-bottom: var(--s-2); font-size: var(--t-sm); font-weight: 600; }
.quantity.qty { display: inline-flex; align-items: center; height: 2.5rem; }
.quantity input.qty { width: 2.75rem; min-height: 0; height: 100%; border: 0; padding: 0; text-align: center; background: transparent; font-weight: 600; -moz-appearance: textfield; }
.quantity input.qty::-webkit-inner-spin-button, .quantity input.qty::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.quantity:not(.qty) input.qty { width: 4.5rem; min-height: 2.5rem; border: 1.5px solid var(--c-line-strong); border-radius: var(--r-sm); }
.cart_totals h2 { font-size: var(--t-lg); }
.cart_totals .shop_table th { width: 45%; }
.wc-proceed-to-checkout { margin-top: var(--s-5); }
.cart-collaterals .cross-sells { display: none; }
.mini-remove { font-size: .8125rem; font-weight: 400; color: var(--c-muted); }

/* Order received / order details */
.order-overview { list-style: none; padding: 0; margin: 0 0 var(--s-10); display: grid; grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr)); gap: var(--s-3); }
.order-overview li { background: var(--c-paper); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: var(--s-4); display: flex; flex-direction: column; gap: var(--s-1); }
.order-overview span { font-size: var(--t-xs); color: var(--c-muted); }
.order-title { font-size: var(--t-xl); }
.woocommerce-order-details, .woocommerce-customer-details { margin-bottom: var(--s-10); }
.woocommerce-order-details__title, .woocommerce-column__title { font-size: var(--t-lg); }
.woocommerce-customer-details address { font-style: normal; background: var(--c-paper); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: var(--s-5); line-height: 1.7; }
.woocommerce-columns--addresses { display: grid; gap: var(--s-6); }
@media (min-width: 768px) { .woocommerce-columns--addresses { grid-template-columns: 1fr 1fr; } }
.woocommerce-bacs-bank-details, .order-again { margin-bottom: var(--s-6); }
.order-actions { margin-top: var(--s-6); }

/* My account */
.woocommerce-account .wc-content > .woocommerce { display: grid; gap: var(--s-8); }
@media (min-width: 900px) { .woocommerce-account.logged-in .wc-content > .woocommerce { grid-template-columns: 14rem 1fr; gap: var(--s-12); } }
.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--s-2); }
@media (min-width: 900px) { .woocommerce-MyAccount-navigation ul { flex-direction: column; gap: 0; } .woocommerce-MyAccount-navigation li { border-bottom: 1px solid var(--c-line); } }
.woocommerce-MyAccount-navigation a { display: block; padding: var(--s-3) 0; text-decoration: none; font-weight: 550; }
@media (max-width: 899px) { .woocommerce-MyAccount-navigation a { padding: var(--s-2) var(--s-4); border: 1.5px solid var(--c-line); border-radius: var(--r-pill); font-size: var(--t-sm); } }
.woocommerce-MyAccount-navigation .is-active a { color: var(--c-aubergine); text-decoration: underline; text-decoration-color: var(--c-brass); text-decoration-thickness: 2px; text-underline-offset: .35em; }
.woocommerce-MyAccount-content > p:first-child { font-size: var(--t-md); }
.woocommerce-MyAccount-content mark { background: var(--c-mist-2); color: var(--c-ink); padding: 0 .3em; border-radius: var(--r-xs); }
.woocommerce-orders-table__cell-order-actions .button { min-height: 2.25rem; }
.woocommerce-Addresses { display: grid; gap: var(--s-6); }
@media (min-width: 768px) { .woocommerce-Addresses { grid-template-columns: 1fr 1fr; } }
.woocommerce-Address { background: var(--c-paper); border: 1px solid var(--c-line); border-radius: var(--r-md); padding: var(--s-5); }
.woocommerce-Address-title { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s-3); }
.woocommerce-Address-title h2 { font-size: var(--t-md); margin: 0; }
.woocommerce-Address address { font-style: normal; line-height: 1.7; }
.woocommerce-EditAccountForm fieldset { border: 1px solid var(--c-line); border-radius: var(--r-md); padding: var(--s-5); margin: var(--s-6) 0; }
.woocommerce-pagination, .woocommerce-pagination ul { display: flex; gap: var(--s-2); list-style: none; padding: 0; margin: var(--s-6) 0; }
.auth-grid.auth-single { max-width: 32rem; }
.woocommerce-form-login .lost_password { margin: var(--s-3) 0 0; font-size: var(--t-sm); }
.woocommerce-password-strength { font-size: var(--t-xs); margin-top: var(--s-1); }
.woocommerce-password-hint { font-size: var(--t-xs); color: var(--c-muted); }
.track_order { max-width: 30rem; display: grid; gap: var(--s-2); }
.track_order .form-row-first, .track_order .form-row-last { width: 100%; }
.clear { clear: both; }

/* Reviews (CSS-only stars; WooCommerce's icon font is not loaded) */
.reviews #comments h2, .woocommerce-Reviews-title { font-size: var(--t-md); }
.commentlist { list-style: none; padding: 0; margin: 0 0 var(--s-6); display: grid; gap: var(--s-5); }
.commentlist .comment_container { display: grid; grid-template-columns: 2.5rem 1fr; gap: var(--s-3); }
.commentlist img.avatar { width: 2.5rem; height: 2.5rem; border-radius: var(--r-pill); }
.commentlist .meta { font-size: var(--t-sm); color: var(--c-muted); }
.woocommerce-review__verified { color: var(--c-success); font-style: normal; }
.star-rating { position: relative; display: inline-block; width: 5.4em; height: 1.1em; font-size: 1rem; line-height: 1; overflow: hidden; color: var(--c-line-strong); }
.star-rating::before { content: "★★★★★"; position: absolute; inset: 0; letter-spacing: .08em; }
.star-rating span { position: absolute; inset: 0 auto 0 0; overflow: hidden; padding-top: 1.5em; color: var(--c-brass); }
.star-rating span::before { content: "★★★★★"; position: absolute; top: 0; left: 0; letter-spacing: .08em; }
p.stars { margin: var(--s-2) 0; }
p.stars span { display: inline-flex; gap: .2rem; }
p.stars a { position: relative; display: inline-block; width: 1.6rem; height: 1.6rem; font-size: 0; text-decoration: none; color: var(--c-line-strong); }
p.stars a::before { content: "★"; font-size: 1.5rem; line-height: 1.6rem; position: absolute; inset: 0; }
p.stars:hover a::before, p.stars.selected a.active::before, p.stars.selected a:not(.active)::before { color: var(--c-brass); }
p.stars a:hover ~ a::before, p.stars.selected a.active ~ a::before { color: var(--c-line-strong); }
.comment-form { display: grid; gap: var(--s-3); }
.comment-form label { font-size: var(--t-sm); font-weight: 600; display: block; margin-bottom: var(--s-1); }
.comment-form-cookies-consent { display: flex; gap: var(--s-2); align-items: flex-start; font-size: var(--t-sm); }
.comment-reply-title { font-size: var(--t-md); font-weight: 650; display: block; margin-bottom: var(--s-3); }
.woocommerce-noreviews, .woocommerce-verification-required { color: var(--c-muted); }
.reviews .form-submit { margin: 0; }

/* Content pages and blocks */
.prose-page { max-width: 46rem; margin-left: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter))); padding-left: 0; padding-bottom: var(--section); }
.prose-page > * { max-width: 68ch; }
.prose-page h2 { font-size: var(--t-lg); margin-top: var(--s-10); }
.prose-page h2:first-child { margin-top: 0; }
.prose-page .wp-block-columns { max-width: none; }
.entry-content .wp-block-details { border-top: 1px solid var(--c-line); max-width: 52rem; }
.entry-content .wp-block-details + :not(.wp-block-details) { margin-top: var(--s-10); }
.entry-content h2 + .wp-block-details { margin-top: var(--s-3); }
.wp-block-details:last-of-type { border-bottom: 1px solid var(--c-line); }
.wp-block-details summary { display: flex; justify-content: space-between; align-items: center; gap: var(--s-4); padding: var(--s-5) 0; cursor: pointer; list-style: none; font-weight: 650; color: var(--c-aubergine); font-size: var(--t-md); }
.wp-block-details summary::-webkit-details-marker { display: none; }
.wp-block-details summary::after { content: "+"; font-size: 1.6rem; font-weight: 400; line-height: 1; transition: transform var(--dur) var(--ease); }
.wp-block-details[open] summary::after { transform: rotate(45deg); }
.wp-block-details > :not(summary) { margin-top: 0; padding-bottom: var(--s-4); }
.contact-columns { display: grid !important; gap: var(--s-10); max-width: none !important; }
@media (min-width: 900px) { .contact-columns { grid-template-columns: 1.4fr 1fr; gap: var(--s-16); } }
.contact-columns > .wp-block-column { flex-basis: auto !important; }
.page-template-canvas .breadcrumbs + .canvas-content { padding-top: 0; }
.wp-block-image img { border-radius: var(--r-md); }
.serif-prose .wp-block-list { padding-left: 1.3em; }
.wishlist-page { padding-bottom: var(--section); }
.journal-index { padding-bottom: var(--section); }
.pager, .nav-links { display: flex; gap: var(--s-2); margin-top: var(--s-10); flex-wrap: wrap; }
.page-numbers { display: inline-grid; place-items: center; min-width: 2.5rem; height: 2.5rem; border: 1.5px solid var(--c-line); border-radius: var(--r-pill); text-decoration: none; padding: 0 var(--s-3); }
.page-numbers.current { background: var(--c-aubergine); color: var(--c-on-dark); border-color: var(--c-aubergine); }
.custom-logo { max-height: 2.5rem; width: auto; }
.wp-caption, .alignwide, .alignfull { max-width: 100%; }

/* Spacing for role="list" lists on the product page (role selector otherwise resets margins) */
.product-services[role="list"] { margin: var(--s-6) 0; }
.highlights[role="list"] { margin: 0; }
