/* Mini-cart drawer content */
.kf-mini-cart__head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 20px;
}

.kf-mini-cart__title {
  font: 300 30px/1 var(--kf-font-serif);
}

.kf-mini-cart__count {
  font: 300 12px/1 var(--kf-font-sans);
  color: var(--kf-text-muted-2);
}

.kf-mini-cart__items {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin-bottom: 22px;
}

.kf-mini-cart__item {
  display: flex;
  gap: 14px;
  align-items: center;
  position: relative;
}

.kf-mini-cart__item-media img {
  width: 66px;
  height: 84px;
  object-fit: cover;
  border-radius: 3px;
}

.kf-mini-cart__item-body {
  flex: 1;
  min-width: 0;
}

.kf-mini-cart__item-name {
  font: 400 14px/1.3 var(--kf-font-sans);
  color: var(--kf-ink);
}

.kf-mini-cart__item-meta {
  font: 300 12px/1 var(--kf-font-sans);
  color: var(--kf-text-muted-2);
  margin-top: 5px;
}

.kf-mini-cart__item-meta dl,
.kf-mini-cart__item-meta p {
  margin: 0;
}

.kf-mini-cart__item-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
}

.kf-qty-stepper {
  display: flex;
  align-items: center;
  border: 1px solid var(--kf-border-2);
  border-radius: 999px;
}

.kf-qty-stepper__btn {
  border: 0;
  background: none;
  font: 400 12px/1 var(--kf-font-sans);
  padding: 7px 11px;
  color: var(--kf-text-muted);
  cursor: pointer;
}

.kf-qty-stepper__value {
  font: 400 12px/1 var(--kf-font-sans);
  color: var(--kf-ink);
  min-width: 14px;
  text-align: center;
}

.kf-mini-cart__item-price {
  font: 500 14px/1 var(--kf-font-sans);
  color: var(--kf-ink);
  margin-left: auto;
}

.kf-mini-cart__remove {
  position: absolute;
  top: 0;
  right: 0;
  font-size: 16px;
  line-height: 1;
  color: var(--kf-text-muted-3);
}

.kf-mini-cart__totals {
  border-top: 1px solid var(--kf-border-2);
  padding-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 20px;
}

.kf-mini-cart__totals-row {
  display: flex;
  justify-content: space-between;
  font: 300 13px/1 var(--kf-font-sans);
  color: var(--kf-text-muted);
}

.kf-mini-cart__totals-row--total {
  align-items: baseline;
  margin-top: 6px;
  font: 400 15px/1 var(--kf-font-sans);
  color: var(--kf-ink);
}

.kf-mini-cart__totals-row--total span:last-child {
  font: 400 26px/1 var(--kf-font-serif);
}

.kf-mini-cart__footnote {
  font: 300 11px/1.4 var(--kf-font-sans);
  color: var(--kf-text-muted-3);
  text-align: center;
  margin-top: 12px;
}

.kf-mini-cart__empty {
  font: 300 14px/1.6 var(--kf-font-sans);
  color: var(--kf-text-muted);
  margin-bottom: 16px;
}

/*
 * Checkout layout. Everything WooCommerce prints via
 * `woocommerce_before_checkout_form` (notices, the coupon toggle/form) lands
 * OUTSIDE the `.woocommerce-checkout` <form> itself, directly in the bare
 * `.woocommerce` wrapper — give it the same horizontal margin so it doesn't
 * sit flush against the edge above the form.
 */
.woocommerce-notices-wrapper,
.woocommerce-form-coupon-toggle,
.woocommerce-form-coupon {
  max-width: 1440px;
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--kf-margin-mobile);
  padding-right: var(--kf-margin-mobile);
}

.woocommerce-form-coupon-toggle {
  padding-top: 40px;
}

/*
 * IMPORTANT: qualified as `form.woocommerce-checkout`, not bare
 * `.woocommerce-checkout` — WooCommerce also puts a `woocommerce-checkout`
 * class on <body> itself (page-context body class). An unqualified
 * `.woocommerce-checkout { display:grid }` matches BOTH the real form AND
 * <body>, turning the entire page (header/main/footer/nav) into a 2-column
 * grid. Same reasoning applies to the desktop override below.
 */
form.woocommerce-checkout {
  max-width: 1440px;
  margin: 0 auto;
  padding: 40px var(--kf-margin-mobile) 80px;
  display: grid;
  gap: 40px;
}

/*
 * `woocommerce/checkout/form-checkout.php` wraps the form fields and the
 * order-review block in exactly two containers (`.kf-checkout-grid__form` /
 * `.kf-checkout-grid__summary`) specifically so this is a plain 2-item grid
 * — no auto-placement of a variable number of core children (col2-set,
 * the order-review heading, #order_review, plus whatever hooks like Order
 * Attribution inject as extra siblings) to go wrong.
 */
.kf-checkout-grid__summary {
  display: flex;
  flex-direction: column;
}

