/* =========================================================
   Offers Filter & Results System
   Version 1.3.1 – z-index stacking fixes (panels always on top)
   ========================================================= */

:root {
  --ff-base:"Plus Jakarta Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --c-bg:#ffffff;
  --c-bg-soft:#f8fafc;
  --c-bg-alt:#f1f5f9;
  --c-bg-alt2:#e2e8f0;
  --c-glass:rgba(255,255,255,.68);
  --c-glass-strong:rgba(255,255,255,.85);
  --c-border:#d9e1ea;
  --c-border-strong:#c2ceda;
  --c-border-soft:rgba(210,222,232,.6);
  --c-border-focus:#94b5ff;
  --c-text:#0f172a;
  --c-text-soft:#334155;
  --c-text-mute:#64748b;
  --c-text-faint:#94a3b8;
  --c-accent:#2563eb;
  --c-accent-hover:#1d4ed8;
  --c-accent-alt:#6366f1;
  --c-accent-alt-hover:#4f46e5;
  --c-accent-fade:rgba(37,99,235,.1);
  --c-success:#16a34a;
  --c-danger:#dc2626;
  --c-highlight:#fde68a;
  --radius-xs:5px;
  --radius-sm:7px;
  --radius-md:10px;
  --radius-lg:14px;
  --radius-xl:18px;
  --radius-2xl:22px;
  --radius-pill:999px;
  --elevation-1:0 1px 2px rgba(0,0,0,.06),0 0 0 1px rgba(15,23,42,.03);
  --elevation-2:0 2px 6px -1px rgba(0,0,0,.08),0 1px 3px rgba(0,0,0,.08);
  --elevation-3:0 4px 12px -2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.08);
  --elevation-4:0 8px 22px -4px rgba(0,0,0,.15),0 4px 10px -2px rgba(0,0,0,.12);
  --elevation-5:0 12px 32px -6px rgba(0,0,0,.18),0 6px 16px -3px rgba(0,0,0,.15);
  --fs-2xs:.62rem;
  --fs-xs:.70rem;
  --fs-sm:.78rem;
  --fs-base:.85rem;
  --fs-md:.93rem;
  --fs-lg:1rem;
  --fs-xl:clamp(1.05rem,1rem + .5vw,1.25rem);
  --fw-reg:400;
  --fw-med:500;
  --fw-semi:600;
  --fw-bold:700;
  --card-thumb:96px;
  --transition-base:.28s cubic-bezier(.4,0,.2,1);
  --transition-fast:.18s cubic-bezier(.4,0,.2,1);
  --grad-accent:linear-gradient(90deg,#2563eb,#6366f1);
  --grad-accent-hover:linear-gradient(90deg,#1d4ed8,#4f46e5);
  --grad-soft:radial-gradient(circle at 25% 15%,rgba(99,102,241,.08),transparent 55%),radial-gradient(circle at 90% 80%,rgba(37,99,235,.08),transparent 60%);
}
@media (min-width:640px){
  :root { --fs-base:.88rem; --fs-md:.96rem; }
}

*{box-sizing:border-box;}
html,body{
  font-family:var(--ff-base);
  background:var(--c-bg);
  color:var(--c-text);
  line-height:1.38;
  max-width:100%;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
a{color:var(--c-accent);text-decoration:none;transition:color var(--transition-fast);}
a:hover{color:var(--c-accent-hover);}
:focus-visible{outline:2px solid var(--c-accent);outline-offset:2px;border-radius:6px;}

/* Buttons */
.btn-primary,.btn-secondary{
  font:var(--fw-semi) var(--fs-sm)/1.1 var(--ff-base);
  letter-spacing:.038em;
  padding:.65rem 1rem;
  border-radius:var(--radius-pill);
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  border:1px solid transparent;
  text-transform:uppercase;
  user-select:none;
  position:relative;
  overflow:hidden;
  transition:background var(--transition-base),box-shadow var(--transition-fast),transform var(--transition-fast);
}
.btn-primary{
  background:var(--grad-accent);
  color:#fff;
  box-shadow:var(--elevation-1);
}
.btn-primary:hover{background:var(--grad-accent-hover);box-shadow:var(--elevation-3);transform:translateY(-2px);}
.btn-secondary{
  background:linear-gradient(145deg,#ffffff,#f2f6fa);
  border:1px solid var(--c-border);
  color:var(--c-text-soft);
  box-shadow:var(--elevation-1);
}
.btn-secondary:hover{background:linear-gradient(145deg,#fff,#e9eef4);color:var(--c-text);box-shadow:var(--elevation-2);transform:translateY(-2px);}

/* Shared filter shell */
.filter-shell{
  background:var(--c-glass);
  backdrop-filter:blur(18px) saturate(1.4);
  -webkit-backdrop-filter:blur(18px) saturate(1.4);
  border:1px solid rgba(255,255,255,.55);
  padding:20px 22px 18px;
  border-radius:var(--radius-2xl);
  box-shadow:0 8px 28px -6px rgba(15,23,42,.25),0 2px 6px rgba(15,23,42,.12);
  position:relative;
  display:flex;
  flex-direction:column;
  gap:18px;
  overflow:visible;
}
.filter-shell:before{
  content:'';
  position:absolute;inset:0;
  background:var(--grad-soft);
  pointer-events:none;
  border-radius:inherit;
}

/* Elevate filter shells relative to other blocks */
.builder-filter-shell,
.results-filter-shell{
  position:relative;
  z-index:500;
}

.filter-bar{
  display:flex;
  gap:14px;
  width:100%;
  flex-wrap:nowrap;
  position:relative;
  z-index:10;
}
@media (max-width:1000px){
  .filter-bar{flex-wrap:wrap;}
}

/* Multi-select component with extreme z-index when open */
.ms{
  position:relative;
  flex:1 1 0;
  min-width:160px;
  z-index:11;
}
.ms.open{
  z-index:2147483000; /* ensure on top of everything */
}
.ms-trigger{
  width:100%;
  background:linear-gradient(145deg,#ffffff,#f2f6fa);
  border:1px solid var(--c-border);
  border-radius:14px;
  font:var(--fw-semi) var(--fs-xs)/1.2 var(--ff-base);
  letter-spacing:.05em;
  padding:14px 42px 14px 16px;
  text-align:left;
  color:var(--c-text-soft);
  cursor:pointer;
  position:relative;
  display:flex;
  align-items:center;
  gap:6px;
  box-shadow:var(--elevation-1);
  transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast),color var(--transition-fast),transform var(--transition-fast);
  overflow:visible;
}
.ms-trigger:hover{border-color:#c2ceda;box-shadow:var(--elevation-2);color:var(--c-text);}
.ms-trigger[aria-expanded="true"]{background:linear-gradient(145deg,#fff,#eaf1f7);box-shadow:var(--elevation-3);border-color:#bfd0e0;color:var(--c-text);}
.ms.has-selection .ms-trigger{color:var(--c-text);font-weight:var(--fw-semi);}
.ms-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;}
.ms-caret{position:absolute;right:14px;top:50%;width:11px;height:11px;transform:translateY(-50%);pointer-events:none;}
.ms-caret:before{
  content:'';position:absolute;inset:0;
  background:conic-gradient(from 135deg,var(--c-text-mute) 0 25%,transparent 0 50%,var(--c-text-mute) 0 75%,transparent 0);
  mask:radial-gradient(circle at 50% 50%,#000 55%,transparent 56%);
  opacity:.7;transition:transform var(--transition-fast),opacity var(--transition-fast);
}
.ms.open .ms-caret:before{transform:rotate(180deg);opacity:1;}

.ms-panel{
  display:none;
  position:absolute;
  top:calc(100% + 8px);
  left:0;
  z-index:2147483600; /* higher than open container */
  min-width:100%;
  width:260px;
  max-height:340px;
  flex-direction:column;
  gap:10px;
  padding:14px 14px 16px;
  background:linear-gradient(140deg,rgba(255,255,255,0.98),rgba(247,250,253,0.95));
  backdrop-filter:blur(20px) saturate(1.5);
  -webkit-backdrop-filter:blur(20px) saturate(1.5);
  border:1px solid rgba(255,255,255,0.6);
  box-shadow:0 18px 46px -12px rgba(15,23,42,0.35),0 4px 14px -4px rgba(15,23,42,0.18);
  border-radius:18px;
  animation:panelIn .28s cubic-bezier(.4,0,.2,1);
}
.ms.open .ms-panel{display:flex;}
@keyframes panelIn{from{opacity:0;transform:translateY(8px) scale(.98);}to{opacity:1;transform:translateY(0) scale(1);} }

.ms-tools{display:flex;gap:8px;flex-wrap:wrap;}
.ms-tool{
  background:#eef2f7;border:1px solid #cbd5d9;
  padding:6px 10px;font-size:var(--fs-2xs);
  text-transform:uppercase;letter-spacing:.08em;
  font-weight:var(--fw-semi);border-radius:var(--radius-pill);
  cursor:pointer;line-height:1.1;
  transition:background var(--transition-fast),border-color var(--transition-fast);
}
.ms-tool:hover{background:#e2e8f0;border-color:#b9c4d0;}

.ms-options{
  display:flex;flex-direction:column;gap:6px;
  overflow:auto;max-height:240px;
  padding-right:4px;scrollbar-width:thin;
}
.ms-options::-webkit-scrollbar{width:8px;}
.ms-options::-webkit-scrollbar-thumb{background:#d1dae3;border-radius:10px;}
.ms-options::-webkit-scrollbar-thumb:hover{background:#c0ccd6;}

.ms-option{
  display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-sm);
  padding:6px 8px;border-radius:10px;
  background:linear-gradient(120deg,#f5f8fb,#f0f4f8);
  border:1px solid #e3ebf2;
  cursor:pointer;position:relative;line-height:1.25;
  transition:background var(--transition-fast),border-color var(--transition-fast);
  user-select:none;
}
.ms-option:hover{background:linear-gradient(120deg,#eef3f8,#e8eef4);border-color:#d4dee7;}
.ms-option input{accent-color:var(--c-accent);width:18px;height:18px;margin:2px 0 0;flex-shrink:0;cursor:pointer;}
.ms-option-text{flex:1 1 auto;overflow-wrap:anywhere;font-weight:var(--fw-med);color:var(--c-text-soft);}
.ms-option input:checked + .ms-option-text{color:var(--c-text);font-weight:var(--fw-semi);}
.ms-empty{font-size:var(--fs-xs);font-style:italic;color:var(--c-text-mute);padding:4px 2px;}

/* Builder full-width layout */
.offers-builder--full .builder-top{
  display:flex;
  flex-direction:column;
  gap:22px;
  width:100%;
  position:relative;
}
.builder-actions-bar{
  width:100%;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:18px;
  background:var(--c-glass);
  border:1px solid var(--c-border);
  padding:16px 20px;
  border-radius:var(--radius-2xl);
  box-shadow:var(--elevation-3);
  backdrop-filter:blur(14px) saturate(1.35);
  position:relative;
  z-index:200; /* below filter shell to avoid covering panels */
}
.builder-actions-bar .preview-line{
  flex:0 0 auto;
  margin-right:auto;
  background:linear-gradient(90deg,#e2e8f0,#f1f5f9);
  padding:8px 14px;
  border-radius:var(--radius-pill);
  font-size:var(--fs-sm);
  font-weight:var(--fw-semi);
  color:var(--c-text-soft);
  letter-spacing:.05em;
}
.builder-buttons{
  display:flex;
  gap:12px;
  flex-wrap:wrap;
}
.preview-count-value{color:var(--c-accent);font-weight:var(--fw-bold);}
.loading-inline{font-size:var(--fs-sm);font-weight:var(--fw-semi);color:var(--c-text-mute);letter-spacing:.06em;}

@media (max-width:640px){
  .filter-bar{flex-wrap:wrap;}
  .ms{flex:1 1 calc(50% - 14px);}
  .builder-actions-bar{flex-direction:column;align-items:stretch;}
  .builder-actions-bar .preview-line{margin-right:0;width:100%;text-align:center;}
  .builder-buttons{justify-content:center;width:100%;}
}
@media (max-width:480px){
  .ms{flex:1 1 100%;}
}

/* Results simplified */
.offers-results{
  margin-top:40px;
  display:flex;
  flex-direction:column;
  gap:30px;
  position:relative;
}
.offers-results .results-top{
  display:flex;
  flex-direction:column;
  gap:18px;
  position:relative;
}
.offers-results .results-filter-shell{
  padding:22px 24px 20px;
}
.results-count{
  font-size:var(--fs-sm);
  color:var(--c-text-mute);
  font-weight:var(--fw-med);
  margin:0 4px;
  letter-spacing:.04em;
}

/* Results grid & cards */
.results-grid{
  display:grid;
  gap:22px;
  grid-template-columns:repeat(auto-fill,minmax(310px,1fr));
  width:100%;
  position:relative;
  z-index:1;
}
@media (min-width:1200px){
  .results-grid{grid-template-columns:repeat(3,1fr);}
}

.offer-card{
  display:flex;
  gap:18px;
  background:linear-gradient(160deg,#ffffff,#f6f9fc 70%);
  border:1px solid var(--c-border);
  border-radius:24px;
  padding:18px 18px 20px;
  box-shadow:var(--elevation-1);
  position:relative;
  overflow:hidden;
  transition:box-shadow var(--transition-base),transform var(--transition-base),border-color var(--transition-fast);
}
.offer-card:before{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 85% 15%,rgba(99,102,241,.08),transparent 55%),
    radial-gradient(circle at 10% 90%,rgba(37,99,235,.08),transparent 60%);
  pointer-events:none;
  opacity:.85;
}
.offer-card:hover{box-shadow:var(--elevation-3);transform:translateY(-4px);border-color:#c5d1dc;}
.offer-thumb{
  flex:0 0 var(--card-thumb);
  height:var(--card-thumb);
  border-radius:18px;
  background:linear-gradient(135deg,#e2e8f0,#f1f5f9);
  overflow:hidden;
  display:flex;align-items:center;justify-content:center;
  font-size:var(--fs-2xs);
  font-weight:var(--fw-semi);
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--c-text-mute);
  position:relative;
}
.offer-thumb img{
  width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.4s ease;
  transform:scale(1.02);
}
.offer-card:hover .offer-thumb img{transform:scale(1.07);}
.offer-body{display:flex;flex-direction:column;gap:10px;min-width:0;}
.offer-title{margin:0;font-size:var(--fs-xl);line-height:1.18;font-weight:var(--fw-semi);}
.offer-title a{
  color:var(--c-text);
  background:linear-gradient(90deg,var(--c-accent),var(--c-accent)) no-repeat 0 100%/0 2px;
  transition:background-size var(--transition-base),color var(--transition-fast);
  padding-bottom:2px;
}
.offer-title a:hover{background-size:100% 2px;color:var(--c-accent);}
.offer-desc{margin:0;font-size:var(--fs-sm);line-height:1.45;color:var(--c-text-soft);font-weight:var(--fw-med);overflow-wrap:anywhere;}
.offer-desc mark{background:var(--c-highlight);padding:0 .2em;border-radius:3px;}

/* Empty state */
.empty-state-card{
  background:linear-gradient(145deg,#ffffff,#f5f8fb);
  border:1px dashed var(--c-border);
  border-radius:28px;
  padding:40px 28px 34px;
  text-align:center;
  display:flex;
  flex-direction:column;
  gap:18px;
  align-items:center;
  box-shadow:var(--elevation-1);
  position:relative;
  overflow:hidden;
}
.empty-state-card:before{
  content:'';
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 15% 20%,rgba(99,102,241,.07),transparent 60%),
    radial-gradient(circle at 85% 80%,rgba(37,99,235,.06),transparent 60%);
  pointer-events:none;
}
.empty-illustration{width:120px;height:80px;opacity:.85;}
.empty-title{margin:0;font-size:1.12rem;font-weight:var(--fw-semi);color:var(--c-text);}
.empty-msg{margin:0;font-size:var(--fs-sm);color:var(--c-text-mute);max-width:520px;}
.empty-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

.sr-only{
  position:absolute;width:1px;height:1px;
  margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);
  white-space:nowrap;border:0;
}

/* Responsive tweaks */
@media (max-width:640px){
  .offers-results{margin-top:20px;}
  .offer-card{padding:16px 16px 18px;gap:16px;}
  :root{--card-thumb:88px;}
  .offer-title{font-size:clamp(.95rem,.9rem + 1.1vw,1.15rem);}
}
@media (max-width:520px){
  .offer-card{padding:14px 16px 16px;}
  :root{--card-thumb:78px;}
  .btn-primary,.btn-secondary{font-size:var(--fs-xs);padding:.55rem .75rem;}
  .filter-shell{padding:18px 18px 16px;}
}
@media (max-width:400px){
  .offer-card{flex-direction:column;align-items:flex-start;}
  .offer-thumb{width:100%;height:160px;flex:0 0 auto;}
  :root{--card-thumb:160px;}
}

/* Reduce motion */
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important;}
  .offer-card:hover,.btn-primary,.ms-option:hover{transform:none!important;}
}