/* AquaJoy v2: ekrany WooCommerce i voucher. Ładowany wszędzie, bo karty produktów
   i voucher stoją też na stronach treści. Tylko tokeny z tokens.css. */

/* =========================================================================
   0. Proza wokół Woo
   page.php owija koszyk, kasę i konto w .aj-prose; tu to interfejs, więc zerujemy przecieki.
   ========================================================================= */

.aj-prose > .woocommerce {
  max-width: none;
  color: var(--c-fg);
  font-size: var(--t-ui);
  line-height: 1.5;
}

/* Poza wnętrzem .aj-empty: jego marginesy z components.css i tak wygrywają z prozą. */
.aj-prose .woocommerce :where(p, ul, ol, dl, h2, h3, h4):not(:where(.aj-empty *)) {
  margin: 0;
}

.aj-prose .woocommerce :where(ul, ol) {
  padding: 0;
  list-style: none;
}

.aj-prose .woocommerce li {
  padding-left: 0;
}

.aj-prose .woocommerce li + li {
  margin-top: 0;
}

.aj-prose .woocommerce a:where(:not([class])) {
  color: inherit;
  text-decoration: none;
}

.aj-prose .woocommerce strong {
  color: inherit;
}

/* Linki w zdaniach (komunikaty, zgody, stopki kart) mają wyglądać jak linki. */
.aj-prose .woocommerce :is(.aj-inline, .woocommerce-message, .woocommerce-info, .woocommerce-error, .aj-consent__text, .aj-consent__full, .aj-recap__foot, .aj-auth__privacy, .woocommerce-privacy-policy-text) a:not([class]),
.aj-inline a:not([class]) {
  color: var(--c-fg);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: var(--c-line-field);
  text-underline-offset: 0.2em;
}

.aj-prose .woocommerce :is(.woocommerce-message, .woocommerce-info, .woocommerce-error, .aj-consent__text, .aj-consent__full, .aj-recap__foot) a:not([class]):hover {
  text-decoration-color: currentColor;
}

/* =========================================================================
   1. Chrome stron transakcyjnych
   Koszyk, kasa i konto: mały tytuł, treść od razu pod nim, bez docka.
   ========================================================================= */

:is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .aj-phero {
  padding-top: var(--s-10);
  padding-bottom: var(--s-6);
}

:is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .aj-phero h1 {
  max-width: none;
  font-size: var(--t-h2);
  letter-spacing: var(--tr-h2);
  line-height: var(--lh-head);
}

:is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .aj-phero__in > .aj-crumbs {
  margin-bottom: var(--s-4);
}

.woocommerce-checkout .aj-phero__in > .aj-crumbs {
  display: none;
}

:is(.woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .aj-phero + .aj-section {
  padding-top: var(--s-8);
}

/* Dock zasłaniał pola i przycisk płatności, a z klawiaturą walczył o miejsce. */
@media (max-width: 1023.98px) {
  body:is(.single-product, .woocommerce-cart, .woocommerce-checkout, .woocommerce-account) .aj-tabbar {
    display: none;
  }

  body:is(.single-product, .woocommerce-cart, .woocommerce-checkout, .woocommerce-account).has-tabbar .aj-footer {
    padding-bottom: env(safe-area-inset-bottom);
  }
}

/* =========================================================================
   2. Komunikaty Woo
   ========================================================================= */

.woocommerce-notices-wrapper:empty {
  display: none;
}

.woocommerce-message,
.woocommerce-info,
.woocommerce-error {
  --note: var(--c-fg-2);
  position: relative;
  display: block;
  margin: 0 0 var(--s-5);
  padding: 12px var(--s-4) 12px 44px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg-2);
  color: var(--c-fg);
  font-size: var(--t-ui);
  line-height: 1.5;
  list-style: none;
  text-wrap: pretty;
}

.woocommerce-message::before,
.woocommerce-info::before,
.woocommerce-error::before {
  content: "";
  position: absolute;
  top: 14px;
  left: 16px;
  width: 18px;
  height: 18px;
  background: var(--note);
  -webkit-mask: var(--note-ico) center / contain no-repeat;
  mask: var(--note-ico) center / contain no-repeat;
}

.woocommerce-info {
  --note-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11.2v5M12 7.8h.01'/%3E%3C/svg%3E");
}

.woocommerce-message {
  --note: var(--c-ok);
  --note-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='m8.5 12 2.5 2.5 4.5-5'/%3E%3C/svg%3E");
  border-color: color-mix(in srgb, var(--c-ok) 22%, var(--c-bg));
  background: var(--c-ok-bg);
}

.woocommerce-error {
  --note: var(--c-err);
  --note-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.5h.01'/%3E%3C/svg%3E");
  border-color: color-mix(in srgb, var(--c-err) 22%, var(--c-bg));
  background: var(--c-err-bg);
}

.woocommerce-error li {
  padding: 0;
}

.woocommerce-error li + li {
  margin-top: var(--s-1);
}

.woocommerce-error strong,
.woocommerce-message strong {
  font-weight: 600;
}

/* Woo sam przenosi fokus na komunikat (tabindex=-1) dla czytnika ekranu.
   Komunikat nie jest klikalny, więc bez pierścienia: wyglądał jak zaznaczone pole. */
.woocommerce-notices-wrapper [tabindex="-1"]:focus,
.woocommerce-message[tabindex="-1"]:focus,
.woocommerce-info[tabindex="-1"]:focus,
.woocommerce-error[tabindex="-1"]:focus,
.woocommerce-NoticeGroup:focus,
.woocommerce-NoticeGroup [tabindex="-1"]:focus {
  outline: none;
}

/* "Zobacz koszyk" Woo: link w wierszu komunikatu, nie drugi przycisk. */
.woocommerce-message .button,
.woocommerce-info .button {
  float: right;
  margin: 0 0 0 var(--s-4);
  padding: 0;
  border: 0;
  background: none;
  color: var(--c-fg);
  font: inherit;
  font-weight: 500;
  text-decoration: underline;
  text-decoration-color: var(--c-line-hover);
  text-underline-offset: 0.2em;
  cursor: pointer;
}

.woocommerce-NoticeGroup {
  margin-bottom: var(--s-6);
}

.woocommerce-NoticeGroup .woocommerce-error {
  margin: 0;
}

/* =========================================================================
   3. Przyciski rdzenia Woo
   CSS Woo jest wyłączony: bez tego "Zamawiam i płacę" to szary ButtonFace (lustro .aj-btn).
   ========================================================================= */

.single_add_to_cart_button,
.checkout-button,
#place_order,
.woocommerce-form-login__submit,
.woocommerce-form-register__submit,
.woocommerce-EditAccountForm button[type="submit"],
.woocommerce-ResetPassword button[type="submit"],
.woocommerce-address-fields button[type="submit"],
.woocommerce-cart-form button[name="update_cart"],
.woocommerce .button.wc-backward,
.woocommerce-orders-table .button,
.woocommerce-MyAccount-content .woocommerce-Button,
.woocommerce-MyAccount-content .woocommerce-button,
.woocommerce-order-again .button,
.woocommerce-verify-email .button,
.woocommerce-pagination .button {
  --btn-bg: var(--c-fg);
  --btn-fg: var(--c-inverse);
  --btn-bd: var(--c-fg);
  --btn-bg-h: var(--c-btn-hover);
  --btn-bd-h: var(--c-btn-hover);
  --btn-fg-h: var(--c-inverse);
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--s-2);
  min-height: 44px;
  margin: 0;
  padding: 10px 18px;
  border: 1px solid var(--btn-bd);
  border-radius: var(--r-sm);
  background: var(--btn-bg);
  color: var(--btn-fg);
  font-family: inherit;
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
  letter-spacing: var(--tr-ui);
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--d-fast) var(--e-std),
    border-color var(--d-fast) var(--e-std),
    color var(--d-fast) var(--e-std),
    opacity var(--d-fast) var(--e-std),
    transform var(--d-fast) var(--e-std);
}

.single_add_to_cart_button:hover,
.checkout-button:hover,
#place_order:hover,
.woocommerce-form-login__submit:hover,
.woocommerce-form-register__submit:hover,
.woocommerce-EditAccountForm button[type="submit"]:hover,
.woocommerce-ResetPassword button[type="submit"]:hover,
.woocommerce-address-fields button[type="submit"]:hover,
.woocommerce-cart-form button[name="update_cart"]:hover,
.woocommerce .button.wc-backward:hover,
.woocommerce-orders-table .button:hover,
.woocommerce-MyAccount-content .woocommerce-Button:hover,
.woocommerce-MyAccount-content .woocommerce-button:hover,
.woocommerce-verify-email .button:hover,
.woocommerce-order-again .button:hover {
  border-color: var(--btn-bd-h);
  background: var(--btn-bg-h);
  color: var(--btn-fg-h);
}

.single_add_to_cart_button:active,
.checkout-button:active,
#place_order:active,
.woocommerce-form-login__submit:active,
.woocommerce-form-register__submit:active {
  transform: scale(0.98);
}

.single_add_to_cart_button:focus-visible,
.checkout-button:focus-visible,
#place_order:focus-visible,
.woocommerce-form-login__submit:focus-visible,
.woocommerce-form-register__submit:focus-visible,
.woocommerce-cart-form button[name="update_cart"]:focus-visible,
.woocommerce-orders-table .button:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

/* Drugorzędne: odświeżenie koszyka i przyciski w tabelach konta. */
.woocommerce-cart-form button[name="update_cart"],
.woocommerce-orders-table .button,
.woocommerce-MyAccount-content .woocommerce-Button--previous,
.woocommerce-MyAccount-content .woocommerce-Button--next {
  --btn-bg: var(--c-bg);
  --btn-fg: var(--c-fg);
  --btn-bd: var(--c-line);
  --btn-bg-h: var(--c-bg-2);
  --btn-bd-h: var(--c-line-field);
  --btn-fg-h: var(--c-fg);
}

.woocommerce-orders-table .button {
  min-height: 36px;
  padding: 6px 12px;
  font-size: var(--t-sm);
}

/* Punkty zobowiązania: pełna szerokość, 48 px. */
.single_add_to_cart_button,
.checkout-button,
#place_order {
  width: 100%;
  min-height: 48px;
}

.single_add_to_cart_button:disabled,
#place_order:disabled,
.woocommerce-cart-form button[name="update_cart"]:disabled,
.woocommerce-cart-form button[name="update_cart"][disabled] {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

form.checkout.processing #place_order {
  opacity: 0.6;
  pointer-events: none;
}

/* =========================================================================
   4. Pola formularzy rdzenia Woo (kasa, konto, logowanie)
   Te same wartości co .aj-input z components.css: 44 px, 16 px, ramka #d4d4d4.
   ========================================================================= */

.woocommerce form .form-row {
  display: grid;
  gap: var(--s-2);
  min-width: 0;
  margin: 0;
  padding: 0;
}

.woocommerce form .form-row > label:not(.woocommerce-form__label-for-checkbox):not(.checkbox),
.woocommerce form .woocommerce-form-row > label {
  display: block;
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-sm);
  font-weight: 500;
  line-height: 1.4;
}

.woocommerce form .required {
  color: var(--c-fg-3);
  font-weight: 400;
  text-decoration: none;
  border: 0;
}

.woocommerce .optional {
  color: var(--c-fg-3);
  font-weight: 400;
}

.woocommerce-input-wrapper,
.password-input {
  display: block;
  position: relative;
}

.woocommerce form .input-text,
.woocommerce form select,
.woocommerce form textarea,
.woocommerce-EditAccountForm input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]) {
  display: block;
  width: 100%;
  min-height: 44px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--c-line-field);
  border-radius: var(--r-sm);
  background: var(--c-bg);
  color: var(--c-fg);
  font-family: inherit;
  font-size: 16px; /* 16 px, bo iOS przybliża pole z mniejszym pismem */
  line-height: 1.4;
  box-shadow: none;
  appearance: none;
  transition:
    border-color var(--d-fast) var(--e-std),
    box-shadow var(--d-fast) var(--e-std);
}

.woocommerce form textarea {
  min-height: 104px;
  resize: vertical;
  line-height: 1.5;
}