@media (min-width: 1024px) {
  .woocommerce-notices-wrapper,
  .woocommerce-form-coupon-toggle,
  .woocommerce-form-coupon {
    padding-left: var(--kf-margin-desktop);
    padding-right: var(--kf-margin-desktop);
  }

  form.woocommerce-checkout {
    padding: 60px var(--kf-margin-desktop) 90px;
    grid-template-columns: 1fr 480px;
    align-items: start;
  }
}

form.woocommerce-checkout h3 {
  font: 300 32px/1 var(--kf-font-serif);
  color: var(--kf-ink);
  margin: 40px 0 20px;
}

#order_review_heading {
  margin-top: 0;
}

/* Form fields: label above, underline style */
.woocommerce-checkout .form-row {
  margin: 0 0 0;
  padding: 0;
}

.woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
.woocommerce-checkout .woocommerce-shipping-fields__field-wrapper,
.woocommerce-checkout .woocommerce-additional-fields__field-wrapper {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
}

@media (min-width: 640px) {
  .woocommerce-checkout .woocommerce-billing-fields__field-wrapper,
  .woocommerce-checkout .woocommerce-shipping-fields__field-wrapper {
    grid-template-columns: 1fr 1fr;
    column-gap: 26px;
  }

  .woocommerce-checkout .form-row-wide {
    grid-column: 1 / -1;
  }
}

.woocommerce-checkout .form-row label {
  display: block;
  font: 400 10px/1 var(--kf-font-sans);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--kf-text-muted-3);
  margin-bottom: 8px;
}

.woocommerce-checkout .form-row input.input-text,
.woocommerce-checkout .form-row textarea,
.woocommerce-checkout .form-row select,
.woocommerce-checkout .select2-selection {
  width: 100%;
  border: 0;
  border-bottom: 1px solid var(--kf-border-2);
  background: transparent;
  font: 300 16px/1 var(--kf-font-sans);
  color: var(--kf-ink);
  padding: 0 0 16px;
  border-radius: 0;
}

.woocommerce-checkout .form-row {
  padding-bottom: 16px;
}

.woocommerce-checkout .form-row input.input-text:focus,
.woocommerce-checkout .form-row textarea:focus,
.woocommerce-checkout .form-row select:focus {
  outline: none;
  border-bottom-color: var(--kf-ink);
}

/* Shipping method cards */
.kf-shipping-methods {
  display: grid;
  gap: 16px;
  grid-template-columns: 1fr;
}

@media (min-width: 640px) {
  .kf-shipping-methods {
    grid-template-columns: repeat(3, 1fr);
  }
}

.kf-shipping-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  border: 1px solid var(--kf-border-2);
  border-radius: var(--kf-radius-panel);
  padding: 18px 24px;
  cursor: pointer;
}

.kf-shipping-card:has(.kf-shipping-card__radio:checked) {
  border-color: var(--kf-ink);
  background: var(--kf-cream);
}

.kf-shipping-card__radio {
  position: absolute;
  top: 18px;
  left: 18px;
  width: 20px;
  height: 20px;
  margin: 0;
  appearance: none;
  border: 1px solid var(--kf-border);
  border-radius: 999px;
}

.kf-shipping-card__radio:checked {
  border-width: 6px;
  border-color: var(--kf-ink);
}

.kf-shipping-card__dot {
  display: none;
}

.kf-shipping-card__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: 28px;
}

.kf-shipping-card__title {
  font: 400 18px/1.2 var(--kf-font-serif);
  color: var(--kf-ink);
}

.kf-shipping-card__price {
  font: 400 16px/1 var(--kf-font-sans);
  color: var(--kf-ink);
}

.kf-shipping-destination {
  font: 300 13px/1.6 var(--kf-font-sans);
  color: var(--kf-text-muted);
  margin-top: 14px;
}

/* Order review table */
.woocommerce-checkout-review-order-table {
  width: 100%;
  border-collapse: collapse;
}

#order_review {
  background: #F2EFE8;
  padding: 30px;
  border-radius: var(--kf-radius-panel);
}

.woocommerce-checkout-review-order-table thead {
  display: none;
}

.woocommerce-checkout-review-order-table tbody tr {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 0;
  border-bottom: 1px solid var(--kf-border-2);
  font: 300 14px/1.5 var(--kf-font-sans);
}

.woocommerce-checkout-review-order-table tfoot tr {
  display: flex;
  justify-content: space-between;
  padding: 10px 0;
  font: 300 13px/1 var(--kf-font-sans);
  color: var(--kf-text-muted);
}

.woocommerce-checkout-review-order-table tfoot .order-total {
  border-top: 1px solid var(--kf-border-2);
  margin-top: 10px;
  padding-top: 16px;
  font: 400 15px/1 var(--kf-font-sans);
  color: var(--kf-ink);
  align-items: baseline;
}

