@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,500;1,400&display=swap');

/* ── 变量 ── */
:root {
  --c-bg: #0d0d0d;
  --c-bg2: #111118;
  --c-purple: #8000ff;
  --c-pink: #ff00ff;
  --c-purple-dim: rgba(128,0,255,.18);
  --c-pink-dim: rgba(255,0,255,.14);
  --c-text: #e8e0ff;
  --c-text-dim: #9980cc;
  --c-border: rgba(128,0,255,.35);
  --c-border-pink: rgba(255,0,255,.3);
  --c-card-bg: rgba(13,13,13,.92);
  --c-nav-bg: rgba(10,10,18,.96);
  --radius-card: 28px;
  --radius-pill: 999px;
  --font-mono: 'JetBrains Mono', 'Cascadia Code', 'Fira Code', 'Courier New', monospace;
  --shadow-purple: 0 0 12px rgba(128,0,255,.7), 0 0 24px rgba(128,0,255,.3);
  --shadow-pink: 0 0 12px rgba(255,0,255,.7), 0 0 24px rgba(255,0,255,.3);
  --shadow-card: 0 4px 32px rgba(128,0,255,.18), 0 1px 0 rgba(255,0,255,.1);
  --nav-h: 64px;
  --content-max: 860px;
  --layout-max: 1200px;
}

/* ── Reset ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { font-size: 16px; scroll-behavior: smooth; }
body {
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--font-mono);
  font-size: 16px;
  line-height: 1.7;
  min-height: 100vh;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--c-purple); text-decoration: none; transition: color .2s, text-shadow .2s; }
a:hover { color: var(--c-pink); text-shadow: var(--shadow-pink); }
img { max-width: 100%; height: auto; display: block; border-radius: 12px; }
ul, ol { list-style: none; }
p { margin-bottom: .9em; }
p:last-child { margin-bottom: 0; }
h1,h2,h3,h4 { font-family: var(--font-mono); font-weight: 500; line-height: 1.3; }

/* ── 扫描线叠层 ── */
.scanlines {
  pointer-events: none;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent 2px,
    rgba(0,0,0,.18) 2px,
    rgba(0,0,0,.18) 4px
  );
  opacity: .45;
}

