/* Reference canvas: 1070 × 1470. All content remains real, selectable HTML. */
@font-face {
  font-family:"Editorial SC";
  src:url("/assets/editorial-serif-sc.woff") format("woff");
  font-style:normal;
  font-weight:200 900;
  font-display:swap;
}

@font-face {
  font-family:"Editorial Latin";
  src:local("TimesNewRomanPSMT");
  font-style:normal;
  font-weight:400 600;
  font-display:swap;
}

@font-face {
  font-family:"Editorial Latin";
  src:local("TimesNewRomanPS-BoldMT");
  font-style:normal;
  font-weight:700 900;
  font-display:swap;
}

@font-face {
  font-family:"Editorial Latin";
  src:local("TimesNewRomanPS-ItalicMT");
  font-style:italic;
  font-weight:400 600;
  font-display:swap;
}

:root {
  color-scheme:light;
  --paper:#f6f5f1;
  --paper-elevated:var(--paper);
  --surface-hover:#ebe5d9;
  --ink:#101114;
  --secondary:#56575d;
  --muted:#77777c;
  --rule:#d4d4d1;
  --strong-rule:#aaaeb0;
  --accent:#c64b2b;
  --accent-contrast-text:#fff;
  --green:#46775b;
  --highlight:#ebe5d9;
  --market-muted:#85847e;
  --market-faint:#97958e;
  --market-border:#d9d5cd;
  --market-overlay:#e9e6de55;
  --market-overlay-2:#eae7dd60;
  --market-up-color:var(--green);
  --market-down-color:var(--accent);
  --calendar-selected-bg:transparent;
  --paper-texture-opacity:.25;
  --serif:"Editorial Latin","Times New Roman","Editorial SC","Songti SC","Noto Serif CJK SC","Noto Serif SC",SimSun,serif;
  --sans:"Arial","PingFang SC","Microsoft YaHei",sans-serif;
}

/* Dark palette: automatic (system preference, unless the reader picked a
   side explicitly) and manual (the theme-toggle button in the masthead,
   persisted in localStorage -- see public/app.js). Both branches redefine
   the same tokens so every rule below that already reads a var() just
   works; nothing here should need a color literal of its own.

   Every text/background pair below is checked against WCAG's 4.5:1
   minimum (see the contrast script used while tuning this -- not checked
   into the repo, just a one-off verification pass). --rule and
   --strong-rule are decorative dividers, not text, so they're exempt. */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    color-scheme:dark;
    --paper:#18191b;
    --paper-elevated:#202226;
    --surface-hover:#2a2d32;
    --ink:#ecece6;
    --secondary:#c8c7c0;
    --muted:#989a9e;
    --rule:#34373c;
    --strong-rule:#53545a;
    --accent:#ed8a63;
    --accent-contrast-text:#18191b;
    --green:#5fae82;
    --highlight:#3a3428;
    --market-muted:#a5a7ab;
    --market-faint:#8b8d91;
    --market-border:#34373c;
    --market-overlay:#202226aa;
    --market-overlay-2:#2a2d32aa;
    --market-up-color:#79c8a5;
    --market-down-color:#eb8b8b;
    --calendar-selected-bg:#7a3e28;
    --paper-texture-opacity:.03;
  }
}
:root[data-theme="dark"] {
  color-scheme:dark;
  --paper:#18191b;
  --paper-elevated:#202226;
  --surface-hover:#2a2d32;
  --ink:#ecece6;
  --secondary:#c8c7c0;
  --muted:#989a9e;
  --rule:#34373c;
  --strong-rule:#53545a;
  --accent:#ed8a63;
  --accent-contrast-text:#18191b;
  --green:#5fae82;
  --highlight:#3a3428;
  --market-muted:#a5a7ab;
  --market-faint:#8b8d91;
  --market-border:#34373c;
  --market-overlay:#202226aa;
  --market-overlay-2:#2a2d32aa;
  --market-up-color:#79c8a5;
  --market-down-color:#eb8b8b;
  --calendar-selected-bg:#7a3e28;
  --paper-texture-opacity:.03;
}

* {
  box-sizing:border-box;
}

html {
  scroll-behavior:smooth;
  scroll-padding-top:24px;
}

body {
  margin:0;
  color:var(--ink);
  background:var(--paper);
  font-family:var(--serif);
  font-size:16px;
  -webkit-font-smoothing:antialiased;
}

body::before {
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  background-image:url("/assets/paper.svg");
  opacity:var(--paper-texture-opacity);
}

a {
  color:inherit;
  text-decoration:none;
}

button,input {
  font:inherit;
}

button {
  color:inherit;
  cursor:pointer;
}

button {
  border:0;
  background:none;
  padding:0;
}

button,a,input {
  -webkit-tap-highlight-color:transparent;
}

button:focus-visible,a:focus-visible,input:focus-visible {
  outline:2px solid var(--accent);
  outline-offset:5px;
}

a:hover,button.text-button:hover {
  color:var(--accent);
}

p,h1,h2,h3,figure {
  margin:0;
}

svg {
  display:block;
}

button svg,a svg {
  flex:none;
}

[hidden] {
  display:none!important;
}

.svg-definitions {
  position:absolute;
  width:0;
  height:0;
  overflow:hidden;
}

.page-shell {
  width:calc(100% - 76px);
  max-width:1120px;
  margin:0 auto;
}