.woocommerce-checkout-review-order-table tfoot .order-total .woocommerce-Price-amount {
  font: 400 26px/1 var(--kf-font-serif);
}

/* Payment methods */
.wc_payment_methods {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 20px 0 0;
}

.wc_payment_method {
  border: 1px solid var(--kf-border-2);
  border-radius: var(--kf-radius-panel);
  padding: 18px;
}

.wc_payment_method input.input-radio {
  appearance: none;
  width: 20px;
  height: 20px;
  border: 1px solid var(--kf-border);
  border-radius: 999px;
  margin-right: 12px;
  vertical-align: middle;
}

.wc_payment_method input.input-radio:checked {
  border-width: 6px;
  border-color: var(--kf-ink);
}

.wc_payment_method label {
  font: 400 17px/1.2 var(--kf-font-serif);
  color: var(--kf-ink);
  cursor: pointer;
}

.payment_box {
  font: 300 13px/1.6 var(--kf-font-sans);
  color: var(--kf-text-muted);
  margin-top: 10px;
  padding-left: 32px;
}

.payment_box p {
  margin: 0;
}

#place_order {
  width: 100%;
  font: 500 12px/1 var(--kf-font-sans);
  letter-spacing: .16em;
  text-transform: uppercase;
  background: var(--kf-gold);
  color: var(--kf-ink);
  border: 0;
  border-radius: var(--kf-radius-pill);
  padding: 19px 0;
  cursor: pointer;
  margin-top: 20px;
}

#place_order:hover {
  background: var(--kf-ink);
  color: var(--kf-gold);
}

.woocommerce-terms-and-conditions-wrapper {
  font: 300 12px/1.6 var(--kf-font-sans);
  color: var(--kf-text-muted);
  margin-top: 16px;
}

/* Order confirmation (immersive, no header/footer chrome — see header.php/footer.php) */
.kf-confirmation {
  position: relative;
  min-height: 100vh;
  background: var(--kf-ink);
  color: var(--kf-cream);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 40px 30px;
  overflow: hidden;
}

.kf-confirmation--failed {
  min-height: auto;
  background: var(--kf-cream);
  color: var(--kf-ink);
  padding-top: 60px;
  padding-bottom: 60px;
  gap: 20px;
}

.kf-confirmation__glow {
  position: absolute;
  inset: 0;
  background: radial-gradient(120% 80% at 50% 20%, rgba(233, 195, 59, .16), transparent 60%);
}

.kf-confirmation__check {
  position: relative;
  width: 96px;
  height: 96px;
  border-radius: 999px;
  border: 1px solid rgba(233, 195, 59, .5);
  display: flex;
  align-items: center;
  justify-content: center;
  animation: kfFloat 5s ease-in-out infinite;
}

.kf-confirmation__check svg {
  width: 44px;
  height: 44px;
}

.kf-confirmation__check path {
  stroke-dasharray: 40;
  animation: kfDraw 1.2s .3s ease both;
}

.kf-confirmation__title {
  position: relative;
  font: 300 38px/1.1 var(--kf-font-serif);
  color: var(--kf-cream);
  margin-top: 30px;
}

.kf-confirmation__lede {
  position: relative;
  font: 300 14px/1.7 var(--kf-font-sans);
  color: rgba(250, 248, 244, .7);
  margin: 16px 0 0;
  max-width: 420px;
}

.kf-confirmation__order-number {
  color: var(--kf-gold);
}

.kf-confirmation__actions {
  position: relative;
  margin-top: 34px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
  max-width: 320px;
}

.kf-confirmation__logo {
  position: relative;
  filter: invert(1) brightness(1.6);
  opacity: .5;
  margin-top: 40px;
}

/*
 * Cart & My Account pages use page-templates/template-woocommerce-page.php,
 * which renders the WooCommerce shortcode with no wrapping container (to
 * avoid doubling up with the shortcode's own layout, see that file's
 * comment). That means THIS is the only source of horizontal page margins
 * for those two — checkout doesn't need it since `.woocommerce-checkout`
 * below already carries its own complete padding.
 */
body.woocommerce-cart #kf-main > .woocommerce,
body.woocommerce-account #kf-main > .woocommerce {
  display: block;
  max-width: 1440px;
  margin: 0 auto;
  padding: 40px var(--kf-margin-mobile) 80px;
}

@media (min-width: 782px) {
  body.woocommerce-cart #kf-main > .woocommerce,
  body.woocommerce-account #kf-main > .woocommerce {
    padding: 60px var(--kf-margin-desktop) 100px;
  }
}

/* Cart page (full page, not the drawer) */
.woocommerce-cart table.shop_table {
  width: 100%;
  border-collapse: collapse;
  margin: 30px 0;
}

.woocommerce-cart table.shop_table td,
.woocommerce-cart table.shop_table th {
  padding: 14px 10px;
  border-bottom: 1px solid var(--kf-border-2);
  text-align: left;
  font: 300 14px/1.5 var(--kf-font-sans);
}