/* ── Glitch 动画 ── */
@keyframes glitch-skew {
  0%,100% { transform: skewX(0deg); }
  20% { transform: skewX(-2.5deg); clip-path: inset(10% 0 80% 0); }
  21% { transform: skewX(0deg); clip-path: none; }
  50% { transform: skewX(1.5deg); clip-path: inset(60% 0 20% 0); }
  51% { transform: skewX(0deg); clip-path: none; }
  75% { transform: skewX(-1deg); }
}
@keyframes glitch-after {
  0%,100% { transform: translate(0); opacity: 0; }
  18% { transform: translate(3px, -2px); opacity: .8; clip-path: inset(5% 0 85% 0); }
  19% { opacity: 0; }
  48% { transform: translate(-3px, 2px); opacity: .6; clip-path: inset(55% 0 30% 0); }
  49% { opacity: 0; }
}
@keyframes neon-pulse {
  0%,100% { text-shadow: var(--shadow-purple); }
  50% { text-shadow: 0 0 20px var(--c-pink), 0 0 40px var(--c-purple); }
}
@keyframes stagger-in {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes scan-sweep {
  0% { background-position: 0 0; }
  100% { background-position: 0 100vh; }
}

.glitch {
  position: relative;
  animation: glitch-skew 7s infinite step-end, neon-pulse 3s ease-in-out infinite;
  color: var(--c-text);
}
.glitch::after {
  content: attr(data-text);
  position: absolute;
  left: 0; top: 0;
  color: var(--c-pink);
  animation: glitch-after 7s infinite step-end;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  .glitch { animation: none; }
  .glitch::after { display: none; }
  .scanlines { animation: none; }
  * { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

/* ── 导航 ── */
.site-header {
  position: sticky;
  top: 0;
  z-index: 900;
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0 1.5rem;
  height: var(--nav-h);
  background: var(--c-nav-bg);
  border-bottom: 1px solid var(--c-border);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.brand-logo {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-shrink: 0;
  text-decoration: none;
}
.brand-mark {
  color: var(--c-purple);
  font-size: 1.4rem;
  text-shadow: var(--shadow-purple);
  line-height: 1;
}
.brand-name {
  font-size: 1.05rem;
  font-weight: 500;
  letter-spacing: .04em;
  color: var(--c-text);
}

/* nav > ol > li > a（有序导航，抽签要求） */
.site-nav {
  flex: 1;
  overflow-x: auto;
  scrollbar-width: none;
}
.site-nav::-webkit-scrollbar { display: none; }
.site-nav ol {
  display: flex;
  flex-wrap: nowrap;
  gap: .4rem;
  align-items: center;
}
.site-nav ol li { flex-shrink: 0; }
.nav-pill {
  display: inline-block;
  padding: .45rem .9rem;
  border-radius: var(--radius-pill);
  border: 1px solid var(--c-border);
  font-size: .78rem;
  font-family: var(--font-mono);
  color: var(--c-text-dim);
  white-space: nowrap;
  transition: border-color .2s, color .2s, background .2s, text-shadow .2s;
  min-height: 40px;
  line-height: 1;
  display: flex;
  align-items: center;
}
.nav-pill:hover, .nav-pill.active {
  border-color: var(--c-purple);
  color: var(--c-text);
  background: var(--c-purple-dim);
  text-shadow: 0 0 8px var(--c-purple);
}
.nav-contact-btn {
  flex-shrink: 0;
  padding: .5rem 1.1rem;
  border-radius: var(--radius-pill);
  border: 1px solid var(--c-pink);
  color: var(--c-pink);
  font-size: .8rem;
  font-family: var(--font-mono);
  white-space: nowrap;
  min-height: 40px;
  display: flex;
  align-items: center;
  transition: background .2s, text-shadow .2s, box-shadow .2s;
}
.nav-contact-btn:hover {
  background: var(--c-pink-dim);
  color: var(--c-pink);
  text-shadow: var(--shadow-pink);
  box-shadow: var(--shadow-pink);
}

/* ── 按钮 ── */
.btn-primary {
  display: inline-flex;
  align-items: center;
  padding: .65rem 1.5rem;
  border-radius: var(--radius-pill);
  background: var(--c-purple);
  color: #fff;
  font-family: var(--font-mono);
  font-size: .9rem;
  font-weight: 500;
  border: none;
  cursor: pointer;
  text-shadow: 0 0 8px rgba(255,255,255,.4);
  box-shadow: var(--shadow-purple);
  transition: background .2s, box-shadow .2s;
  min-height: 44px;
  text-decoration: none;
}
.btn-primary:hover { background: #9a00ff; color: #fff; box-shadow: 0 0 20px var(--c-purple); }
.btn-ghost {
  display: inline-flex;
  align-items: center;
  padding: .6rem 1.3rem;
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--c-pink);
  font-family: var(--font-mono);
  font-size: .9rem;
  border: 1px solid var(--c-pink);
  cursor: pointer;
  transition: background .2s, text-shadow .2s, box-shadow .2s;
  min-height: 44px;
  text-decoration: none;
}
.btn-ghost:hover { background: var(--c-pink-dim); text-shadow: var(--shadow-pink); box-shadow: var(--shadow-pink); color: var(--c-pink); }
.btn-sm { font-size: .8rem; padding: .45rem 1rem; min-height: 40px; }

/* ── HUD 卡片 ── */
.hud-card {
  background: var(--c-card-bg);
  border: 1px solid var(--c-border);
  border-radius: var(--radius-card);
  padding: 1.5rem;
  box-shadow: var(--shadow-card);
  transition: border-color .25s, box-shadow .25s, transform .25s;
  height: 100%;
  display: flex;
  flex-direction: column;
  gap: .6rem;
}
.hud-card:hover {
  border-color: var(--c-purple);
  box-shadow: 0 6px 40px rgba(128,0,255,.3), 0 0 0 1px var(--c-purple);
  transform: translateY(-3px);
}
.hud-card h3 { font-size: 1rem; }
.hud-card h3 a { color: var(--c-text); }
.hud-card h3 a:hover { color: var(--c-pink); }
.hud-card p { font-size: .88rem; color: var(--c-text-dim); flex: 1; }
.card-date { font-size: .75rem; color: var(--c-text-dim); letter-spacing: .05em; }

/* ── HUD aside ── */
.hud-aside {
  background: rgba(128,0,255,.07);
  border: 1px solid var(--c-border);
  border-radius: 16px;
  padding: 1.2rem 1.4rem;
}
.aside-label {
  font-size: .72rem;
  letter-spacing: .12em;
  color: var(--c-purple);
  text-shadow: 0 0 8px var(--c-purple);
  text-transform: uppercase;
  margin-bottom: .7rem;
  font-weight: 500;
}
.aside-links { display: flex; flex-direction: column; gap: .45rem; }
.aside-links li a {
  font-size: .84rem;
  color: var(--c-text-dim);
  border-left: 2px solid var(--c-border);
  padding-left: .6rem;
  transition: color .2s, border-color .2s;
  display: block;
}
.aside-links li a:hover { color: var(--c-pink); border-color: var(--c-pink); text-shadow: 0 0 6px var(--c-pink); }
.aside-links-row { flex-direction: row; flex-wrap: wrap; gap: .5rem; }
.aside-links-row li a { border-left: none; padding-left: 0; padding: .3rem .7rem; border: 1px solid var(--c-border); border-radius: var(--radius-pill); font-size: .8rem; }
.aside-links-row li a:hover { border-color: var(--c-pink); background: var(--c-pink-dim); }
.aside-note { font-size: .8rem; color: var(--c-text-dim); margin-top: .7rem; }

/* ── 装饰线 ── */
.deco-line {
  display: block;
  height: 1px;
  background: linear-gradient(90deg, var(--c-purple), var(--c-pink), transparent);
  margin: 1.5rem 0;
  box-shadow: 0 0 8px var(--c-purple);
}
.content-deco, .about-divider, .privacy-divider, .bottom-deco { display: block; }

/* ── 卡片网格 ── */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1.4rem;
  list-style: none;
}
.card-grid li { animation: stagger-in .5s ease both; }
.card-grid li:nth-child(1) { animation-delay: .05s; }
.card-grid li:nth-child(2) { animation-delay: .1s; }
.card-grid li:nth-child(3) { animation-delay: .15s; }
.card-grid li:nth-child(4) { animation-delay: .2s; }
.card-grid li:nth-child(5) { animation-delay: .25s; }
.card-grid li:nth-child(6) { animation-delay: .3s; }

/* ── subtitle / subhead ── */
.subtitle, p.subtitle {
  color: var(--c-text-dim);
  font-size: .95rem;
  margin-bottom: 1.2rem;
  line-height: 1.6;
}

/* ── section-h2 ── */
.section-h2, h2 {
  font-size: 1.3rem;
  color: var(--c-text);
  margin-bottom: .3rem;
  letter-spacing: .03em;
}
.section-h2::before, h2:not(.section-h2)::before {
  content: '▸ ';
  color: var(--c-purple);
  text-shadow: 0 0 8px var(--c-purple);
}

/* ============================================================
   HOME
   ============================================================ */
.home-main { max-width: var(--layout-max); margin: 0 auto; padding: 0 1.5rem 4rem; }

/* Hero：双图错位拼贴，文案左对齐，约70vh */
.hero-section {
  display: grid;
  grid-template-columns: 1fr 420px;
  grid-template-rows: auto;
  gap: 2rem;
  min-height: 70vh;
  align-items: center;
  padding: 4rem 0 3rem;
  position: relative;
}
.hero-copy { grid-column: 1; grid-row: 1; }
.hero-collage { grid-column: 2; grid-row: 1 / 3; position: relative; min-height: 380px; }
.hero-aside { grid-column: 1; grid-row: 2; }

.hero-h1 {
  font-size: clamp(1.6rem, 4vw, 2.8rem);
  margin-bottom: .6rem;
  color: var(--c-text);
}
.hero-sub { font-size: 1rem; margin-bottom: 1.8rem; max-width: 520px; }
.hero-cta { display: flex; gap: 1rem; flex-wrap: wrap; }

/* 双图错位 */
.hero-collage { overflow: visible; }
.hero-img-a {
  position: absolute;
  top: 0; left: 0;
  width: 68%;
  border-radius: 16px;
  border: 1px solid var(--c-border);
  box-shadow: var(--shadow-purple);
  z-index: 2;
}
.hero-img-b {
  position: absolute;
  bottom: 0; right: 0;
  width: 68%;
  border-radius: 16px;
  border: 1px solid var(--c-border-pink);
  box-shadow: var(--shadow-pink);
  z-index: 1;
}

.content-section { padding: 2.5rem 0; }
.home-content { max-width: var(--content-max); }
.content-body { font-size: 1rem; line-height: 1.8; }
.content-body h2 { margin-top: 2rem; margin-bottom: .4rem; }
.content-body h3 { margin-top: 1.4rem; color: var(--c-text-dim); font-size: 1.05rem; }
.content-body p { margin-bottom: .9em; }
.content-body a { color: var(--c-purple); border-bottom: 1px solid var(--c-border); }
.content-body a:hover { color: var(--c-pink); border-color: var(--c-pink); }

.articles-section { padding: 2.5rem 0 0; }

/* ============================================================
   ARTICLE
   ============================================================ */
.article-main { max-width: var(--layout-max); margin: 0 auto; padding: 0 1.5rem 4rem; }

.article-hero-section {
  display: grid;
  grid-template-columns: 1fr 260px;
  gap: 1.5rem;
  padding: 2rem 0 1.5rem;
  align-items: start;
}
.article-hero-figure { grid-column: 1; }
.article-hero-img { width: 100%; max-height: 340px; object-fit: cover; border: 1px solid var(--c-border); box-shadow: var(--shadow-purple); }
.article-hero-noimg {
  height: 120px;
  border: 1px solid var(--c-border);
  border-radius: 12px;
  background: repeating-linear-gradient(
    45deg,
    var(--c-purple-dim) 0, var(--c-purple-dim) 1px,
    transparent 1px, transparent 12px
  );
}
.deco-grid { display: block; width: 100%; height: 100%; }
.article-meta-aside { grid-column: 2; }
.article-date {
  display: block;
  font-size: .78rem;
  color: var(--c-text-dim);
  letter-spacing: .06em;
  margin-bottom: .4rem;
}
.meta-parent { font-size: .8rem; color: var(--c-text-dim); }
.meta-parent a { color: var(--c-purple); }

.article-body-section {
  display: grid;
  grid-template-columns: 1fr 260px;
  gap: 2rem;
  padding: .5rem 0 2rem;
  align-items: start;
}
.article-content-wrap { grid-column: 1; min-width: 0; }
.article-h1 { font-size: clamp(1.4rem, 3vw, 2.1rem); margin-bottom: .5rem; }
.article-lead { max-width: 640px; }
.article-aside { grid-column: 2; position: sticky; top: calc(var(--nav-h) + 1rem); }
.article-body { font-size: 1rem; line-height: 1.85; }
.article-body h2 { margin-top: 2.2rem; margin-bottom: .4rem; font-size: 1.2rem; }
.article-body h3 { margin-top: 1.4rem; margin-bottom: .3rem; color: var(--c-text-dim); font-size: 1.05rem; }
.article-body p { margin-bottom: .9em; }
.article-body a { color: var(--c-purple); border-bottom: 1px dotted var(--c-border); }
.article-body a:hover { color: var(--c-pink); }
.article-body ul, .article-body ol { margin: .7em 0 .7em 1.2em; }
.article-body li { margin-bottom: .35em; list-style: disc; }
.article-body ol li { list-style: decimal; }
.article-body blockquote {
  border-left: 3px solid var(--c-purple);
  padding: .7rem 1rem;
  margin: 1rem 0;
  background: var(--c-purple-dim);
  border-radius: 0 8px 8px 0;
  color: var(--c-text-dim);
  font-style: italic;
}
.article-body strong { color: var(--c-pink); }
.article-body code {
  font-family: var(--font-mono);
  background: rgba(128,0,255,.12);
  padding: .1em .4em;
  border-radius: 4px;
  font-size: .9em;
  color: var(--c-purple);
}

.article-bottom-section { padding: 1rem 0 0; }
.bottom-aside { display: inline-block; }

/* ============================================================
   ABOUT
   ============================================================ */
.about-main { max-width: var(--layout-max); margin: 0 auto; padding: 0 1.5rem 4rem; }

.about-hero-section {
  display: grid;
  grid-template-columns: 1fr 260px;
  gap: 1.5rem;
  padding: 2.5rem 0 1.5rem;
  align-items: start;
}
.about-terminal-fig {
  grid-column: 1;
  border: 1px solid var(--c-border);
  border-radius: 12px;
  padding: 1.5rem;
  background: rgba(128,0,255,.06);
}
.terminal-pre {
  font-family: var(--font-mono);
  font-size: .9rem;
  white-space: pre-wrap;
  line-height: 1.9;
  color: var(--c-text);
}
.t-prompt { color: var(--c-purple); text-shadow: 0 0 8px var(--c-purple); }
.t-out { color: var(--c-pink); }
.about-aside { grid-column: 2; }

.about-content-section { padding: 1rem 0 2rem; max-width: var(--content-max); }
.about-content-section h1 { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: .5rem; }
.about-lead { margin-bottom: 1.5rem; }
.about-body { font-size: 1rem; line-height: 1.85; margin-bottom: 1.5rem; }
.about-body h2 { margin-top: 2rem; margin-bottom: .4rem; }
.about-body p { margin-bottom: .9em; }
.about-body a { color: var(--c-purple); }
.about-body a:hover { color: var(--c-pink); }
.about-inline-aside { margin-top: 1.5rem; }
.about-nav-section { padding: 1.5rem 0 0; }

/* ============================================================
   PRIVACY
   ============================================================ */
.privacy-main { max-width: var(--layout-max); margin: 0 auto; padding: 0 1.5rem 4rem; }

.privacy-header-section {
  display: grid;
  grid-template-columns: 1fr 260px;
  gap: 1.5rem;
  padding: 2.5rem 0 1rem;
  align-items: start;
}
.privacy-badge-fig {
  grid-column: 1;
  display: flex;
  align-items: center;
  padding: 2rem;
}
.badge-icon {
  font-size: 3.5rem;
  color: var(--c-purple);
  text-shadow: var(--shadow-purple);
  line-height: 1;
}
.privacy-aside { grid-column: 2; }

.privacy-content-section { padding: .5rem 0 2rem; max-width: var(--content-max); }
.privacy-content-section h1 { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: .5rem; }
.privacy-lead { margin-bottom: .8rem; }
.privacy-body { font-size: 1rem; line-height: 1.85; margin-top: 1.2rem; }
.privacy-body h2 { margin-top: 2rem; margin-bottom: .4rem; }
.privacy-body p { margin-bottom: .9em; }
.privacy-body a { color: var(--c-purple); }
.privacy-body a:hover { color: var(--c-pink); }
.privacy-inline-aside { margin-top: 1.5rem; }

/* ============================================================
   DEFAULT
   ============================================================ */
.default-main { max-width: var(--content-max); margin: 0 auto; padding: 2.5rem 1.5rem 4rem; }
.default-content-section h1 { font-size: clamp(1.4rem, 3vw, 2rem); margin-bottom: .5rem; }
.default-body { font-size: 1rem; line-height: 1.85; margin-top: 1.2rem; }
.default-aside { margin-top: 2rem; }

/* ============================================================
   FOOTER（footer > div×n 抽签要求）
   ============================================================ */
.site-footer {
  border-top: 1px solid var(--c-border);
  margin-top: 3rem;
  background: rgba(10,10,18,.98);
}
.site-footer > div { padding: 2rem 1.5rem; }
.footer-brand {
  display: grid;
  grid-template-columns: 1fr;
  gap: .8rem;
  max-width: var(--layout-max);
  margin: 0 auto;
}
.footer-brand .brand-name { font-size: 1rem; display: block; margin-bottom: .2rem; }
.footer-brand p { font-size: .85rem; color: var(--c-text-dim); }
.footer-brand nav ol {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-top: .8rem;
}
.footer-brand nav ol li a {
  font-size: .78rem;
  color: var(--c-text-dim);
  padding: .3rem .7rem;
  border: 1px solid var(--c-border);
  border-radius: var(--radius-pill);
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  transition: color .2s, border-color .2s;
}
.footer-brand nav ol li a:hover { color: var(--c-purple); border-color: var(--c-purple); text-shadow: 0 0 6px var(--c-purple); }

.footer-links {
  border-top: 1px solid var(--c-border);
  max-width: var(--layout-max);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1.5rem;
  align-items: start;
}
.footer-section-label {
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--c-purple);
  text-transform: uppercase;
  margin-bottom: .6rem;
}
.footer-links ul { display: flex; flex-direction: column; gap: .35rem; }
.footer-links ul li a { font-size: .84rem; color: var(--c-text-dim); transition: color .2s; min-height: 32px; display: flex; align-items: center; }
.footer-links ul li a:hover { color: var(--c-pink); }
.footer-contact { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; }

.footer-bar {
  border-top: 1px solid var(--c-border);
  padding: 1rem 1.5rem;
  max-width: var(--layout-max);
  margin: 0 auto;
}
.copyright { font-size: .78rem; color: var(--c-text-dim); }
.copyright a { color: var(--c-text-dim); }
.copyright a:hover { color: var(--c-pink); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 900px) {
  .hero-section {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    min-height: auto;
    padding: 2.5rem 0 2rem;
  }
  .hero-copy { grid-column: 1; grid-row: 1; }
  .hero-collage { grid-column: 1; grid-row: 2; min-height: 220px; }
  .hero-aside { grid-column: 1; grid-row: 3; }
  .hero-img-a { width: 55%; }
  .hero-img-b { width: 55%; }

  .article-hero-section,
  .article-body-section,
  .about-hero-section,
  .privacy-header-section {
    grid-template-columns: 1fr;
  }
  .article-hero-figure { grid-column: 1; }
  .article-meta-aside { grid-column: 1; }
  .article-content-wrap { grid-column: 1; }
  .article-aside { grid-column: 1; position: static; }
  .about-terminal-fig { grid-column: 1; }
  .about-aside { grid-column: 1; }
  .privacy-badge-fig { grid-column: 1; }
  .privacy-aside { grid-column: 1; }
}

@media (max-width: 600px) {
  :root { --nav-h: 56px; }
  .site-header { padding: 0 1rem; gap: .6rem; }
  .brand-name { font-size: .88rem; }
  .nav-pill { font-size: .72rem; padding: .4rem .65rem; }
  .nav-contact-btn { font-size: .72rem; padding: .4rem .8rem; }

  .home-main, .article-main, .about-main, .privacy-main { padding-left: 1rem; padding-right: 1rem; }
  .card-grid { grid-template-columns: 1fr; }
  .hero-h1 { font-size: 1.45rem; }
  .hero-collage { min-height: 170px; }
  .hero-img-a { width: 60%; top: 0; left: 0; }
  .hero-img-b { width: 60%; bottom: 0; right: 0; }

  .footer-links { grid-template-columns: 1fr; }
  .site-footer > div { padding: 1.5rem 1rem; }

  .aside-links-row { flex-direction: column; }
}