.woocommerce form select {
  padding-right: 40px;
  background: var(--c-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23555555' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center / 16px;
}

.woocommerce form :is(.input-text, select, textarea)::placeholder {
  color: var(--c-fg-3);
  opacity: 1;
}

.woocommerce form :is(.input-text, select, textarea):hover {
  border-color: var(--c-line-hover);
}

.woocommerce form :is(.input-text, select, textarea):focus {
  outline: none;
  border-color: var(--c-fg);
  box-shadow: 0 0 0 3px rgb(17 17 17 / 0.08);
}

/* Stany dokładane przez checkout.js po wyjściu z pola. */
.woocommerce form .form-row.woocommerce-invalid :is(.input-text, select, textarea) {
  border-color: var(--c-err);
}

.woocommerce form .form-row.woocommerce-invalid :is(.input-text, select, textarea):focus {
  box-shadow: 0 0 0 3px rgb(216 17 25 / 0.12);
}

.woocommerce form .form-row.woocommerce-invalid > label {
  color: var(--c-err);
}

.checkout-inline-error-message,
.woocommerce form .form-row .woocommerce-error-message {
  margin: 0;
  color: var(--c-err);
  font-size: var(--t-meta);
  line-height: 1.45;
}

/* Podpowiedź pola. woocommerce.js zwija ją po kliknięciu obok, a bez CSS Woo
   znikała na stałe; to jedyna informacja, po co nam telefon. */
.woocommerce-input-wrapper .description,
.woocommerce form .form-row .description {
  display: block !important;
  height: auto !important;
  margin: var(--s-2) 0 0 !important;
  padding: 0 !important;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

.woocommerce-MyAccount-content [id$="_description"] em,
.woocommerce form .form-row em {
  display: block;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-style: normal;
}

/* Checkbox Woo (zapamiętaj mnie, załóż konto, inny adres): 18 px, zaznaczony czarny. */
.woocommerce-form__label-for-checkbox,
.woocommerce form .form-row label.checkbox {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--s-3);
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 400;
  line-height: 1.5;
  cursor: pointer;
}

.woocommerce-form__input-checkbox,
.aj-consent__row input[type="checkbox"],
.aj-consent__all input[type="checkbox"] {
  flex: none;
  width: 18px;
  height: 18px;
  min-height: 0;
  margin: 2px 0 0;
  padding: 0;
  border: 1px solid var(--c-line-field);
  border-radius: 4px;
  background: var(--c-bg) center / 12px no-repeat;
  appearance: none;
  cursor: pointer;
  transition:
    background-color var(--d-fast) var(--e-std),
    border-color var(--d-fast) var(--e-std);
}

.woocommerce-form__input-checkbox:hover,
.aj-consent__row input[type="checkbox"]:hover,
.aj-consent__all input[type="checkbox"]:hover {
  border-color: var(--c-line-hover);
}

.woocommerce-form__input-checkbox:checked,
.aj-consent__row input[type="checkbox"]:checked,
.aj-consent__all input[type="checkbox"]:checked {
  border-color: var(--c-fg);
  background-color: var(--c-fg);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

.woocommerce-form__input-checkbox:focus-visible,
.aj-consent__row input[type="checkbox"]:focus-visible,
.aj-consent__all input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

/* Pokaż hasło: przycisk wstrzykuje woocommerce.js, bez CSS Woo był szarym paskiem 16x6. */
.password-input .input-text {
  padding-right: 48px;
}

.show-password-input {
  position: absolute;
  top: 0;
  right: 0;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: var(--r-sm);
  background: var(--c-fg-2);
  cursor: pointer;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center / 18px no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center / 18px no-repeat;
}

.show-password-input.display-password {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M4 4l16 16'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12Z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M4 4l16 16'/%3E%3C/svg%3E");
}

.show-password-input:hover {
  background: var(--c-fg);
}

.show-password-input:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: -2px;
}

/* Miernik siły hasła Woo (rejestracja, zmiana hasła): stan słowem i kolorem stanu. */
.woocommerce-password-strength {
  margin-top: var(--s-2);
  padding: 8px 12px;
  border-radius: var(--r-sm);
  background: var(--c-bg-2);
  color: var(--c-fg-2);
  font-size: var(--t-meta);
  font-weight: 500;
  line-height: 1.45;
}

.woocommerce-password-strength:empty {
  display: none;
}

.woocommerce-password-strength:is(.short, .bad) {
  background: var(--c-err-bg);
  color: var(--c-err);
}

.woocommerce-password-strength.good {
  background: var(--c-warn-bg);
  color: var(--c-warn);
}

.woocommerce-password-strength.strong {
  background: var(--c-ok-bg);
  color: var(--c-ok);
}

.woocommerce-password-hint {
  display: block;
  margin-top: var(--s-2);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

.woocommerce-form-register__submit:disabled,
.woocommerce-EditAccountForm button[type="submit"]:disabled,
.woocommerce-ResetPassword button[type="submit"]:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none;
}

/* Siatki pól: imię i nazwisko obok siebie, reszta na całą szerokość. */
.woocommerce-billing-fields__field-wrapper,
.woocommerce-shipping-fields__field-wrapper,
.woocommerce-additional-fields__field-wrapper,
.woocommerce-address-fields__field-wrapper,
.woocommerce-EditAccountForm {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-5) var(--s-4);
}

@media (min-width: 560px) {
  .woocommerce-billing-fields__field-wrapper,
  .woocommerce-shipping-fields__field-wrapper,
  .woocommerce-address-fields__field-wrapper,
  .woocommerce-EditAccountForm {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .woocommerce-billing-fields__field-wrapper > :not(.form-row-first):not(.form-row-last),
  .woocommerce-shipping-fields__field-wrapper > :not(.form-row-first):not(.form-row-last),
  .woocommerce-address-fields__field-wrapper > :not(.form-row-first):not(.form-row-last),
  .woocommerce-EditAccountForm > :not(.form-row-first):not(.form-row-last) {
    grid-column: 1 / -1;
  }
}

.woocommerce-EditAccountForm fieldset {
  display: grid;
  gap: var(--s-5);
  margin: var(--s-4) 0 0;
  padding: var(--s-6) 0 0;
  border: 0;
  border-top: 1px solid var(--c-line);
}

.woocommerce-EditAccountForm legend {
  float: left;
  width: 100%;
  margin: 0 0 var(--s-1);
  padding: 0;
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
}

.woocommerce-EditAccountForm legend + * {
  clear: both;
}

.woocommerce-EditAccountForm .clear {
  display: none;
}

/* Select kraju w kasie (tylko przy paczkomacie) idzie przez selectWoo. */
.woocommerce .select2-container .select2-selection--single {
  height: 44px;
  border: 1px solid var(--c-line-field);
  border-radius: var(--r-sm);
}

.woocommerce .select2-container .select2-selection--single .select2-selection__rendered {
  padding-left: 12px;
  color: var(--c-fg);
  font-size: 16px;
  line-height: 42px;
}

.woocommerce .select2-container .select2-selection--single .select2-selection__arrow {
  height: 42px;
}

/* Nakładka blockUI (przeliczanie kasy, koszyka): biała mgła z małym kółkiem. */
.woocommerce .blockUI.blockOverlay {
  position: relative;
  background: rgb(255 255 255 / 0.6) !important;
  opacity: 1 !important;
}

.woocommerce .blockUI.blockOverlay::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 20px;
  height: 20px;
  margin: -10px 0 0 -10px;
  border: 2px solid var(--c-line-field);
  border-top-color: var(--c-fg);
  border-radius: var(--r-pill);
  animation: aj-w-spin 0.7s linear infinite;
}

@keyframes aj-w-spin {
  to { transform: rotate(360deg); }
}

/* =========================================================================
   5. Sklep: nagłówek, skróty, sekcje
   ========================================================================= */

.aj-woo-head {
  padding-block: var(--s-12) var(--s-10);
}

.aj-woo-head .aj-crumbs {
  margin-bottom: var(--s-6);
}

.aj-woo-head h1 {
  margin: 0;
  font-size: var(--t-h1);
  letter-spacing: var(--tr-display);
  line-height: 1.04;
}

.aj-woo-head__lead {
  max-width: 60ch;
  margin: var(--s-4) 0 0;
  color: var(--c-fg-2);
  font-size: var(--t-lead);
  line-height: 1.55;
}

.aj-woo-head .woocommerce-notices-wrapper,
.aj-woo-head > .aj-wrap > .woocommerce-message,
.aj-woo-head > .aj-wrap > .woocommerce-error {
  margin-top: var(--s-6);
}

/* Sklep: dwa kadry obok tytułu (lekcja w Nowym Targu, basen w Bukowinie). Tylko desktop:
   na telefonie lista grup zostaje na pierwszym ekranie. */
.aj-woo-head__media {
  display: none;
}

/* Okruszki mają własny wiersz nad kopią i kadrami, więc górna krawędź kadrów stoi
   na linii H1, jak w hero podstron. */
@media (min-width: 1000px) {
  .aj-woo-head--split > .aj-wrap {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "crumbs crumbs"
      "copy media"
      "jump jump"
      "rest rest";
    column-gap: var(--s-16);
    align-items: start;
  }

  .aj-woo-head--split > .aj-wrap > .aj-crumbs {
    grid-area: crumbs;
  }

  .aj-woo-head--split .aj-woo-head__copy {
    grid-area: copy;
    min-width: 0;
  }

  .aj-woo-head--split .aj-jump {
    grid-area: jump;
  }

  .aj-woo-head--split > .aj-wrap > :not(.aj-crumbs, .aj-woo-head__copy, .aj-woo-head__media, .aj-jump) {
    grid-column: 1 / -1;
  }

  .aj-woo-head__media {
    grid-area: media;
    display: grid;
    grid-template-columns: repeat(2, 240px);
    gap: var(--s-3);
  }

  .aj-woo-head__shot {
    margin: 0;
    aspect-ratio: 1;
  }
}

@media (min-width: 1000px) and (prefers-reduced-motion: no-preference) {
  .aj-woo-head__shot {
    animation: aj-enter-media 800ms var(--e-out) backwards;
  }

  .aj-woo-head__shot:nth-child(2) {
    animation-delay: 120ms;
  }
}

/* Skróty do sekcji: na desktopie trzy karty, na telefonie rząd krótkich przycisków. */
.aj-jump {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
  grid-auto-flow: column;
  gap: var(--s-2);
  margin-top: var(--s-6);
}

.aj-jump__item {
  position: relative;
  display: grid;
  align-content: center;
  min-width: 0;
  min-height: 44px;
  padding: 8px 12px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg);
  color: var(--c-fg);
  text-decoration: none;
  transition:
    border-color var(--d-fast) var(--e-std),
    transform var(--d-fast) var(--e-std);
}

.aj-jump__item:hover {
  border-color: var(--c-line-hover);
}

.aj-jump__item:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

.aj-jump__t {
  padding-right: 18px;
  overflow: hidden;
  font-size: var(--t-sm);
  font-weight: 500;
  line-height: 1.35;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.aj-jump__d {
  display: none;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  line-height: 1.4;
}

.aj-jump__ico {
  position: absolute;
  top: 50%;
  right: 10px;
  width: 14px;
  height: 14px;
  margin-top: -7px;
  color: var(--c-fg-3);
  transition: transform var(--d-fast) var(--e-out), color var(--d-fast) var(--e-std);
}

.aj-jump__ico--down {
  transform: rotate(90deg);
}

.aj-jump__item:hover .aj-jump__ico {
  color: var(--c-fg);
}

.aj-jump__item:hover .aj-jump__ico--down {
  transform: rotate(90deg) translateX(2px);
}

@media (min-width: 768px) {
  .aj-jump {
    gap: var(--s-3);
    margin-top: var(--s-8);
  }

  .aj-jump__item {
    align-content: start;
    gap: 2px;
    min-height: 0;
    padding: var(--s-4) var(--s-5);
    border-radius: var(--r-md);
  }

  .aj-jump__item:hover {
    transform: translateY(-1px);
  }

  .aj-jump__t {
    font-size: var(--t-ui);
  }

  .aj-jump__d {
    display: block;
  }

  .aj-jump__ico {
    top: 20px;
    right: 18px;
    margin-top: 0;
    width: 16px;
    height: 16px;
  }
}

@media (max-width: 767.98px) {
  .aj-woo-head {
    padding-block: var(--s-6) var(--s-8);
  }

  .aj-shop .aj-woo-head .aj-crumbs {
    display: none;
  }

  .aj-jump {
    display: flex;
    flex-wrap: wrap;
  }

  .aj-jump__item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
  }

  .aj-jump__t {
    padding-right: 0;
  }

  .aj-jump__ico {
    position: static;
    margin: 0;
  }

  /* Link "O sekcji" stoi obok nadtytułu zamiast zajmować własny wiersz. */
  .aj-shop__head {
    position: relative;
  }

  .aj-shop__head > .aj-btn--link {
    position: absolute;
    top: -12px;
    right: 0;
  }
}

.aj-shop__sec {
  padding-block: 0 var(--s-16);
  scroll-margin-top: calc(var(--header-h) + var(--s-4));
}

.aj-shop__sec:last-child {
  padding-bottom: var(--section-y);
}

.aj-shop__head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--s-3) var(--s-6);
  margin-bottom: var(--s-5);
}

.aj-shop__head > div {
  min-width: 0;
}

.aj-shop__head .aj-eyebrow {
  margin: 0 0 var(--s-2);
}

.aj-shop__head h2 {
  margin: 0;
  font-size: var(--t-h2);
  letter-spacing: var(--tr-h2);
  line-height: var(--lh-head);
}

/* Link "O basenie" na linii bazowej faktów, nie 12 px nad nią. */
@media (min-width: 768px) {
  .aj-shop__head {
    align-items: last baseline;
  }
}

/* Wspólne fakty sekcji w jednej linii meta, zamiast w każdej karcie. */
.aj-shop__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 0;
  margin: var(--s-3) 0 0 -17px;
  padding: 0;
  clip-path: inset(0 0 0 17px);
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.5;
  list-style: none;
  font-variant-numeric: tabular-nums;
}

.aj-shop__facts li,
.aj-pcard__facts li {
  margin: 0;
  padding: 0;
}

/* Kropka przed każdą pozycją. Lista jest przesunięta o szerokość kropki w lewo
   i przycięta, więc linia (także zawinięta) nigdy nie zaczyna się od "·". */
.aj-shop__facts li::before,
.aj-pcard__facts li::before {
  content: "·";
  display: inline-block;
  width: 17px;
  color: var(--c-fg-3);
  text-align: center;
}

.aj-shop__help {
  margin: var(--s-4) 0 0;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
}

.aj-shop__help a {
  color: var(--c-fg);
  font-weight: 500;
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-color: var(--c-line-field);
  text-underline-offset: 0.2em;
}

.aj-shop__help a:hover {
  text-decoration-color: currentColor;
}

/* Telefon w zdaniu: 44 px celu dotyku bez podnoszenia wiersza. */
:is(.aj-shop__help, .aj-buy__help, .aj-recap__foot) a {
  display: inline-block;
  padding-block: 13px;
  margin-block: -13px;
}

/* Nowy Targ: jeden spokojny blok z Booksy i telefonem, bez listy grup. */
.aj-shop__nt {
  display: grid;
  gap: var(--s-5) var(--s-8);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg-2);
}

.aj-shop__nt .aj-eyebrow {
  margin: 0 0 var(--s-2);
}

.aj-shop__nt h2 {
  margin: 0;
  font-size: var(--t-h2);
  letter-spacing: var(--tr-h2);
  line-height: var(--lh-head);
}

.aj-shop__nt-copy p {
  max-width: 52ch;
  margin: var(--s-3) 0 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.55;
}

.aj-shop__nt-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3);
}

@media (min-width: 900px) {
  .aj-shop__nt {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    padding: var(--s-8);
  }
}

@media (max-width: 559.98px) {
  .aj-shop__nt-cta > .aj-btn {
    flex: 1 1 100%;
  }
}

/* =========================================================================
   6. Karty produktów (.aj-pcard) w .aj-shop-grid
   Grupy: lista wierszy w jednej ramce. Vouchery: kafle z kwotą.
   ========================================================================= */

