/* comparador cr · catalog / browse page — azul confianza (playful premium)
   white glass cards on the ivory ground, hairlines + layered shadows.
   blue = action (add, active filters) · green = savings (discount, cheapest) */
.cat-head{max-width:1200px;margin:0 auto;padding:18px 18px 0}
.cat-head h1{font-size:26px;font-weight:800;letter-spacing:-.015em}
.cat-head h1 .red{color:var(--blue)}
.cat-head .sub{color:var(--muted);font-size:14px;font-weight:500;margin-top:4px}

/* ===== controls (glass strip: pill search, rounded selects, chip filters) ===== */
.controls-bar{position:static;z-index:50;background:rgba(250,247,241,.84);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid transparent;border-bottom:1px solid var(--line);margin-top:16px}
.controls-bar .inner{max-width:1200px;margin:0 auto;padding:14px 18px;display:flex;flex-direction:column;gap:12px}
.ctl-row{display:flex;gap:10px;align-items:stretch;flex-wrap:wrap}
.ctl-search{flex:1;min-width:220px;display:flex;align-items:center;background:var(--paper);border:1px solid var(--line-strong);border-radius:999px;padding:0 16px;gap:9px;height:46px;box-shadow:var(--sh-sm);transition:box-shadow .2s var(--ease),border-color .2s var(--ease)}
.ctl-search:focus-within{border-color:rgba(23,102,214,.4);box-shadow:var(--sh-sm),0 0 0 4px var(--blue-soft)} /* visible keyboard focus on the controls search */
.ctl-search input{flex:1;border:none;outline:none;background:transparent;font-family:var(--sans);font-size:15px;font-weight:500;min-width:0;color:var(--ink)}
.ctl-search input::placeholder{color:var(--faint)}
.ctl-select{background:var(--paper);border:1px solid var(--line-strong);border-radius:13px;padding:0 36px 0 14px;height:46px;font-family:var(--sans);font-size:13.5px;font-weight:600;color:var(--ink);cursor:pointer;-webkit-appearance:none;appearance:none;box-shadow:var(--sh-sm);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="10" height="6"><path d="M0 0l5 6 5-6z" fill="%23394049"/></svg>');background-repeat:no-repeat;background-position:right 14px center}
.ctl-select:hover{border-color:rgba(23,102,214,.4)}
/* one scrollable row instead of 3 wrapped rows — keeps the filter bar short so products aren't pushed down the page */
.store-chips{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px;scrollbar-width:thin;-webkit-overflow-scrolling:touch;
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent)}
.store-chip{flex:none;display:inline-flex;align-items:center;gap:7px;background:var(--paper);border:1px solid var(--line-strong);border-radius:999px;padding:8px 13px;font-family:var(--sans);font-size:12.5px;font-weight:600;color:var(--ink-2);cursor:pointer;user-select:none;white-space:nowrap;transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),transform .2s var(--ease),box-shadow .2s var(--ease)}
.store-chip .dot{width:9px;height:9px;border-radius:50%;flex:none}
.store-chip.off{opacity:.32}
.store-chip:hover{border-color:var(--line-strong);transform:translateY(-1px);box-shadow:var(--sh-sm);color:var(--ink)}
.store-chip.sel{background:var(--blue-soft);color:var(--blue);border-color:rgba(23,102,214,.3)}
/* two-level store filter (#chips): primary = rubro chips (the main control, solid blue when
   active); secondary = the active rubro's store chips, same scrollable row + brand dots.
   Both rows stay single-line so the sticky bar never eats the page. */
