/**
 * layout.css —— 第 3 层：骨架（容器、栅格、区块节奏、页头页脚结构）
 * 只引用语义 token。
 */

/* ---------- 容器 ---------- */
.container {
  inline-size: 100%;
  max-inline-size: var(--w-page);
  margin-inline: auto;
  padding-inline: var(--s-4);
}
@media (min-width: 720px) { .container { padding-inline: var(--s-5); } }
.container--narrow { max-inline-size: var(--w-narrow); }
.container--wide { max-inline-size: 1360px; }

/* ---------- 区块节奏 ---------- */
.section {
  padding-block: clamp(var(--s-6), 5vw, var(--s-8));
  position: relative;
}
.section--tight { padding-block: clamp(var(--s-5), 3vw, var(--s-6)); }
.section--sunk { background: var(--bg-sunken); }
.section--deep { background: var(--bg-deep); color: var(--text-inverse); }
.section--raised {
  background: var(--bg-sunken);
  border-block: 1px solid var(--border-subtle);
}
.section--flush { padding-block: 0; }

.section__head {
  max-inline-size: 62ch;
  margin-block-end: var(--s-6);
}
.section__head--center {
  margin-inline: auto;
  text-align: center;
}
.section__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0 0 var(--s-2);
  font-size: var(--fs-sm);
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-brand);
}
.section__lede {
  font-size: var(--fs-md);
  color: var(--text-secondary);
  margin-block-start: var(--s-3);
}

/* ---------- 栅格 ---------- */
.grid { display: grid; gap: var(--s-5); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 210px), 1fr)); }
/* 品类宫格：固定 3 列，九个品类正好 3×3，避免 auto-fit 在宽屏拉成 4 列后
   最后一行只剩一张卡。 */
.cats-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
@media (max-width: 1180px) { .cats-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 900px)  { .cats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 680px)  { .cats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 460px)  { .cats-grid { grid-template-columns: minmax(0, 1fr); } }
.grid--sidebar {
  grid-template-columns: minmax(0, 1fr);
  gap: var(--s-6);
}
@media (min-width: 960px) {
  .grid--sidebar { grid-template-columns: minmax(0, 1fr) 340px; align-items: start; }
}

.stack > * + * { margin-block-start: var(--s-4); }
.stack--lg > * + * { margin-block-start: var(--s-6); }
.cluster { display: flex; flex-wrap: wrap; gap: var(--s-3); align-items: center; }

/* ---------- 页头 ---------- */
.site-header {
  position: sticky;
  inset-block-start: 0;
  z-index: var(--z-header);
  background: color-mix(in srgb, var(--bg-base) 88%, transparent);
  -webkit-backdrop-filter: saturate(160%) blur(12px);
  backdrop-filter: saturate(160%) blur(12px);
  border-block-end: 1px solid var(--border-subtle);
}
/* 不支持 color-mix 的浏览器退回不透明白底（避免深色文字压在半透明层上） */
@supports not (background: color-mix(in srgb, red 50%, transparent)) {
  .site-header { background: var(--bg-base); }
}

.site-header__bar {
  display: flex;
  align-items: center;
  gap: var(--s-4);
  min-block-size: 68px;
  padding-block: var(--s-2);
}

.site-header__spacer { flex: 1 1 auto; }

/* 顶部细渐变条：唯一允许的通栏装饰，1px，不影响 LCP */
.site-header::before {
  content: "";
  position: absolute;
  inset-block-start: 0;
  inset-inline: 0;
  block-size: 2px;
  background: var(--grad-iridescent);
  opacity: .9;
}

/* ---------- 页脚 ---------- */
.site-footer {
  position: relative;
  background: var(--bg-deep);
  color: var(--text-inverse);
  padding-block: var(--s-7) var(--s-5);
  margin-block-start: var(--s-2);
}
.site-footer a { color: var(--text-inverse-dim); text-decoration: none; }
.site-footer a:hover { color: var(--text-inverse); text-decoration: underline; }
.site-footer__cols {
  display: grid;
  gap: var(--s-6);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr));
}
.site-footer__bottom {
  margin-block-start: var(--s-6);
  padding-block-start: var(--s-4);
  border-block-start: 1px solid var(--border-subtle);
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-3) var(--s-5);
  justify-content: space-between;
  font-size: var(--fs-sm);
  color: var(--text-muted);
}
.site-footer__legal { max-inline-size: 62ch; }

/* ---------- 主内容 ---------- */
.site-main { display: block; }
.site-main:focus { outline: none; }

/* 首屏不需要 sticky 头部占位补偿，因为 sticky 不脱流 */