.aj-shop-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  gap: var(--s-3);
}

.aj-shop-grid:has(> .aj-pcard--group) {
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-pcard {
  position: relative;
  min-width: 0;
  margin: 0;
  color: var(--c-fg);
}

.aj-pcard :where(h3, p, ul) {
  margin: 0;
}

/* Cała karta jest celem kliknięcia: link tytułu rozciągnięty na nią. */
.aj-pcard__title a {
  color: inherit;
  text-decoration: none;
}

.aj-pcard__title a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  border-radius: inherit;
}

.aj-pcard__title a:focus-visible {
  outline: none;
}

.aj-pcard:has(.aj-pcard__title a:focus-visible) {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

.aj-pcard__foot {
  position: relative;
  z-index: 2;
}

/* --- Grupa: wiersz ------------------------------------------------------- */

.aj-pcard--group {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "when foot"
    "facts facts"
    "seats seats";
  align-items: center;
  gap: 6px var(--s-4);
  padding: var(--s-4);
  border-radius: 0;
  transition: background-color var(--d-fast) var(--e-std);
}

.aj-pcard--group + .aj-pcard--group {
  border-top: 1px solid var(--c-line);
}

.aj-pcard--group:first-child {
  border-radius: var(--r-md) var(--r-md) 0 0;
}

.aj-pcard--group:last-child {
  border-radius: 0 0 var(--r-md) var(--r-md);
}

.aj-pcard--group:only-child {
  border-radius: var(--r-md);
}

.aj-pcard--group:has(.aj-pcard__title a:focus-visible) {
  outline-offset: -2px;
}

@media (hover: hover) {
  .aj-pcard--group:hover {
    background: var(--c-bg-2);
  }
}

.aj-pcard__when {
  grid-area: when;
  display: flex;
  flex-direction: row-reverse;
  justify-content: flex-end;
  align-items: baseline;
  gap: var(--s-2);
  min-width: 0;
}

.aj-pcard__day {
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  font-weight: 500;
}

.aj-pcard--group .aj-pcard__title {
  font-size: 1.375rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.aj-pcard__facts {
  grid-area: facts;
  display: flex;
  flex-wrap: wrap;
  margin: 0 0 0 -17px;
  padding: 0;
  clip-path: inset(0 0 0 17px);
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.5;
  list-style: none;
}

.aj-pcard__seats {
  grid-area: seats;
  min-width: 0;
}

/* MARTWE od 20.09.2026: miernik miejsc wyszedł ze znacznika karty, więc i jego podpis.
   Reguła zostaje do końca przepisywania szablonów.
   "Grupa do 6 osób" stoi raz w nagłówku sekcji, w wierszu tylko liczba wolnych. */
.aj-pcard__seats .aj-seats__cap {
  display: none;
}

/* Stan zapisów w wierszu grupy: pigułka stoi w wierszu miejsc i nie rozciąga się
   na szerokość karty (bez justify-self siatka rozepchnęłaby ją na dwie kolumny). */
.aj-pcard--group > .aj-slot {
  grid-area: seats;
  justify-self: start;
}

.aj-pcard--group .aj-pcard__foot {
  grid-area: foot;
  justify-self: end;
}

/* Pełna grupa: podpowiedź innej wolnej grupy tego samego poziomu, osobny wiersz
   na całą szerokość karty, linki nad warstwą linku wiersza. */
.aj-pcard--group > .aj-pcard__alt {
  grid-column: 1 / -1;
  position: relative;
  z-index: 2;
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-meta);
}

.aj-pcard--group .aj-btn {
  white-space: nowrap;
}

/* "Wybierz ›": szewron zamiast strzałki, bo wiersz prowadzi do wyboru, nie do akcji. */
.aj-pcard__go svg {
  width: 14px;
  height: 14px;
  margin-right: -2px;
  transition: transform var(--d-fast) var(--e-out);
}

@media (hover: hover) {
  .aj-pcard--group:hover .aj-pcard__go svg {
    transform: translateX(2px);
  }
}

/* Godzina w wierszu i w tytule strony grupy: jedno pudełko do przejścia między stronami. */
.aj-pcard__time,
.aj-product__slot {
  display: inline-block;
}

@media (hover: hover) {
  .aj-pcard--group:hover .aj-btn {
    --btn-bg: var(--c-fg);
    --btn-fg: var(--c-inverse);
    --btn-bd: var(--c-fg);
    --btn-bg-h: var(--c-btn-hover);
    --btn-fg-h: var(--c-inverse);
    --btn-bd-h: var(--c-btn-hover);
  }
}

.aj-pcard--group.outofstock .aj-pcard__title,
.aj-pcard--group.outofstock .aj-pcard__day {
  color: var(--c-fg-3);
}

/* Tablet: fakty i miejsca jedno pod drugim w środku, cztery kolumny dopiero od 1024. */
@media (min-width: 768px) {
  .aj-pcard--group {
    grid-template-columns: 140px minmax(0, 1fr) auto;
    grid-template-areas:
      "when facts foot"
      "when seats foot";
    gap: var(--s-2) var(--s-6);
    min-height: 76px;
    padding: var(--s-4) var(--s-6);
  }

  .aj-pcard__seats {
    max-width: 320px;
  }

  .aj-pcard__when {
    flex-direction: column-reverse;
    align-items: flex-start;
    gap: 0;
  }

  .aj-pcard__day {
    color: var(--c-fg-3);
    font-size: var(--t-meta);
    font-weight: 500;
  }

  .aj-pcard--group .aj-pcard__title {
    font-size: 1.5rem;
  }

  .aj-pcard__facts {
    font-size: var(--t-ui);
  }
}

@media (min-width: 1024px) {
  .aj-pcard--group {
    grid-template-columns: 168px minmax(0, 1fr) minmax(0, 240px) 120px;
    grid-template-areas: "when facts seats foot";
    gap: var(--s-6);
  }

  .aj-pcard__seats {
    max-width: none;
  }
}

/* --- Voucher: kafel wokół kwoty ----------------------------------------- */

.aj-pcard--voucher {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  transition:
    border-color var(--d-fast) var(--e-std),
    transform var(--d-fast) var(--e-std);
}

@media (hover: hover) {
  .aj-pcard--voucher:hover {
    border-color: var(--c-line-hover);
    transform: translateY(-1px);
  }

  .aj-pcard--voucher:hover .aj-btn {
    --btn-bg: var(--c-fg);
    --btn-fg: var(--c-inverse);
    --btn-bd: var(--c-fg);
    --btn-bg-h: var(--c-btn-hover);
    --btn-fg-h: var(--c-inverse);
    --btn-bd-h: var(--c-btn-hover);
  }
}

.aj-pcard__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
}

.aj-pcard__kicker {
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  font-weight: 500;
}

.aj-pcard--voucher .aj-pcard__title a {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
}

.aj-pcard__num {
  font-size: clamp(2.25rem, 1.95rem + 1.1vw, 2.75rem);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.aj-pcard__cur {
  color: var(--c-fg-2);
  font-size: var(--t-body);
  font-weight: 500;
}

.aj-pcard__excerpt {
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.55;
  text-wrap: pretty;
}

.aj-pcard--voucher .aj-pcard__foot {
  margin-top: auto;
  padding-top: var(--s-3);
}

@media (max-width: 767.98px) {
  .aj-pcard--voucher {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
      "title foot"
      "excerpt excerpt";
    align-items: center;
    gap: var(--s-2) var(--s-4);
    padding: var(--s-5);
  }

  .aj-pcard--voucher .aj-pcard__top {
    display: none;
  }

  .aj-pcard--voucher .aj-pcard__title {
    grid-area: title;
  }

  .aj-pcard--voucher .aj-pcard__excerpt {
    grid-area: excerpt;
  }

  .aj-pcard--voucher .aj-pcard__foot {
    grid-area: foot;
    margin: 0;
    padding: 0;
  }

  .aj-pcard--voucher .aj-btn--block {
    width: auto;
  }

  .aj-pcard__num {
    font-size: 2rem;
  }
}

@media (min-width: 768px) {
  .aj-shop-grid:has(> .aj-pcard--voucher) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--s-4);
  }
}

/* =========================================================================
   7. Strona produktu
   ========================================================================= */

.aj-woo-main {
  padding-block: var(--s-10) var(--section-y);
}

.aj-product {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-8);
  align-items: start;
}

.aj-product__head {
  min-width: 0;
}

.aj-product__head .aj-crumbs {
  margin-bottom: var(--s-6);
}

.aj-product__title {
  margin: 0;
  font-size: var(--t-h1);
  font-weight: 600;
  letter-spacing: var(--tr-display);
  line-height: 1.04;
  overflow-wrap: break-word;
}

.aj-product__kicker {
  display: block;
  margin-bottom: var(--s-3);
  color: var(--c-fg-3);
  font-size: var(--t-ui);
  font-weight: 500;
  letter-spacing: 0;
  line-height: 1.4;
}

.aj-product__chips {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-2);
  margin: var(--s-5) 0 0;
  padding: 0;
  list-style: none;
}

.aj-product__chips li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 32px;
  margin: 0;
  padding: 4px 10px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  color: var(--c-fg);
  font-size: var(--t-sm);
  line-height: 1.3;
}

.aj-product__chips svg {
  flex: none;
  width: 16px;
  height: 16px;
  color: var(--c-fg-2);
}

.aj-product__lead {
  max-width: 56ch;
  margin: var(--s-5) 0 0;
  color: var(--c-fg-2);
  font-size: var(--t-lead);
  line-height: 1.55;
}

/* Karta zapisu */
.aj-product__buy {
  min-width: 0;
}

.aj-buy {
  display: grid;
  gap: var(--s-5);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-buy__price .price {
  display: flex;
  align-items: baseline;
  gap: 6px;
  margin: 0;
  color: var(--c-fg);
  font-size: clamp(2.25rem, 1.95rem + 1.1vw, 2.75rem);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.aj-buy__price .woocommerce-Price-currencySymbol {
  margin-left: 2px;
  color: var(--c-fg-2);
  font-size: var(--t-body);
  font-weight: 500;
  letter-spacing: 0;
}

.aj-buy__per {
  margin: var(--s-2) 0 0;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  line-height: 1.45;
}

.aj-buy__terms {
  display: flex;
  align-items: flex-start;
  gap: var(--s-2);
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.45;
}

.aj-buy__terms svg {
  flex: none;
  width: 16px;
  height: 16px;
  margin-top: 1px;
  color: var(--c-fg-2);
}

/* MARTWE od 20.09.2026: miernik miejsc zniknął z karty zakupu (liczby miejsc nie
   pokazujemy). Reguła zostaje do końca przepisywania szablonów. */
.aj-buy .aj-seats {
  padding-top: var(--s-5);
  border-top: 1px solid var(--c-line);
}

/* Stan zapisów w karcie zakupu. Pigułka jest własnym obiektem i odstęp siatki karty
   wystarcza jej za odcięcie: linia nad 24 px plakietki robiła z niej nagłówek. */
.aj-buy > .aj-slot {
  justify-self: start;
}

.aj-buy > .woocommerce-notices-wrapper,
.aj-buy > .woocommerce-error,
.aj-buy > .woocommerce-message {
  margin: 0;
}

.aj-buy > .woocommerce-notices-wrapper > * {
  margin-bottom: 0;
}

.aj-buy .stock {
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
}

.aj-buy form.cart {
  display: grid;
  gap: var(--s-5);
  margin: 0;
}

/* Grupa sprzedaje się pojedynczo, voucher z karty zawsze 1 sztuka. */
.aj-product .quantity {
  display: none;
}

.aj-buy__help {
  margin: 0;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  text-align: center;
}

.aj-buy__help a {
  color: var(--c-fg);
  font-weight: 500;
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-color: var(--c-line-field);
  text-underline-offset: 0.2em;
}

/* Przełącznik kwot vouchera */
.aj-vswitch {
  display: grid;
  grid-auto-columns: minmax(0, 1fr);
  grid-auto-flow: column;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg-2);
}

.aj-vswitch__item {
  display: grid;
  place-items: center;
  min-height: 36px;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  font-weight: 500;
  text-decoration: none;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
  transition: color var(--d-fast) var(--e-std), background-color var(--d-fast) var(--e-std);
}

.aj-vswitch__item:hover {
  color: var(--c-fg);
}

.aj-vswitch__item[aria-current="page"] {
  border-color: var(--c-line);
  background: var(--c-bg);
  color: var(--c-fg);
}

.aj-vswitch__item:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 1px;
}

@media (max-width: 767.98px) {
  .aj-vswitch__item {
    min-height: 44px;
  }
}

/* Przełącznik godzin na stronie grupy: godzina i pod nią wiek, żeby porównać grupy
   bez wracania do listy. Więcej niż cztery grupy łamią się w drugi rząd. */
.aj-vswitch--slots {
  grid-auto-flow: row;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
}

.aj-vswitch--slots .aj-vswitch__item {
  align-content: center;
  gap: 2px;
  min-height: 52px;
  padding: 6px 4px;
  line-height: 1.25;
  text-align: center;
}

.aj-vswitch__main {
  font-size: var(--t-ui);
  font-weight: 500;
}

.aj-vswitch__sub {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 400;
}

.aj-vswitch--slots .aj-vswitch__item.is-full .aj-vswitch__main {
  color: var(--c-fg-3);
}

/* Kolumna informacji */
.aj-product__info {
  display: grid;
  gap: var(--s-6);
  min-width: 0;
}

.aj-product__media {
  position: relative;
  margin: 0;
  overflow: hidden;
  border-radius: var(--r-md);
  background: var(--c-bg-2);
  aspect-ratio: 16 / 9;
}

.aj-product__media::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.06);
  pointer-events: none;
}

.aj-product__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Podpis kadru jak na /sklep/: mówi, gdzie to jest. */
.aj-product__media > figcaption,
.aj-woo-head__shot > figcaption {
  position: absolute;
  left: var(--s-3);
  bottom: var(--s-3);
  z-index: 3;
  padding: 3px 8px;
  border-radius: var(--r-sm);
  background: rgb(255 255 255 / 0.9);
  color: var(--c-fg);
  font-size: var(--t-meta);
  font-weight: 500;
  line-height: 1.4;
}

