:root {
  --oafb-bg: #f7f3ec;
  --oafb-panel: #fbf9f5;
  --oafb-text: #302b27;
  --oafb-muted: #756e65;
  --oafb-accent: #9b8065;
  --oafb-border: #d8d0c6;
}
.oafb-trigger {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 99970;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 0 17px;
  border: 1px solid rgba(48,43,39,.2);
  border-radius: 999px;
  background: var(--oafb-text);
  color: #fff;
  font: inherit;
  font-size: 14px;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(48,43,39,.16);
  transition: transform .2s ease, opacity .2s ease, box-shadow .2s ease;
}
.oafb-trigger:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(48,43,39,.22); }
.oafb-trigger-icon { display:flex; align-items:center; justify-content:center; }
.oafb-overlay[hidden] { display:none !important; }
.oafb-overlay {
  position: fixed;
  inset: 0;
  z-index: 2147483000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.oafb-backdrop {
  position:absolute;
  inset:0;
  background:rgba(31,28,25,.52);
  backdrop-filter: blur(2px);
}
.oafb-panel {
  position:relative;
  z-index:1;
  width:min(720px, 100%);
  max-height:min(82vh, 820px);
  display:flex;
  flex-direction:column;
  overflow:hidden;
  background:var(--oafb-panel);
  color:var(--oafb-text);
  border:1px solid var(--oafb-border);
  border-radius:14px;
  box-shadow:0 28px 80px rgba(0,0,0,.24);
  padding:36px 38px 32px;
  box-sizing:border-box;
}
.oafb-close {
  position:absolute;
  top:14px;
  right:14px;
  z-index:4;
  width:40px;
  height:40px;
  border:0;
  background:transparent;
  color:var(--oafb-text);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.oafb-copy {
  flex:0 0 auto;
  margin-bottom:22px;
  padding-right:42px;
}
.oafb-eyebrow { color:var(--oafb-accent); font-size:12px; letter-spacing:.14em; font-weight:600; margin-bottom:8px; }
.oafb-copy h2 { margin:0 0 10px; color:var(--oafb-text); font-size:36px; line-height:1.12; font-weight:400; }
.oafb-copy p { margin:0; color:var(--oafb-muted); font-size:15px; line-height:1.55; max-width:620px; }
.oafb-form-wrap {
  min-height:0;
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  scrollbar-color:rgba(117,110,101,.45) transparent;
  padding-right:6px;
}
.oafb-form-wrap::-webkit-scrollbar { width:7px; }
.oafb-form-wrap::-webkit-scrollbar-track { background:transparent; }
.oafb-form-wrap::-webkit-scrollbar-thumb { background:rgba(117,110,101,.35); border-radius:999px; }
.oafb-form-wrap .wpcf7-form > p { margin:0 0 20px; }
.oafb-field-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:18px;
  margin-bottom:20px;
}
.oafb-field-grid > p { margin:0 !important; }
.oafb-form-wrap label { display:block; color:var(--oafb-text); font-size:14px; line-height:1.4; margin:0; }
.oafb-form-wrap input:not([type=submit]):not([type=checkbox]):not([type=radio]),
.oafb-form-wrap select,
.oafb-form-wrap textarea {
  width:100%;
  margin-top:7px;
  border:1px solid var(--oafb-border);
  background:#fff;
  color:var(--oafb-text);
  border-radius:2px;
  padding:12px 13px;
  font:inherit;
  font-size:15px;
  outline:none;
  box-sizing:border-box;
}
.oafb-form-wrap textarea { min-height:118px; resize:vertical; }
.oafb-form-wrap input:focus,
.oafb-form-wrap select:focus,
.oafb-form-wrap textarea:focus { border-color:var(--oafb-accent); box-shadow:0 0 0 1px var(--oafb-accent); }
.oafb-form-wrap input[type=submit] {
  width:100%;
  min-height:48px;
  border:1px solid var(--oafb-text);
  background:var(--oafb-text);
  color:#fff;
  font:inherit;
  font-size:13px;
  letter-spacing:.06em;
  text-transform:uppercase;
  cursor:pointer;
}
.oafb-form-wrap .wpcf7-spinner { margin:10px 0 0; }
.oafb-form-wrap .wpcf7-response-output { margin:14px 0 0 !important; padding:11px 13px !important; border:1px solid var(--oafb-border) !important; color:var(--oafb-text); }
.oafb-form-wrap .wpcf7-not-valid-tip { color:#8a3e35; font-size:13px; margin-top:5px; }
.oafb-success { padding:26px 0 4px; font-size:18px; line-height:1.6; color:var(--oafb-text); }
body.oafb-open { overflow:hidden; }

/* On Academy product pages, keep the feedback button on the right side,
   above the sticky Add to Cart area and left of the back-to-top button. */
@media (min-width: 992px) {
  body.single-product .oafb-trigger {
    left: auto;
    right: 118px;
    bottom: 96px;
  }
}

/* Tablet: Academy Mobile Nav is active through 991px. Keep Feedback above the
   real dock height and slightly left of the back-to-top control. */
@media (min-width: 783px) and (max-width: 991px) {
  body.oreyne-mobile-nav-enabled .oafb-trigger,
  body.oreyne-academy-mobile-nav-enabled .oafb-trigger {
    left: auto !important;
    right: 88px !important;
    bottom: calc(var(--oreyne-mobile-bottom-dock-height, var(--oreyne-mobile-bottom-nav-offset, 68px)) + 14px) !important;
  }

  body.oreyne-mobile-nav-cart-open .oafb-trigger,
  body.oreyne-mini-cart-open .oafb-trigger {
    opacity:0;
    visibility:hidden;
    pointer-events:none;
  }
}

@media (max-width: 782px) {
  .oafb-trigger {
    right:16px;
    bottom:18px;
    width:50px;
    height:50px;
    min-height:50px;
    padding:0;
    justify-content:center;
  }

  /* Academy Mobile Nav publishes the real rendered dock height.
     On product pages this can include the Sticky Add to Cart above the nav,
     so Feedback automatically clears both layers. */
  body.oreyne-mobile-nav-enabled .oafb-trigger,
  body.oreyne-academy-mobile-nav-enabled .oafb-trigger {
    left:auto !important;
    right:16px !important;
    bottom: calc(var(--oreyne-mobile-bottom-dock-height, var(--oreyne-mobile-bottom-nav-offset, 68px)) + 14px) !important;
  }

  /* Safe fallback if the Product Page sticky bar exists while Mobile Nav is disabled. */
  body.oreyne-pdp-active:not(.oreyne-mobile-nav-enabled) .oafb-trigger {
    bottom: 92px;
  }

  body.oreyne-mobile-nav-cart-open .oafb-trigger,
  body.oreyne-mini-cart-open .oafb-trigger {
    opacity:0;
    visibility:hidden;
    pointer-events:none;
  }
  .oafb-trigger-label { display:none; }
  .oafb-overlay {
    align-items:center;
    justify-content:center;
    padding:16px;
  }
  .oafb-panel {
    width:min(92vw, 560px);
    max-height:86dvh;
    padding:28px 20px 22px;
    border:1px solid var(--oafb-border);
    border-radius:14px;
  }
  .oafb-close { top:8px; right:8px; }
  .oafb-copy { margin-bottom:18px; padding-right:34px; }
  .oafb-eyebrow { margin-bottom:7px; }
  .oafb-copy h2 { font-size:29px; margin-bottom:8px; }
  .oafb-copy p { font-size:14px; line-height:1.5; }
  .oafb-field-grid { grid-template-columns:1fr; gap:18px; margin-bottom:18px; }
  .oafb-form-wrap .wpcf7-form > p { margin-bottom:18px; }
  .oafb-form-wrap textarea { min-height:110px; }
}

@media (max-height: 650px) {
  .oafb-panel { max-height:88dvh; padding-top:24px; padding-bottom:18px; }
  .oafb-copy { margin-bottom:14px; }
  .oafb-copy h2 { font-size:27px; }
  .oafb-copy p { font-size:13.5px; line-height:1.45; }
  .oafb-form-wrap .wpcf7-form > p { margin-bottom:15px; }
  .oafb-field-grid { gap:14px; margin-bottom:15px; }
}


/* v1.0.4 — when Feedback owns the interaction layer, hide the mobile purchase/nav dock. */
@media (max-width: 991px) {
  body.oafb-open #oreyne-mobile-bottom-dock {
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
}

/* v1.0.5 — align tablet Feedback positioning with Academy Mobile Nav breakpoint (<=991px). */

/* v1.0.6 — Mini Cart owns the right-side interaction layer.
   Hide Feedback at every viewport size while the cart drawer is open. */
body.oafb-cart-open .oafb-trigger,
body.oreyne-mobile-nav-cart-open .oafb-trigger,
body.oreyne-mini-cart-open .oafb-trigger {
  opacity: 0 !important;
  visibility: hidden !important;
  pointer-events: none !important;
  transform: translateY(8px) !important;
}


/* v1.0.7 — mobile/tablet Google Sign-In layer safety.
   Keep the floating Feedback trigger below Google One Tap / Sign-In UI so
   Google's close control remains visible and tappable. The Feedback modal
   itself keeps its existing high overlay layer when the user opens it. */
@media (max-width: 991px) {
  .oafb-trigger {
    z-index: 999 !important;
  }
}
