:root {
  --ppa-primary: #0B2D4D;
  --ppa-secondary: #0E8F8F;
  --ppa-positive: #16A36A;
  --ppa-bg: #F3F8FB;
  --ppa-card: #FFFFFF;
  --ppa-text: #162A3A;
  --ppa-muted: #667784;
  --ppa-border: #DCE8EE;
  --ppa-accent: #F5A623;
  --ppa-radius: 20px;
  --ppa-shadow: 0 24px 70px rgba(11, 45, 77, .18);
}

.ppa-open-btn,
.ppa-modal,
.ppa-modal *,
.ppa-checkout-prescription,
.ppa-checkout-prescription * { box-sizing: border-box; }

/* Trigger button: deliberately inherits the site's typography. Elementor can override every visual property. */
.ppa-open-btn {
  appearance: none;
  border: 0;
  cursor: pointer;
  font: inherit;
  line-height: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
}
.ppa-inline-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: .72em 1.2em;
  border-radius: 8px;
  background: var(--ppa-primary);
  color: #fff;
  box-shadow: none;
  transition: background-color .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease;
}
.ppa-inline-btn:hover { transform: translateY(-1px); background: var(--ppa-secondary); color: #fff; }
.ppa-elementor-button-wrap { display: flex; width: 100%; }
.ppa-elementor-trigger.is-full-width { width: 100%; }
.ppa-trigger-icon { display: inline-flex; align-items: center; justify-content: center; line-height: 1; }
.ppa-trigger-icon svg { display: block; width: 1em; height: 1em; }
.ppa-elementor-trigger.icon-after { flex-direction: row; }
.ppa-floating-btn {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 99990;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .72em 1.2em;
  border-radius: 8px;
  color: #fff;
  background: var(--ppa-primary);
  box-shadow: 0 12px 28px rgba(11, 45, 77, .20);
}

body.ppa-modal-open { overflow: hidden; }
.ppa-modal { position: fixed; inset: 0; z-index: 999999; display: none; color: var(--ppa-text); font-family: inherit; }
.ppa-modal.is-open { display: grid; place-items: center; }
.ppa-backdrop { position: absolute; inset: 0; background: rgba(7, 24, 38, .66); backdrop-filter: blur(7px); }
.ppa-shell {
  position: relative;
  width: min(860px, calc(100vw - 28px));
  max-height: min(760px, calc(100dvh - 28px));
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: var(--ppa-radius);
  background: var(--ppa-card);
  box-shadow: var(--ppa-shadow);
  animation: ppaIn .18s ease-out;
}
@keyframes ppaIn { from { transform: translateY(8px) scale(.99); opacity: 0; } to { transform: none; opacity: 1; } }
.ppa-close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 4;
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border: 1px solid var(--ppa-border);
  border-radius: 10px;
  background: var(--ppa-card);
  color: var(--ppa-muted);
  font: 400 22px/1 Arial, sans-serif;
  cursor: pointer;
  box-shadow: 0 5px 14px rgba(11, 45, 77, .06);
}
.ppa-close:hover { color: var(--ppa-primary); border-color: var(--ppa-secondary); }
.ppa-body { max-height: min(760px, calc(100dvh - 28px)); overflow: auto; background: var(--ppa-bg); }
.ppa-panel { padding: 24px; }

/* One-click flow: file picker opens first, then this compact loading state appears automatically. */
.ppa-loading-panel {
  min-height: 320px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 44px 28px;
  text-align: center;
  background: linear-gradient(180deg, var(--ppa-card), var(--ppa-bg));
}
.ppa-scanner { position: relative; width: 86px; height: 86px; display: grid; place-items: center; margin-bottom: 10px; }
.ppa-scan-doc {
  position: relative;
  z-index: 2;
  width: 55px;
  height: 64px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border: 1px solid var(--ppa-border);
  border-radius: 14px;
  background: var(--ppa-card);
  color: var(--ppa-primary);
  box-shadow: 0 12px 28px rgba(11, 45, 77, .10);
}
.ppa-scan-doc svg { width: 27px; height: 27px; }
.ppa-scan-doc span {
  position: absolute;
  left: 7px;
  right: 7px;
  height: 2px;
  background: var(--ppa-secondary);
  box-shadow: 0 0 9px color-mix(in srgb, var(--ppa-secondary) 60%, transparent);
  animation: ppaScan 1.45s ease-in-out infinite;
}
@keyframes ppaScan { 0%, 100% { top: 12px; } 50% { top: 50px; } }
.ppa-pulse-ring { position: absolute; inset: 0; border: 1px solid color-mix(in srgb, var(--ppa-secondary) 28%, transparent); border-radius: 50%; animation: ppaPulse 1.5s ease-out infinite; }
@keyframes ppaPulse { from { transform: scale(.72); opacity: .95; } to { transform: scale(1.22); opacity: 0; } }
.ppa-loading-panel h2,
.ppa-results-panel h2,
.ppa-error-panel h2 { margin: 8px 0 4px; color: var(--ppa-primary); font-size: 20px; line-height: 1.3; font-weight: 700; }
.ppa-loading-panel p,
.ppa-result-head p,
.ppa-error-panel p { margin: 2px 0; color: var(--ppa-muted); font-size: 12px; line-height: 1.55; }
.ppa-loading-panel [data-processing-file] { display: inline-block; max-width: 520px; overflow: hidden; color: var(--ppa-text); text-overflow: ellipsis; white-space: nowrap; }
.ppa-ai-note { margin-top: 12px; color: var(--ppa-muted); font-size: 9.5px; line-height: 1.5; opacity: .86; }