.aj-woo-head__shot > figcaption {
  left: var(--s-2);
  bottom: var(--s-2);
}

/* Voucher bez opisu w bazie: pusta kolumna nie rysuje samej linii. */
.aj-product__info:not(:has(*)) {
  display: none;
}

.aj-product__ph {
  display: grid;
  place-items: center;
  height: 100%;
  color: var(--c-fg-3);
}

/* Przed pierwszymi zajęciami: lista kontrolna z adresem i trasą. */
.aj-before {
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}

.aj-before h2 {
  margin: 0 0 var(--s-2);
  font-size: var(--t-h3);
  font-weight: 600;
  letter-spacing: var(--tr-h3);
  line-height: var(--lh-snug);
}

.aj-before__list {
  margin: 0;
  padding: 0;
  list-style: none;
}

.aj-before__list li {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  align-items: start;
  gap: 4px var(--s-3);
  margin: 0;
  padding: var(--s-4) 0;
}

.aj-before__list li + li {
  border-top: 1px solid var(--c-line);
}

.aj-before__list li:last-child {
  padding-bottom: 0;
}

.aj-before__list li > svg {
  width: 20px;
  height: 20px;
  margin-top: 1px;
  color: var(--c-fg-2);
}

.aj-before__list strong {
  display: block;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
}

.aj-before__list span {
  display: block;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.5;
}

.aj-before__list .aj-btn {
  grid-column: 2;
  justify-self: start;
  margin-top: var(--s-2);
}

@media (min-width: 560px) {
  .aj-before__list li:has(> .aj-btn) {
    grid-template-columns: 20px minmax(0, 1fr) auto;
    align-items: center;
  }

  .aj-before__list li:has(> .aj-btn) > svg {
    align-self: start;
    margin-top: 3px;
  }

  .aj-before__list .aj-btn {
    grid-column: 3;
    margin-top: 0;
  }
}

/* Opis produktu jako zwykła sekcja: przebieg lekcji, szczegóły vouchera. */
.aj-product__about {
  display: grid;
  gap: var(--s-4);
  min-width: 0;
}

/* Po karcie z adresem oddech jak między sekcjami, nie jak między kartami. */
.aj-product__info > .aj-product__about:not(:first-child) {
  padding-top: var(--s-4);
}

.aj-product__about > h2 {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-h3);
  font-weight: 600;
  letter-spacing: var(--tr-h3);
  line-height: var(--lh-snug);
  text-wrap: balance;
}

.aj-product__desc {
  max-width: 68ch;
  color: var(--c-fg-2);
  font-size: var(--t-body);
  line-height: var(--lh-body);
  text-wrap: pretty;
}

.aj-product__desc p {
  margin: 0 0 var(--s-4);
}

.aj-product__desc > :last-child {
  margin-bottom: 0;
}

.aj-product__desc strong {
  color: var(--c-fg);
  font-weight: 600;
}

@media (min-width: 1000px) {
  .aj-woo-main {
    padding-top: var(--s-12);
  }

  .aj-product {
    grid-template-columns: minmax(0, 1fr) 400px;
    grid-template-rows: auto 1fr;
    grid-template-areas:
      "head buy"
      "info buy";
    gap: var(--s-10) var(--s-16);
  }

  .aj-product__head {
    grid-area: head;
  }

  .aj-product__info {
    grid-area: info;
  }

  .aj-product__buy {
    grid-area: buy;
    position: sticky;
    top: calc(var(--header-h) + var(--s-6));
  }

  .aj-buy {
    padding: var(--s-8);
  }

  /* Voucher: formularz jest dłuższy niż ekran, więc przykleja się podgląd, nie karta.
     Wiersz "prev" (1fr) rośnie do wysokości karty zakupu, a podgląd stoi w nim przy
     nagłówku strony, więc widać, jak voucher wypełnia się podczas pisania.
     Opis idzie pod spodem na całą szerokość. */
  .aj-product--voucher {
    grid-template-rows: auto 1fr auto;
    grid-template-areas:
      "head buy"
      "prev buy"
      "info info";
  }

  .aj-product--voucher .aj-product__buy {
    position: static;
  }

  .aj-product__prev {
    grid-area: prev;
    align-self: stretch;
    min-width: 0;
  }

  .aj-product--voucher .aj-vprev {
    position: sticky;
    top: calc(var(--header-h) + var(--s-6));
  }

  .aj-product--voucher .aj-product__info {
    gap: var(--s-12);
    padding-top: var(--s-12);
    border-top: 1px solid var(--c-line);
  }
}

@media (max-width: 999.98px) {
  .aj-woo-main {
    padding-top: var(--s-6);
  }

  /* Telefon: zwarty podgląd tuż pod nagłówkiem, zanim zacznie się formularz.
     Kod QR, stopka i podpis zostają na desktopie; dedykacja pojawia się, gdy jest wpisana. */
  .aj-product--voucher .aj-vprev {
    padding: var(--s-3);
  }

  .aj-product--voucher .aj-vprev :is(.aj-voucher__qr, .aj-voucher__foot, .aj-voucher__code, .aj-voucher__exp, .aj-voucher__msg.is-ph),
  .aj-product--voucher .aj-vprev > figcaption {
    display: none;
  }

  .aj-product--voucher .aj-voucher__top {
    padding-block: var(--s-3);
  }

  .aj-product--voucher .aj-voucher__main {
    padding-block: var(--s-4);
  }

  .aj-product--voucher .aj-voucher__value {
    margin-bottom: var(--s-3) !important;
    font-size: 2.5rem;
  }

  .aj-product--voucher .aj-product__info {
    gap: var(--s-10);
  }

  /* Na telefonie najpierw adres i co zabrać, zdjęcie niżej. */
  .aj-product__info > .aj-before {
    order: -1;
  }
}

@media (max-width: 559.98px) {
  .aj-buy {
    margin-inline: calc(var(--gutter) * -1 + 0px);
    padding: var(--s-5) var(--gutter);
    border-inline: 0;
    border-radius: 0;
  }

  .aj-before {
    padding: var(--s-5);
  }
}

/* =========================================================================
   8. Formularz dziecka i formularz vouchera
   ========================================================================= */

.aj-childform {
  display: grid;
  gap: var(--s-4);
  padding-top: var(--s-5);
  border-top: 1px solid var(--c-line);
}

.aj-childform__title,
.aj-vform__legend {
  margin: 0;
  padding: 0;
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
  line-height: 1.4;
}

.aj-childform__hint {
  margin: calc(var(--s-2) * -1) 0 0;
}

.aj-childform .aj-grid {
  gap: var(--s-4);
}