.external-arrow {
  display:inline-block;
  width:15px;
  height:15px;
  vertical-align:-2px;
  margin-left:4px;
}

.chevron {
  width:15px;
  height:15px;
}

.accent-link {
  color:var(--accent);
  font-family:var(--sans);
  font-size:14px;
  white-space:nowrap;
  line-height:1.5;
}

.accent-link:hover {
  text-decoration:underline;
  text-underline-offset:4px;
}

.text-button {
  display:inline-flex;
  align-items:center;
  gap:7px;
  font-family:var(--sans);
  font-size:14px;
  white-space:nowrap;
}

.vertical-rule {
  width:1px;
  height:20px;
  background:var(--strong-rule);
}

.icon-button {
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
}

.status-dot {
  display:inline-block;
  flex:none;
  width:9px;
  height:9px;
  border-radius:50%;
  background:#959794;
}

.status-dot.orange {
  background:var(--accent);
}

.status-dot.green {
  background:var(--green);
}

.masthead {
  height:62px;
  display:flex;
  align-items:center;
  border-bottom:1px solid var(--strong-rule);
}

.brand {
  display:flex;
  align-items:center;
  gap:21px;
  white-space:nowrap;
  font-size:36px;
  line-height:1;
  letter-spacing:-.8px;
}

.brand-mark {
  width:36px;
  height:36px;
  object-fit:contain;
}

/* Two logo images, one shown per theme via plain CSS (no JS) -- this has
   to be display, not the [hidden] attribute, and it has to react to the
   same selectors the color tokens do, so switching themes never flashes
   the wrong-contrast logo even for an instant. See logo-mark-dark.svg's
   own note (apps/website/public/assets/) for how it was generated. */
.brand-mark-dark, .footer-mark-dark { display:none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .brand-mark-light,
  :root:not([data-theme="light"]) .footer-mark-light { display:none; }
  :root:not([data-theme="light"]) .brand-mark-dark,
  :root:not([data-theme="light"]) .footer-mark-dark { display:block; }
}
:root[data-theme="dark"] .brand-mark-light,
:root[data-theme="dark"] .footer-mark-light { display:none; }
:root[data-theme="dark"] .brand-mark-dark,
:root[data-theme="dark"] .footer-mark-dark { display:block; }

.brand i,.footer-brand i {
  font-weight:400;
}

.brand-description {
  border-left:1px solid var(--strong-rule);
  padding-left:19px;
  margin-left:20px;
  font-family:var(--sans);
  font-size:14px;
  color:var(--secondary);
  height:20px;
  display:flex;
  align-items:center;
}

.masthead-actions {
  display:flex;
  align-items:center;
  gap:18px;
  margin-left:auto;
}

.lang-toggle {
  display:inline-flex;
  align-items:center;
  height:30px;
  border:1px solid var(--rule);
  border-radius:5px;
  overflow:hidden;
}
.lang-toggle a {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  height:100%;
  padding:0 12px;
  font-family:var(--sans);
  font-size:13px;
  font-weight:500;
  color:var(--secondary);
  white-space:nowrap;
}
.lang-toggle a + a {
  border-left:1px solid var(--rule);
}
.lang-toggle a[aria-current] {
  color:var(--accent-contrast-text);
  background:var(--accent);
}
.lang-toggle a:hover:not([aria-current]) {
  color:var(--ink);
}

.subscribe-button {
  display:inline-flex;
  align-items:center;
  gap:7px;
  height:30px;
  padding:0 14px;
  border-radius:5px;
  background:var(--accent);
  color:var(--accent-contrast-text);
  font-family:var(--sans);
  font-size:13px;
  font-weight:600;
  white-space:nowrap;
}

.subscribe-button .external-arrow {
  width:14px;
  height:14px;
}

.subscribe-button:hover {
  color:var(--accent-contrast-text);
  opacity:.88;
}

.theme-toggle svg {
  /* JS toggles which icon shows via .style.display, not the [hidden]
     attribute -- confirmed live that at least one Chromium build does not
     reflect the .hidden IDL property on SVG elements (it silently no-ops),
     unlike plain HTML elements. display:none here is the real default. */
  display:none;
  width:21px;
  height:21px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.5;
}

.edition-bar {
  min-height:50px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid var(--rule);
}

.edition-info {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:15px;
  white-space:nowrap;
}

.edition-byline {
  font:14px var(--sans);
  color:var(--secondary);
}

.edition-byline a {
  color:inherit;
  text-decoration:underline;
  text-underline-offset:2px;
}

.edition-date {
  font-size:22px;
  letter-spacing:-.4px;
}

.edition-weekday {
  font-size:15px;
}

.edition-status {
  display:flex;
  align-items:center;
  gap:7px;
  font:14px var(--sans);
  margin-left:-4px;
  color:var(--secondary);
}

.edition-navigation {
  display:flex;
  align-items:center;
  gap:23px;
  color:var(--secondary);
}

.choose-date {
  gap:12px;
}

.today-brief {
  margin-top:26px;
  margin-bottom:32px;
}

.section-heading {
  display:flex;
  align-items:center;
  height:40px;
  white-space:nowrap;
}

.section-heading h1,.section-heading h2,.reports-toolbar>h2 {
  font-size:28px;
  font-weight:700;
  line-height:1.3;
  letter-spacing:-.5px;
}

.today-heading {
  gap:14px;
  align-items:flex-start;
}

.section-date {
  font-size:14px;
  letter-spacing:1.2px;
  padding-top:6px;
  color:var(--secondary);
}