.store-filter{display:flex;flex-direction:column;gap:7px;width:100%;min-width:0}
.store-chips[hidden],.store-chip[hidden]{display:none}
.store-cats .cat-chip{font-size:13px;font-weight:700;padding:9px 14px;gap:6px;color:var(--ink);background:var(--paper-glass);border-color:var(--line-strong)}
.store-cats .cat-chip .em{font-size:14px;line-height:1}
.store-cats .cat-chip:hover{border-color:rgba(23,102,214,.4)}
.store-cats .cat-chip.sel{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:var(--sh-blue)}
.store-subs{position:relative;padding-left:14px}
.store-subs::before{content:"";position:absolute;left:4px;top:0;bottom:3px;width:2px;border-radius:2px;background:var(--blue-soft)}
.store-subs .store-chip{padding:6px 11px;font-size:12px}
.store-subs .sub-all{color:var(--muted)}
.store-subs .sub-all.sel{color:var(--blue)}
.cat-count{font-family:var(--mono);color:var(--muted);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.cat-count b{color:var(--ink)}

/* product grid */
.cat-grid-wrap{max-width:1200px;margin:0 auto;padding:16px 18px 60px}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
/* (old .pcard card removed — replaced by the .ccat-* grid below) */

.cat-sentinel{height:40px}
.cat-empty{text-align:center;color:var(--muted);padding:60px 20px;font-size:15px}
.cat-loadmore{text-align:center;padding:20px}
.cat-loadmore button{background:var(--blue-grad);color:#fff;border:none;border-radius:999px;padding:0 24px;height:44px;font-weight:700;font-size:14px;box-shadow:var(--sh-blue);transition:transform .25s var(--ease)}
.cat-loadmore button:hover{transform:translateY(-1px)}

@media (max-width:600px){
  .cat-head{padding:14px 14px 0}
  .cat-head h1{font-size:22px}
  .controls-bar .inner{padding:10px 14px}
  .cat-grid-wrap{padding:14px 14px 50px}
  .cat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .store-chips{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}
}

/* ===== catalog cards (ccat-*) — white glass cards, mono figures ===== */
/* header: heavier display + mono figures, matching the homepage hero */
.cat-head h1{font-weight:800;font-size:30px;letter-spacing:-.04em}
.cat-head .sub b{font-family:var(--mono);font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.cat-count b{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* card grid: soft rounded cards with a gap (the home "deal" card feel) */
.ccat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(212px,1fr));gap:12px;
  border-top:0 solid transparent;border-left:0 solid transparent;background:transparent}
.ccat-cell{position:relative;display:flex;flex-direction:column;background:var(--paper);
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-top:1px solid var(--line);border-left:1px solid var(--line);
  border-radius:16px;box-shadow:var(--sh-sm);overflow:hidden;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .2s var(--ease)}
.ccat-cell:hover{background:var(--paper);transform:translateY(-3px);box-shadow:var(--sh-md);border-color:var(--line-strong)}
/* crowned picks get a soft green ring — savings only ever reads green */
.ccat-cell.pick-val::before,.ccat-cell.pick-cheap::before{content:"";position:absolute;
  left:0;top:0;bottom:0;right:0;width:auto;z-index:1;pointer-events:none;border-radius:inherit}
.ccat-cell.pick-val::before{background:transparent;box-shadow:inset 0 0 0 2px var(--green)}
.ccat-cell.pick-cheap::before{background:transparent;box-shadow:inset 0 0 0 2px var(--green)}
.ccat-cell.pick-val,.ccat-cell.pick-cheap{box-shadow:var(--sh-sm),0 0 0 4px var(--green-soft)}

/* figure */
.ccat-fig{position:relative;display:flex;align-items:center;justify-content:center;
  height:150px;padding:14px;background:linear-gradient(180deg,#fff,#F5F4F0);border-bottom:1px solid var(--line)}
.ccat-fig img{max-width:100%;max-height:100%;object-fit:contain;mix-blend-mode:multiply}
.ccat-ph{font-size:38px;opacity:.7}
/* discount % = savings → green pill, top-left */
.ccat-pct{position:absolute;top:10px;left:10px;background:var(--green);color:#fff;
  font-family:var(--mono);font-weight:600;font-size:11.5px;letter-spacing:-.01em;
  padding:3px 8px;border-radius:999px;font-variant-numeric:tabular-nums;box-shadow:0 4px 10px -4px rgba(14,159,110,.6)}
.ccat-drop{position:absolute;bottom:10px;left:10px;background:var(--green-soft);color:var(--green);
  font-family:var(--mono);font-weight:600;font-size:10.5px;padding:3px 8px;border-radius:999px;backdrop-filter:blur(4px)}

/* body */
.ccat-body{display:flex;flex-direction:column;gap:5px;padding:12px 14px 14px;flex:1;min-width:0}
.ccat-store{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;line-height:1.2}
.ccat-name{font-family:var(--sans);font-weight:600;font-size:13.5px;line-height:1.32;color:var(--ink);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:35px;transition:color .15s}
.ccat-name:hover{text-decoration:none;color:var(--blue)}
.ccat-pr{display:flex;align-items:baseline;gap:7px;margin-top:2px}
.ccat-pr b{font-family:var(--mono);font-weight:600;font-size:17px;letter-spacing:-.02em;word-spacing:-.38em;
  color:var(--ink);font-variant-numeric:tabular-nums}
.ccat-pr s{font-family:var(--mono);font-size:12px;color:var(--faint);word-spacing:-.38em;text-decoration:line-through}
.ccat-cell.pick-cheap .ccat-pr b,.ccat-cell.pick-val .ccat-pr b{color:var(--green)}
.ccat-unit{font-family:var(--mono);font-size:11px;color:var(--muted);font-weight:500;
  font-variant-numeric:tabular-nums}
.ccat-unit.soft{opacity:.55}
/* winner labels: green mono pills (savings) */
.ccat-badge{align-self:flex-start;font-family:var(--mono);font-size:10px;font-weight:600;
  letter-spacing:.04em;text-transform:uppercase;line-height:1.4;padding:3px 8px;border-radius:999px}
.ccat-badge.val{color:var(--green);background:var(--green-soft)}
.ccat-badge.cheap{color:#fff;background:var(--green)}
/* price-history: "menor ₡X · prom ₡Y" line + real-deal badge */
.ccat-body .hist{font-family:var(--mono);font-size:10.5px;color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums}
.ccat-body .histbadge{align-self:flex-start;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;line-height:1.4;padding:3px 8px;border-radius:999px}
.ccat-body .histbadge.low{color:var(--green);background:var(--green-soft)}
.ccat-body .histbadge.good{color:var(--ink-2);background:rgba(23,26,31,.05)}
/* add button: the action → blue. soft pill at rest, blue gradient on hover, green once it's in */
.ccat-add{margin-top:auto;background:var(--blue-soft);border:1px solid rgba(23,102,214,.22);border-radius:999px;
  padding:9px 10px;min-height:40px;font-family:var(--sans);font-weight:700;font-size:12.5px;color:var(--blue);cursor:pointer;
  transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease),box-shadow .18s var(--ease),transform .2s var(--ease)}
.ccat-add:hover{background:var(--blue-grad);color:#fff;border-color:transparent;box-shadow:var(--sh-blue)}
.ccat-add.in{background:var(--green);color:#fff;border-color:var(--green)}

/* surrounding chrome */
.cat-loadmore button{border-radius:999px;font-family:var(--sans);font-weight:700;letter-spacing:.01em}
.cat-empty{border:1px dashed var(--line-strong);border-top:1px dashed var(--line-strong);border-radius:16px;background:var(--paper-glass);margin-top:0}

@media (max-width:600px){
  .cat-head h1{font-size:24px}
  .ccat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .ccat-cell{border-radius:14px}
  .ccat-fig{height:120px;padding:10px}
  .ccat-body{padding:10px 11px 11px}
  .ccat-name{font-size:12px}
  .ccat-pr b{font-size:15px}
  .ccat-add{padding:10px 8px;min-height:40px} /* ≥40px tap target on touch */
}

/* ===== extra filters (solo ofertas · rango de precio) ===== */
.ctl-toggle{display:inline-flex;align-items:center;gap:8px;background:var(--paper);border:1px solid var(--line-strong);border-radius:999px;box-shadow:var(--sh-sm);
  padding:0 14px;height:46px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer;user-select:none;white-space:nowrap;transition:background .18s var(--ease),color .18s var(--ease),border-color .18s var(--ease)}
.ctl-toggle input{accent-color:var(--blue);width:15px;height:15px;cursor:pointer}
.ctl-toggle.on{border-color:rgba(23,102,214,.3);background:var(--blue-soft);color:var(--blue)}
.ctl-prices{display:inline-flex;align-items:stretch;border:1px solid var(--line-strong);border-radius:13px;background:var(--paper);box-shadow:var(--sh-sm);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.ctl-prices input{width:88px;border:none;outline:none;background:transparent;height:44px;padding:0 12px;
  font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink);-moz-appearance:textfield}
.ctl-prices input::-webkit-outer-spin-button,.ctl-prices input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.ctl-prices input::placeholder{color:var(--faint);font-weight:500}
.ctl-prices .sep{align-self:center;color:var(--faint);font-size:12px}
.ctl-prices:focus-within{border-color:rgba(23,102,214,.4);box-shadow:var(--sh-sm),0 0 0 4px var(--blue-soft)}

/* ===== aisle mode on productos (?aisle=…) ===== */
.cat-head .crumb{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;display:block}
.cat-head .crumb a{color:var(--blue)}
.cat-head h1 .aemoji{font-size:.85em;margin-right:6px}

/* ===== directorios (tiendas.html · pasillos.html) — soft cards, mono figures ===== */
.dir-head{max-width:1200px;margin:0 auto;padding:26px 18px 0}
.dir-head h1{font-weight:800;font-size:30px;letter-spacing:-.04em}
.dir-head h1 .red{color:var(--blue)}
.dir-head .sub{color:var(--muted);font-size:14px;font-weight:500;margin-top:6px;max-width:64ch}
.dir-head .sub b{font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.dir-group{max-width:1200px;margin:0 auto;padding:28px 18px 0}
.dir-group h2{display:flex;align-items:baseline;gap:10px;font-family:var(--mono);font-size:12px;font-weight:600;
  letter-spacing:.09em;text-transform:uppercase;color:var(--blue);border-bottom:1px solid var(--line);padding-bottom:8px}
.dir-group h2 .n{color:var(--muted);font-weight:600}
.dir-grid{max-width:1200px;margin:0 auto;padding:14px 18px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:14px}
.dir-foot{max-width:1200px;margin:0 auto;padding:26px 18px 60px;color:var(--muted);font-size:13px}

/* tienda hero card */
.tdir-card{position:relative;display:flex;flex-direction:column;gap:9px;background:var(--paper);
  border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh-sm);overflow:hidden;padding:20px 18px 14px 18px;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .2s var(--ease)}
.tdir-card::before{content:"";position:absolute;left:0;top:0;bottom:auto;right:0;height:4px;width:auto;background:var(--tc,var(--ink))}
.tdir-card:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:var(--sh-md)}
.tdir-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.tdir-name{font-weight:800;font-size:21px;letter-spacing:-.03em}
.tdir-upd{font-family:var(--mono);font-size:10.5px;color:var(--muted);white-space:nowrap}
.tdir-kind{font-size:12.5px;color:var(--muted);min-height:34px}
.tdir-stats{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.tdir-stat{padding:9px 10px 8px 0}
.tdir-stat b{display:block;font-family:var(--mono);font-size:16px;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.tdir-stat b.red{color:var(--green)}
.tdir-stat span{font-size:11px;color:var(--muted)}
.tdir-links{display:flex;gap:16px;font-size:13px;font-weight:700;padding-top:2px}
.tdir-links a:hover{color:var(--blue)}
.tdir-links .muted{color:var(--muted);font-weight:600}
.tdir-links .muted:hover{color:var(--blue)}

/* pasillo tile */
.psl-tile{position:relative;display:flex;flex-direction:column;gap:8px;background:var(--paper);
  border:1px solid var(--line);border-radius:16px;box-shadow:var(--sh-sm);padding:16px 16px 14px;
  transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .2s var(--ease)}
.psl-tile:hover{border-color:var(--line-strong);transform:translateY(-3px);box-shadow:var(--sh-md)}
.psl-top{display:flex;align-items:center;gap:10px}
.psl-emoji{font-size:26px;line-height:1}
.psl-name{font-weight:800;font-size:17px;letter-spacing:-.02em}
.psl-name a::after{content:"";position:absolute;inset:0} /* whole tile clickable */
.psl-meta{font-size:12px;color:var(--muted)}
.psl-meta b{font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.psl-imgs{display:flex;gap:6px;min-height:54px}
.psl-imgs img{width:52px;height:52px;object-fit:contain;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:4px}
.psl-win{font-size:12px;color:var(--muted);border-top:1px solid var(--line);padding-top:8px}
.psl-win b{color:var(--ink)}
.psl-go{position:absolute;right:14px;top:16px;font-weight:800;color:var(--faint);transition:color .18s var(--ease),transform .2s var(--ease)}
.psl-tile:hover .psl-go{color:var(--blue);transform:translateX(3px)}

@media (max-width:600px){
  .dir-head{padding:18px 14px 0}
  .dir-head h1{font-size:24px}
  .dir-group,.dir-grid,.dir-foot{padding-left:14px;padding-right:14px}
  .dir-grid{grid-template-columns:1fr}
  .ctl-prices{flex:1}
  .ctl-prices input{width:50%}
}

/* price-history chart trigger: the series downloads on first tap (catalog.js) */
.ccat-body .ph-open{align-self:flex-start;background:none;border:none;padding:4px 0;margin:0;cursor:pointer;
  font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}
.ccat-body .ph-open:hover{color:var(--blue);text-decoration:underline}
.ccat-body .hist.ph-open::before{content:none}
.ccat-body .ph-open.busy{opacity:.55;cursor:progress}
.cat-loading{color:var(--blue);font-weight:700}

/* ===== polish (2026-10-08) ===== */
/* filter bar: pinned right under the 64px header on desktop; on phones and tablets it
   scrolls away with the page (pinned, it covered three quarters of a phone screen) */
@media (min-width:1024px){ .controls-bar{position:sticky;top:64px} }
@media (max-width:600px){
  .ctl-row{gap:8px}
  .ctl-search{flex:1 1 100%;min-width:0}
  #aisle,#sort{flex:1 1 0;min-width:0;padding-right:30px;background-position:right 11px center}
  .ctl-toggle{flex:0 0 auto;padding:0 12px}
  .ctl-prices{flex:1 1 0;min-width:0}
  .ctl-prices input{width:100%;min-width:0;padding:0 10px}
  .ctl-search,.ctl-select,.ctl-toggle{height:44px}
}

/* cards: calmer actions, sentence-case signals, one icon set */
.ccat-add{background:var(--paper);border:1px solid var(--line-strong);color:var(--blue);min-height:38px;font-size:12.5px}
.ccat-add:hover{background:var(--blue-soft);color:var(--blue-deep);border-color:rgba(23,102,214,.35);box-shadow:none}
.ccat-add.in{background:var(--green);color:#fff;border-color:var(--green)}
.ccat-body .histbadge{display:inline-flex;align-items:center;gap:5px;font-family:var(--sans);font-size:11.5px;font-weight:700;
  letter-spacing:0;text-transform:none;line-height:1.3;padding:3px 9px 3px 7px}
.ccat-body .histbadge svg{flex:none}
.ccat-badge{font-family:var(--sans);font-size:11.5px;font-weight:700;letter-spacing:0;text-transform:none;padding:3px 9px}
.ccat-body .ph-open{display:inline-flex;align-items:center;gap:6px;font-family:var(--sans);font-size:12px;font-weight:600;
  color:var(--muted);letter-spacing:0;padding:3px 0}
.ccat-body .ph-open svg,.ccat-body .cmp-open svg{flex:none}
.ccat-store{letter-spacing:.06em}
.ccat-unit{font-size:11.5px}
/* exactly two lines tall: a taller min-height let the top of a third line peek out */
.ccat-name{min-height:2.64em;max-height:2.64em}