@media (min-width: 420px) {
  .aj-childform .aj-grid--2:first-of-type {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.aj-childform .aj-grid--2 + .aj-grid--2 {
  grid-template-columns: minmax(0, 1fr);
}

.aj-childform .aj-field + .aj-field {
  margin-top: 0;
}

.aj-vform {
  display: grid;
  gap: var(--s-6);
  padding-top: var(--s-5);
  border-top: 1px solid var(--c-line);
}

.aj-vform__block {
  display: grid;
  gap: var(--s-3);
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.aj-vform__legend {
  float: left;
  width: 100%;
  margin-bottom: var(--s-1);
}

.aj-vform__legend + * {
  clear: both;
}

.aj-vform__opt {
  margin-left: 6px;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 400;
}

.aj-vform__row {
  display: grid;
  gap: var(--s-4);
}

@media (min-width: 420px) {
  .aj-vform__row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.aj-vform .aj-field + .aj-field {
  margin-top: 0;
}

/* Dostawa: opis tylko przy wybranej opcji, pozostałe to zwarte wiersze.
   Karta ma 400 px, więc ikona opcji zabierała miejsce na tekst. */
.aj-buy .aj-pick__box:has(.aj-pick__ico) {
  grid-template-columns: auto minmax(0, 1fr) auto;
}

.aj-buy .aj-pick__box:has(.aj-pick__ico) .aj-pick__ico {
  display: none;
}

.aj-buy .aj-pick__box:has(.aj-pick__ico) .aj-pick__txt {
  grid-column: 2;
}

.aj-vform .aj-pick__item > input:not(:checked) + .aj-pick__box .aj-pick__txt small {
  display: none;
}

/* Inny adres dla e-vouchera ma sens tylko przy e-voucherze. */
.aj-vform:has(input[name="aj_voucher_delivery"]:checked):not(:has(input[name="aj_voucher_delivery"][value="email"]:checked)) .aj-vform__mail {
  display: none;
}

/* Telefon: pola vouchera są nieobowiązkowe, a e-voucher zaznaczony z góry, więc
   "Dodaj do koszyka" jedzie przy dolnej krawędzi ekranu przez cały formularz. Sticky
   działa w obrębie form.cart: przycisk jest jego ostatnim dzieckiem, więc pojawia się,
   gdy formularz wchodzi w ekran, i zostaje na swoim miejscu pod ostatnim polem, zanim
   zaczyna się opis. Docka tu nie ma (sekcja 1). Cień tylko wtedy, gdy przycisk
   naprawdę wisi nad polami (zapytanie scroll-state); na swoim miejscu jest płaski jak
   każdy przycisk. Przeglądarka bez scroll-state pokazuje przycisk bez cienia. */
@media (max-width: 999.98px) {
  .aj-product--voucher form.cart .single_add_to_cart_button {
    position: sticky;
    bottom: calc(var(--s-3) + env(safe-area-inset-bottom));
    z-index: 2;
    container-type: scroll-state;
  }

  .aj-product--voucher form.cart .single_add_to_cart_button::before {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    box-shadow: var(--sh-overlay);
    opacity: 0;
    transition: opacity var(--d-fast) var(--e-std);
    pointer-events: none;
  }

  @container scroll-state(stuck: bottom) {
    .aj-product--voucher form.cart .single_add_to_cart_button::before {
      opacity: 1;
    }
  }

  /* Pole, do którego przewija fokus, nie chowa się pod przyklejonym przyciskiem. */
  .aj-product--voucher form.cart :is(input, textarea, select) {
    scroll-margin-bottom: calc(48px + var(--s-3) * 2 + env(safe-area-inset-bottom));
  }
}

/* =========================================================================
   9. Voucher (podgląd na produkcie, strona sprawdzenia, druk)
   ========================================================================= */

.aj-voucher {
  container-type: inline-size;
  overflow: hidden;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  color: var(--c-fg);
}

.aj-voucher__top {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  padding: var(--s-4) var(--s-6);
  border-bottom: 1px solid var(--c-line);
}

.aj-voucher__mark {
  display: block;
  flex: none;
  height: 40px;
}

.aj-voucher__mark img {
  display: block;
  width: auto;
  height: 100%;
}

.aj-voucher__brand {
  min-width: 0;
}

.aj-voucher__brand strong {
  display: block;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 600;
  line-height: 1.3;
}

.aj-voucher__brand small {
  display: block;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.35;
  text-wrap: balance;
}

.aj-voucher__main {
  display: grid;
  gap: var(--s-6);
  padding: var(--s-6);
}

.aj-voucher__left {
  min-width: 0;
}

.aj-voucher__left > * {
  margin: 0;
}

.aj-voucher__kicker {
  display: block;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  font-weight: 500;
}

.aj-voucher__value {
  margin: var(--s-1) 0 var(--s-4) !important;
  font-size: clamp(2.5rem, 2rem + 2vw, 3.5rem);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.aj-voucher__line {
  font-size: var(--t-ui);
  line-height: 1.6;
  overflow-wrap: anywhere;
}

.aj-voucher__line span {
  display: inline-block;
  min-width: 32px;
  color: var(--c-fg-3);
}

.aj-voucher__line b {
  font-weight: 500;
}

.aj-voucher__msg {
  margin-top: var(--s-3) !important;
  padding-left: var(--s-3);
  border-left: 2px solid var(--c-line-field);
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.5;
  overflow-wrap: anywhere;
}

/* Kod w Inter z cyframi o stałej szerokości: jedna rodzina pisma. Alfabet kodów
   (aj_voucher_code) nie ma 0/O ani 1/I, więc nic się nie myli. */
.aj-voucher__code {
  margin-top: var(--s-5) !important;
  font-size: var(--t-ui);
  font-weight: 600;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}

.aj-voucher__exp {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

.aj-voucher__qr {
  display: flex;
  align-items: center;
  gap: var(--s-4);
}

.aj-voucher__qr img,
.aj-voucher__qrph {
  flex: none;
  display: grid;
  place-items: center;
  width: 112px;
  height: 112px;
  border-radius: var(--r-sm);
}

.aj-voucher__qrph {
  border: 1px solid var(--c-line);
  background: var(--c-bg-2);
  color: var(--c-fg-3);
}

.aj-voucher__qr small {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

.aj-voucher__foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--s-2);
  padding: var(--s-3) var(--s-6);
  border-top: 1px solid var(--c-line);
  background: var(--c-bg-2);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

@container (min-width: 520px) {
  .aj-voucher__main {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
  }

  .aj-voucher__qr {
    flex-direction: column;
    text-align: center;
  }

  .aj-voucher__qr img,
  .aj-voucher__qrph {
    width: 160px;
    height: 160px;
  }
}

/* Podgląd na stronie produktu: voucher na spokojnym tle, jak zdjęcie produktu. */
.aj-vprev {
  margin: 0;
}

.aj-vprev > .aj-voucher {
  margin: 0;
}

.aj-vprev {
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg-2);
}

.aj-vprev figcaption {
  margin-top: var(--s-3);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  text-align: center;
}

.aj-voucher--preview .is-ph {
  color: var(--c-fg-3);
  font-weight: 400;
}

.aj-voucher--preview .aj-voucher__code {
  color: var(--c-fg-3);
}

/* Podgląd: ozdobny wzór kodu na białym polu zamiast szarego kafla z ikoną. */
.aj-voucher--preview .aj-voucher__qrph--art {
  padding: 10px;
  border: 1px solid var(--c-line);
  background: var(--c-bg);
  color: var(--c-fg);
}

.aj-voucher__qrph--art svg {
  display: block;
  width: 100%;
  height: 100%;
  opacity: 0.9;
}

@media (min-width: 1000px) {
  .aj-vprev {
    padding: var(--s-10);
  }
}

@media (max-width: 559.98px) {
  .aj-vprev {
    padding: var(--s-3);
  }

  .aj-voucher__top,
  .aj-voucher__main {
    padding-inline: var(--s-4);
  }

  .aj-voucher__foot {
    padding-inline: var(--s-4);
  }
}

/* Strona sprawdzenia vouchera (/voucher/KOD/) */
.aj-vpage {
  padding-block: var(--s-12) var(--section-y);
}

.aj-vpage .aj-wrap > * {
  max-width: 720px;
}

.aj-vstate {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  min-height: 32px;
  margin: 0 0 var(--s-5);
  padding: 4px 12px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-pill);
  background: var(--c-bg);
  color: var(--c-fg);
  font-size: var(--t-sm);
  font-weight: 500;
}

.aj-vstate svg {
  width: 16px;
  height: 16px;
}

.aj-vstate--ok {
  border-color: color-mix(in srgb, var(--c-ok) 22%, var(--c-bg));
  background: var(--c-ok-bg);
}

.aj-vstate--ok svg {
  color: var(--c-ok);
}

.aj-vstate--pending {
  border-color: color-mix(in srgb, var(--c-warn) 22%, var(--c-bg));
  background: var(--c-warn-bg);
}

.aj-vstate--pending svg {
  color: var(--c-warn);
}

.aj-vstate--used svg {
  color: var(--c-fg-3);
}

.aj-vstate--expired {
  border-color: color-mix(in srgb, var(--c-err) 22%, var(--c-bg));
  background: var(--c-err-bg);
}

.aj-vstate--expired svg {
  color: var(--c-err);
}

.aj-vpage .aj-vstate + .aj-note {
  margin-bottom: var(--s-5);
}

.aj-vpage__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3);
  margin-top: var(--s-6);
}

.aj-vcheck {
  display: grid;
  justify-items: center;
  gap: var(--s-3);
  padding: var(--s-12) var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  text-align: center;
}

.aj-vcheck__ico {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: var(--r-pill);
  background: var(--c-err-bg);
  color: var(--c-err);
}

.aj-vcheck h1 {
  margin: var(--s-2) 0 0;
  font-size: var(--t-h2);
  letter-spacing: var(--tr-h2);
  line-height: var(--lh-head);
}

.aj-vcheck p {
  max-width: 46ch;
  margin: 0;
  color: var(--c-fg-2);
}

.aj-vcheck .aj-btn {
  margin-top: var(--s-3);
}

.aj-redeem {
  display: grid;
  gap: var(--s-3);
  justify-items: start;
  margin-top: var(--s-10);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg-2);
}

.aj-redeem h2 {
  margin: 0;
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
}

.aj-redeem p {
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
}

@media print {
  .aj-header,
  .aj-footer,
  .aj-strip,
  .aj-tabbar,
  .aj-noprint,
  .aj-skip {
    display: none !important;
  }

  .aj-vpage {
    padding: 0 !important;
  }

  .aj-voucher {
    border: 1px solid var(--c-line-hover);
    break-inside: avoid;
  }

  .aj-voucher__foot {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  /* Wykorzystany albo przeterminowany voucher nie może wydrukować się jak ważny:
     na papierze nie ma skanu QR, więc stan zostaje, z ramką. */
  .aj-vstate {
    display: flex !important;
    border: 2px solid currentColor;
    border-radius: var(--r-sm);
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}

/* =========================================================================
   10. Koszyk
   ========================================================================= */

.woocommerce-cart .aj-prose > .woocommerce {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-8);
  align-items: start;
}

.woocommerce-cart .aj-prose > .woocommerce > .woocommerce-notices-wrapper > * {
  margin-bottom: 0;
}

@media (min-width: 1000px) {
  .woocommerce-cart .aj-prose > .woocommerce:has(> .woocommerce-cart-form) {
    grid-template-columns: minmax(0, 1fr) minmax(300px, 360px);
    column-gap: var(--s-12);
  }

  .woocommerce-cart .aj-prose > .woocommerce > :not(.woocommerce-cart-form):not(.cart-collaterals) {
    grid-column: 1 / -1;
  }

  .woocommerce-cart .cart-collaterals {
    position: sticky;
    top: calc(var(--header-h) + var(--s-6));
  }
}

.woocommerce-cart-form {
  min-width: 0;
  margin: 0;
}

.shop_table {
  width: 100%;
  min-width: 0;
  margin: 0;
  border-collapse: collapse;
  border: 0;
  font-size: var(--t-ui);
  font-variant-numeric: tabular-nums;
}

.shop_table :is(th, td) {
  padding: var(--s-4) 0;
  border: 0;
  background: none;
  text-align: left;
  vertical-align: middle;
}

.shop_table th {
  color: var(--c-fg-2);
  font-weight: 500;
}

.woocommerce-cart-form__contents thead th {
  padding-block: 0 var(--s-3);
  border-bottom: 1px solid var(--c-line);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 500;
}

.woocommerce-cart-form__contents tbody tr + tr > td,
.woocommerce-cart-form__contents tbody tr:first-child > td {
  border-bottom: 1px solid var(--c-line);
}

.woocommerce-cart-form__contents :is(.product-price, .product-quantity, .product-subtotal) {
  padding-left: var(--s-4);
  text-align: right;
  white-space: nowrap;
}

.woocommerce-cart-form__contents .product-subtotal {
  font-weight: 500;
}

/* Miniatury znikają: voucher pokazywał zdjęcie basenu, które nic nie mówi. */
.woocommerce-cart-form__contents .product-thumbnail {
  display: none;
}

.woocommerce-cart-form__contents .product-thumbnail img {
  display: block;
  width: 64px;
  height: 64px;
  border-radius: var(--r-sm);
  object-fit: cover;
  background: var(--c-bg-2);
}

.woocommerce-cart-form__contents .product-name > a {
  color: var(--c-fg);
  font-weight: 500;
  text-decoration: none;
}

.woocommerce-cart-form__contents .product-name > a:hover {
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.woocommerce-cart-form__contents .product-remove {
  width: 44px;
}

.woocommerce-cart-form__contents a.remove {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  margin-left: -8px;
  border-radius: var(--r-sm);
  color: var(--c-fg-3);
  font-size: 22px;
  line-height: 1;
  text-decoration: none;
  transition: background-color var(--d-fast) var(--e-std), color var(--d-fast) var(--e-std);
}

.woocommerce-cart-form__contents a.remove:hover {
  background: var(--c-bg-2);
  color: var(--c-fg);
}

.woocommerce-cart-form__contents .quantity {
  display: inline-block;
}

.woocommerce-cart-form__contents .quantity .qty {
  width: 72px;
  min-height: 40px;
  text-align: center;
}

.woocommerce-cart-form__contents .actions {
  padding-top: var(--s-4);
  border: 0;
  text-align: right;
}

.woocommerce-cart-form .coupon {
  display: none;
}

/* Dane pozycji (dziecko, dostawa): etykieta i wartość w jednym wierszu. */
.woocommerce dl.variation,
dl.variation {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 2px var(--s-2);
  margin: var(--s-2) 0 0;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

dl.variation dt {
  margin: 0;
  font-weight: 400;
}

dl.variation dd {
  margin: 0;
  color: var(--c-fg-2);
}

dl.variation dd p {
  margin: 0;
}

/* To samo w szczegółach zamówienia: rdzeń drukuje ul.wc-item-meta z <p> w środku. */
.wc-item-meta {
  display: grid;
  gap: 2px;
  margin: var(--s-2) 0 0;
  padding: 0;
  list-style: none;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

.wc-item-meta li {
  display: flex;
  flex-wrap: wrap;
  gap: 0 var(--s-2);
  margin: 0;
  padding: 0;
}

.wc-item-meta .wc-item-meta-label {
  font-weight: 400;
}

.wc-item-meta p {
  margin: 0;
  color: var(--c-fg-2);
}

/* Podsumowanie koszyka */
.cart-collaterals {
  min-width: 0;
}

.cart_totals {
  display: grid;
  gap: var(--s-4);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg-2);
}

.cart_totals > h2 {
  margin: 0;
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
  line-height: 1.4;
}

.cart_totals .shop_table :is(th, td),
.woocommerce-checkout-review-order-table tfoot :is(th, td) {
  padding: var(--s-2) 0;
  font-size: var(--t-sm);
}

.cart_totals .shop_table td,
.woocommerce-checkout-review-order-table :is(td, th):last-child {
  text-align: right;
  white-space: nowrap;
}

.cart_totals .shop_table td::before {
  content: none;
}

.cart_totals .order-total :is(th, td),
.woocommerce-checkout-review-order-table .order-total :is(th, td) {
  padding-top: var(--s-4);
  border-top: 1px solid var(--c-line);
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
}

.cart_totals .order-total td,
.woocommerce-checkout-review-order-table .order-total td {
  font-size: 1.25rem;
  letter-spacing: -0.01em;
}

.cart_totals .order-total td small,
.woocommerce-checkout-review-order-table .order-total td small {
  display: block;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 400;
}

.wc-proceed-to-checkout {
  margin: 0;
  padding: 0;
}

@media (max-width: 767.98px) {
  .woocommerce-cart-form__contents thead {
    display: none;
  }

  .woocommerce-cart-form__contents,
  .woocommerce-cart-form__contents tbody {
    display: block;
  }

  .woocommerce-cart-form__contents tr.cart_item {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 36px;
    grid-template-areas:
      "name remove"
      "total remove";
    column-gap: var(--s-3);
    padding: var(--s-4) 0;
    border-bottom: 1px solid var(--c-line);
  }

  .woocommerce-cart-form__contents tr.cart_item > td {
    display: block;
    padding: 0;
    border: 0 !important;
    text-align: left;
  }

  .woocommerce-cart-form__contents tr.cart_item > td.product-thumbnail {
    display: none;
  }

  .woocommerce-cart-form__contents .product-name {
    grid-area: name;
  }

  .woocommerce-cart-form__contents .product-remove {
    grid-area: remove;
    width: auto;
  }

  .woocommerce-cart-form__contents a.remove {
    margin: -4px 0 0;
  }

  .woocommerce-cart-form__contents .product-price,
  .woocommerce-cart-form__contents .product-quantity {
    display: none !important;
  }

  .woocommerce-cart-form__contents .product-subtotal {
    grid-area: total;
    padding: var(--s-2) 0 0 !important;
    text-align: left !important;
  }

  /* Ilość zmienia się tylko na desktopie, więc "Zaktualizuj koszyk" nic tu nie robi. */
  .woocommerce-cart-form__contents tr:not(.cart_item) {
    display: none;
  }
}

/* Pusty koszyk */
.aj-cart-empty {
  display: grid;
  gap: var(--s-12);
}

.aj-prose .woocommerce .aj-shop__head .aj-eyebrow {
  margin: 0 0 var(--s-2);
}

.aj-prose .woocommerce .aj-shop__facts {
  margin: var(--s-3) 0 0 -17px;
}

.aj-prose .woocommerce .aj-pcard__facts {
  margin: 0 0 0 -17px;
}

/* Lista grup pod pustym koszykiem to podpowiedź, nie drugi tytuł: H1 "Koszyk" zostaje największy. */
.aj-prose .woocommerce p.aj-cart-empty__kicker,
.aj-cart-empty__kicker {
  margin: 0 0 var(--s-1);
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  font-weight: 400;
  line-height: 1.45;
}

.aj-prose .woocommerce .aj-cart-empty .aj-shop__head h2,
.aj-cart-empty .aj-shop__head h2 {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: var(--t-h3);
  font-weight: 600;
  letter-spacing: var(--tr-h3);
  line-height: var(--lh-snug);
}

.aj-cart-empty__more {
  display: grid;
  gap: var(--s-3);
}

@media (min-width: 700px) {
  .aj-cart-empty__more {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.aj-linkcard {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--s-4);
  padding: var(--s-4) var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  color: var(--c-fg);
  text-decoration: none;
  transition: border-color var(--d-fast) var(--e-std), transform var(--d-fast) var(--e-std);
}

.aj-linkcard:hover {
  border-color: var(--c-line-hover);
  transform: translateY(-1px);
}

.aj-linkcard:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

.aj-linkcard > svg:first-child {
  box-sizing: content-box;
  width: 18px;
  height: 18px;
  padding: 8px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  color: var(--c-fg);
}

.aj-linkcard strong {
  display: block;
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
}

.aj-linkcard small {
  display: block;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  line-height: 1.4;
}

.aj-linkcard__go {
  width: 16px;
  height: 16px;
  color: var(--c-fg-3);
  transition: transform var(--d-fast) var(--e-out), color var(--d-fast) var(--e-std);
}

.aj-linkcard:hover .aj-linkcard__go {
  color: var(--c-fg);
  transform: translateX(2px);
}

/* =========================================================================
   11. Kasa
   Dane po lewej, podsumowanie po prawej (przyklejone); na telefonie podsumowanie pierwsze.
   ========================================================================= */

.woocommerce-checkout .aj-prose > .woocommerce {
  max-width: none;
}

.woocommerce-checkout form.checkout {
  margin: 0;
}

.woocommerce-form-coupon-toggle,
.woocommerce-form-coupon {
  display: none;
}

/* Kroki zapisu nad kasą: Dziecko (✓), Rodzic (teraz), Płatność. */
.aj-prose .woocommerce ol.aj-flow,
.aj-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) 0;
  margin: 0 0 var(--s-8);
  padding: 0;
  list-style: none;
  font-size: var(--t-sm);
  line-height: 1.4;
}

.aj-flow__step {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  color: var(--c-fg-3);
}

/* Łącznik między krokami: cienka linia. */
.aj-flow__step + .aj-flow__step::before {
  content: "";
  flex: none;
  width: 32px;
  height: 1px;
  margin-inline: var(--s-2) var(--s-1);
  background: var(--c-line-field);
}

.aj-flow__dot {
  display: inline-grid;
  flex: none;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 1px solid var(--c-line-field);
  border-radius: var(--r-pill);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 600;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}

.aj-flow__dot svg {
  width: 12px;
  height: 12px;
}

.aj-flow__step.is-done {
  color: var(--c-fg-2);
}

.aj-flow__step.is-done .aj-flow__dot {
  border-color: var(--c-fg);
  background: var(--c-fg);
  color: var(--c-inverse);
}

.aj-flow__step.is-current {
  color: var(--c-fg);
  font-weight: 500;
}

.aj-flow__step.is-current .aj-flow__dot {
  border-color: var(--c-fg);
  color: var(--c-fg);
}

@media (max-width: 559.98px) {
  .aj-flow__step + .aj-flow__step::before {
    width: 16px;
  }
}

.aj-checkout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-10);
  align-items: start;
}

.aj-checkout__aside {
  order: -1;
  min-width: 0;
}

#customer_details {
  display: grid;
  gap: var(--s-10);
  min-width: 0;
}