.today-lede {
  margin-top:14px;
  max-width:1120px;
  font-size:18px;
  line-height:1.75;
  color:var(--secondary);
}

.recent-compact {
  margin-top:40px;
  padding-top:20px;
  border-top:1px solid var(--strong-rule);
}

.recent-compact-list {
  list-style:none;
  margin:14px 0 0;
  padding:0;
}

.recent-compact-list li {
  display:flex;
  align-items:baseline;
  gap:16px;
  padding:10px 0;
  border-bottom:1px solid var(--rule);
}

.recent-compact-list time {
  flex:none;
  width:52px;
  font:14px var(--sans);
  color:var(--muted);
}

.recent-compact-list a {
  font-size:16px;
}

.recent-compact-list a:hover {
  color:var(--accent);
  text-decoration:underline;
  text-underline-offset:3px;
}

.more-editions {
  display:inline-flex;
  align-items:center;
  margin-top:14px;
}

.reports {
  border-top:1px solid var(--strong-rule);
  padding-top:8px;
}

.reports-toolbar {
  min-height:51px;
  padding:14px 0 6px;
  border-bottom:1px solid var(--rule);
  display:flex;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
}

.reports-toolbar>h2 {
  font-size:28px;
  flex:none;
}

.issue-stats {
  font-family:var(--sans);
  font-size:13px;
  color:var(--muted);
}

.report {
  max-width:1120px;
  border-bottom:1px solid var(--rule);
  padding:22px 0;
  scroll-margin-top:22px;
}

.report:first-child {
  padding-top:18px;
}

.report:last-child {
  border-bottom:0;
}

.report-eyebrow {
  font-family:var(--sans);
  font-size:13px;
  color:var(--accent);
  margin-bottom:6px;
}

.report h3 {
  font-size:21px;
  line-height:1.35;
  letter-spacing:-.4px;
  font-weight:600;
}

.report-title {
  text-align:left;
  font-weight:inherit;
  line-height:inherit;
  letter-spacing:inherit;
}

.report-title:hover {
  color:var(--accent);
}

.report-summary {
  margin-top:8px;
  color:var(--secondary);
  font-size:17px;
  line-height:1.8;
}

.report-detail {
  margin-top:12px;
  border-top:1px dashed var(--rule);
  padding:12px 0 3px;
  color:var(--secondary);
  font-size:15px;
  line-height:1.8;
}

.report.is-highlighted {
  animation:report-highlight 1.5s ease-out;
}

@keyframes report-highlight {
  from {
    background:var(--highlight);
  }
  to {
    background:transparent;
  }
}

.reading-complete {
  height:39px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:9px;
  color:var(--muted);
  font:14px var(--sans);
}

.reading-complete>span {
  height:1px;
  width:30px;
  background:var(--strong-rule);
}

.footer-actions .external-arrow {
  color:var(--accent);
}

.x-logo {
  width:16px;
  height:16px;
  fill:currentColor;
}

.site-footer {
  position:relative;
}

.site-footer::before {
  content:"";
  position:absolute;
  height:1px;
  background:var(--strong-rule);
  top:0;
  left:-11px;
  right:-10px;
}

.footer-main {
  height:80px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  border-bottom:1px solid var(--strong-rule);
}

.footer-identity {
  display:flex;
  gap:15px;
  align-items:flex-start;
}

.footer-mark {
  width:30px;
  height:30px;
  object-fit:contain;
}

.footer-brand {
  display:block;
  font-size:24px;
  line-height:28px;
  letter-spacing:-.5px;
}

.footer-tagline {
  display:block;
  font-size:14px;
  line-height:21px;
  letter-spacing:.15px;
  color:var(--secondary);
}

.footer-actions {
  display:flex;
  align-items:center;
  gap:25px;
  font:14px var(--sans);
  color:var(--secondary);
}

.footer-actions>a {
  display:flex;
  align-items:center;
  gap:4px;
}

.footer-actions .vertical-rule {
  background:var(--rule);
}

.up-arrow {
  font-size:21px;
  margin-left:6px;
  margin-right:3px;
}

.build-version {
  color:var(--muted);
  font-size:12px;
  font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}

.footer-bottom {
  display:flex;
  justify-content:space-between;
  font:14px/20px var(--sans);
  color:var(--secondary);
  padding-top:10px;
  min-height:54px;
}

.paper-dialog {
  width:min(540px,calc(100% - 36px));
  padding:34px;
  border:1px solid var(--strong-rule);
  background:var(--paper);
  color:var(--ink);
  box-shadow:0 16px 70px #1112;
}

.paper-dialog::backdrop {
  background:#25251d55;
  backdrop-filter:blur(3px);
}

.dialog-close {
  position:absolute;
  right:12px;
  top:10px;
  font:27px var(--sans);
  color:var(--muted);
}

.paper-dialog h2 {
  font-size:28px;
  line-height:1.5;
  margin:12px 0;
}

.paper-dialog>p:not(.eyebrow) {
  font-size:17px;
  color:var(--secondary);
  line-height:1.8;
}

.edition-list {
  margin-top:18px;
}

.edition-list button {
  width:100%;
  display:flex;
  align-items:center;
  gap:15px;
  padding:15px 0;
  border-top:1px solid var(--rule);
  text-align:left;
  font-size:15px;
}

.edition-list time {
  font:14px var(--sans);
  color:var(--muted);
}