/* Results: everything is shown immediately after analysis. */
.ppa-results-panel { padding: 22px; }
.ppa-result-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; padding-right: 42px; }
.ppa-result-head > div { min-width: 0; display: flex; align-items: center; gap: 10px; }
.ppa-result-head h2 { margin: 0; font-size: 18px; }
.ppa-success-dot { width: 34px; height: 34px; flex: 0 0 34px; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--ppa-positive) 12%, transparent); color: var(--ppa-positive); font-weight: 800; }
.ppa-link-btn { flex: 0 0 auto; border: 0; background: transparent; color: var(--ppa-secondary); font: inherit; font-size: 11px; font-weight: 650; cursor: pointer; }
#ppa-results-list { display: grid; gap: 10px; }
.ppa-product-card {
  position: relative;
  display: grid;
  grid-template-columns: 22px 70px minmax(0, 1fr) 175px;
  gap: 12px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--ppa-border);
  border-radius: 14px;
  background: var(--ppa-card);
  box-shadow: 0 6px 18px rgba(11, 45, 77, .04);
}
.ppa-product-card.is-selected { border-color: color-mix(in srgb, var(--ppa-positive) 34%, var(--ppa-border)); }
.ppa-product-card.needs-review { border-color: color-mix(in srgb, var(--ppa-accent) 42%, var(--ppa-border)); }
.ppa-product-card > img { width: 70px; height: 70px; object-fit: contain; border: 1px solid var(--ppa-border); border-radius: 11px; background: var(--ppa-card); }
.ppa-product-select input { width: 17px; height: 17px; margin: 0; accent-color: var(--ppa-positive); cursor: pointer; }
.ppa-product-select input:disabled { cursor: not-allowed; opacity: .55; }
.ppa-product-info { min-width: 0; }
.ppa-match-line { display: flex; align-items: center; gap: 7px; margin-bottom: 4px; }
.ppa-match-line small { color: var(--ppa-muted); font-size: 8.5px; }
.ppa-match-badge { display: inline-flex; align-items: center; padding: 3px 7px; border-radius: 999px; background: color-mix(in srgb, var(--ppa-positive) 10%, transparent); color: var(--ppa-positive); font-size: 8.5px; line-height: 1.2; font-weight: 750; }
.ppa-match-badge.is-warning { background: color-mix(in srgb, var(--ppa-accent) 13%, transparent); color: color-mix(in srgb, var(--ppa-accent) 72%, #6d4907); }
.ppa-product-info h3 { margin: 0; overflow-wrap: anywhere; color: var(--ppa-primary); font-size: 13px; line-height: 1.38; font-weight: 700; }
.ppa-product-info > p { margin: 3px 0; color: var(--ppa-muted); font-size: 9.5px; line-height: 1.4; }
.ppa-prescribed-line { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--ppa-border); color: var(--ppa-muted); font-size: 8.8px; line-height: 1.45; }
.ppa-prescribed-line b { color: var(--ppa-text); }
.ppa-buy-side { display: flex; flex-direction: column; gap: 6px; }
.ppa-price { text-align: right; color: var(--ppa-primary); font-size: 12px; font-weight: 750; }
.ppa-price del { color: var(--ppa-muted); font-size: 9px; font-weight: 400; }
.ppa-price ins { text-decoration: none; }
.ppa-quantity-box { padding: 7px; border: 1px solid var(--ppa-border); border-radius: 9px; background: var(--ppa-bg); }
.ppa-quantity-box > span { display: block; margin-bottom: 4px; color: var(--ppa-muted); font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.ppa-quantity-box > div { display: grid; grid-template-columns: 29px minmax(36px, 1fr) 29px; height: 29px; overflow: hidden; border: 1px solid var(--ppa-border); border-radius: 7px; background: var(--ppa-card); }
.ppa-quantity-box button { border: 0; background: transparent; color: var(--ppa-primary); font: inherit; cursor: pointer; }
.ppa-quantity-box input { min-width: 0; width: 100%; border: 0; border-inline: 1px solid var(--ppa-border); outline: 0; background: var(--ppa-card); color: var(--ppa-primary); text-align: center; font: inherit; font-size: 11px; font-weight: 750; -moz-appearance: textfield; }
.ppa-quantity-box input::-webkit-inner-spin-button { display: none; }
.ppa-quantity-box small { display: block; margin-top: 4px; color: var(--ppa-muted); font-size: 7.6px; line-height: 1.35; }
.ppa-qty-warning { padding: 8px; border: 1px solid color-mix(in srgb, var(--ppa-accent) 30%, var(--ppa-border)); border-radius: 8px; background: color-mix(in srgb, var(--ppa-accent) 8%, transparent); color: #8e5d0e; font-size: 8.8px; text-align: center; }
.ppa-no-match { grid-template-columns: 42px minmax(0, 1fr); }
.ppa-no-match-icon { width: 38px; height: 38px; display: grid; place-items: center; border-radius: 11px; background: color-mix(in srgb, var(--ppa-accent) 11%, transparent); color: #9b650d; font-weight: 800; }
.ppa-result-footer { position: sticky; bottom: 0; z-index: 2; display: grid; gap: 8px; margin-top: 12px; padding-top: 10px; background: linear-gradient(180deg, color-mix(in srgb, var(--ppa-bg) 0%, transparent), var(--ppa-bg) 30%); }
.ppa-review-warning { padding: 8px 10px; border: 1px solid color-mix(in srgb, var(--ppa-accent) 28%, var(--ppa-border)); border-radius: 9px; background: color-mix(in srgb, var(--ppa-accent) 8%, var(--ppa-card)); color: var(--ppa-muted); font-size: 9px; }
.ppa-review-warning strong { margin-right: 6px; color: #8e5d0e; }
.ppa-primary-btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 10px; border: 0; border-radius: 10px; background: var(--ppa-positive); color: #fff; font: inherit; font-size: 12px; font-weight: 700; cursor: pointer; box-shadow: 0 9px 20px color-mix(in srgb, var(--ppa-positive) 18%, transparent); transition: transform .18s ease, filter .18s ease; }
.ppa-primary-btn:hover:not(:disabled) { transform: translateY(-1px); filter: brightness(.97); color: #fff; }
.ppa-primary-btn:disabled { opacity: .48; cursor: not-allowed; box-shadow: none; }
.ppa-btn-arrow { font-size: 16px; }
.ppa-cart-all { width: 100%; }

.ppa-error-panel { min-height: 310px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 46px 26px; text-align: center; background: var(--ppa-card); }
.ppa-error-icon { width: 48px; height: 48px; display: grid; place-items: center; border-radius: 50%; background: color-mix(in srgb, var(--ppa-accent) 13%, transparent); color: #9b650d; font-size: 20px; font-weight: 800; }
.ppa-error-panel h2 { font-size: 18px; }
.ppa-choose-again { min-width: 190px; margin-top: 16px; padding-inline: 18px; }

/* Checkout-only mandatory prescription flow. A checkout upload never triggers the AI scanner. */
.ppa-checkout-prescription { margin: 0 0 20px; padding: 16px; border: 1px solid var(--ppa-border); border-radius: 13px; background: var(--ppa-card); color: var(--ppa-text); font-family: inherit; box-shadow: 0 7px 22px rgba(11, 45, 77, .045); }
.ppa-checkout-prescription.is-ready { border-color: color-mix(in srgb, var(--ppa-positive) 30%, var(--ppa-border)); }
.ppa-checkout-rx-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 11px; }
.ppa-checkout-rx-head > div { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ppa-checkout-rx-head strong { color: var(--ppa-primary); font-size: 14px; line-height: 1.35; }
.ppa-checkout-rx-head span:not(.ppa-required-chip) { color: var(--ppa-muted); font-size: 11px; line-height: 1.5; }
.ppa-required-chip { flex: 0 0 auto; display: inline-flex; align-items: center; min-height: 24px; padding: 4px 8px; border-radius: 999px; background: color-mix(in srgb, var(--ppa-accent) 12%, transparent); color: #8f5c0b; font-size: 9.5px; font-weight: 750; }
.ppa-required-chip.is-ready { background: color-mix(in srgb, var(--ppa-positive) 11%, transparent); color: var(--ppa-positive); }
.ppa-checkout-rx-upload { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 11px; align-items: center; padding: 11px; border: 1px dashed color-mix(in srgb, var(--ppa-secondary) 34%, var(--ppa-border)); border-radius: 10px; background: var(--ppa-bg); transition: .18s ease; }
.ppa-checkout-rx-upload.is-ready { border-style: solid; border-color: color-mix(in srgb, var(--ppa-positive) 30%, var(--ppa-border)); background: color-mix(in srgb, var(--ppa-positive) 5%, var(--ppa-card)); }
.ppa-checkout-rx-upload.is-uploading { opacity: .66; pointer-events: none; }
.ppa-checkout-rx-button { appearance: none; min-height: 37px; padding: 8px 13px; border: 0; border-radius: 8px; background: var(--ppa-primary); color: #fff; font: inherit; font-size: 11px; font-weight: 650; cursor: pointer; white-space: nowrap; }
.ppa-checkout-rx-button:hover { background: var(--ppa-secondary); color: #fff; }
.ppa-checkout-rx-status { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ppa-checkout-rx-status strong { overflow: hidden; color: var(--ppa-text); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.ppa-checkout-rx-status span { color: var(--ppa-muted); font-size: 9.8px; line-height: 1.4; }
.ppa-checkout-rx-remove { appearance: none; border: 0; background: transparent; color: #985454; font: inherit; font-size: 10px; font-weight: 650; cursor: pointer; }
.ppa-checkout-rx-message { margin-top: 6px; color: var(--ppa-positive); font-size: 10px; line-height: 1.45; }
.ppa-checkout-rx-message:empty { display: none; }
.ppa-checkout-rx-message.is-error { color: #b23b3b; }
.ppa-checkout-rx-note { display: block; margin-top: 6px; color: var(--ppa-muted); font-size: 9px; line-height: 1.45; }

@media (max-width: 740px) {
  .ppa-floating-btn { right: 14px; bottom: 14px; }
  .ppa-shell { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); border-radius: min(var(--ppa-radius), 16px); }
  .ppa-body { max-height: calc(100dvh - 16px); }
  .ppa-close { top: 10px; right: 10px; width: 32px; height: 32px; }
  .ppa-loading-panel { min-height: 290px; padding: 40px 18px; }
  .ppa-loading-panel h2 { font-size: 18px; }
  .ppa-results-panel { padding: 16px 12px 14px; }
  .ppa-result-head { align-items: flex-start; padding-right: 38px; }
  .ppa-result-head h2 { font-size: 16px; }
  .ppa-result-head p { font-size: 10px; }
  .ppa-link-btn { font-size: 10px; }
  .ppa-product-card { grid-template-columns: 20px 56px minmax(0, 1fr); gap: 9px; padding: 10px; border-radius: 12px; }
  .ppa-product-card > img { width: 56px; height: 56px; border-radius: 9px; }
  .ppa-product-info h3 { font-size: 12px; }
  .ppa-buy-side { grid-column: 2 / -1; display: grid; grid-template-columns: minmax(70px, .55fr) minmax(150px, 1.45fr); align-items: center; }
  .ppa-price { text-align: left; }
  .ppa-no-match { grid-template-columns: 38px minmax(0, 1fr); }
  .ppa-review-warning span { display: block; margin-top: 2px; }
  .ppa-primary-btn { min-height: 43px; }
  .ppa-checkout-prescription { padding: 13px; border-radius: 11px; }
  .ppa-checkout-rx-head { gap: 8px; }
  .ppa-checkout-rx-head strong { font-size: 13px; }
  .ppa-checkout-rx-head span:not(.ppa-required-chip) { font-size: 10.5px; }
  .ppa-checkout-rx-upload { grid-template-columns: 1fr; gap: 8px; }
  .ppa-checkout-rx-button { width: 100%; }
  .ppa-checkout-rx-remove { justify-self: start; padding: 0; }
}

@media (max-width: 430px) {
  .ppa-buy-side { grid-template-columns: 1fr; }
  .ppa-quantity-box { width: 100%; }
}