#customer_details > .col-1,
#customer_details > .col-2 {
  display: grid;
  gap: var(--s-6);
  min-width: 0;
}

#customer_details > .col-2:not(:has(*)) {
  display: none;
}

.woocommerce .woocommerce-billing-fields > h3,
.woocommerce .woocommerce-shipping-fields > h3,
.woocommerce .woocommerce-additional-fields > h3,
.woocommerce .woocommerce-account-fields > h3,
.woocommerce h3.aj-pay__title {
  margin: 0 0 var(--s-5);
  color: var(--c-fg);
  font-size: var(--t-h3);
  font-weight: 600;
  letter-spacing: var(--tr-h3);
  line-height: var(--lh-snug);
}

#ship-to-different-address {
  font-size: var(--t-ui);
  font-weight: 500;
}

#ship-to-different-address label {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--s-3);
  cursor: pointer;
}

.woocommerce-account-fields {
  margin-top: 0;
}

.woocommerce-account-fields .create-account {
  display: block;
}

/* Płatność: metody jako karty wyboru, zgody, przycisk. */
.aj-pay {
  min-width: 0;
  padding-top: var(--s-10);
  border-top: 1px solid var(--c-line);
}

.aj-pay .woocommerce-checkout-payment {
  display: grid;
  gap: var(--s-8);
}

.wc_payment_methods {
  display: grid;
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

.wc_payment_method {
  position: relative;
  margin: 0;
  padding: 0;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  transition: border-color var(--d-fast) var(--e-std), box-shadow var(--d-fast) var(--e-std);
}

.wc_payment_method:hover {
  border-color: var(--c-line-hover);
}

.wc_payment_method:has(> input:checked) {
  border-color: var(--c-fg);
  box-shadow: inset 0 0 0 1px var(--c-fg);
}

.wc_payment_method > input[type="radio"] {
  position: absolute;
  top: 16px;
  left: 15px;
  width: 20px;
  height: 20px;
  margin: 0;
  border: 1px solid var(--c-line-field);
  border-radius: var(--r-pill);
  background: var(--c-bg);
  appearance: none;
  cursor: pointer;
}

/* Ten sam znaczek wyboru co karty .aj-pick (dostawa vouchera, godzina): czarne kółko z ✓. */
.wc_payment_method > input[type="radio"]:checked {
  border-color: var(--c-fg);
  background: var(--c-fg) center / 12px no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
}

.wc_payment_method > input[type="radio"]:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

.woocommerce .wc_payment_method > label {
  display: block;
  margin: 0 !important;
  padding: 14px var(--s-4) 14px 46px;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.5;
  cursor: pointer;
}

.wc_payment_method > label img {
  display: none;
}

.payment_box {
  margin: -6px 0 0;
  padding: 0 var(--s-4) 14px 46px;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  line-height: 1.5;
}

.payment_box p {
  max-width: none;
  margin: 0;
  text-wrap: balance;
}

/* Przelew to opcja druga (PROJEKT §4.3): gotówka pierwsza i zaznaczona z góry,
   przelew niżej, mniejszym krojem i z odstępem od gotówki. */
.wc_payment_methods li.payment_method_bacs {
  margin-top: var(--s-3);
}

.woocommerce .wc_payment_methods li.payment_method_bacs > label {
  color: var(--c-fg-2);
  font-size: var(--t-sm);
}

.woocommerce-checkout-payment .form-row.place-order {
  display: grid;
  gap: var(--s-6);
  margin: 0;
  padding: 0;
}

/* Kwota tuż nad "Zamawiam i płacę" (checkout.php, aj_checkout_pay_total), w tej samej
   skali co "Łącznie" w podsumowaniu. Odstęp do przycisku mniejszy niż między blokami,
   żeby kwota i przycisk czytały się razem. Od 1000 px suma stoi w przyklejonej karcie
   obok przycisku, więc tam wiersz znika. */
.aj-pay .aj-pay-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-4);
  max-width: none;
  margin: 0 0 calc(var(--s-3) - var(--s-6));
  padding-top: var(--s-4);
  border-top: 1px solid var(--c-line);
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
  line-height: 1.3;
  font-variant-numeric: tabular-nums;
}

.aj-pay .aj-pay-total strong {
  color: var(--c-fg);
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  white-space: nowrap;
}

@media (min-width: 1000px) {
  .aj-pay .aj-pay-total {
    display: none;
  }
}

.woocommerce-terms-and-conditions-wrapper:not(:has(*)),
.woocommerce-terms-and-conditions-wrapper:empty {
  display: none;
}

.woocommerce-privacy-policy-text {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

/* Zgody */
.aj-consents {
  display: grid;
  gap: var(--s-3);
  min-width: 0;
}

.aj-consents > .aj-note {
  margin: 0 0 var(--s-2);
}

.woocommerce h3.aj-consents__title,
.aj-consents__title {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
  line-height: 1.4;
}

.woocommerce-checkout label.aj-consent__all {
  display: flex;
  align-items: center;
  gap: var(--s-3);
  min-height: 48px;
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg-2);
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
  cursor: pointer;
}

.woocommerce-checkout label.aj-consent__all input[type="checkbox"] {
  margin-top: 0;
}

.aj-consents__group {
  display: grid;
}

.aj-consent {
  padding: var(--s-3) 0;
  transition: background-color var(--d-fast) var(--e-std), box-shadow var(--d-fast) var(--e-std);
}

.aj-consent + .aj-consent {
  border-top: 1px solid var(--c-line);
}

.woocommerce-checkout label.aj-consent__row {
  display: flex;
  align-items: flex-start;
  gap: var(--s-3);
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 400;
  line-height: 1.5;
  cursor: pointer;
}

.aj-consent__text {
  min-width: 0;
  text-wrap: pretty;
}

.aj-consent__text > .aj-check__req {
  margin-right: 2px;
}

.aj-consent__more,
.woocommerce .aj-consent p.aj-consent__note {
  margin: var(--s-1) 0 0 30px;
}

.aj-consent__more > summary {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  min-height: 44px;
  margin-block: -6px;
  color: var(--c-fg-2);
  font-size: var(--t-meta);
  font-weight: 500;
  list-style: none;
  cursor: pointer;
}

.aj-consent__more > summary::-webkit-details-marker {
  display: none;
}

.aj-consent__more > summary::after {
  content: "";
  width: 12px;
  height: 12px;
  background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform var(--d-fast) var(--e-out);
}

.aj-consent__more[open] > summary::after {
  transform: rotate(180deg);
}

.aj-consent__more > summary:hover {
  color: var(--c-fg);
}

.aj-consent__more > summary:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
  border-radius: 4px;
}

.aj-consent__full {
  margin-top: var(--s-2);
  padding: var(--s-3);
  border-radius: var(--r-sm);
  background: var(--c-bg-2);
  color: var(--c-fg-2);
  font-size: var(--t-meta);
  line-height: 1.55;
}

.aj-consent__note {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.5;
}

.woocommerce h4.aj-consents__sub,
.aj-consents__sub {
  margin: var(--s-4) 0 0;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  font-weight: 500;
  letter-spacing: 0;
}

/* Brak wymaganej zgody: kreska i tło, ujemny margines, żeby tekst nie skakał. */
.aj-consent.is-invalid {
  margin-inline: calc(var(--s-3) * -1);
  padding-inline: var(--s-3);
  border-radius: var(--r-sm);
  background: var(--c-err-bg);
  box-shadow: inset 2px 0 0 var(--c-err);
}

.aj-consent.is-invalid .aj-consent__text {
  color: var(--c-err);
}

.aj-consent.is-invalid input[type="checkbox"] {
  border-color: var(--c-err);
}

.aj-consent.is-invalid + .aj-consent,
.aj-consent + .aj-consent.is-invalid {
  border-top-color: transparent;
}

/* Podsumowanie: szare, przyklejone po prawej. */
.aj-checkout__aside {
  display: grid;
  gap: var(--s-5);
  padding: var(--s-6);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg-2);
}

#order_review_heading {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
  line-height: 1.4;
}

#order_review {
  min-width: 0;
}

.woocommerce-checkout-review-order-table thead {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
}

.woocommerce-checkout-review-order-table tbody td {
  padding: 0 0 var(--s-4);
  vertical-align: top;
}

.woocommerce-checkout-review-order-table tbody tr + tr td {
  padding-top: var(--s-4);
  border-top: 1px solid var(--c-line);
}

.woocommerce-checkout-review-order-table .product-name {
  padding-right: var(--s-4);
  color: var(--c-fg);
  font-weight: 500;
}

.woocommerce-checkout-review-order-table .product-quantity {
  color: var(--c-fg-3);
  font-weight: 500;
  white-space: nowrap;
}

.woocommerce-checkout-review-order-table .product-total {
  font-weight: 500;
}

/* "Zajęcia" powtarza nazwę produktu; uczestnika podaje już podsumowanie zapisu. */
.woocommerce-checkout-review-order-table dl.variation :is(.variation-Zajcia, .variation-Zajęcia) {
  display: none;
}

.aj-checkout__aside:has(.aj-recap) .woocommerce-checkout-review-order-table dl.variation .variation-Uczestnik {
  display: none;
}

/* Pozycję z dzieckiem opisuje podsumowanie zapisu nad tabelą (z kwotą i datą urodzenia),
   więc w tabeli zostają tylko inne pozycje (voucher) i sumy. */
.aj-checkout__aside:has(.aj-recap) .woocommerce-checkout-review-order-table tr.aj-item--child {
  display: none;
}

/* "Kwota" równa "Łącznie" (bez dopłat i rabatów) to ta sama liczba dwa razy. */
.woocommerce-checkout-review-order-table tfoot:not(:has(.fee, .cart-discount, .woocommerce-shipping-totals, .tax-rate, .tax-total)) .cart-subtotal {
  display: none;
}

/* Sam zapis: kreskę nad sumą robi już dolna linia podsumowania zapisu. */
.aj-checkout__aside:has(.aj-recap) .woocommerce-checkout-review-order-table:not(:has(tbody tr:not(.aj-item--child))) tfoot tr:first-child :is(th, td),
.aj-checkout__aside:has(.aj-recap) .woocommerce-checkout-review-order-table:not(:has(tbody tr:not(.aj-item--child))) tfoot:not(:has(.fee, .cart-discount, .woocommerce-shipping-totals, .tax-rate, .tax-total)) .order-total :is(th, td) {
  padding-top: 0;
  border-top: 0;
}

.woocommerce-checkout-review-order-table tfoot tr:first-child :is(th, td) {
  border-top: 1px solid var(--c-line);
  padding-top: var(--s-4);
}

.woocommerce-checkout-review-order-table tfoot th {
  color: var(--c-fg-2);
  font-weight: 400;
}

.woocommerce-checkout-review-order-table .woocommerce-shipping-totals td {
  white-space: normal;
}

.woocommerce-checkout-review-order-table #shipping_method {
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Podsumowanie zapisu (kto i gdzie) nad tabelą kwot. */
.aj-recap {
  display: grid;
  gap: var(--s-3);
  padding-bottom: var(--s-5);
  border-bottom: 1px solid var(--c-line);
}

.woocommerce h3.aj-recap__title,
.aj-recap__title {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  font-weight: 500;
  letter-spacing: 0;
  line-height: 1.4;
}

.aj-recap__title svg {
  flex: none;
  width: 16px;
  height: 16px;
  color: var(--c-fg);
}

.aj-recap__list {
  display: grid;
  gap: var(--s-2);
  margin: 0;
  padding: 0;
  list-style: none;
}

/* Jedna pozycja, jeden wiersz: dziecko i kwota, pod spodem grupa, data urodzenia i "Usuń". */
.woocommerce .aj-recap__list li,
.aj-recap__list li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "who price"
    "what del";
  align-items: baseline;
  column-gap: var(--s-3);
  row-gap: 2px;
  margin: 0;
  padding: var(--s-3) var(--s-4);
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg);
}