.edition-list button>span:last-child,.edition-list small {
  margin-left:auto;
  color:var(--accent);
}

.sr-only {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
  border:0;
}

/* Keep the reference canvas independent of operating-system scrollbar width. */
html {
  scrollbar-width:none;
}

html::-webkit-scrollbar {
  display:none;
}

.brand {
  font-size:35.5px;
}

.brand-description {
  margin-left:18px;
}

.section-heading h1,.section-heading h2,.reports-toolbar>h2 {
  font-size:26px;
}

.today-heading h1 {
  position:relative;
  top:-2px;
}

.report:first-child {
  padding-bottom:11px;
}

.reading-complete {
  height:41px;
}

.footer-bottom {
  min-height:54px;
}

.reports-toolbar>h2 {
  transform:translateY(3px);
}

@media(max-width:1220px) and (min-width:901px) {
  .page-shell {
    width:calc(100% - 48px);
  }
  .brand-description {
    font-size:12px;
  }
}

@media(max-width:900px) {
  .page-shell {
    width:calc(100% - 36px);
    max-width:600px;
  }
  .masthead {
    height:68px;
  }
  /* Comfortable tap targets on touch devices -- the icon itself stays its
     compact desktop size, only the hit area grows. */
  .icon-button {
    width:44px;
    height:44px;
  }
  .brand {
    font-size:29px;
    gap:11px;
    letter-spacing:-.7px;
  }
  .brand-mark {
    width:30px;
    height:30px;
  }
  .brand-description {
    display:none;
  }
  .masthead-actions {
    gap:10px;
  }
  .subscribe-button {
    padding:0 11px;
    font-size:12px;
  }
  .edition-bar {
    display:block;
    padding:12px 0 11px;
  }
  .edition-info {
    gap:12px;
  }
  .edition-date {
    font-size:20px;
  }
  .edition-weekday {
    font-size:14px;
  }
  .edition-status {
    font-size:12px;
    gap:5px;
    margin-left:auto;
  }
  .edition-status .status-dot {
    width:7px;
    height:7px;
  }
  .edition-navigation {
    margin-top:13px;
    gap:17px;
  }
  .edition-navigation .text-button {
    font-size:13px;
  }
  .edition-navigation .vertical-rule {
    height:15px;
  }
  .section-heading h1,.section-heading h2 {
    font-size:26px;
  }
  .today-heading {
    height:41px;
    gap:12px;
  }
  .section-date {
    font-size:12px;
    padding-top:7px;
    letter-spacing:.6px;
  }
  .today-lede {
    font-size:16px;
  }
  .more-editions {
    font-size:13px;
    padding-top:3px;
  }
  .reports-toolbar {
    height:auto;
    min-height:87px;
    display:flex;
    flex-wrap:wrap;
    gap:0;
    position:relative;
    padding-top:11px;
  }
  .reports-toolbar>h2 {
    font-size:26px;
    width:100%;
    padding-bottom:7px;
  }
  .report {
    padding:17px 0;
  }
  .report:first-child {
    padding-top:17px;
  }
  .report-eyebrow {
    font-size:12px;
  }
  .report h3 {
    font-size:19px;
    line-height:1.4;
  }
  .report-summary {
    font-size:15px;
    line-height:1.65;
    margin-top:6px;
  }
  .reading-complete {
    height:47px;
    font-size:12px;
  }
  .footer-main {
    height:auto;
    min-height:132px;
    display:block;
    padding:18px 0 15px;
  }
  .footer-brand {
    font-size:22px;
  }
  .footer-identity {
    gap:12px;
  }
  .footer-mark {
    width:26px;
    height:26px;
  }
  .footer-tagline {
    font-size:12px;
  }
  .footer-actions {
    justify-content:flex-end;
    margin-top:14px;
    font-size:12px;
    gap:18px;
  }
  .footer-actions .vertical-rule {
    height:15px;
  }
  .footer-bottom {
    min-height:49px;
    font-size:12px;
    padding-top:10px;
  }
  .site-footer::before {
    left:0;
    right:0;
  }
  .paper-dialog {
    padding:27px 22px;
  }
  .paper-dialog h2 {
    font-size:25px;
  }
  .edition-list button {
    font-size:13px;
    gap:10px;
  }
  .edition-list time {
    font-size:12px;
  }
}

@media(max-width:360px) {
  .brand {
    font-size:25px;
    gap:8px;
  }
  .brand-mark {
    width:25px;
    height:25px;
  }
  .masthead-actions {
    gap:6px;
  }
  .subscribe-button {
    padding:0 9px;
    gap:5px;
  }
  .subscribe-button .external-arrow {
    display:none;
  }
  .lang-toggle {
    height:26px;
  }
  .lang-toggle a {
    padding:0 8px;
    font-size:12px;
  }
}

/* /subscribe/ -- src/components/SubscribePage.astro */

.kicker {
  font-family:var(--sans);
  font-size:13px;
  font-weight:600;
  letter-spacing:1.2px;
  color:var(--accent);
  text-transform:uppercase;
}

.subscribe-page {
  padding-bottom:20px;
}

.subscribe-hero {
  padding:56px 0 44px;
  max-width:760px;
}

.subscribe-hero h1 {
  margin-top:14px;
  font-size:44px;
  line-height:1.2;
  letter-spacing:-1px;
}

.subscribe-hero h1 span {
  display:block;
}

