/* Plasnomic hi-tech redesign - listing pages (News, Cover Stories) + Privacy Policy.
   Builds on site.css tokens and shared components; chip styles mirror home.css so this file stands alone. */

.is-hidden { display: none !important; }

/* ---------- Hero (shared) ---------- */
.list-hero { padding-bottom: clamp(40px, 5vw, 64px); }
.list-hero.grid-bg { background-color: var(--bg); background-position: center top; }
.list-hero-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; align-items: end; }
.list-hero h1 { margin-bottom: 20px; }
.hero-meta {
  display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); border-radius: var(--r);
  background: color-mix(in srgb, var(--paper) 70%, transparent); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.hero-meta > div { padding: 18px 20px; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.hero-meta > div + div { border-left: 1px solid var(--line); }
.hero-meta dt { font: 500 11px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--mute); }
.hero-meta dd { margin: 0; font: 600 clamp(20px, 2vw, 28px)/1.1 var(--f-display); letter-spacing: -0.03em; }
.hero-meta dd small { display: block; font: 400 13px/1.3 var(--f-body); color: var(--mute); letter-spacing: 0; margin-top: 6px; }
.dark .hero-meta { background: rgba(255,255,255,.03); border-color: var(--night-line); }
.dark .hero-meta > div + div { border-color: var(--night-line); }
.dark .hero-meta dt { color: var(--night-mute); }
.dark .hero-meta dd { color: #fff; }
@media (max-width: 960px) { .list-hero-grid { grid-template-columns: 1fr; gap: 32px; } }

/* ---------- Chips (same look as home) ---------- */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips button {
  height: 40px; padding: 0 16px; border-radius: 99px; border: 1px solid var(--line-2); background: var(--paper);
  font-size: 14px; font-weight: 500; color: var(--ink-2); transition: all .25s; white-space: nowrap; flex-shrink: 0;
}
.chips button span { font-family: var(--f-mono); font-size: 11px; color: var(--mute); margin-left: 4px; }
.chips button:hover { border-color: var(--ink); }
.chips button[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.chips button[aria-pressed="true"] span { color: var(--signal); }

/* ---------- News toolbar ---------- */
.news-section { padding: 0 0 clamp(80px, 9vw, 120px); }
.toolbar {
  position: sticky; top: var(--header-h); z-index: 20; margin: 0 0 32px; padding: 14px 0;
  background: color-mix(in srgb, var(--bg) 90%, transparent); backdrop-filter: saturate(1.4) blur(14px); -webkit-backdrop-filter: saturate(1.4) blur(14px);
  border-bottom: 1px solid var(--line);
}
.toolbar-inner { display: flex; align-items: center; gap: 16px; }
.toolbar .chips { flex: 1; min-width: 0; }
.search {
  position: relative; flex: 0 0 300px; display: flex; align-items: center;
}
.search svg { position: absolute; left: 14px; width: 16px; height: 16px; color: var(--mute); pointer-events: none; }
.search input {
  width: 100%; height: 44px; padding: 0 44px 0 40px; border: 1px solid var(--line-2); border-radius: 99px; background: var(--paper);
  font: inherit; font-size: 15px; color: var(--ink); transition: border-color .2s, box-shadow .2s;
}
.search input::placeholder { color: var(--mute); }
.search input:focus { outline: none; border-color: var(--green); box-shadow: 0 0 0 4px rgba(69,181,91,.15); }
.search input::-webkit-search-cancel-button { display: none; }
.search kbd {
  position: absolute; right: 12px; font: 500 11px/1 var(--f-mono); color: var(--mute); border: 1px solid var(--line-2);
  border-radius: 4px; padding: 4px 6px; background: var(--bg);
}
.search input:focus ~ kbd, .search.has-value kbd { display: none; }
.search-clear {
  position: absolute; right: 8px; width: 30px; height: 30px; border: 0; border-radius: 50%; background: var(--bg); color: var(--ink-2);
  font-size: 18px; line-height: 1; display: none;
}
.search.has-value .search-clear { display: block; }
.result-count { font: 500 11px/1 var(--f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mute); white-space: nowrap; }
.result-count b { color: var(--ink); font-weight: 500; }

@media (max-width: 960px) {
  .toolbar { position: static; background: transparent; backdrop-filter: none; -webkit-backdrop-filter: none; border: 0; padding: 0; margin-bottom: 28px; }
  .toolbar-inner { flex-direction: column; align-items: stretch; gap: 14px; }
  .search { flex: none; }
  .toolbar .chips { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter); }
  .toolbar .chips::-webkit-scrollbar { display: none; }
  .search kbd { display: none; }
}

/* ---------- News list ---------- */
.news-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(16px, 2vw, 28px); }
.news-grid > * { min-width: 0; }
.post-card .thumb img { object-position: var(--pos, 50% 50%); }
.post-card h3 { transition: color .25s; }
.post-card:hover h3 { color: var(--green-deep); }
.post-card .excerpt { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.post-meta { flex-wrap: wrap; row-gap: 6px; }
.post-meta .tags { display: inline-flex; gap: 8px; }
.post-meta .tags span + span::before { content: "/"; margin-right: 8px; color: var(--line-2); }

/* lead story */
.news-lead {
  grid-column: 1 / -1; display: grid; grid-template-columns: 1.45fr 1fr; overflow: hidden; background: var(--night); color: var(--night-text);
  border-color: var(--night-line);
}
.news-lead .thumb { position: relative; background: var(--night-2); overflow: hidden; min-height: 100%; }
.news-lead .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease); }
.news-lead:hover .thumb img { transform: scale(1.03); }
.news-lead .body { padding: clamp(28px, 3.4vw, 48px); display: flex; flex-direction: column; gap: 18px; justify-content: center; position: relative; }
.news-lead .body::before {
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .9;
  background-image: linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px);
  background-size: 40px 40px; mask-image: linear-gradient(180deg, #000, transparent 70%); -webkit-mask-image: linear-gradient(180deg, #000, transparent 70%);
}
.news-lead .body > * { position: relative; }
.news-lead .flag {
  align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; font: 500 11px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase;
  color: var(--signal); padding: 7px 10px; border: 1px solid rgba(108,240,143,.3); border-radius: 99px; background: rgba(108,240,143,.08);
}
.news-lead .flag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--signal); animation: pulse 2s infinite; --c: var(--signal); }
.news-lead h3 { font-size: clamp(28px, 3vw, 44px); line-height: 1.05; letter-spacing: -0.035em; color: #fff; }
.news-lead p { color: var(--night-mute); font-size: 17px; line-height: 1.6; }
.news-lead .post-meta { color: var(--night-mute); }
.news-lead .post-meta .cat { color: var(--signal); }
.news-lead .link-arrow { color: var(--signal); }
.news-lead:hover { box-shadow: 0 30px 70px -30px rgba(6,11,9,.6); }

.empty {
  grid-column: 1 / -1; padding: 56px 24px; text-align: center; border: 1px dashed var(--line-2); border-radius: var(--r);
  display: flex; flex-direction: column; align-items: center; gap: 14px; color: var(--mute);
}
.empty b { font: 600 22px/1.2 var(--f-display); color: var(--ink); letter-spacing: -0.02em; }

@media (max-width: 1100px) { .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 860px) {
  .news-lead { grid-template-columns: 1fr; }
  .news-lead .thumb { aspect-ratio: 1677 / 938; min-height: 0; }
}
@media (max-width: 620px) { .news-grid { grid-template-columns: 1fr; } }

/* ---------- Archive note (both listings) ---------- */
.archive-note {
  margin-top: clamp(40px, 5vw, 64px); display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: center;
  padding: 24px 28px; border-radius: var(--r); border: 1px solid var(--line); background: var(--paper);
}
.archive-note .pager { display: flex; gap: 6px; }
.archive-note .pager span {
  width: 34px; height: 34px; display: grid; place-items: center; border-radius: 6px; border: 1px solid var(--line-2);
  font: 500 13px/1 var(--f-mono); color: var(--mute);
}
.archive-note .pager span.on { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.archive-note p { color: var(--ink-2); font-size: 15.5px; }
.archive-note p b { color: var(--ink); font-weight: 600; }
@media (max-width: 760px) { .archive-note { grid-template-columns: 1fr; gap: 16px; } }

/* ---------- Cover stories: latest issue ---------- */
.stories-hero { padding-bottom: 0; }
.stories-hero::after { background: radial-gradient(50% 70% at 80% 30%, rgba(69,181,91,.18), transparent 65%); }
.stories-hero h1 { margin: 22px 0 20px; }
.stories-hero .lede { margin-bottom: clamp(48px, 6vw, 80px); }
.issue {
  display: grid; grid-template-columns: minmax(0, 420px) 1fr; gap: clamp(32px, 6vw, 96px); align-items: center;
  padding-bottom: clamp(56px, 7vw, 96px);
}
.issue .cover { position: relative; }
.issue .cover::before {
  content: ""; position: absolute; inset: 8% -8% -6% 8%; border-radius: 10px; background: var(--green); opacity: .18; filter: blur(40px); z-index: -1;
}
.issue .cover-img { box-shadow: 0 50px 90px -40px rgba(0,0,0,.9), 0 0 0 1px rgba(255,255,255,.08); }
.issue-tag { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 22px; }
.issue-no { font: 500 12px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--night-mute); }
.issue h2 { color: #fff; max-width: 18ch; }
.issue .kicker { margin-top: 24px; font: 500 clamp(18px, 1.6vw, 22px)/1.45 var(--f-display); letter-spacing: -0.015em; color: var(--night-text); max-width: 40ch; }
.issue-actions { margin-top: 32px; display: flex; gap: 20px; align-items: center; flex-wrap: wrap; }
.issue-actions .post-meta { color: var(--night-mute); }
.issue-actions .post-meta .cat { color: var(--signal); }
@media (max-width: 860px) {
  .issue { grid-template-columns: 1fr; }
  .issue .cover { max-width: 300px; }
}

/* timeline rail */
.rail-wrap { border-top: 1px solid var(--night-line); padding: 28px 0 32px; }
.rail-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 20px; }
.rail-head .eyebrow { margin: 0; }
.rail-head span:last-child { font: 500 11px/1 var(--f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--night-mute); }
.rail-scroll { overflow-x: auto; scrollbar-width: thin; scrollbar-color: var(--night-line) transparent; padding-bottom: 6px; }
.rail { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(12, minmax(88px, 1fr)); min-width: 1056px; position: relative; }
.rail::before { content: ""; position: absolute; left: 0; right: 0; top: 46px; height: 1px; background: var(--night-line); }
.rail li { position: relative; display: flex; flex-direction: column; align-items: flex-start; }
.rail a, .rail .gap { display: flex; flex-direction: column; gap: 10px; padding: 0 16px 0 0; width: 100%; }
.rail .yr { font: 500 10px/1 var(--f-mono); letter-spacing: .14em; color: var(--night-mute); height: 12px; }
.rail .mo { font: 500 12px/1 var(--f-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--night-text); }
.rail .dot { width: 11px; height: 11px; border-radius: 50%; border: 1px solid var(--night-mute); background: var(--night); position: relative; z-index: 1; transition: transform .25s var(--ease), background .25s; }
.rail a .dot { background: var(--green); border-color: var(--green); box-shadow: 0 0 0 4px rgba(69,181,91,.18); }
.rail .t { font-size: 12.5px; line-height: 1.3; color: var(--night-mute); transition: color .25s; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.rail .gap .mo { color: var(--night-mute); opacity: .6; }
.rail .gap .t { opacity: .6; font-family: var(--f-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }
.rail a:hover .dot { transform: scale(1.35); }
.rail a:hover .t { color: #fff; }
.rail li.current .dot { background: var(--signal); border-color: var(--signal); box-shadow: 0 0 0 6px rgba(108,240,143,.2); }
.rail li.current .t { color: #fff; }

/* the rack */
.rack-section { padding: clamp(72px, 8vw, 120px) 0; }
.rack { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(40px, 4vw, 56px) clamp(16px, 2.4vw, 32px); }
.rack > * { min-width: 0; scroll-margin-top: calc(var(--header-h) + 24px); }
.rack .cover h3 { font-size: 18px; transition: color .25s; }
.rack .cover:hover h3 { color: var(--green-deep); }
.rack .cover p { margin-top: 10px; color: var(--mute); font-size: 14.5px; line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.rack .cover .post-meta { margin-top: 18px; }
.rack .cover h3 { margin-top: 10px; }
.rack .cover:target .cover-img, .rack .cover.flash .cover-img { box-shadow: 0 0 0 3px var(--green), 0 30px 60px -30px rgba(0,0,0,.6); }
@media (max-width: 1100px) { .rack { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 760px) { .rack { grid-template-columns: repeat(2, 1fr); } .rack .cover h3 { font-size: 16px; } .rack .cover p { display: none; } }

/* ---------- Privacy policy ---------- */
.legal-hero h1 { max-width: none; }
.legal-meta { display: flex; flex-wrap: wrap; gap: 10px 24px; font: 500 12px/1.4 var(--f-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--mute); }
.legal-meta b { color: var(--ink); font-weight: 500; }
.legal { padding: clamp(56px, 7vw, 96px) 0 clamp(80px, 9vw, 120px); }
.legal-grid { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.toc { position: sticky; top: calc(var(--header-h) + 32px); }
.toc p { font: 500 11px/1 var(--f-mono); letter-spacing: .16em; text-transform: uppercase; color: var(--mute); margin-bottom: 16px; }
.toc ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; counter-reset: toc; border-left: 1px solid var(--line); }
.toc a {
  display: grid; grid-template-columns: 26px 1fr; padding: 7px 0 7px 16px; margin-left: -1px; border-left: 2px solid transparent;
  font-size: 14px; line-height: 1.35; color: var(--ink-2); transition: color .2s, border-color .2s;
}
.toc a i { font: 500 11px/1.6 var(--f-mono); font-style: normal; color: var(--mute); }
.toc a:hover { color: var(--ink); }
.toc a.on { color: var(--ink); border-left-color: var(--green); }
.toc a.on i { color: var(--green-deep); }
.legal .article { margin: 0; max-width: 720px; }
.legal .article > p:first-child { font-size: 20px; line-height: 1.6; color: var(--ink); }
.legal .article h2 { display: flex; gap: 16px; align-items: baseline; scroll-margin-top: calc(var(--header-h) + 24px); font-size: clamp(24px, 2.2vw, 30px); }
.legal .article h2 i { font: 500 13px/1 var(--f-mono); font-style: normal; color: var(--green-deep); letter-spacing: .08em; flex-shrink: 0; }
.legal .article h3 { font-size: 17px; font-family: var(--f-body); font-weight: 600; letter-spacing: 0; margin: 1.4em 0 .4em; }
.legal .article strong { color: var(--ink); font-weight: 600; }
.legal .article a { color: var(--green-deep); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.legal .article ul { margin-bottom: 1.1em; }
.contact-block {
  display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--line); border-radius: var(--r); background: var(--paper); margin: 1.2em 0 1.6em;
  font-size: 16px; line-height: 1.55;
}
.contact-block > div { padding: 18px 20px; min-width: 0; overflow-wrap: anywhere; }
.contact-block > div + div { border-left: 1px solid var(--line); }
.contact-block dt { font: 500 11px/1 var(--f-mono); letter-spacing: .14em; text-transform: uppercase; color: var(--mute); margin-bottom: 10px; }
.contact-block dd { margin: 0; color: var(--ink); }
.contact-block--2 { grid-template-columns: repeat(2, 1fr); }
.rack .cover p b { color: var(--ink); font-weight: 600; }
@media (max-width: 960px) {
  .legal-grid { grid-template-columns: 1fr; }
  .toc { position: static; padding: 20px; border: 1px solid var(--line); border-radius: var(--r); background: var(--paper); }
  .toc ol { grid-template-columns: 1fr 1fr; column-gap: 16px; border: 0; }
  .toc a { padding-left: 0; border: 0; }
}
@media (max-width: 620px) {
  .toc ol { grid-template-columns: 1fr; }
  .contact-block { grid-template-columns: 1fr; }
  .contact-block > div + div { border-left: 0; border-top: 1px solid var(--line); }
}
@media (max-width: 560px) {
  .hero-meta { grid-template-columns: 1fr 1fr; }
  .hero-meta > div:nth-child(3) { grid-column: 1 / -1; border-left: 0; border-top: 1px solid var(--line); }
  .dark .hero-meta > div:nth-child(3) { border-color: var(--night-line); }
}
@media (max-width: 860px) {
  .news-lead p { display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; font-size: 16px; }
}
@media (max-width: 1180px) {
  .rail-scroll { mask-image: linear-gradient(90deg, #000 85%, transparent); -webkit-mask-image: linear-gradient(90deg, #000 85%, transparent); }
}

/* ============================================================
   Dark theme. Tokens carry most of it; these are the spots a token can't express:
   raised surfaces, shadows that read on black, green "selected" states.
   ============================================================ */
[data-theme="dark"] {
  --raise: #0f1915;            /* surface on a paper section: one step above --paper */
  --sel-bg: rgba(69,181,91,.16);
  --sel-bd: rgba(108,240,143,.5);
}
[data-theme="dark"] main > section.dark { box-shadow: inset 0 -1px 0 var(--night-line); }
[data-theme="dark"] .card:hover { box-shadow: 0 24px 60px -24px rgba(0,0,0,.8), 0 0 0 1px rgba(108,240,143,.14); }
[data-theme="dark"] .news-lead { border-color: var(--line-2); }
[data-theme="dark"] .news-lead:hover { box-shadow: 0 30px 70px -30px rgba(0,0,0,.9), 0 0 0 1px rgba(108,240,143,.18); }
[data-theme="dark"] .hero-meta { background: color-mix(in srgb, var(--paper) 72%, transparent); border-color: var(--line-2); }
[data-theme="dark"] .chips button[aria-pressed="true"],
[data-theme="dark"] .archive-note .pager span.on { background: var(--sel-bg); border-color: var(--sel-bd); color: #fff; }
[data-theme="dark"] .toc { background: transparent; }
[data-theme="dark"] .contact-block { background: var(--raise); }
@media (max-width: 960px) { [data-theme="dark"] .toc { background: var(--raise); } }