.aj-recap__price {
  grid-area: price;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 600;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.aj-recap__born {
  display: block;
}

.aj-recap__who {
  grid-area: who;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
}

.aj-recap__what {
  grid-area: what;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

.woocommerce a.aj-recap__del,
a.aj-recap__del {
  grid-area: del;
  align-self: end;
  justify-self: end;
  display: inline-grid;
  place-items: center;
  min-height: 44px;
  min-width: 44px;
  margin: -12px -8px -8px 0;
  padding: 0 8px;
  border-radius: var(--r-sm);
  color: var(--c-fg-2);
  font-size: var(--t-meta);
  font-weight: 500;
  text-decoration: none;
}

a.aj-recap__del:hover {
  color: var(--c-err);
}

.aj-recap__foot {
  margin: 0;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.5;
}

@media (min-width: 1000px) {
  .aj-checkout {
    grid-template-columns: minmax(0, 1fr) minmax(0, 400px);
    column-gap: var(--s-16);
    row-gap: var(--s-10);
  }

  #customer_details {
    grid-column: 1;
    grid-row: 1;
  }

  .aj-pay {
    grid-column: 1;
    grid-row: 2;
  }

  .aj-checkout__aside {
    order: 0;
    grid-column: 2;
    grid-row: 1 / span 2;
    position: sticky;
    top: calc(var(--header-h) + var(--s-6));
  }
}

@media (max-width: 999.98px) {
  .aj-checkout {
    gap: var(--s-8);
  }
}

@media (max-width: 559.98px) {
  .aj-checkout__aside {
    padding: var(--s-5);
  }

  .aj-pay {
    padding-top: var(--s-8);
  }
}

/* =========================================================================
   12. Podziękowanie
   ========================================================================= */

.woocommerce-order {
  display: grid;
  gap: var(--s-8);
  max-width: 760px;
}

.woocommerce-order > * {
  margin: 0;
}

.woocommerce-thankyou-order-received {
  color: var(--c-fg);
  font-size: var(--t-body);
  line-height: 1.55;
}

.woocommerce-thankyou-order-received:empty {
  display: none;
}

.woocommerce-notice--error {
  color: var(--c-err);
}

/* Woo pyta o e-mail, gdy podziękowanie otwiera ktoś spoza sesji zamówienia. */
.woocommerce-verify-email {
  display: grid;
  gap: var(--s-4);
  max-width: 460px;
  padding: var(--s-8);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}

.woocommerce-verify-email > p:first-of-type {
  color: var(--c-fg-2);
}

.woocommerce-verify-email .button {
  width: 100%;
}

@media (max-width: 559.98px) {
  .woocommerce-verify-email {
    padding: var(--s-5);
  }
}

/* Karta "Gotowe": spokojny stan sukcesu, zielone tylko kółko z ✓. */
.aj-done {
  display: grid;
  gap: var(--s-5);
  padding: var(--s-8);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-done__head {
  display: grid;
  gap: var(--s-2);
}

.aj-done__ico {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  margin-bottom: var(--s-2);
  border-radius: var(--r-pill);
  background: var(--c-ok);
  color: var(--c-inverse);
}

.aj-done__ico svg {
  width: 20px;
  height: 20px;
}

.woocommerce .aj-done h2,
.aj-done h2 {
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--c-fg);
  font-size: clamp(1.5rem, 1.35rem + 0.6vw, 1.75rem);
  font-weight: 600;
  letter-spacing: var(--tr-h2);
  line-height: 1.15;
}

.woocommerce .aj-done__head p,
.aj-done__head p {
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.55;
}

.aj-done__head p strong {
  color: var(--c-fg);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.aj-done__who {
  display: grid;
  margin: 0;
  border-block: 1px solid var(--c-line);
}

.aj-done__who > div {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 4px var(--s-4);
  padding: var(--s-3) 0;
}

.aj-done__who > div + div {
  border-top: 1px solid var(--c-line);
}

.aj-done__who dt {
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
}

.aj-done__who dd {
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  font-variant-numeric: tabular-nums;
}

.woocommerce .aj-done__sub,
.aj-done__sub {
  margin: var(--s-2) 0 0;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 600;
  letter-spacing: 0;
}

.aj-done__next {
  display: grid;
  gap: var(--s-3);
  margin: 0;
  padding: 0;
  list-style: none;
}

.aj-done__next li {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  gap: var(--s-3);
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.5;
}

.aj-done__next svg {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  color: var(--c-fg-2);
}

.aj-done__next a {
  color: var(--c-fg);
  font-weight: 500;
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-color: var(--c-line-field);
  text-underline-offset: 0.2em;
}

/* Przegląd zamówienia i dane do przelewu: komórki oddzielone linią. */
.woocommerce .woocommerce-order-overview,
.woocommerce .wc-bacs-bank-details,
.woocommerce-order-overview,
.wc-bacs-bank-details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr));
  gap: 0;
  margin: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  list-style: none;
}

/* Linie rysuje każda komórka (góra i lewo), więc niepełny ostatni rząd zostaje biały. */
.woocommerce .woocommerce-order-overview li,
.woocommerce .wc-bacs-bank-details li,
.woocommerce-order-overview li,
.wc-bacs-bank-details li {
  display: grid;
  align-content: start;
  gap: 2px;
  margin: 0;
  padding: var(--s-4);
  background: var(--c-bg);
  box-shadow: -1px -1px 0 0 var(--c-line);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.45;
}

.woocommerce .woocommerce-order-overview li strong,
.woocommerce .wc-bacs-bank-details li strong,
.woocommerce-order-overview li strong,
.wc-bacs-bank-details li strong {
  display: block;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-weight: 500;
  line-height: 1.4;
  overflow-wrap: anywhere;
  font-variant-numeric: tabular-nums;
}

.woocommerce-bacs-bank-details {
  display: grid;
  gap: var(--s-3);
}

.woocommerce .wc-bacs-bank-details-heading,
.wc-bacs-bank-details-heading,
.woocommerce .woocommerce-order-details__title,
.woocommerce .woocommerce-column__title,
.woocommerce-order-details__title,
.woocommerce-column__title {
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--c-fg);
  font-size: var(--t-h3);
  font-weight: 600;
  letter-spacing: var(--tr-h3);
  line-height: var(--lh-snug);
}

.woocommerce h3.wc-bacs-bank-details-account-name,
.wc-bacs-bank-details-account-name {
  margin: 0;
  color: var(--c-fg-3);
  font-size: var(--t-sm);
  font-weight: 500;
}

/* Rodzic przepisuje to z telefonu: wartości zaznaczają się jednym stuknięciem. */
.wc-bacs-bank-details li strong {
  user-select: all;
}

.wc-bacs-bank-details :is(.account_number, .iban) strong {
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: var(--t-sm);
  letter-spacing: 0.02em;
}

.woocommerce .wc-bacs-bank-details li.aj_transfer_title,
.wc-bacs-bank-details li.aj_transfer_title {
  grid-column: 1 / -1;
  background: var(--c-bg-2);
}

.woocommerce .wc-bacs-bank-details li.aj_transfer_title strong,
.wc-bacs-bank-details li.aj_transfer_title strong {
  font-size: var(--t-body);
  font-weight: 600;
}

.woocommerce-order-details,
.woocommerce-customer-details {
  display: grid;
  gap: var(--s-4);
}

.woocommerce-table--order-details tbody td,
.woocommerce-table--order-details thead th {
  border-bottom: 1px solid var(--c-line);
}

.woocommerce-table--order-details thead th {
  padding-top: 0;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

.woocommerce-table--order-details :is(td, th):last-child {
  text-align: right;
}

.woocommerce-table--order-details tfoot th {
  color: var(--c-fg-2);
  font-weight: 400;
}

.woocommerce-table--order-details tfoot :is(th, td) {
  padding-block: var(--s-2);
  font-size: var(--t-sm);
}

/* Wiersze sum rdzeń drukuje bez klas, a po "Razem" idzie metoda płatności,
   więc żaden wiersz nie jest wyróżniany pozycją. */
.woocommerce-table--order-details tfoot tr:first-child :is(th, td) {
  padding-top: var(--s-4);
}

.woocommerce-table--order-details tfoot td {
  color: var(--c-fg);
}

.woocommerce-table--order-details .product-name a {
  color: var(--c-fg);
  font-weight: 500;
}

.woocommerce-table--order-details .product-quantity {
  color: var(--c-fg-3);
  font-weight: 500;
  white-space: nowrap;
}

/* Dane pozycji w szczegółach zamówienia (dziecko, termin, dostawa vouchera). */
.woocommerce ul.wc-item-meta,
ul.wc-item-meta {
  display: grid;
  gap: 2px;
  margin: var(--s-2) 0 0;
  padding: 0;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 400;
  line-height: 1.45;
  list-style: none;
}

.wc-item-meta li {
  display: flex;
  flex-wrap: wrap;
  gap: 0 6px;
  margin: 0;
}

.wc-item-meta .wc-item-meta-label {
  color: var(--c-fg-3);
  font-weight: 400;
}

.woocommerce .wc-item-meta p,
.wc-item-meta p {
  margin: 0;
  color: var(--c-fg-2);
}

.woocommerce .woocommerce-order > p:not([class]) {
  color: var(--c-fg-2);
  font-size: var(--t-ui);
}

.woocommerce-customer-details address {
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  font-style: normal;
  line-height: 1.6;
}

.woocommerce-customer-details address p {
  margin: var(--s-2) 0 0;
}

.woocommerce-customer-details .woocommerce-columns--addresses {
  display: grid;
  gap: var(--s-4);
}

@media (min-width: 700px) {
  .woocommerce-customer-details .woocommerce-columns--addresses {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 559.98px) {
  .aj-done {
    padding: var(--s-5);
  }
}

/* =========================================================================
   13. Konto
   ========================================================================= */

.woocommerce-account .aj-prose > .woocommerce {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-8);
}

@media (min-width: 900px) {
  body.logged-in.woocommerce-account .aj-prose > .woocommerce {
    grid-template-columns: 220px minmax(0, 1fr);
    column-gap: var(--s-12);
    align-items: start;
  }
}

/* Nawigacja: pionowa lista na desktopie, przewijany rząd zakładek na telefonie. */
.woocommerce-MyAccount-navigation ul {
  display: flex;
  gap: var(--s-1);
  margin: 0;
  padding: 0;
  list-style: none;
}

.woocommerce-MyAccount-navigation li {
  margin: 0;
  padding: 0;
}

.woocommerce .woocommerce-MyAccount-navigation a {
  display: flex;
  align-items: center;
  min-height: 40px;
  padding: 8px 12px;
  border-radius: var(--r-sm);
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  font-weight: 500;
  white-space: nowrap;
  text-decoration: none;
  transition: background-color var(--d-fast) var(--e-std), color var(--d-fast) var(--e-std);
}

.woocommerce .woocommerce-MyAccount-navigation a:hover {
  background: var(--c-bg-2);
  color: var(--c-fg);
}

.woocommerce .woocommerce-MyAccount-navigation .is-active a,
.woocommerce .woocommerce-MyAccount-navigation a[aria-current="page"] {
  background: var(--c-bg-2);
  color: var(--c-fg);
}

.woocommerce-MyAccount-navigation a:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: -2px;
}

.woocommerce-MyAccount-navigation-link--customer-logout {
  margin-top: 0;
}

@media (max-width: 899.98px) {
  .woocommerce-MyAccount-navigation {
    margin-inline: calc(var(--gutter) * -1);
    padding: 0 var(--gutter) var(--s-2);
    overflow-x: auto;
    border-bottom: 1px solid var(--c-line);
    scrollbar-width: none;
  }

  .woocommerce-MyAccount-navigation::-webkit-scrollbar {
    display: none;
  }

  .woocommerce-MyAccount-navigation a {
    min-height: 44px;
  }
}

@media (min-width: 900px) {
  .woocommerce-MyAccount-navigation {
    position: sticky;
    top: calc(var(--header-h) + var(--s-6));
  }

  .woocommerce-MyAccount-navigation ul {
    flex-direction: column;
  }

  .woocommerce-MyAccount-navigation-link--customer-logout {
    margin-top: var(--s-3) !important;
    padding-top: var(--s-3) !important;
    border-top: 1px solid var(--c-line);
  }
}

.woocommerce-MyAccount-content {
  display: grid;
  gap: var(--s-6);
  min-width: 0;
}

.woocommerce-MyAccount-content > p {
  color: var(--c-fg-2);
}

.woocommerce-MyAccount-content mark {
  background: none;
  color: var(--c-fg);
  font-weight: 500;
}

/* Logowanie: jedna karta na środku, rejestracja zwinięta pod pytaniem. Tytuł karty
   ("Zaloguj się", h1) jest tytułem strony, więc hero "Moje konto" i linia pod nim znikają. */
.woocommerce-account:not(.logged-in):has(.aj-auth) .aj-phero {
  display: none;
}

.woocommerce-account:not(.logged-in):has(.aj-auth) .aj-phero + .aj-section {
  padding-top: var(--s-16);
}

.woocommerce-account:not(.logged-in):has(.aj-auth) .aj-phero + .aj-section::before {
  content: none;
}

/* Komunikaty logowania (zły e-mail, hasło) stoją nad kartą w tej samej szerokości. */
.woocommerce-account .aj-prose > .woocommerce:has(> .aj-auth) {
  max-width: 400px;
  margin-inline: auto;
}

.aj-auth {
  display: grid;
  gap: var(--s-3);
  width: 100%;
  max-width: 400px;
  margin-inline: auto;
}

.woocommerce .aj-auth h1,
.aj-auth h1 {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-h2);
  font-weight: 600;
  letter-spacing: var(--tr-h2);
  line-height: var(--lh-head);
  text-wrap: balance;
}

@media (max-width: 767.98px) {
  .woocommerce-account:not(.logged-in):has(.aj-auth) .aj-phero + .aj-section {
    padding-top: var(--s-8);
  }
}

.aj-auth__card {
  display: grid;
  gap: var(--s-5);
  padding: var(--s-8);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.woocommerce p.aj-auth__lead,
.aj-auth__lead {
  margin: calc(var(--s-3) * -1) 0 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.55;
}

.aj-auth form {
  display: grid;
  gap: var(--s-4);
  margin: 0;
}

.aj-auth__submit .button {
  width: 100%;
  min-height: 48px;
}

.aj-auth__remember .woocommerce-form__label-for-checkbox {
  align-items: center;
  min-height: 44px;
}

.aj-auth__remember .woocommerce-form__input-checkbox {
  margin-top: 0;
}

.woocommerce .aj-auth .lost_password {
  margin: 0;
  font-size: var(--t-sm);
  text-align: center;
}

.aj-auth .lost_password a {
  display: inline-block;
  padding-block: 12px;
  margin-block: -12px;
  color: var(--c-fg-2);
  text-decoration: none;
}

.aj-auth__remember .woocommerce-form__label-for-checkbox {
  align-items: center;
  min-height: 44px;
  margin-block: -10px;
}

.aj-auth__remember .woocommerce-form__input-checkbox {
  margin-top: 0;
}

.aj-auth .lost_password a:hover {
  color: var(--c-fg);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}

.aj-auth__reg {
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-auth__reg > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-3);
  min-height: 56px;
  padding: var(--s-3) var(--s-6);
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  list-style: none;
  cursor: pointer;
}

.aj-auth__reg > summary::-webkit-details-marker {
  display: none;
}

.aj-auth__reg > summary strong {
  color: var(--c-fg);
  font-weight: 500;
}

.aj-auth__reg > summary svg {
  flex: none;
  width: 18px;
  height: 18px;
  color: var(--c-fg-2);
  transition: transform var(--d-med) var(--e-out);
}