.subscribe-hero-intro {
  margin-top:20px;
  font-size:18px;
  line-height:1.8;
  color:var(--secondary);
  max-width:640px;
}

.subscribe-hero-actions {
  margin-top:28px;
  display:flex;
  align-items:center;
  gap:24px;
  flex-wrap:wrap;
}

.subscribe-cta {
  display:inline-flex;
  align-items:center;
  gap:9px;
  height:46px;
  padding:0 22px;
  border-radius:6px;
  background:var(--accent);
  color:var(--accent-contrast-text);
  font-family:var(--sans);
  font-size:15px;
  font-weight:600;
  white-space:nowrap;
}

.subscribe-cta .external-arrow {
  width:18px;
  height:18px;
}

.subscribe-cta:hover {
  color:var(--accent-contrast-text);
  opacity:.88;
}

.subscribe-trial-badge {
  margin-top:22px;
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 16px;
  border:1px solid var(--rule);
  border-radius:6px;
  background:var(--paper-elevated);
  font-family:var(--sans);
  font-size:14px;
  color:var(--secondary);
}

.subscribe-features,.subscribe-sample,.subscribe-steps {
  padding:36px 0;
  border-top:1px solid var(--strong-rule);
}

.subscribe-features .section-heading,.subscribe-sample .section-heading,.subscribe-steps .section-heading {
  height:auto;
  flex-direction:column;
  align-items:flex-start;
  gap:6px;
  white-space:normal;
  margin-bottom:28px;
}

.feature-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:1px;
  background:var(--rule);
  border:1px solid var(--rule);
}

.feature-card {
  background:var(--paper);
  padding:26px 24px;
}

.feature-number {
  font-family:var(--sans);
  font-size:13px;
  color:var(--muted);
}

.feature-card h3 {
  margin-top:10px;
  font-size:19px;
  line-height:1.35;
  letter-spacing:-.3px;
}

.feature-card p {
  margin-top:8px;
  color:var(--secondary);
  font-size:15.5px;
  line-height:1.75;
}

/* A static mock of the actual Telegram channel UI (fixed colors, not the
   site's own light/dark palette -- this depicts a screenshot of a
   different app's chrome, so it deliberately doesn't follow var(--paper)
   etc). Content inside is real, verbatim excerpts (see subscribeSample in
   src/i18n.ts) -- only the phone-app framing around it is a mockup. */
.tg-mock {
  max-width:640px;
  margin:0 auto;
  border-radius:14px;
  overflow:hidden;
  border:1px solid #0002;
  box-shadow:0 24px 60px -20px #0004;
}

.tg-mock-header {
  display:flex;
  align-items:center;
  gap:12px;
  padding:13px 18px;
  background:#17212b;
}

.tg-mock-avatar {
  width:38px;
  height:38px;
  flex:none;
  border-radius:50%;
  background:#2b5278;
  padding:7px;
  object-fit:contain;
}

.tg-mock-identity {
  display:flex;
  flex-direction:column;
  gap:2px;
  min-width:0;
}

.tg-mock-name {
  font-family:var(--sans);
  font-size:15px;
  font-weight:600;
  color:#fff;
}

.tg-mock-sub {
  font-family:var(--sans);
  font-size:12.5px;
  color:#8ea0b3;
}

.tg-mock-body {
  max-height:520px;
  overflow-y:auto;
  padding:14px 14px 6px;
  background:#e6ebee;
  display:flex;
  flex-direction:column;
  gap:9px;
  -webkit-overflow-scrolling:touch;
}

.tg-msg {
  background:#fff;
  border-radius:9px;
  padding:9px 13px 11px;
  box-shadow:0 1px 2px #00000014;
}

.tg-msg-tag {
  display:inline-block;
  font-family:var(--sans);
  font-size:12px;
  font-weight:700;
  letter-spacing:.2px;
  color:#2aabee;
}

.tg-msg p {
  margin-top:5px;
  font-size:14.5px;
  line-height:1.6;
  color:#222429;
}

.subscribe-sample-footnote {
  margin-top:20px;
  font-family:var(--sans);
  font-size:13px;
  color:var(--muted);
}

.step-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:24px;
}

.step-card {
  display:flex;
  gap:14px;
}

.step-number {
  flex:none;
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  border-radius:50%;
  border:1px solid var(--strong-rule);
  font-family:var(--sans);
  font-size:14px;
  font-weight:600;
}

.step-card h3 {
  font-size:17px;
  line-height:1.35;
}

.step-card p {
  margin-top:6px;
  color:var(--secondary);
  font-size:15px;
  line-height:1.7;
}

.subscribe-final-cta {
  margin-top:12px;
  padding:48px 32px;
  text-align:center;
  border:1px solid var(--rule);
  border-radius:10px;
  background:var(--paper-elevated);
}

.subscribe-final-cta h2 {
  font-size:28px;
  letter-spacing:-.5px;
}

.subscribe-final-cta p {
  margin-top:10px;
  color:var(--secondary);
  font-size:16px;
}

.subscribe-final-cta .subscribe-cta {
  margin-top:20px;
}

@media(max-width:900px) {
  .subscribe-hero {
    padding:36px 0 32px;
  }
  .subscribe-hero h1 {
    font-size:32px;
  }
  .subscribe-hero-intro {
    font-size:16px;
  }
  .feature-grid {
    grid-template-columns:1fr;
  }
  .tg-mock-body {
    max-height:420px;
  }
  .step-grid {
    grid-template-columns:1fr;
  }
  .subscribe-final-cta {
    padding:36px 20px;
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto;
  }
  .report.is-highlighted {
    animation:none;
  }
}

