/* ============================================================
   EireSafe shop experience
   Quick view · compare · saved items · recently viewed ·
   installation add-on · customer-facing utilities
   ============================================================ */

/* ---------- Sale badge: translucent orange wash over the card image ---------- */
body.woocommerce ul.products li.product span.onsale{
  position:absolute !important;
  top:0 !important;
  left:0 !important;
  right:0 !important;
  width:100% !important;
  height:230px !important; /* matches the card image height */
  min-height:0 !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  border-radius:0 !important;
  background:linear-gradient(180deg,rgba(248,153,29,.38) 0%,rgba(248,153,29,.60) 100%) !important;
  color:#fff !important;
  display:flex !important;
  align-items:center;
  justify-content:center;
  font-family:'Oswald',sans-serif !important;
  font-size:clamp(20px,2.4vw,30px) !important;
  font-weight:500 !important;
  line-height:1 !important;
  letter-spacing:.22em !important;
  text-transform:uppercase;
  text-shadow:0 1px 8px rgba(0,0,0,.30);
  z-index:2;
  pointer-events:none;
  transition:background .25s ease;
}
body.woocommerce ul.products li.product:hover span.onsale{
  background:linear-gradient(180deg,rgba(248,153,29,.30) 0%,rgba(248,153,29,.52) 100%) !important;
}

