/* ==== Theme checkout (rebuilt 15 Oct 2026 against Shopify's one-page checkout) ====
   Desktop: a split page. The form sits in the left half, aligned to the middle; the summary fills the right
   half on stone, out to the window edge and down to the footer, its contents sticky. Phones: one column under
   a folded summary bar. One rhythm throughout: 48px fields, 12px between fields, 16px under headings, 36px
   between sections. */
.co-page { --co-field: 3rem; --co-gap: .75rem; --co-sec: 2.25rem; --co-border: #d9cfbf; --co-pad: clamp(2rem, 1rem + 3vw, 3.5rem); }
.co { display: grid; align-items: start; }
.co__main { display: grid; gap: var(--co-sec); min-width: 0; align-content: start; }
#customer_details { display: grid; gap: var(--co-sec); }
.co__sec { display: grid; gap: 1rem; }
.co__sec h2 { font: 500 1.25rem/1.2 var(--display); letter-spacing: -.005em; }
.co__sec-head { display: flex; justify-content: space-between; align-items: baseline; }
.co__sec-head .link { font-size: .875rem; }
.co__summary h2 { font: 500 1.25rem/1.2 var(--display); }
@media (min-width: 64em) {
	.co { grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); grid-template-rows: auto 1fr; min-height: calc(100svh - 4.5rem); }
	.co__summary-toggle { display: none; }
	/* WooCommerce puts error notices at the top of the form: they take the empty first row of the left column. */
	.co > .woocommerce-NoticeGroup { grid-column: 1; grid-row: 1; justify-self: end; width: min(100%, 36rem + var(--co-pad) + var(--gutter)); padding: var(--co-pad) var(--co-pad) 0 var(--gutter); }
	.co:has(> .woocommerce-NoticeGroup) .co__main { padding-top: 1.5rem; }
	.co__main { grid-column: 1; grid-row: 2; justify-self: end; width: min(100%, 36rem + var(--co-pad) + var(--gutter)); padding: var(--co-pad) var(--co-pad) 4rem var(--gutter); }
	.co__side { grid-column: 2; grid-row: 1 / span 2; align-self: stretch; background: var(--limestone); border-left: 1px solid var(--line); padding: var(--co-pad) var(--gutter) 4rem var(--co-pad); }
	.co__summary { position: sticky; top: var(--co-pad); width: min(100%, 26rem); display: grid; gap: 1.25rem; }
	.co__summary h2 { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}
@media (max-width: 63.99em) {
	.co { display: flex; flex-direction: column; }
	.co__summary-toggle { order: 0; }
	.co__side { order: 1; display: none; background: var(--limestone); border-bottom: 1px solid var(--line); padding: 1.25rem var(--gutter) 1.5rem; }
	.co:has(.co__summary-toggle[open]) .co__side { display: block; }
	.co__summary { display: grid; gap: 1.25rem; }
	.co__summary h2 { display: none; }
	.co > .woocommerce-NoticeGroup { order: 2; padding: 1.25rem var(--gutter) 0; }
	.co__main { order: 3; padding: 1.75rem var(--gutter) 3rem; }
}

/* Folded summary bar (phones): full width, like Shopify's */
.co__summary-toggle { width: 100%; background: var(--limestone); border-bottom: 1px solid var(--line); }
.co__summary-toggle > summary { display: flex; justify-content: space-between; align-items: center; gap: 1rem; min-height: 3.5rem; padding: 0 var(--gutter); cursor: pointer; list-style: none; font-size: .9375rem; color: var(--ink); }
.co__summary-toggle > summary::-webkit-details-marker { display: none; }
.co__summary-toggle > summary .co__summary-label { display: inline-flex; align-items: center; gap: .5rem; }
.co__summary-toggle > summary .co__summary-label::after { content: ""; width: .45rem; height: .45rem; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: translateY(-2px) rotate(45deg); transition: transform var(--dur-quick) var(--ease-out); }
.co__summary-toggle[open] > summary .co__summary-label::after { transform: translateY(1px) rotate(-135deg); }
.co__summary-total { font: 500 1.125rem/1 var(--sans); }

/* Fields */
:is(.co__fields, .acct-fields) { display: flex; flex-wrap: wrap; gap: var(--co-gap); }
:is(.co, .acct-form) .form-row { flex: 1 0 100%; display: grid; gap: .375rem; margin: 0; padding: 0; min-width: 0; }
:is(.co, .acct-form) :is(.form-row-first, .form-row-last, .form-row-half) { flex: 1 0 calc(50% - var(--co-gap) / 2); }
:is(.co, .acct-form) .form-row .woocommerce-input-wrapper { display: block; min-width: 0; }
:is(.co, .acct-form) .form-row > label { font: 400 .875rem/1.3 var(--sans); color: var(--ink); }
:is(.co, .acct-form) .form-row .required { display: none; }
:is(.co, .acct-form) .form-row .optional { color: var(--ink-2); }
:is(.co, .acct-form) :is(input.input-text, select), .co .idpc_lookup .idpc-input { width: 100%; height: var(--co-field); min-height: var(--co-field); padding: 0 .875rem; border: 1px solid var(--co-border); border-radius: var(--radius); background: #fff; font: 400 1rem/1 var(--sans); color: var(--ink); box-shadow: none; transition: border-color var(--dur-quick) var(--ease-out), box-shadow var(--dur-quick) var(--ease-out); }
:is(.co, .acct-form) input.input-text::placeholder, .co .idpc_lookup .idpc-input::placeholder { color: #9b8f80; opacity: 1; }
:is(.co, .acct-form) :is(input.input-text, select):focus, .co .idpc_lookup .idpc-input:focus { outline: none; border-color: var(--oud); box-shadow: 0 0 0 1px var(--oud); }
:is(.co, .acct-form) .woocommerce-invalid :is(input.input-text, select) { border-color: var(--rose, #9b3b3b); box-shadow: 0 0 0 1px var(--rose, #9b3b3b); }
.co .addr2-add { margin: .125rem 0 0 !important; font-size: .875rem; }
.co .email-hint { margin: .125rem 0 0; }

/* Tick boxes (newsletter, deliver elsewhere) */
.co .form-row.omnisend_newsletter_checkbox_field, .co .form-row.omnisend_sms_checkbox_field { margin-top: .125rem; }
.co .form-row .woocommerce-form__label-for-checkbox, .co .form-row.omnisend_newsletter_checkbox_field label, .co .form-row.omnisend_sms_checkbox_field label, .co__shipping #ship-to-different-address label { display: inline-flex; align-items: center; gap: .625rem; font: 400 .9375rem/1.35 var(--sans); color: var(--ink); cursor: pointer; }
:is(.co, .acct-form) input[type=checkbox] { width: 1.125rem; height: 1.125rem; margin: 0; flex: none; accent-color: var(--oud); }
.co__shipping .woocommerce-shipping-fields h3 { margin: 0; font: inherit; }
.co__shipping .shipping_address { margin-top: 1rem; display: flex; flex-wrap: wrap; gap: var(--co-gap); }
.co__shipping { margin-top: .125rem; }

/* Postcode finder: an ordinary field row (no tinted panel): postcode, then a quiet button */
.co .idpc_lookup { flex: 1 0 100%; grid-template-columns: minmax(0, 1fr) auto; gap: .375rem .5rem; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; }
/* Hidden until site.js has merged it (it merges a finder once loaded): the postcode is a plain field until then, or if the finder never loads. */
.co .idpc_lookup { display: none !important; }
.co .idpc_lookup.is-merged { display: grid !important; }
.co .idpc_lookup > label { grid-column: 1 / -1; font: 400 .875rem/1.3 var(--sans); color: var(--ink); }
.co .idpc_lookup > .woocommerce-input-wrapper { display: block; min-width: 0; }
.co .idpc_lookup .idpc-input { margin: 0 !important; text-transform: uppercase; }
.co .idpc_lookup .idpc-input::placeholder { text-transform: none; }
.co :is(.idpc_lookup, .has-finder) .idpc-button { height: var(--co-field) !important; min-height: var(--co-field); margin: 0 !important; width: auto !important; padding: 0 1.125rem; border: 1px solid var(--oud) !important; border-radius: var(--radius); background: transparent !important; color: var(--oud) !important; font: 500 .9375rem/1 var(--sans); white-space: nowrap; cursor: pointer; transition: background-color var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease-out); }
.co :is(.idpc_lookup, .has-finder) .idpc-button:hover { background: var(--oud) !important; color: var(--paper) !important; }
.co .idpc_lookup select, .co .idpc_lookup .idpc-select { grid-column: 1 / -1; width: 100%; height: var(--co-field); border: 1px solid var(--co-border); border-radius: var(--radius); background: #fff; padding: 0 .75rem; font: inherit; }
.co .idpc_lookup .idpc-error { grid-column: 1 / -1; margin: 0; font-size: .8125rem; color: var(--rose, #9b3b3b); }
.co .idpc_lookup .idpc-error:empty, .co .idpc_lookup .selection:empty { display: none; }
.co .idpc_lookup > .woocommerce-input-wrapper:nth-of-type(3), .co .idpc_lookup > div { grid-column: 1 / -1; }
.co .idpc_lookup > .woocommerce-input-wrapper:nth-of-type(3):has(.selection:empty), .co .idpc_lookup > div:empty { display: none; }
/* Once site.js has moved the finder's button beside the real Postcode field ("Postcode [Find address]"), the finder's
   own row (straight after it) keeps only the address list and the finder's message, and shows only when one has content. */
.co .form-row.has-finder { grid-template-columns: minmax(0, 1fr) auto; column-gap: .5rem; }
.co .form-row.has-finder > * { grid-column: 1 / -1; min-width: 0; }
.co .form-row.has-finder > .woocommerce-input-wrapper:first-of-type { grid-column: 1; }
.co .form-row.has-finder > .co__finder-btn { grid-column: 2; display: block; }
.co .idpc_lookup.is-merged { grid-template-columns: minmax(0, 1fr); }
.co .idpc_lookup.is-merged > label, .co .idpc_lookup.is-merged > .woocommerce-input-wrapper:first-of-type { display: none; }
.co .idpc_lookup.is-merged > .woocommerce-input-wrapper:has(.selection:empty) { display: none; }
.co .idpc_lookup.is-merged:not(:has(.selection:not(:empty), .idpc-error:not(:empty):not([style*="display: none"]), .idpc-unhide)) { display: none !important; }
.co .form-row.has-finder input.input-text { text-transform: uppercase; }
.co .form-row.has-finder input.input-text::placeholder { text-transform: none; }
/* The message under a field that needs fixing (WooCommerce's own, or added by site.js) */
.co .checkout-inline-error-message { margin: 0; font-size: .8125rem; line-height: 1.35; color: var(--rose, #9b3b3b); }

/* Express wallets: label, buttons, then an "or" rule (the column gap is taken back so it sits close) */
.co #wc-stripe-express-checkout-element { margin: 0 !important; display: flex; flex-wrap: wrap; gap: .5rem; }
.co #wc-stripe-express-checkout-element::before { content: "Express checkout"; flex: 1 0 100%; margin-bottom: .25rem; text-align: center; font-size: .875rem; color: var(--ink-2); }
/* Stripe removes unavailable wallets. Keep mounted frames visible during refresh so
   its viewport-based renderer can draw them again; never infer availability from height. */
.co #wc-stripe-express-checkout-element > .StripeElement { flex: 1 1 0; width: auto !important; min-width: 0; min-height: 3rem; }
@media (max-width: 29.99em) { .co #wc-stripe-express-checkout-element > .StripeElement { flex: 1 1 9rem; } }
.co #wc-stripe-express-checkout-element { position: relative; }
/* No wallet to offer: no label, no divider, and no empty row (the element stays in place so Stripe can still measure). */
.co #wc-stripe-express-checkout-element[data-count="0"]::before, .co #wc-stripe-express-checkout-element[data-count="0"] ~ #wc-stripe-express-checkout-button-separator { display: none !important; }
.co #wc-stripe-express-checkout-element[data-count="0"] { margin-bottom: calc(-1 * var(--co-sec)) !important; }
.co__main > wc-order-attribution-inputs { display: none; }
.co #wc-stripe-express-checkout-button-separator { margin: calc(1.25rem - var(--co-sec)) 0 calc(1.25rem - var(--co-sec)) !important; font-size: 0 !important; }

/* Payment: one bordered list; the chosen option is tinted and its fields sit in a panel below it */
:is(.co, .paypage, .acct-addpm) #payment { background: none; border-radius: 0; }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods { list-style: none; margin: 0; padding: 0; display: grid; border: 1px solid var(--co-border); border-radius: var(--radius); overflow: visible; background: #fff; }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li { display: grid; grid-template-columns: auto 1fr; align-items: center; column-gap: .75rem; padding: 0; margin: 0; border-bottom: 1px solid var(--co-border); }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li:last-child { border-bottom: 0; }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li > input[type=radio] { grid-column: 1; grid-row: 1; margin: 0 0 0 1rem; width: 1.125rem; height: 1.125rem; accent-color: var(--oud); }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li > label { grid-column: 2; grid-row: 1; display: flex; align-items: center; gap: .75rem; min-height: 3.5rem; padding: 0 1rem 0 0; margin: 0; font: 500 .9375rem/1.2 var(--sans); color: var(--ink); cursor: pointer; width: auto; }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li:has(> input:checked) { background: #fbf8f2; }
:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li:has(> input:checked) > label { font-weight: 500; }
:is(.co, .paypage, .acct-addpm) #payment .payment_box { grid-column: 1 / -1; margin: 0 !important; padding: 1rem !important; border-top: 1px solid var(--co-border); background: #f6f1e8 !important; font-size: .875rem; color: var(--ink-2); }
:is(.co, .paypage, .acct-addpm) #payment .payment_box::before { display: none !important; }
:is(.co, .paypage, .acct-addpm) #payment .payment_box p:first-child { margin-top: 0; }
:is(.co, .paypage, .acct-addpm) #payment .payment_box p:last-child { margin-bottom: 0; }
:is(.co, .paypage, .acct-addpm) #payment .payment_box > *:not(:last-child) { margin-bottom: .75rem; }
:is(.co, .paypage, .acct-addpm) #payment .place-order { display: grid; gap: .75rem; margin: 1.25rem 0 0; padding: 0; }
:is(.co, .paypage, .acct-addpm) #place_order { width: 100%; height: 3.25rem; border: 0; border-radius: var(--radius); background: var(--oud); color: var(--paper); font: 500 1rem/1 var(--sans); letter-spacing: .01em; cursor: pointer; transition: background-color var(--dur-quick) var(--ease-out); }
:is(.co, .paypage, .acct-addpm) #place_order:hover { background: #000; }
:is(.co, .paypage, .acct-addpm) .woocommerce-privacy-policy-text p, :is(.co, .paypage, .acct-addpm) .woocommerce-terms-and-conditions-wrapper p { margin: 0; font-size: .8125rem; line-height: 1.5; color: var(--ink-2); }
.co .pay-note { margin: 0 !important; justify-content: center; text-align: left; }

/* Card brands: three marks, then "+4" with the rest on hover/focus */
.co__cards { display: inline-flex; align-items: center; gap: .25rem; margin-left: auto; }
.co__cards img { display: block; width: 2.375rem; height: 1.5rem; }
.co__more { position: relative; display: inline-grid; place-items: center; min-width: 1.75rem; height: 1.5rem; padding: 0 .25rem; font: 500 .75rem/1 var(--sans); color: var(--ink-2); cursor: default; outline-offset: 2px; }
.co__more-pop { position: absolute; right: 0; bottom: calc(100% + .5rem); z-index: 5; display: flex; gap: .25rem; padding: .5rem; background: #fff; border: 1px solid var(--co-border); border-radius: 6px; box-shadow: 0 10px 24px -12px rgb(42 28 20 / .35); opacity: 0; visibility: hidden; transform: translateY(4px); transition: opacity var(--dur-quick) var(--ease-out), transform var(--dur-quick) var(--ease-out), visibility var(--dur-quick); }
.co__more:hover .co__more-pop, .co__more:focus .co__more-pop { opacity: 1; visibility: visible; transform: none; }

/* Summary (".co" prefix: the shop-wide ".woo-page table.shop_table td" rule would otherwise win) */
.co table.co__table { width: 100%; border-collapse: collapse; font-size: .9375rem; }
.co table.co__table td, .co table.co__table th { padding: .5rem 0; vertical-align: middle; text-align: left; font-weight: 400; }
.co table.co__table td:last-child, .co table.co__table th + td { text-align: right; white-space: nowrap; padding-left: 1rem; }
.co table.co__table tbody td { padding: 0 0 1rem; }
.co table.co__table tbody tr:last-child td { padding-bottom: 1.25rem; }
.co table.co__table tfoot tr:first-child th, .co table.co__table tfoot tr:first-child td { border-top: 1px solid var(--co-border); padding-top: 1.25rem; }
.co table.co__table tfoot th { color: var(--ink); }
.co table.co__table .order-total th, .co table.co__table .order-total td { padding-top: 1rem; font: 500 1.25rem/1.2 var(--sans); vertical-align: baseline; }
.co table.co__table .order-total td .woocommerce-Price-amount { font-size: 1.375rem; }
.co__item-in { display: flex; gap: .875rem; align-items: center; }
.co table.co__table td.co__item { width: 100%; }
.co__thumb { position: relative; flex: none; width: 4rem; height: 4rem; border-radius: 8px; background: #fff; border: 1px solid var(--co-border); }
.co__thumb img { width: 100%; height: 100%; object-fit: cover; border-radius: 7px; }
.co__qty { position: absolute; top: -.5rem; right: -.5rem; min-width: 1.375rem; height: 1.375rem; padding: 0 .35rem; border-radius: 1rem; background: rgb(42 28 20 / .72); color: #fff; font: 500 .75rem/1.375rem var(--sans); text-align: center; }
.co__name { display: grid; gap: .15rem; min-width: 0; }
.co__name strong { font-weight: 500; }
.co__name .small { font-size: .8125rem; }
.co__inner { line-height: 1.4; }
.co__ship .ship-eta { display: block; margin-top: .2rem; font-size: .8125rem; color: var(--ink-2); }
.co table.co__table .woocommerce-shipping-methods { list-style: none; padding: 0; margin: 0; }
.co table.co__table .woocommerce-shipping-totals td { white-space: normal; min-width: 9.75rem; }
.co__coupon { border-top: 1px solid var(--co-border); padding-top: 1rem; }
.co__coupon-row { display: grid; grid-template-columns: 1fr auto; gap: .5rem; margin-top: .75rem; }
.co__coupon-row .field { height: var(--co-field); padding: 0 .875rem; border: 1px solid var(--co-border); border-radius: var(--radius); background: #fff; font: inherit; text-transform: uppercase; }
.co__coupon-row .btn { min-height: var(--co-field); }
.co__coupon-msg:empty { display: none; }
/* Not .is-error: WooCommerce's coupon scripts delete every .is-error/.is-success element on the page. */
.co__coupon-msg.co__coupon-msg--err { color: var(--rose, #9b3b3b); }
.co .idpc_lookup > span { margin-bottom: 0 !important; }
.co .form-row.omnisend_newsletter_checkbox_field .optional, .co .form-row.omnisend_sms_checkbox_field .optional { display: none; }
/* Messages (WooCommerce and Stripe) are moved into the form column by site.js */
.co__notices:empty { display: none; }
.co__notices { display: grid; gap: .5rem; }
.co__notices .woocommerce-NoticeGroup, .co__notices .woocommerce-notices-wrapper { display: grid; gap: .5rem; }
.co__notices .woocommerce-error, .co__notices .woocommerce-message, .co__notices .woocommerce-info { list-style: none; margin: 0; padding: .875rem 1rem; border: 1px solid rgb(155 59 59 / .35); border-radius: var(--radius); background: #fbf0ee; font-size: .875rem; line-height: 1.45; color: var(--ink); }
.co__notices .woocommerce-message, .co__notices .woocommerce-info { border-color: var(--co-border); background: #fff; }
.co__notices .woocommerce-error li { margin: 0; }
.co__notices .woocommerce-error li + li { margin-top: .25rem; }
@media (max-width: 29.99em) {
	:is(.co, .paypage, .acct-addpm) #payment ul.payment_methods > li > label { font-size: .875rem; gap: .5rem; }
	.co__cards img { width: 2rem; height: auto; }
	.co__more { min-width: 1.5rem; }
}
/* Summary rows: no rules between subtotal and delivery; one above the totals and one above the total */
.co table.co__table th, .co table.co__table td { border: 0; }
.co table.co__table tfoot th, .co table.co__table tfoot td { padding-top: .3rem; padding-bottom: .3rem; }
.co table.co__table tfoot tr:first-child th, .co table.co__table tfoot tr:first-child td { border-top: 1px solid var(--co-border); padding-top: 1.25rem; }
.co table.co__table tfoot .order-total th, .co table.co__table tfoot .order-total td { border-top: 1px solid var(--co-border); padding-top: 1rem; padding-bottom: 0; }
.co table.co__table tfoot tr.order-total + tr th, .co table.co__table tfoot tr:has(+ .order-total) th, .co table.co__table tfoot tr:has(+ .order-total) td { padding-bottom: 1rem; }
.co__coupon { margin-top: .25rem; }
/* The stone panel runs down to the footer */
.co-page, .co-page .woo-page, .co-page .woocommerce { margin: 0; padding: 0; }
/* "Send it to a different address": the recipient's fields follow the same rhythm as the main address */
.co__shipping .shipping_address { display: block; margin-top: 1.25rem; }
.co__shipping .woocommerce-shipping-fields__field-wrapper { display: flex; flex-wrap: wrap; gap: var(--co-gap); }
.co__more-pop { width: max-content; }
.co__more-pop img { flex: none; width: 2.375rem; height: 1.5rem; }

/* ==== Account area, order details and order-pay (redesigned 15 Oct 2026) ====
   Same materials as the checkout: 48px white fields with a #d9cfbf hairline, labels above, stone panels,
   1.25rem display headings. Selectors start at .account / .authpage / .odr so they outrank the shop-wide
   ".woo-page …" rules without !important. */
.account, .authpage, .co--pay { --co-field: 3rem; --co-gap: .75rem; --co-sec: 2.25rem; --co-border: #d9cfbf; --co-pad: clamp(2rem, 1rem + 3vw, 3.5rem); }
.woocommerce-MyAccount-content { min-width: 0; max-width: 50rem; }
.woocommerce-MyAccount-content > * + * { margin-top: var(--s6); }
.woocommerce-MyAccount-content > .woocommerce-notices-wrapper:empty + * { margin-top: 0; }
.acct-h { font: 500 1.25rem/1.2 var(--display); letter-spacing: -.005em; }
.acct-lede { color: var(--ink-2); font-size: .9375rem; }
.woocommerce-MyAccount-content > .acct-h + * { margin-top: var(--s4); }
.woocommerce-MyAccount-content > .acct-h + .acct-lede { margin-top: .5rem; }
.acct-empty { justify-items: start; }
.acct-empty .cluster { margin-top: var(--s2); --cluster: var(--s3) var(--s5); }

/* Notices: the checkout's message box (white, hairline; errors tinted) */
:is(.account, .authpage) .woocommerce-notices-wrapper:empty { display: none; }
:is(.account, .authpage) .woocommerce-notices-wrapper { display: grid; gap: .5rem; }
:is(.account, .authpage) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; list-style: none; margin: 0; padding: .875rem 1rem; border: 1px solid var(--co-border); border-radius: var(--radius); background: #fff; font-size: .875rem; line-height: 1.5; color: var(--ink); }
:is(.account, .authpage) .woocommerce-error { display: block; border-color: rgb(155 59 59 / .35); background: #fbf0ee; }
:is(.account, .authpage) .woocommerce-error li { margin: 0; }
:is(.account, .authpage) .woocommerce-error li + li { margin-top: .25rem; }
:is(.account, .authpage) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error) a:not(.button) { color: var(--ink); font-weight: 500; text-decoration: underline; text-decoration-color: var(--sand); text-underline-offset: .2em; }
:is(.account, .authpage) :is(.woocommerce-message, .woocommerce-info) .button { order: 2; margin-left: auto; min-height: 2.5rem; padding: .5rem 1rem; font-size: .875rem; }

/* WooCommerce buttons the theme's templates don't reach (plugins, notices): the theme's ghost button */
:is(.account, .authpage) :is(a.button, button.button, .woocommerce-Button):not(.btn, .link, #place_order) { display: inline-flex; align-items: center; justify-content: center; gap: .5em; min-height: 2.75rem; padding: .6rem 1.25rem; border: 1px solid var(--ink); border-radius: var(--radius); background: transparent; color: var(--ink); font: 500 var(--fs-ui)/1.2 var(--sans); letter-spacing: .01em; text-decoration: none; cursor: pointer; transition: background-color var(--dur-quick) var(--ease-out), color var(--dur-quick) var(--ease-out); }
:is(.account, .authpage) :is(a.button, button.button, .woocommerce-Button):not(.btn, .link, #place_order):hover { background: var(--ink); color: var(--canvas); }
.account .link.button { background: none; border: 0; padding: 0; min-height: 2.75rem; display: inline-flex; align-items: center; font-size: .875rem; color: var(--ink-2); }
.account .link.button:hover { color: var(--ink); }

/* Orders: hairline rows; actions as buttons (pay first), cancel a quiet link */
.olist { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.olist__item { display: grid; gap: .875rem 1.5rem; padding-block: 1.25rem; border-bottom: 1px solid var(--line); }
@media (min-width: 48em) { .olist__item { grid-template-columns: minmax(0, 1fr) auto; align-items: center; } }
.olist__main { display: grid; gap: .3rem; min-width: 0; }
.olist__title { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .75rem; font: 500 1.125rem/1.25 var(--display); }
.olist__title a { text-decoration: none; }
.olist__title a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.olist__meta { display: flex; flex-wrap: wrap; gap: .1rem .45rem; font-size: .875rem; color: var(--ink-2); }
.olist__items { font-size: .875rem; line-height: 1.45; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.olist__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem; }
.olist__actions .btn { min-height: 2.75rem; padding: .5rem 1.25rem; }
.olist__actions .link { order: 3; }
@media (max-width: 47.99em) { .olist__actions .btn { flex: 1 1 0; } }
.olist__extra { font-size: .875rem; color: var(--ink-2); }
.acct-pager { display: flex; justify-content: space-between; gap: var(--s3); }

/* One order: back link, number + status, then the details */
.odr-head { display: grid; gap: .5rem; justify-items: start; }
.odr-head__back { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; margin-block: -.5rem -.25rem; color: var(--ink-2); text-decoration: none; font-weight: 400; }
.odr-head__back:hover { color: var(--ink); text-decoration: underline; }
.odr-head__back .icon { width: 1rem; height: 1rem; }
.odr-head__title { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .75rem; font: 500 clamp(1.5rem, 1.3rem + .8vw, 1.875rem)/1.15 var(--display); }
.odr-head__title .badge { font-size: .75rem; }
.odr-head__meta { color: var(--ink-2); font-size: .9375rem; }
.odr-head__meta strong, .odr-head__meta time { color: var(--ink); font-weight: 500; }
.onotes { display: grid; gap: var(--s4); }
.onotes__list { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.onotes__list li { display: grid; gap: .2rem; padding-block: .875rem; border-bottom: 1px solid var(--line); font-size: .9375rem; }
.onotes__list .description > * + * { margin-top: .5em; }

/* Order details (order received + account): the checkout summary on a stone panel */
.odr { display: grid; gap: var(--s4); }
.odr__title, .thanks__body .odr__title { font: 500 1.25rem/1.2 var(--display); margin: 0; }
.odr__panel { padding: 1.5rem; background: var(--limestone); }
@media (max-width: 29.99em) { .odr__panel { padding: 1.25rem 1rem; margin-inline: calc(-1 * var(--gutter) + .25rem); } }
.odr table.odr__table { width: 100%; border-collapse: collapse; font-size: .9375rem; }
.odr table.odr__table :is(th, td) { padding: .3rem 0; border: 0; text-align: left; font-weight: 400; vertical-align: middle; color: var(--ink); }
.odr table.odr__table td:last-child { text-align: right; white-space: nowrap; padding-left: 1rem; }
.odr table.odr__table tbody td { padding: 0 0 1rem; }
.odr table.odr__table tbody tr:last-child td { padding-bottom: 1.25rem; }
.odr table.odr__table tbody td.product-name { width: 100%; }
.odr table.odr__table tfoot tr:first-child :is(th, td) { border-top: 1px solid var(--co-border, #d9cfbf); padding-top: 1.25rem; }
.odr table.odr__table tfoot tr:has(+ .odr__row--order_total) :is(th, td) { padding-bottom: 1rem; }
.odr table.odr__table tfoot .odr__row--order_total :is(th, td) { border-top: 1px solid var(--co-border, #d9cfbf); padding-top: 1rem; font: 500 1.25rem/1.2 var(--sans); vertical-align: baseline; }
.odr table.odr__table tfoot :is(.odr__row--payment_method, .odr__row--note) :is(th, td) { padding-top: .75rem; font-size: .8125rem; color: var(--ink-2); }
.odr table.odr__table tfoot td:last-child { white-space: normal; } /* long payment / delivery names wrap on small phones */
@media (min-width: 22.5em) { .odr table.odr__table tfoot td:last-child { min-width: 9rem; } } /* …but never word by word beside a long set line */
.odr .shipped_via { display: block; font-size: .8125rem; color: var(--ink-2); }
.odr .co__name { line-height: 1.4; }
.odr .co__name a { text-decoration: none; }
.odr .co__name a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.odr .wc-item-meta { list-style: none; margin: 0; padding: 0; font-size: .8125rem; color: var(--ink-2); }
.odr .wc-item-meta p { display: inline; }
.odr .product-purchase-note td { font-size: .875rem; color: var(--ink-2); }
.odr__actions, .odr .order-again { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin: 0; }
.odr__actions .link { font-size: .875rem; color: var(--ink-2); }
/* Addresses on an order: two quiet cards, upright text */
.odr-addr__grid { display: grid; gap: var(--s4); }
@media (min-width: 40em) { .odr-addr__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } /* a lone billing card keeps half */
.odr-addr__card { display: grid; gap: .5rem; align-content: start; padding: 1.25rem 1.5rem; border: 1px solid var(--line); }
.odr-addr__card h2, .thanks__body .odr-addr__card h2 { font: 500 var(--fs-eyebrow)/1.2 var(--sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ink-2); margin: 0; }
.odr-addr address { font-style: normal; font-size: .9375rem; line-height: 1.6; overflow-wrap: anywhere; }
.odr-addr address p { margin: 0; }
.woocommerce-MyAccount-content > .odr-addr, .woocommerce-MyAccount-content > .odr + * { margin-top: var(--s5); }

/* Saved addresses */
.acct-addrs { display: grid; gap: var(--s4); }
@media (min-width: 48em) { .acct-addrs { grid-template-columns: 1fr 1fr; } }
.acct-addr { display: grid; gap: .75rem; align-content: start; padding: 1.5rem; background: var(--limestone); }
.acct-addr__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--s4); }
.acct-addr__head h3 { font: 500 1.125rem/1.2 var(--display); }
.acct-addr__head .link { display: inline-flex; align-items: center; min-height: 2.75rem; margin-block: -.75rem; }
.acct-addr address { font-style: normal; font-size: .9375rem; line-height: 1.6; overflow-wrap: anywhere; }

/* Account forms: the checkout's fields */
.acct-form { display: grid; gap: var(--s6); max-width: 36rem; }
.acct-form .woocommerce-address-fields { display: grid; gap: var(--s5); }
.acct-sec { display: grid; gap: 1rem; min-width: 0; margin: 0; padding: 0; border: 0; }
fieldset.acct-sec { display: block; }
fieldset.acct-sec > legend { float: left; width: 100%; padding: 0; margin: 0 0 .5rem; }
fieldset.acct-sec > legend + * { clear: both; }
fieldset.acct-sec > .acct-lede { margin-bottom: 1rem; }
.acct-pw { padding-top: var(--s6); border-top: 1px solid var(--line); }
.acct-form .field-hint { font-size: .8125rem; color: var(--ink-2); }
.acct-form .form-row select { -webkit-appearance: none; appearance: none; padding-right: 2.5rem; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232A1C14' stroke-width='1.5'%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3C/svg%3E") right .75rem center / 1.1rem no-repeat; cursor: pointer; }
.acct-form .pw input.input-text { padding-right: 4.5rem; }
.acct-form__actions { display: flex; flex-wrap: wrap; gap: var(--s3); margin: 0; }
.acct-form__actions .btn { min-width: 12rem; }
@media (max-width: 29.99em) { .acct-form__actions .btn { width: 100%; } }
/* Postcode lookup (if the plugin adds it here): the checkout's quiet row */
/* Grid unless the plugin has hidden the row (it does when the finder cannot load). */
.acct-form .idpc_lookup:not([style*="display: none"]) { display: grid !important; }
.acct-form .idpc_lookup { flex: 1 0 100%; grid-template-columns: minmax(0, 1fr) auto; gap: .375rem .5rem; margin: 0 !important; padding: 0 !important; border: 0 !important; background: none !important; }

/* Saved cards */
.pmlist { list-style: none; padding: 0; border-top: 1px solid var(--line); }
.pmlist__item { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.5rem; padding-block: 1rem; border-bottom: 1px solid var(--line); font-size: .9375rem; }
.pmlist__cell--method { flex: 1 1 14rem; display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .6rem; }
.pmlist__cell--method strong { font-weight: 500; }
.pmlist__cell--actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; }
.pmlist__cell--actions .btn { min-height: 2.5rem; padding: .4rem 1rem; font-size: .875rem; }
.acct-addpm { max-width: 32rem; }
.acct-addpm #payment .payment_box .form-row { display: grid; gap: .375rem; }

/* Signed out: forgotten / new password, in the sign-in panel's style */
.authpage .auth__form > p.muted { margin: 0; }
.auth__sent { display: grid; gap: var(--s3); }
.auth__sent .lead { font-size: 1.125rem; }
.authpage .woocommerce { display: grid; gap: var(--s4); }
.authpage .woocommerce > .auth__guest { margin-top: var(--s2); }

/* Paying for an existing order: the checkout's split page. page-checkout.php wraps order-pay in a reading
   column with its own heading; once the theme form is there, the column opens out and that heading goes
   (the form has its own h1 in the payment column). */
.paypage:has(.co--pay) > .page-head { display: none; }
.paypage:has(.co--pay) > .woo-page, .paypage:has(.co--pay) .woocommerce { width: auto; max-width: none; margin: 0; padding: 0; }
.paypage:has(.co--pay) + .section--tight { display: none; }
.co__head { display: grid; gap: .5rem; }
.co__title { font-size: clamp(1.875rem, 1.5rem + 1.4vw, 2.5rem); line-height: 1.1; }
.co--pay .co__head .small { max-width: 30rem; }
.co--pay table.co__table tfoot td { white-space: normal; }
.co--pay .shipped_via { display: block; font-size: .8125rem; color: var(--ink-2); }
.co--pay .wc-item-meta { list-style: none; margin: 0; padding: 0; font-size: .8125rem; color: var(--ink-2); }
.co--pay .wc-item-meta p { display: inline; }
@media (max-width: 63.99em) { .co--pay { align-items: stretch; } }
/* WooCommerce moves focus to a new notice (so it is announced); no focus ring on a box that can't be used. */
:is(.account, .authpage, .co) :is(.woocommerce-message, .woocommerce-info, .woocommerce-error, .woocommerce-NoticeGroup)[tabindex="-1"]:focus { outline: none; }
.acct-card__title { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .75rem; }
.acct-card__title .badge { margin-left: 0; }

/* Stripe derives its iframe inputs from these fields, copying padding and line-height
   but not the fixed height. Explicit vertical padding keeps both at 48px. */
.co input.input-text, .acct-addpm #wc-stripe-hidden-style-input {
  padding-top: .8125rem;
  padding-bottom: .8125rem;
  line-height: 1.25;
}
:is(.co, .paypage, .acct-addpm) #wc-stripe-upe-form {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