/* /releases/ -- src/components/releases/. Built from the edition pages'
   own pieces (.kicker, .edition-bar, .reports-toolbar, .report,
   .status-dot); only release-specific rules below. */

.releases-nav {
  color:var(--secondary);
}

.releases-nav[aria-current] {
  color:var(--accent);
}

.releases-page {
  padding-bottom:24px;
}

.releases-hero {
  padding:44px 0 34px;
  max-width:760px;
}

.releases-hero h1,.release-head h1 {
  margin-top:12px;
  font-size:40px;
  line-height:1.2;
  letter-spacing:-.9px;
}

.releases-intro,.release-lede {
  margin-top:16px;
  font-size:18px;
  line-height:1.75;
  color:var(--secondary);
}

.release-status {
  display:inline-flex;
  align-items:center;
  gap:7px;
  font:14px var(--sans);
  color:var(--secondary);
  white-space:nowrap;
}

.release-row-meta {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px 14px;
}

.release-row-tag {
  font-weight:600;
}

.release-row-meta time {
  color:var(--muted);
}

.release-row h3 {
  margin-top:2px;
}

.release-row-foot {
  margin-top:8px;
  display:flex;
  align-items:center;
  gap:12px;
  font:14px var(--sans);
  color:var(--muted);
}

.release-flag {
  display:inline-flex;
  align-items:center;
  height:22px;
  padding:0 8px;
  border-radius:4px;
  background:var(--accent);
  color:var(--accent-contrast-text);
  font:600 12px var(--sans);
  white-space:nowrap;
}

.release-empty,.release-disclaimer {
  padding:18px 0;
  font:13px var(--sans);
  line-height:1.7;
  color:var(--muted);
}

.release-bar .edition-info {
  gap:18px;
}

.release-head {
  padding:40px 0 30px;
  max-width:860px;
}

.release-note {
  margin-top:14px;
  padding:10px 14px;
  border-left:3px solid var(--accent);
  background:var(--paper-elevated);
  font:14px var(--sans);
  line-height:1.7;
  color:var(--secondary);
}

.release-note a {
  text-decoration:underline;
  text-underline-offset:3px;
}

.release-facts {
  margin:20px 0 0;
  display:flex;
  flex-wrap:wrap;
  gap:8px 28px;
  font:14px var(--sans);
}

.release-facts div {
  display:flex;
  gap:8px;
  align-items:baseline;
}

.release-facts dt {
  color:var(--muted);
}

.release-facts dd {
  margin:0;
  color:var(--secondary);
}

.release-facts code {
  font-size:13px;
}

.release-actions {
  margin-bottom:30px;
  padding:18px 22px;
  border:1px solid var(--rule);
  border-left:3px solid var(--accent);
  background:var(--paper-elevated);
}

.release-actions h2 {
  font-size:20px;
  letter-spacing:-.3px;
}

.release-actions ul {
  margin:10px 0 0;
  padding-left:20px;
  font-size:16px;
  line-height:1.75;
  color:var(--secondary);
}

.release-group,.release-other {
  margin-bottom:12px;
}

.release-other .report-summary {
  padding:16px 0 22px;
  font-size:16px;
}

.release-change .report-eyebrow {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px 12px;
}

.release-importance {
  font-weight:600;
}

.release-change.importance-medium .release-importance,.release-change.importance-low .release-importance {
  color:var(--secondary);
}

.release-audience {
  color:var(--muted);
}

.release-audience::before {
  content:"·";
  margin-right:12px;
  color:var(--strong-rule);
}

.release-params {
  margin-top:14px;
  overflow-x:auto;
}

.release-params table {
  border-collapse:collapse;
  min-width:420px;
  font:14px var(--sans);
}

.release-params th,.release-params td {
  padding:8px 18px 8px 0;
  border-bottom:1px solid var(--rule);
  text-align:left;
  vertical-align:top;
}

.release-params th {
  font-weight:600;
  color:var(--muted);
  border-bottom-color:var(--strong-rule);
}

.release-params td {
  color:var(--secondary);
}

.release-action {
  margin-top:12px;
  font:15px var(--sans);
  line-height:1.7;
  color:var(--secondary);
}

.release-action strong {
  color:var(--accent);
  margin-right:6px;
}

.release-sources {
  margin-top:10px;
  display:flex;
  flex-wrap:wrap;
  gap:4px 12px;
  font:13px var(--sans);
  color:var(--muted);
}

.release-sources a {
  color:var(--accent);
}

.release-sources a:hover {
  text-decoration:underline;
  text-underline-offset:3px;
}

@media(max-width:900px) {
  /* The masthead is already full at phone width; the edition footer and
     the release pages' own navigation carry the entry there. */
  .releases-nav {
    display:none;
  }
  .releases-hero,.release-head {
    padding:30px 0 24px;
  }
  .releases-hero h1,.release-head h1 {
    font-size:30px;
  }
  .releases-intro,.release-lede {
    font-size:16px;
  }
  .release-bar .edition-navigation {
    margin-top:8px;
  }
}

/* daily-v2 edition sections -- src/components/v2/. Same pieces as the v1
   edition (.reports-toolbar, .report, .report-eyebrow, .report-summary);
   only v2-specific rules below. */