/* ---------- Card action buttons ---------- */
.woocommerce ul.products li.product{position:relative;}
.es-card-actions{
  position:absolute;top:10px;right:10px;z-index:4;
  display:flex;gap:6px;
}
.es-card-action{
  width:34px;height:34px;border-radius:50%;border:1px solid rgba(0,0,0,.08);
  background:rgba(255,255,255,.94);color:#004D2C;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;line-height:1;padding:0;box-shadow:0 3px 10px rgba(0,0,0,.10);
  transition:background .18s ease,color .18s ease,transform .18s ease;
}
.es-card-action:hover{background:#004D2C;color:#fff;transform:translateY(-1px);}
.es-card-action.is-on{background:#004D2C;color:#fff;}
.es-card-action.is-on i{color:#fff;}
.es-card-action.es-save.is-on{background:#b32d2e;border-color:#b32d2e;}

/* ---------- Shop utility pills (Saved / Compare) ---------- */
.es-shop-utils{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 14px;}
.es-shop-utils button{
  display:inline-flex;align-items:center;gap:7px;
  background:#fff;border:1px solid #E2E5E0;border-radius:99px;
  padding:7px 13px;font-family:'Oswald',sans-serif;font-size:11.5px;
  letter-spacing:.06em;text-transform:uppercase;color:#004D2C;cursor:pointer;
  transition:background .18s ease,border-color .18s ease;
}
.es-shop-utils button:hover{border-color:#004D2C;background:#e8f2ed;}
.es-shop-utils button i{color:#F8991D;}
.es-shop-utils span{font-weight:600;}
.es-shop-utils button.is-on{border-color:#004D2C;}

/* ---------- Modals ---------- */
.es-modal{
  position:fixed;inset:0;z-index:99995;background:rgba(0,0,0,.58);
  display:none;align-items:flex-start;justify-content:center;
  padding:48px 16px;overflow-y:auto;
}
.es-modal.is-open{display:flex;}

/* Legacy ID rules in woocommerce.css hide #esCompareModal with higher
   specificity than .es-modal.is-open — re-assert the open state and let
   the shared modal body own its padding. */
#esCompareModal.is-open{display:flex !important;z-index:99995 !important;}
#esCompareBody{padding:0 !important;overflow:visible !important;}
.es-modal-inner{
  background:#fff;border-radius:16px;width:100%;max-width:900px;margin:0 auto;
  box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;
}
.es-modal-head{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:15px 22px;border-bottom:1px solid #eef1ef;
  font-family:'Oswald',sans-serif;font-size:14px;text-transform:uppercase;
  letter-spacing:.05em;color:#004D2C;
}
.es-modal-head .es-modal-close{
  background:none;border:none;font-size:26px;line-height:1;color:#666;cursor:pointer;
  padding:0 4px;
}
.es-modal-head .es-modal-close:hover{color:#b32d2e;}
.es-modal-body{padding:22px;}
.es-modal-body.es-modal-flush{padding:0;}

/* ---------- Quick view ---------- */
.es-qv-grid{display:grid;grid-template-columns:minmax(0,.92fr) minmax(0,1.08fr);gap:28px;align-items:start;}
.es-qv-media{background:#F7F8F6;border:1px solid #E2E5E0;border-radius:12px;padding:14px;}
.es-qv-media img{width:100%;height:auto;display:block;object-fit:contain;max-height:420px;margin:0 auto;}
.es-qv-eyebrow{
  display:inline-block;font-family:'Oswald',sans-serif;font-size:10.5px;
  letter-spacing:.14em;text-transform:uppercase;color:#F8991D;margin-bottom:6px;
}
.es-qv-title{
  font-family:'Anton',sans-serif;font-weight:400;text-transform:uppercase;
  color:#004D2C;font-size:clamp(22px,2.6vw,32px);line-height:1.08;margin:0 0 8px;
}
.es-qv-price{font-family:'Barlow',sans-serif;font-size:1.35em;font-weight:700;color:#004D2C;margin:0 0 12px;}
.es-qv-price del{color:#999;font-weight:400;font-size:.8em;}
.es-qv-desc{font-family:'Barlow',sans-serif;font-size:14.5px;line-height:1.65;color:#555;margin:0 0 14px;}
.es-qv-desc p{margin:0 0 10px;}
.es-qv-specs{width:100%;border-collapse:collapse;margin:0 0 16px;font-family:'Barlow',sans-serif;font-size:13.5px;}
.es-qv-specs th,.es-qv-specs td{border-bottom:1px solid #eef1ef;padding:7px 4px;text-align:left;vertical-align:top;}
.es-qv-specs th{width:42%;font-family:'Oswald',sans-serif;font-weight:400;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#6b7280;}
.es-qv-specs td{color:#2c3338;}
.es-qv-cta{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.es-qv-buy{display:flex;gap:8px;align-items:stretch;}
.es-qv-buy .es-qv-qty{
  width:74px;border:1px solid #E2E5E0;border-radius:8px;text-align:center;
  font-family:'Oswald',sans-serif;font-size:16px;padding:8px;box-sizing:border-box;
}
.es-qv-buy .button{flex:1;margin:0 !important;min-height:44px;display:flex;align-items:center;justify-content:center;}
.es-qv-quote{display:flex !important;width:100% !important;margin:0 !important;min-height:44px;}
.es-qv-datasheet{
  display:inline-flex;align-items:center;gap:7px;margin-top:12px;
  font-family:'Oswald',sans-serif;font-size:11.5px;letter-spacing:.06em;
  text-transform:uppercase;color:#004D2C;text-decoration:none;
}
.es-qv-datasheet i{color:#b32d2e;}
.es-qv-full{
  display:inline-block;margin-top:12px;margin-left:14px;
  font-family:'Barlow',sans-serif;font-size:13px;color:#004D2C;text-decoration:underline;
}

/* ---------- Compare table ---------- */
.es-compare-wrap{overflow-x:auto;padding:20px 22px 24px;}
.es-compare-table{width:100%;border-collapse:collapse;min-width:640px;}
.es-compare-table th,.es-compare-table td{
  border:1px solid #E2E5E0;padding:11px 12px;text-align:center;
  font-family:'Barlow',sans-serif;font-size:13.5px;vertical-align:top;color:#2c3338;
}
.es-compare-table thead th{
  background:#004D2C;color:#fff;font-family:'Oswald',sans-serif;
  text-transform:uppercase;font-size:12px;letter-spacing:.04em;font-weight:400;
  min-width:180px;
}
.es-compare-table tbody th{
  background:#e8f2ed;font-family:'Oswald',sans-serif;text-transform:uppercase;
  font-size:11px;letter-spacing:.06em;color:#004D2C;text-align:left;width:18%;
}
.es-compare-head img{width:120px;height:120px;object-fit:contain;display:block;margin:0 auto 8px;background:#F7F8F6;border-radius:8px;padding:6px;}
.es-compare-head a{color:#fff;text-decoration:none;font-family:'Oswald',sans-serif;font-size:12px;line-height:1.35;display:block;}
.es-compare-price{display:block;margin-top:6px;font-family:'Barlow',sans-serif;font-size:13px;color:#F8991D;font-weight:700;}
.es-compare-table tr.es-diff td{background:#fff8ee;}
.es-compare-remove{
  display:inline-block;margin-top:8px;background:none;border:1px solid rgba(255,255,255,.35);
  color:#fff;border-radius:6px;padding:4px 9px;font-size:10.5px;
  font-family:'Oswald',sans-serif;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;
}
.es-compare-remove:hover{background:#b32d2e;border-color:#b32d2e;}

/* ---------- Saved / recently viewed mini cards ---------- */
.es-mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;}
.es-mini-card{
  background:#fff;border:1px solid #E2E5E0;border-radius:12px;overflow:hidden;
  display:flex;flex-direction:column;
}
.es-mini-media{display:block;background:#F7F8F6;padding:10px;}
.es-mini-media img{width:100%;height:120px;object-fit:contain;display:block;}
.es-mini-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:5px;flex:1;}
.es-mini-name{
  font-family:'Oswald',sans-serif;font-size:12.5px;text-transform:uppercase;
  color:#004D2C;text-decoration:none;line-height:1.35;flex:1;
}
.es-mini-price{font-family:'Barlow',sans-serif;font-size:13px;font-weight:600;color:#004D2C;}
.es-mini-price em{color:#777;font-weight:400;font-style:normal;font-size:12px;}
.es-mini-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:4px;}
.es-mini-view{font-family:'Oswald',sans-serif;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:#004D2C;}
.es-mini-remove{background:none;border:none;color:#b32d2e;font-size:11px;cursor:pointer;padding:0;text-decoration:underline;}
.es-modal-empty{padding:26px;text-align:center;font-family:'Barlow',sans-serif;color:#777;}

/* ---------- Save / compare floating bar ---------- */
#esCompareBar{
  position:fixed;left:50%;bottom:14px;transform:translateX(-50%);z-index:9997;
  display:none;align-items:center;gap:14px;flex-wrap:wrap;justify-content:center;
  background:#003620;color:#fff;border-radius:99px;padding:10px 16px;
  box-shadow:0 8px 26px rgba(0,0,0,.3);font-family:'Barlow',sans-serif;font-size:13px;
}
#esCompareBar.show{display:flex;}
body.es-quote-visible #esCompareBar{bottom:74px;}
#esCompareBar strong{color:#F8991D;}
#esCompareBar button,#esCompareBar a{
  border:none;border-radius:99px;padding:7px 14px;cursor:pointer;
  font-family:'Oswald',sans-serif;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;text-decoration:none;
}
#esCompareGo{background:#F8991D;color:#fff;}
#esCompareClear{background:transparent;color:#ddd;border:1px solid rgba(255,255,255,.3);}
#esSavedBar{
  position:fixed;left:14px;bottom:14px;z-index:9997;display:none;
  align-items:center;gap:8px;background:#fff;border:1px solid #E2E5E0;
  border-radius:99px;padding:8px 14px;box-shadow:0 8px 24px rgba(0,0,0,.15);
  font-family:'Barlow',sans-serif;font-size:12.5px;color:#004D2C;cursor:pointer;
}
#esSavedBar.show{display:flex;}
#esSavedBar i{color:#b32d2e;}
body.es-quote-visible #esSavedBar{bottom:74px;}

/* ---------- Installation add-on ---------- */
.es-install-option{
  flex:1 1 100%;display:flex;align-items:flex-start;gap:10px;
  margin:6px 0 0;padding:12px 14px;background:#F7F8F6;border:1px solid #E2E5E0;
  border-radius:10px;cursor:pointer;box-sizing:border-box;
}
.es-install-option input{margin:3px 0 0;width:18px;height:18px;accent-color:#004D2C;flex-shrink:0;}
.es-install-box{display:flex;flex-direction:column;gap:2px;font-family:'Barlow',sans-serif;font-size:13.5px;line-height:1.4;color:#2c3338;}
.es-install-box strong{font-family:'Oswald',sans-serif;font-weight:400;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:#004D2C;}
.es-install-box em{font-style:normal;font-size:12.5px;color:#F8991D;font-weight:600;}

/* ---------- Eircode result states ---------- */
.es-eircode-result{font-size:12.5px;line-height:1.5;}
.es-eircode-result.ok{color:#166534;}
.es-eircode-result.warn{color:#b45309;}
.es-eircode-result.bad{color:#b32d2e;}

/* ---------- Recently viewed ---------- */
.es-viewed{margin-top:44px;}
.es-viewed h3{
  font-family:'Oswald',sans-serif;font-size:16px;text-transform:uppercase;
  letter-spacing:.05em;color:#004D2C;margin:0 0 16px;
}
.es-viewed-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;}
.es-viewed-grid .es-mini-card{font-size:12px;}
.es-viewed-grid .es-mini-media img{height:100px;}
.es-shop-recent{margin-top:40px;}

/* ---------- Cross-sells ---------- */
.es-cross-sells{margin-top:38px;}
.es-cross-sells > h2{
  font-family:'Oswald',sans-serif;font-size:22px;font-weight:400;
  text-transform:uppercase;letter-spacing:.03em;color:#004D2C;margin:0 0 16px;
}

/* ---------- Quote basket v2 ---------- */
.es-q-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #f2f4f3;font-family:'Barlow',sans-serif;font-size:14px;color:#2c3338;}
.es-q-item:last-child{border-bottom:none;}
.es-q-name{flex:1;min-width:0;}
.es-q-qty{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}
.es-q-qty button{
  width:26px;height:26px;border:1px solid #E2E5E0;background:#fff;border-radius:6px;
  cursor:pointer;font-size:14px;line-height:1;color:#004D2C;padding:0;
}
.es-q-qty button:hover{background:#e8f2ed;border-color:#004D2C;}
.es-q-qty span{min-width:18px;text-align:center;font-weight:600;}
.es-q-remove{background:none;border:none;color:#b32d2e;font-size:11.5px;cursor:pointer;text-decoration:underline;flex-shrink:0;}
#esQuoteNotes{
  width:100%;box-sizing:border-box;margin-top:14px;border:1px solid #E2E5E0;
  border-radius:8px;padding:10px 12px;font-family:'Barlow',sans-serif;font-size:13.5px;
  min-height:74px;resize:vertical;
}
.es-quote-tools{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.es-quote-tools button,.es-quote-tools a{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:#fff;border:1px solid #004D2C;color:#004D2C;border-radius:8px;
  padding:9px 14px;font-family:'Oswald',sans-serif;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;cursor:pointer;text-decoration:none;
}
.es-quote-tools button:hover,.es-quote-tools a:hover{background:#004D2C;color:#fff;}
.es-quote-capture{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;}
.es-quote-capture input{
  flex:1;min-width:180px;border:1px solid #E2E5E0;border-radius:8px;
  padding:9px 12px;font-size:14px;font-family:'Barlow',sans-serif;box-sizing:border-box;
}
.es-quote-capture button{
  background:#F8991D;color:#fff;border:none;border-radius:8px;padding:9px 16px;
  font-family:'Oswald',sans-serif;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;cursor:pointer;
}
.es-quote-capture button:hover{background:#d97f0e;}
.es-quote-msg{margin-top:8px;font-family:'Barlow',sans-serif;font-size:12.5px;}
.es-quote-msg.ok{color:#166534;}
.es-quote-msg.bad{color:#b32d2e;}

/* ---------- Responsive ---------- */
@media (max-width:820px){
  .es-qv-grid{grid-template-columns:1fr;gap:18px;}
  .es-qv-media img{max-height:300px;}
  .es-viewed-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width:600px){
  .es-modal{padding:16px 10px;}
  .es-modal-body{padding:16px;}
  .es-compare-wrap{padding:14px;}
  .es-viewed-grid{grid-template-columns:repeat(2,1fr);}
  .es-card-actions{top:8px;right:8px;gap:4px;}
  .es-card-action{width:31px;height:31px;font-size:12px;}
  #esSavedBar{left:8px;bottom:8px;}
  #esCompareBar{left:8px;right:8px;transform:none;bottom:8px;justify-content:center;}
  body.es-quote-visible #esCompareBar,body.es-quote-visible #esSavedBar{bottom:70px;}
}
@media (max-width:520px){
  .es-qv-full{margin-left:0;display:block;}
  .es-viewed-grid{grid-template-columns:1fr 1fr;}
}

/* ---------- Trade ---------- */
.es-trade-badge{
  display:inline-block;margin-left:6px;background:#004D2C;color:#fff;
  font-family:'Oswald',sans-serif;font-size:9.5px;letter-spacing:.08em;
  text-transform:uppercase;border-radius:99px;padding:3px 8px;vertical-align:middle;
}
.es-trade-note{
  display:flex;align-items:center;gap:7px;margin:0 0 12px;
  font-family:'Barlow',sans-serif;font-size:13px;color:#166534;
}
.es-trade-note i{color:#F8991D;}
.es-bulk-order{max-width:720px;}
.es-bulk-order label{display:block;font-family:'Oswald',sans-serif;font-size:13px;letter-spacing:.05em;text-transform:uppercase;color:#004D2C;margin:0 0 4px;}
.es-bulk-hint{font-family:'Barlow',sans-serif;font-size:13px;color:#666;margin:0 0 10px;}
.es-bulk-hint code{background:#F7F8F6;border:1px solid #E2E5E0;border-radius:4px;padding:1px 5px;}
.es-bulk-order textarea{
  width:100%;box-sizing:border-box;border:1px solid #E2E5E0;border-radius:10px;
  padding:12px 14px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13.5px;
  line-height:1.6;margin:0 0 12px;resize:vertical;
}
.es-bulk-order .button{min-height:46px;padding:12px 24px;}
.es-bulk-order-locked{background:#F7F8F6;border:1px solid #E2E5E0;border-radius:12px;padding:18px 20px;font-family:'Barlow',sans-serif;font-size:14px;color:#555;}
.es-bulk-order-locked a{color:#004D2C;font-weight:600;}

/* ---------- Focus states ---------- */
.es-card-action:focus-visible,
.es-shop-utils button:focus-visible,
.es-modal button:focus-visible,
.es-modal a:focus-visible,
#esCompareBar button:focus-visible,
#esSavedBar:focus-visible,
.es-quote-tools button:focus-visible,
.es-quote-capture button:focus-visible{
  outline:3px solid #F8991D;
  outline-offset:2px;
}
