/* Trang /san-pham/: danh mục sản phẩm (sinh bằng tools/gen-san-pham.mjs). Mọi lớp bắt đầu bằng sp-. */
.sp-page{background:#fff}
.sp-wrap{width:min(var(--content,1160px),calc(100% - 56px));margin-inline:auto}
@media(max-width:820px){.sp-wrap{width:100%}}

/* Mở đầu */
.sp-hero{position:relative;padding:30px 0 18px;background:radial-gradient(60% 120% at 85% 0,#e6f3ff 0,rgba(230,243,255,0) 70%)}
.sp-kicker{margin:0;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#5b6f86}
.sp-hero h1{margin:8px 0 0;font-size:clamp(30px,3.2vw,42px);line-height:1.12;letter-spacing:-.035em;color:var(--ink);font-weight:700}
.sp-hero h1 em{font-style:normal;color:var(--blue)}
.sp-lead{margin:10px 0 0;max-width:70ch;font-size:16px;line-height:1.65;color:var(--muted)}
.sp-filter{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}
.sp-filter button{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid #cfdeee;background:#fff;color:#22344d;font:inherit;font-size:15px;font-weight:600;cursor:pointer;transition:border-color .2s,background .2s,color .2s,box-shadow .2s}
.sp-filter button b{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;border-radius:999px;background:#eef4fb;color:var(--blue);font-size:13px}
.sp-filter button:hover{border-color:var(--blue);color:var(--blue)}
.sp-filter button.is-on{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 10px 22px -12px rgba(6,61,121,.7)}
.sp-filter button.is-on b{background:rgba(255,255,255,.2);color:#fff}

/* Lưới thẻ */
.sp-list{padding:6px 0 40px}
.sp-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.sp-card a{display:flex;flex-direction:column;height:100%;border-radius:16px;overflow:hidden;background:#fff;border:1px solid #e1e9f2;box-shadow:0 14px 34px -24px rgba(10,42,94,.45);color:inherit;text-decoration:none;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.sp-card a:hover,.sp-card a:focus-visible{transform:translateY(-4px);border-color:#bcd3ec;box-shadow:0 22px 44px -24px rgba(10,42,94,.55)}
.sp-card a:focus-visible{outline:3px solid rgba(6,61,121,.4);outline-offset:3px}
.sp-media{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;background:#eef5fc}
.sp-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.sp-card a:hover .sp-media img{transform:scale(1.04)}
.sp-tag{position:absolute;left:10px;top:10px;padding:4px 10px;border-radius:999px;background:rgba(255,255,255,.94);color:var(--blue);font-size:13px;font-weight:700;box-shadow:0 6px 16px -8px rgba(10,42,94,.5)}
.sp-body{display:flex;flex-direction:column;flex:1;padding:14px 16px 16px}
.sp-body h2{margin:0;font-size:17px;line-height:1.3;letter-spacing:-.015em;color:var(--ink)}
.sp-body p{margin:6px 0 0;font-size:16px;line-height:1.55;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sp-more{margin-top:auto;padding-top:10px;font-size:15px;font-weight:700;color:var(--blue)}
.sp-card[hidden]{display:none}
.sp-empty{margin:20px 0 0;color:var(--muted)}

/* Hỗ trợ chọn */
.sp-help{padding:0 0 48px}
.sp-help-box{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:22px 28px;border-radius:20px;background:linear-gradient(120deg,#063d79 0%,#0b5fae 100%);color:#fff}
.sp-help h2{margin:0;font-size:21px;letter-spacing:-.02em;color:#fff}
.sp-help p{margin:6px 0 0;font-size:16px;line-height:1.6;color:rgba(255,255,255,.86)}
.sp-help-actions{display:flex;flex-wrap:wrap;gap:12px;flex:none}
.sp-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border-radius:999px;font-weight:700;text-decoration:none;white-space:nowrap}
.sp-btn-red{background:var(--red);color:#fff}
.sp-btn-line{background:#fff;color:var(--blue)}

@media(max-width:1100px){.sp-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}}
@media(max-width:860px){.sp-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
@media(max-width:820px){.sp-help-box{flex-direction:column;align-items:flex-start;padding:24px 20px}}
@media(max-width:640px){
  .sp-hero{padding:20px 0 14px}
  .sp-lead{font-size:16px}
  .sp-filter{flex-wrap:nowrap;overflow-x:auto;margin-right:calc(-1*var(--gutter,20px));padding-right:var(--gutter,20px);scrollbar-width:none}
  .sp-filter::-webkit-scrollbar{display:none}
  .sp-filter button{flex:none}
  .sp-grid{grid-template-columns:1fr;gap:12px}
  .sp-card a{flex-direction:row}
  .sp-media{flex:none;width:38%;aspect-ratio:auto;min-height:118px}
  .sp-tag{display:none}
  .sp-body{padding:12px 14px}
  .sp-body h2{font-size:16px}
  .sp-body p{font-size:15px;-webkit-line-clamp:2}
  .sp-more{padding-top:6px;font-size:14px}
  .sp-help-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}
}
@media(prefers-reduced-motion:reduce){.sp-card a,.sp-media img{transition:none}}