:root {
  /* DC Top 20 chart only: the site's green/red pair fails colorblind
     separation (docs/daily-v2/design.md §10), so the chart uses teal /
     orange-red, re-checked for both themes. */
  --chart-up:#00809a;
  --chart-down:#cf4520;
  --chart-bar:#8a8b90;
  --chart-bar-hover:#56575d;
  --chart-grid:#e2e1dc;
  --chart-axis:#b9b8b2;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --chart-up:#1fa2bd;
    --chart-down:#e8663d;
    --chart-bar:#8f9196;
    --chart-bar-hover:#c8c7c0;
    --chart-grid:#2c2e33;
    --chart-axis:#4a4c52;
  }
}

:root[data-theme="dark"] {
  --chart-up:#1fa2bd;
  --chart-down:#e8663d;
  --chart-bar:#8f9196;
  --chart-bar-hover:#c8c7c0;
  --chart-grid:#2c2e33;
  --chart-axis:#4a4c52;
}

.v2-section {
  border-top:1px solid var(--strong-rule);
  padding-top:8px;
  margin-bottom:34px;
}

.v2-empty {
  padding:18px 0;
  color:var(--secondary);
  font-size:16px;
}

.v2-muted {
  color:var(--muted);
}

.v2-chg.up {
  color:var(--market-up-color);
}

.v2-chg.down {
  color:var(--market-down-color);
}

/* highlights */
.v2-highlight-list {
  list-style:none;
  margin:0;
  padding:0;
}

.v2-highlight-list li {
  display:flex;
  gap:18px;
  padding:16px 0;
  border-bottom:1px solid var(--rule);
}

.v2-highlight-list li:last-child {
  border-bottom:0;
}

.v2-highlight-num {
  flex:none;
  width:26px;
  padding-top:4px;
  font:600 13px var(--sans);
  color:var(--accent);
}

.v2-highlight-fact {
  font-size:19px;
  line-height:1.5;
  letter-spacing:-.2px;
}

.v2-highlight-why {
  margin-top:6px;
  font-size:16px;
  line-height:1.7;
  color:var(--secondary);
}

/* protocol */
.v2-release-meta,.v2-pr-meta,.v2-subnet-meta {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px 12px;
}

.v2-pr-meta a {
  font-weight:600;
}

.v2-pr-meta a:hover {
  text-decoration:underline;
  text-underline-offset:3px;
}

.v2-flag-quiet {
  background:var(--secondary);
}

.v2-release .accent-link {
  display:inline-block;
  margin-top:10px;
}

.v2-pr-body,.v2-subnet-body {
  margin:10px 0 0;
}

.v2-pr-body div,.v2-subnet-body div {
  display:grid;
  grid-template-columns:7.5em 1fr;
  gap:12px;
  padding:6px 0;
}

.v2-pr-body dt,.v2-subnet-body dt {
  font:13px/1.9 var(--sans);
  color:var(--muted);
}

.v2-pr-body dd,.v2-subnet-body dd {
  margin:0;
  font-size:16px;
  line-height:1.75;
  color:var(--secondary);
}

.v2-recent-releases {
  padding:18px 0 4px;
}

.v2-recent-releases .recent-compact-list {
  margin-top:6px;
}

/* market */
.v2-market-head {
  display:flex;
  align-items:baseline;
  flex-wrap:wrap;
  gap:8px 28px;
  padding:16px 0 4px;
}

.v2-market-tao {
  font-size:18px;
}

.v2-market-tao span:first-child {
  font:14px var(--sans);
  color:var(--muted);
  margin-right:4px;
}

.v2-market-tao .v2-chg {
  font:15px var(--sans);
  margin-left:6px;
}

.v2-market-breadth {
  font:14px var(--sans);
  color:var(--secondary);
}

.v2-market-summary {
  margin:6px 0 4px;
}

.v2-market-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px 36px;
  margin-top:14px;
}

.v2-market-table h3 {
  padding:10px 0 6px;
  border-bottom:1px solid var(--strong-rule);
  font:600 14px var(--sans);
  color:var(--secondary);
}

.v2-market-table table {
  width:100%;
  border-collapse:collapse;
  font:14px var(--sans);
}

.v2-market-table td {
  padding:8px 0;
  border-bottom:1px solid var(--rule);
  vertical-align:top;
}

.v2-market-table .v2-sn span {
  color:var(--secondary);
  margin-left:4px;
}

.v2-num {
  text-align:right;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  padding-left:14px!important;
}

.v2-note-row td {
  padding-top:0;
  font-size:13px;
  line-height:1.6;
  color:var(--secondary);
}

/* subnets */
.v2-subnet h3 {
  margin-top:2px;
}

.v2-debate {
  margin-top:14px;
  padding:14px 18px;
  border-left:3px solid var(--accent);
  background:var(--paper-elevated);
}

.v2-debate-head {
  font:14px var(--sans);
  color:var(--secondary);
}

.v2-debate-head strong {
  color:var(--accent);
}

.v2-debate ul {
  list-style:none;
  margin:8px 0 0;
  padding:0;
}

.v2-debate li {
  padding:8px 0;
  border-bottom:1px dashed var(--rule);
}

.v2-debate li:last-child {
  border-bottom:0;
}

.v2-debate li p {
  font-size:16px;
  line-height:1.7;
}

.v2-debate blockquote {
  margin:4px 0 0;
  font-size:14.5px;
  font-style:italic;
  line-height:1.7;
  color:var(--muted);
}

