/* Catalog page */
.cat-hero{padding:4rem 0 2rem;text-align:center}
.cat-hero h1{font-size:clamp(2.2rem,4.5vw,3.2rem)}
.cat-hero p{color:var(--ink-2);margin-top:1rem;max-width:50ch;margin-inline:auto}

.cat-toolbar{position:sticky;top:90px;z-index:20;margin-bottom:1.6rem}
.cat-toolbar .glass{padding:1rem 1.2rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
.search{flex:1;min-width:220px;position:relative;display:flex;align-items:center}
.search svg{position:absolute;left:14px;width:18px;height:18px;color:var(--muted)}
.search input{width:100%;border:1px solid var(--line);background:#fff;border-radius:999px;padding:.75em 1em .75em 2.6em;font-family:inherit;font-size:.95rem}
.search input:focus{outline:0;border-color:var(--g-400);box-shadow:0 0 0 4px var(--g-100)}
.cat-count{font-size:.85rem;color:var(--muted);white-space:nowrap}

.chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:2rem}
.chip{border:1px solid var(--line);background:var(--glass);backdrop-filter:blur(10px);color:var(--ink-2);
  padding:.5em 1em;border-radius:999px;font-size:.85rem;font-weight:500;transition:.2s}
.chip:hover{border-color:var(--g-300);color:var(--g-700)}
.chip.on{background:var(--grad-hero);color:#fff;border-color:transparent;box-shadow:0 6px 16px -6px rgba(36,133,64,.5)}
.chip .ct{opacity:.6;font-size:.78em;margin-left:.3em}
.chip.on .ct{opacity:.85}

.prod-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
@media(max-width:1040px){.prod-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.prod-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:460px){.prod-grid{grid-template-columns:1fr}}

.prod{padding:1.3rem;cursor:pointer;display:flex;flex-direction:column;min-height:190px;position:relative;overflow:hidden}
.prod .thumb{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.4rem;
  background:var(--g-50);border:1px solid var(--g-100);margin-bottom:.9rem}
.prod .pcat{font-size:.7rem;font-weight:600;color:var(--g-600);letter-spacing:.04em}
.prod h3{font-size:1.05rem;margin:.3rem 0 .4rem}
.prod p{font-size:.83rem;color:var(--muted);line-height:1.45;flex:1}
.prod .pfoot{display:flex;align-items:center;justify-content:space-between;margin-top:.8rem}
.prod .more{font-size:.82rem;font-weight:600;color:var(--g-600);display:flex;align-items:center;gap:.3em}
.prod .star{position:absolute;top:1rem;right:1rem;font-size:.95rem}
.prod.hidden{display:none}

.empty{text-align:center;padding:4rem 0;color:var(--muted)}

/* Modal */
.modal-back{position:fixed;inset:0;background:rgba(15,26,20,.4);backdrop-filter:blur(6px);z-index:100;
  display:none;align-items:center;justify-content:center;padding:1.5rem}
.modal-back.show{display:flex;animation:fade .25s}
@keyframes fade{from{opacity:0}}
.modal{background:#fff;border-radius:var(--radius-lg);max-width:560px;width:100%;box-shadow:var(--shadow-lg);
  overflow:hidden;animation:slideup .35s var(--ease)}
@keyframes slideup{from{transform:translateY(30px);opacity:0}}
.modal-top{background:var(--grad-hero);background-size:160% 160%;padding:2rem;color:#fff;position:relative}
.modal-top .x{position:absolute;top:1rem;right:1rem;width:36px;height:36px;border-radius:50%;border:0;
  background:rgba(255,255,255,.2);color:#fff;font-size:1.2rem;display:grid;place-items:center}
.modal-top .thumb{width:60px;height:60px;border-radius:16px;background:rgba(255,255,255,.18);display:grid;place-items:center;font-size:1.8rem;margin-bottom:1rem}
.modal-top h2{font-size:1.6rem}
.modal-top .pcat{opacity:.9;font-size:.85rem;margin-top:.3rem}
.modal-body{padding:2rem}
.modal-body p{color:var(--ink-2)}
.modal-specs{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:1.4rem 0}
.modal-specs .s{background:var(--bg);border:1px solid var(--line-2);border-radius:12px;padding:.8rem}
.modal-specs .s .k{font-size:.72rem;color:var(--muted)}
.modal-specs .s .v{font-weight:700;font-family:var(--font-display)}
.modal-actions{display:flex;gap:.8rem}

/* responsive */
@media(max-width:560px){
  .cat-hero{padding:2.4rem 0 1.2rem}
  .cat-toolbar{top:78px;margin-bottom:1.1rem}
  .cat-toolbar .glass{padding:.7rem .8rem;gap:.6rem}
  .search{min-width:0;flex:1 1 100%}
  .cat-count{flex:1 1 100%;text-align:left}
  .chips{gap:.4rem;margin-bottom:1.4rem;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.4rem;
    -webkit-mask:linear-gradient(90deg,#000 90%,transparent);mask:linear-gradient(90deg,#000 90%,transparent)}
  .chip{white-space:nowrap;flex:0 0 auto}
  .prod{min-height:0}
  .modal-back{padding:1rem;align-items:flex-end}
  .modal-top{padding:1.5rem}
  .modal-body{padding:1.4rem}
}