.aj-auth__reg[open] > summary svg {
  transform: rotate(45deg);
}

.aj-auth__reg > summary:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
  border-radius: var(--r-md);
}

.aj-auth__reg-body {
  display: grid;
  gap: var(--s-5);
  padding: 0 var(--s-6) var(--s-6);
}

.woocommerce .aj-auth__reg-body > p.aj-auth__lead {
  margin: 0;
}

.woocommerce .aj-auth__privacy,
.aj-auth__privacy {
  margin: 0;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  line-height: 1.5;
}

@media (max-width: 559.98px) {
  .aj-auth__card {
    padding: var(--s-5);
  }

  .aj-auth__reg > summary,
  .aj-auth__reg-body {
    padding-inline: var(--s-5);
  }
}

/* Zapomniane i nowe hasło (rdzeń Woo): ta sama karta co logowanie. */
.woocommerce form.woocommerce-ResetPassword,
.woocommerce-ResetPassword {
  display: grid;
  gap: var(--s-5);
  max-width: 460px;
  padding: var(--s-8);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}

.woocommerce .woocommerce-ResetPassword > p:first-child {
  color: var(--c-fg-2);
  font-size: var(--t-ui);
  line-height: 1.55;
}

.woocommerce-ResetPassword button[type="submit"] {
  width: 100%;
  min-height: 48px;
}

.woocommerce-ResetPassword .clear {
  display: none;
}

@media (max-width: 559.98px) {
  .woocommerce form.woocommerce-ResetPassword,
  .woocommerce-ResetPassword {
    padding: var(--s-5);
  }
}

/* Panel: powitanie i trzy kafle z liczbami. */
.aj-dash {
  display: grid;
  gap: var(--s-2);
}

.woocommerce .aj-dash__hi,
.aj-dash__hi {
  margin: 0;
  padding: 0;
  border: 0;
  color: var(--c-fg);
  font-size: 1.5rem;
  font-weight: 600;
  letter-spacing: var(--tr-h2);
  line-height: 1.2;
}

.woocommerce .aj-dash__sub,
.aj-dash__sub {
  margin: 0;
  color: var(--c-fg-2);
  font-size: var(--t-ui);
}

.aj-dash__tiles {
  display: grid;
  gap: var(--s-3);
  margin-top: var(--s-4);
}

@media (min-width: 640px) {
  .aj-dash__tiles {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.aj-tile {
  display: grid;
  gap: var(--s-2);
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
  color: var(--c-fg);
  text-decoration: none;
  transition: border-color var(--d-fast) var(--e-std), transform var(--d-fast) var(--e-std);
}

.aj-tile:hover {
  border-color: var(--c-line-hover);
  transform: translateY(-1px);
}

.aj-tile:focus-visible {
  outline: 2px solid var(--c-focus);
  outline-offset: 2px;
}

.aj-tile__label {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  color: var(--c-fg-2);
  font-size: var(--t-sm);
  font-weight: 500;
}

.aj-tile__label svg {
  width: 16px;
  height: 16px;
}

.aj-tile__num {
  color: var(--c-fg);
  font-size: 2rem;
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.aj-tile--cta .aj-tile__num {
  font-size: var(--t-h3);
  letter-spacing: var(--tr-h3);
  line-height: 1.6;
}

.aj-tile__go {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 500;
}

.aj-tile__go svg {
  width: 14px;
  height: 14px;
  transition: transform var(--d-fast) var(--e-out);
}

.aj-tile:hover .aj-tile__go {
  color: var(--c-fg);
}

.aj-tile:hover .aj-tile__go svg {
  transform: translateX(2px);
}

/* Moje zajęcia */
.aj-acct-list,
.aj-vlist {
  display: grid;
  gap: var(--s-3);
}

.aj-acct-card {
  display: grid;
  gap: var(--s-4);
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-acct-card__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s-2) var(--s-4);
}

.woocommerce .aj-acct-card__head h3,
.aj-acct-card__head h3 {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: var(--tr-ui);
  line-height: 1.4;
}

.aj-acct-card__meta {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 140px), 1fr));
  gap: var(--s-3) var(--s-6);
  margin: 0;
}

.aj-acct-card__meta dt,
.aj-vcard__meta dt {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
}

.aj-acct-card__meta dd,
.aj-vcard__meta dd {
  margin: 0;
  color: var(--c-fg);
  font-size: var(--t-ui);
  font-variant-numeric: tabular-nums;
}

/* Terminy karnetu na karcie zapisu: sama data i ewentualna adnotacja o nieobecności.
   Bez akcji, bo te są w strefie rodzica (/karnet/) i w panelu: tu tylko podgląd. */
.aj-acct-dates {
  display: grid;
  gap: var(--s-1);
  margin: 0;
  padding: var(--s-3) 0 0;
  border-top: 1px solid var(--c-line);
  list-style: none;
}

/* Data i adnotacja obok siebie, a na wąskim ekranie jedna pod drugą: zawijamy wiersz,
   a nie datę. Wspólna linia bazowa trzyma kursywę przy dacie. */
.aj-acct-dates li {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 2px var(--s-2);
  min-width: 0;
  color: var(--c-fg);
  font-size: var(--t-sm);
  line-height: 1.5;
  font-variant-numeric: tabular-nums;
}

.aj-acct-dates em {
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-style: italic;
}

.aj-acct-dates li.is-off {
  color: var(--c-fg-2);
}

.aj-acct-card__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-3) var(--s-5);
  padding-top: var(--s-3);
  border-top: 1px solid var(--c-line);
}

.aj-acct-note {
  margin-top: 0;
}

/* Moje vouchery */
.aj-vcard {
  display: grid;
  grid-template-columns: 136px minmax(0, 1fr);
  gap: var(--s-6);
  align-items: start;
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
  background: var(--c-bg);
}

.aj-vcard.is-used {
  opacity: 0.55;
}

.aj-vcard__qr img,
.aj-vcard__noqr {
  display: grid;
  place-items: center;
  width: 136px;
  height: 136px;
  border: 1px solid var(--c-line);
  border-radius: var(--r-sm);
  background: var(--c-bg);
}

.aj-vcard__noqr {
  background: var(--c-bg-2);
  color: var(--c-fg-3);
}

.aj-vcard__body {
  display: grid;
  gap: var(--s-3);
  justify-items: start;
  min-width: 0;
}

.aj-vcard__body .aj-eyebrow {
  margin: 0;
}

.woocommerce .aj-vcard__code,
.aj-vcard__code {
  margin: 0;
  color: var(--c-fg);
  font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  font-size: var(--t-body);
  font-weight: 600;
  letter-spacing: 0.06em;
  overflow-wrap: anywhere;
}

.aj-vcard__meta {
  display: grid;
  grid-template-columns: repeat(3, auto);
  gap: var(--s-2) var(--s-6);
  margin: 0;
}

.woocommerce .aj-vcard__hint,
.aj-vcard__hint {
  margin: 0;
  color: var(--c-warn);
  font-size: var(--t-sm);
}

@media (max-width: 599.98px) {
  .aj-vcard {
    grid-template-columns: minmax(0, 1fr);
  }

  .aj-vcard__meta {
    grid-template-columns: repeat(2, auto);
  }
}

/* Zamówienia (tabela rdzenia): na telefonie wiersze jako karty z etykietami. */
.woocommerce-orders-table th {
  padding-top: 0;
  border-bottom: 1px solid var(--c-line);
  color: var(--c-fg-3);
  font-size: var(--t-meta);
  font-weight: 500;
}

.woocommerce-orders-table td,
.woocommerce-orders-table tbody th {
  border-bottom: 1px solid var(--c-line);
  font-weight: 400;
}

.woocommerce-orders-table a:not(.button) {
  color: var(--c-fg);
  font-weight: 500;
}

.woocommerce-orders-table .woocommerce-orders-table__cell-order-actions {
  text-align: right;
}

.woocommerce-orders-table .button + .button {
  margin-left: var(--s-2);
}

@media (max-width: 767.98px) {
  .woocommerce-orders-table thead {
    display: none;
  }

  .woocommerce-orders-table,
  .woocommerce-orders-table tbody,
  .woocommerce-orders-table tr {
    display: block;
  }

  .woocommerce-orders-table tr {
    padding: var(--s-3) 0;
    border-bottom: 1px solid var(--c-line);
  }

  .woocommerce-orders-table :is(td, tbody th) {
    display: block;
    padding: 4px 0;
    border: 0;
    text-align: right;
  }

  .woocommerce-orders-table :is(td, tbody th)::before {
    content: attr(data-title);
    float: left;
    color: var(--c-fg-3);
    font-size: var(--t-meta);
    line-height: 1.9;
  }

  .woocommerce-orders-table .woocommerce-orders-table__cell-order-actions {
    padding-top: var(--s-2);
  }

  .woocommerce-orders-table .woocommerce-orders-table__cell-order-actions::before {
    content: none;
  }
}

/* Adresy */
.woocommerce-Addresses {
  display: grid;
  gap: var(--s-4);
}

@media (min-width: 700px) {
  .woocommerce-Addresses {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.woocommerce-Address {
  padding: var(--s-5);
  border: 1px solid var(--c-line);
  border-radius: var(--r-md);
}

.woocommerce-Address-title {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-3);
  margin-bottom: var(--s-3);
}

.woocommerce .woocommerce-Address-title :is(h2, h3),
.woocommerce-Address-title :is(h2, h3) {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: var(--t-body);
  font-weight: 600;
}

.woocommerce-Address-title a {
  color: var(--c-fg-2);
  font-size: var(--t-sm);
}

.woocommerce-Address-title a:hover {
  color: var(--c-fg);
}

.woocommerce-Address address {
  color: var(--c-fg-2);
  font-style: normal;
  line-height: 1.6;
}

.woocommerce-Address address:only-child,
.woocommerce-Address address:empty {
  color: var(--c-fg-3);
}

/* =========================================================================
   15. Przejścia między stronami sklepu (View Transitions)
   Zgoda @view-transition i przejście całej strony są w base.css / enqueue.php.
   Tu tylko wspólne elementy: godzina z listy grup rośnie w tytuł strony grupy,
   a przy zmianie kwoty vouchera cena, podgląd i zaznaczenie kwoty zostają na
   miejscu i przechodzą w nową wartość, zamiast przeładować się z całą stroną.
   ========================================================================= */

@media (prefers-reduced-motion: no-preference) {
  .aj-pcard__time,
  .aj-product__slot {
    view-transition-name: var(--aj-vt, none);
    view-transition-class: aj-slot;
  }

  .aj-product--voucher .aj-buy__price {
    view-transition-name: aj-vprice;
  }

  .aj-product--voucher .aj-voucher--preview {
    view-transition-name: aj-vcard;
  }

  .aj-vswitch__item[aria-current="page"] {
    view-transition-name: aj-vpill;
  }

  /* Przełącznik godzin na stronie grupy ma własną nazwę: pigułka kwoty nie leci
     w pigułkę godziny, gdy ktoś przejdzie z vouchera prosto na grupę. */
  .aj-vswitch--slots .aj-vswitch__item[aria-current="page"] {
    view-transition-name: aj-spill;
  }

  ::view-transition-group(aj-vcard),
  ::view-transition-group(aj-vprice),
  ::view-transition-group(aj-vpill),
  ::view-transition-group(aj-spill) {
    animation-duration: var(--d-med);
    animation-timing-function: var(--e-out);
  }

  ::view-transition-old(aj-vcard),
  ::view-transition-new(aj-vcard),
  ::view-transition-old(aj-vprice),
  ::view-transition-new(aj-vprice),
  ::view-transition-old(aj-vpill),
  ::view-transition-new(aj-vpill),
  ::view-transition-old(aj-spill),
  ::view-transition-new(aj-spill) {
    animation-duration: var(--d-med);
  }

  /* Element bez pary po drugiej stronie (wejście na voucher ze sklepu, koszyka albo
     strony głównej; pigułka przy wejściu z /vouchery/; wyjście z vouchera gdziekolwiek)
     ma dokładnie ten sam ruch co cała strona z base.css: stary gaśnie w 120 ms, nowy
     wchodzi po 60 ms z dołu o 6 px. Wcześniej miał domyślne przenikanie grupy (260 ms,
     --e-out bez opóźnienia), więc pigułka i cena wisiały w pełnym kolorze nad gasnącą
     starą stroną. Klatki kluczowe własne, żeby nie zależeć od nazw w base.css. */
  @keyframes aj-vt-solo-out {
    to {
      opacity: 0;
    }
  }

  @keyframes aj-vt-solo-in {
    from {
      opacity: 0;
      transform: translateY(6px);
    }
  }

  ::view-transition-old(aj-vcard):only-child,
  ::view-transition-old(aj-vprice):only-child,
  ::view-transition-old(aj-vpill):only-child,
  ::view-transition-old(aj-spill):only-child {
    animation: aj-vt-solo-out 120ms var(--e-std) both;
  }

  ::view-transition-new(aj-vcard):only-child,
  ::view-transition-new(aj-vprice):only-child,
  ::view-transition-new(aj-vpill):only-child,
  ::view-transition-new(aj-spill):only-child {
    animation: aj-vt-solo-in var(--d-med) var(--e-out) 60ms both;
  }

  /* Osobno: przeglądarka bez klas przejść odrzuci tylko tę regułę, nie te wyżej. */
  ::view-transition-group(*.aj-slot) {
    animation-duration: var(--d-med);
    animation-timing-function: var(--e-out);
  }

  ::view-transition-old(*.aj-slot),
  ::view-transition-new(*.aj-slot) {
    animation-duration: var(--d-med);
  }

  /* Godzina bez pary: pozostałe godziny z listy przy wyjściu, godzina w tytule przy
     wejściu z innej strony niż lista albo przy zmianie grupy przełącznikiem. */
  ::view-transition-old(*.aj-slot):only-child {
    animation: aj-vt-solo-out 120ms var(--e-std) both;
  }

  ::view-transition-new(*.aj-slot):only-child {
    animation: aj-vt-solo-in var(--d-med) var(--e-out) 60ms both;
  }
}