.v2-quote-zh {
  display:block;
  font-style:normal;
}

.v2-tg-note {
  padding:14px 0 0;
}

/* DC activity top 20 */
.v2-dc-note,.v2-dc-legend {
  margin-top:10px;
  font:13px/1.7 var(--sans);
  color:var(--muted);
}

.v2-dc-legend {
  display:flex;
  flex-wrap:wrap;
  gap:6px 18px;
  color:var(--secondary);
}

.v2-dc-key {
  display:inline-block;
  width:12px;
  height:10px;
  margin-right:6px;
  border-radius:0 3px 3px 0;
  vertical-align:-1px;
}

.v2-dc-key.n { background:var(--chart-bar); }
.v2-dc-key.up { background:var(--chart-up); }
.v2-dc-key.down { background:var(--chart-down); border-radius:3px 0 0 3px; }

.v2-dc-chart {
  margin-top:12px;
  padding:14px 14px 10px;
  border:1px solid var(--chart-grid);
  background:var(--paper-elevated);
  overflow-x:auto;
}

.v2-dc-grid {
  display:grid;
  grid-template-columns:minmax(130px,1.3fr) minmax(120px,2fr) minmax(96px,1.3fr) minmax(130px,1.7fr);
  column-gap:16px;
  min-width:560px;
}

.v2-dc-hd {
  padding-bottom:2px;
  font:700 12px var(--sans);
  color:var(--muted);
}

.v2-dc-ticks {
  position:relative;
  height:16px;
  font:11px var(--sans);
  color:var(--muted);
}

.v2-dc-ticks span {
  position:absolute;
  transform:translateX(-50%);
  white-space:nowrap;
}

.v2-dc-ticks span:first-child {
  transform:none;
}

.v2-dc-row {
  display:contents;
}

.v2-dc-cell {
  position:relative;
  height:26px;
  display:flex;
  align-items:center;
}

.v2-dc-row:hover .v2-dc-cell,.v2-dc-row:focus .v2-dc-cell {
  background:var(--surface-hover);
}

.v2-dc-row:focus {
  outline:none;
}

.v2-dc-row:focus .v2-dc-label {
  box-shadow:inset 2px 0 0 var(--accent);
}

.v2-dc-label {
  gap:6px;
  padding-left:4px;
  overflow:hidden;
  white-space:nowrap;
  font:13px var(--sans);
}

.v2-dc-rank {
  flex:none;
  width:1.6em;
  text-align:right;
  font-size:11px;
  color:var(--muted);
}

.v2-dc-sn {
  flex:none;
  font-size:12px;
  color:var(--secondary);
}

.v2-dc-name {
  overflow:hidden;
  text-overflow:ellipsis;
}

.v2-dc-plot {
  position:relative;
  width:100%;
  height:100%;
}

.v2-dc-zero {
  position:absolute;
  top:0;
  bottom:0;
  width:1px;
  background:var(--chart-axis);
}

.v2-dc-bar {
  position:absolute;
  top:50%;
  height:12px;
  margin-top:-6px;
  border-radius:0 4px 4px 0;
}

.v2-dc-bar.n { background:var(--chart-bar); }
.v2-dc-row:hover .v2-dc-bar.n,.v2-dc-row:focus .v2-dc-bar.n { background:var(--chart-bar-hover); }
.v2-dc-bar.up { background:var(--chart-up); }
.v2-dc-bar.down { background:var(--chart-down); border-radius:4px 0 0 4px; }

.v2-dc-val {
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  font:12px var(--sans);
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
}

.v2-dc-table {
  margin-top:10px;
  font:13px var(--sans);
  color:var(--secondary);
}

.v2-dc-table summary {
  cursor:pointer;
}

.v2-dc-table table {
  margin-top:8px;
  border-collapse:collapse;
  font-variant-numeric:tabular-nums;
}

.v2-dc-table th,.v2-dc-table td {
  padding:3px 14px 3px 0;
  border-bottom:1px solid var(--rule);
  text-align:right;
}

.v2-dc-table th:first-child,.v2-dc-table td:first-child {
  text-align:left;
}

/* X voices */
.v2-voice-list {
  list-style:none;
  margin:0;
  padding:0;
}

.v2-voice-link {
  margin-top:8px;
}

@media(max-width:900px) {
  .v2-market-grid {
    grid-template-columns:1fr;
  }
  .v2-pr-body div,.v2-subnet-body div {
    grid-template-columns:1fr;
    gap:0;
  }
  .v2-highlight-fact {
    font-size:17px;
  }
}

/* Release pages: the full PR list (every PR in the release range). */
.release-pr-list { margin:0; padding:0; list-style:none; }
.release-pr { padding:20px 0; border-bottom:1px solid var(--rule); scroll-margin-top:24px; }
.release-pr:last-child { border-bottom:0; }
.release-pr .report-eyebrow { display:flex; flex-wrap:wrap; gap:6px 16px; align-items:center; }
.release-pr h3 { font-size:19px; line-height:1.4; margin:6px 0 8px; overflow-wrap:anywhere; }
.release-pr:target { background:var(--tint, rgba(0,0,0,.04)); }
.release-pr-folded { color:var(--muted); }
.release-pending { margin-bottom:44px; }
.release-pending-note { font:13px/1.7 var(--sans); color:var(--muted); padding:14px 0 4px; }
