/* Outfit: copyright The Outfit Project Authors, SIL Open Font License 1.1.

   Every visual choice here was made by Jev (TypeSafe's decision model) scoring
   options against the brief: a near-black page, charcoal cards, one deep honey
   amber with near-black labels, depth from shadows rather than glows, medium
   corners, Outfit for headings only. */

@font-face {
  font-family: "Outfit";
  src: url("/static/outfit-latin-wght.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  --bg: #0d0d0f;
  --bg-2: #111113;
  --surface: #18181b;
  --surface-2: #202024;
  --line: #27272c;
  --line-2: #34343a;
  --text: #ececec;
  --muted: #a9a9b0;
  --faint: #7a7a82;
  --accent: #eaa43c;
  --on-accent: #111111;
  --accent-text: color-mix(in srgb, var(--accent) 80%, #ffffff);
  --good: #4fc58f;
  --bad: #f07a7a;
  --radius: 14px;
  --radius-sm: 10px;
  --wrap: 1080px;
  --shadow: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 12px 32px -18px rgba(0, 0, 0, .9);
  --head: "Outfit", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 16px/1.6 system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
main { flex: 1; }
img { max-width: 100%; height: auto; }
a { color: var(--accent-text); text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 3px; }
h1, h2, h3 { font-family: var(--head); font-weight: 650; line-height: 1.25; letter-spacing: -.01em; margin: 0 0 .5em; }
:lang(ar) h1, :lang(ar) h2, :lang(fa) h1, :lang(fa) h2, :lang(ja) h1, :lang(ko) h1, :lang(zh) h1, :lang(th) h1, :lang(hi) h1 { letter-spacing: 0; }
.wrap { width: 100%; max-width: var(--wrap); margin: 0 auto; padding: 0 16px; }
.sr-only, .hp { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
/* Hidden above the page until focused. (Pushing it sideways overflowed right-
   to-left pages, whose start is on the right.) */
.skip { position: absolute; inset-inline-start: 8px; top: 8px; transform: translateY(-200%); background: var(--accent); color: var(--on-accent); padding: 8px 14px; border-radius: 8px; z-index: 100; }
.skip:focus { transform: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.preview-bar { background: #2a2410; color: #e9d38f; font-size: 13px; text-align: center; padding: 6px 16px; }
.langbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 14px; padding: 8px 16px; background: var(--surface); border-bottom: 1px solid var(--line); font-size: 14px; }
.langbar[hidden] { display: none; }
.langbar-go { font-weight: 600; }
.langbar-close { background: none; border: 0; color: var(--faint); font: inherit; font-size: 13px; cursor: pointer; }

/* header: a slim solid bar that stays put */
.site-header { position: sticky; top: 0; z-index: 30; background: var(--bg); border-bottom: 1px solid var(--line); }
.header-inner { display: flex; align-items: center; gap: 16px; height: 56px; }
.logo { display: inline-flex; align-items: center; gap: 9px; color: var(--text); font-family: var(--head); font-weight: 650; font-size: 19px; }
.logo:hover { text-decoration: none; }
.logo-mark { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; color: var(--on-accent); background: var(--accent); }
.logo-mark.big { width: 48px; height: 48px; border-radius: 12px; }
.header-end { margin-inline-start: auto; display: flex; align-items: center; gap: 6px; }
.main-nav { display: flex; gap: 2px; }
.main-nav a { color: var(--muted); font-size: 14px; font-weight: 500; padding: 6px 10px; border-radius: 8px; white-space: nowrap; }
.main-nav a:hover, .main-nav a[aria-current] { color: var(--text); background: var(--surface); text-decoration: none; }
.nav-toggle { display: none; }
.lang-menu { position: relative; }
.lang-toggle {
  display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: 13px; font-weight: 600; text-transform: uppercase;
  color: var(--muted); background: transparent; border: 1px solid var(--line-2); border-radius: 8px; padding: 5px 9px; cursor: pointer;
}
.lang-toggle:hover, .lang-toggle[aria-expanded="true"] { color: var(--text); background: var(--surface); }
.donate-link {
  display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; text-decoration: none;
  color: var(--accent); border: 1px solid color-mix(in srgb, var(--accent) 45%, var(--line-2)); border-radius: 8px; padding: 5px 9px;
}
.donate-link:hover { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.donate-link .ic { width: 16px; height: 16px; }
@media (max-width: 480px) { .donate-link span { display: none; } .donate-link { padding: 5px 7px; } }
/* The donation page: one card per coin, its networks as tabs. */
.coins { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 14px; margin: 24px 0; }
.coin-card { display: grid; gap: 12px; align-content: start; padding: 16px; border: 1px solid var(--line); border-top: 3px solid var(--coin, var(--accent)); border-radius: var(--radius-sm); background: var(--surface); }
.coin-head { display: flex; align-items: center; gap: 10px; }
.coin-head p { margin: 0; display: flex; align-items: baseline; gap: 8px; }
.coin-head strong { font-size: 17px; color: var(--text); }
.coin-head span { font-size: 13px; color: var(--faint); }
.coin-ic { width: 32px; height: 32px; flex: none; }
.coin-nets { display: flex; flex-wrap: wrap; gap: 6px; }
.coin-net { font: inherit; font-size: 13px; font-weight: 600; padding: 4px 11px; border-radius: 999px; border: 1px solid var(--line-2); background: transparent; color: var(--muted); cursor: pointer; }
.coin-net:hover { color: var(--text); }
.coin-net[aria-selected="true"] { background: var(--coin, var(--accent)); border-color: var(--coin, var(--accent)); color: #fff; }
.coin-pane { display: flex; gap: 16px; align-items: flex-start; }
.coin-pane[hidden] { display: none; }
.wallet-qr { flex: none; width: 120px; }
.wallet-qr svg { display: block; width: 120px; height: 120px; border-radius: 6px; }
.coin-body { min-width: 0; display: grid; gap: 8px; }
.coin-body p { margin: 0; }
.coin-net-one { font-size: 13px; font-weight: 600; color: var(--muted); }
.coin-addr { display: block; font-size: 13px; line-height: 1.45; word-break: break-all; color: var(--text); background: var(--bg-2); border: 1px solid var(--line); border-radius: 6px; padding: 8px 10px; }
.wallet-memo code { font-size: 13px; word-break: break-all; color: var(--text); }
.wallet-copy { justify-self: start; display: inline-flex; align-items: center; gap: 6px; }
.wallet-copy .ic { width: 16px; height: 16px; }
.wallet-only { font-size: 12.5px; line-height: 1.45; color: var(--faint); }
@media (max-width: 520px) {
  .coin-pane { flex-direction: column; align-items: center; }
  .coin-body { width: 100%; }
  .wallet-copy { justify-self: stretch; justify-content: center; }
  .wallet-qr, .wallet-qr svg { width: 176px; height: 176px; }
}
.lang-list {
  position: absolute; inset-inline-end: 0; top: calc(100% + 6px); z-index: 40; margin: 0; padding: 6px; list-style: none;
  width: 220px; max-height: 70vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--line-2); border-radius: var(--radius-sm); box-shadow: var(--shadow);
}
.lang-list a { display: block; padding: 7px 10px; border-radius: 6px; color: var(--text); font-size: 14px; }
.lang-list a:hover { background: var(--surface-2); text-decoration: none; }
.lang-list a[aria-current] { color: var(--accent-text); font-weight: 600; }

/* the tool comes first: small headline, then the card */
.hero { padding: 36px 0 12px; }
.hero-inner { max-width: 640px; margin: 0 auto; }
.hero h1 { font-size: clamp(26px, 4.4vw, 38px); margin-bottom: 8px; }
.hero .lead { color: var(--muted); font-size: 16px; margin: 0 0 20px; }

.tool { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 18px; box-shadow: var(--shadow); }
.tool-label { display: block; font-size: 14px; font-weight: 600; color: var(--muted); margin: 0 0 8px; }
.tool-field { position: relative; }
.tool input {
  width: 100%; font: inherit; font-size: 17px; color: var(--text);
  background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm);
  padding: 15px 14px; padding-inline-end: 104px; outline: 0; transition: border-color .15s;
}
.tool input::placeholder { color: var(--faint); }
.tool input:focus { border-color: var(--accent); }
.tool-paste {
  position: absolute; inset-inline-end: 7px; top: 50%; transform: translateY(-50%);
  border: 1px solid var(--line-2); background: var(--surface-2); color: var(--muted);
  font: inherit; font-size: 13px; font-weight: 600; padding: 7px 11px; border-radius: 8px; cursor: pointer;
}
.tool-paste:hover { color: var(--text); border-color: var(--faint); }
.tool-go {
  display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; margin-top: 12px;
  border: 0; cursor: pointer; font: inherit; font-family: var(--head); font-weight: 650; font-size: 18px; color: var(--on-accent);
  padding: 15px 20px; border-radius: var(--radius-sm); background: var(--accent);
  box-shadow: 0 8px 20px -12px rgba(0, 0, 0, .9); transition: background-color .15s;
}
.tool-go:hover { background: color-mix(in srgb, var(--accent) 88%, #ffffff); }
.tool-go[disabled] { opacity: .8; cursor: progress; }
.tool-trust { color: var(--faint); font-size: 13px; margin: 12px 0 0; text-align: center; }
.tool-howto { color: var(--muted); font-size: 15px; margin: 14px 2px 0; }
.adblock-bar { display: flex; align-items: center; gap: 12px; margin: 14px 0 0; padding: 10px 14px; border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--line)); border-radius: var(--radius-sm); background: var(--bg-2); font-size: 14px; color: var(--muted); }
.adblock-bar[hidden] { display: none; }
.adblock-bar span { flex: 1; }
.adblock-bar button { background: none; border: 0; color: var(--faint); font: inherit; font-size: 13px; cursor: pointer; }
.adblock-bar .ab-done { color: var(--accent); font-weight: 600; white-space: nowrap; }
@media (max-width: 480px) { .adblock-bar { flex-wrap: wrap; row-gap: 6px; } .adblock-bar span { flex-basis: 100%; } }

/* the sites a link may come from, under the box */
.srcs { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center; gap: 6px 10px; margin: 14px 0 0; }
.srcs-t { color: var(--faint); font-size: 13px; }
.srcs-list { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.srcs-list li { display: flex; }
.srcs-list a, .srcs-list li > span { display: block; padding: 3px 10px; border: 1px solid var(--line); border-radius: 999px; background: var(--bg-2); color: var(--muted); font-size: 13px; line-height: 1.5; }
.srcs-list a:hover { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); color: var(--accent-text); }
.page .srcs { justify-content: flex-start; }
.srcs-list a, .srcs-list li > span { display: inline-flex; align-items: center; }

/* a source's own colour, only ever as a dot beside its name (Jev, round 11) */
.src-dot { display: inline-block; flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--dot, var(--faint)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--dot, var(--faint)) 22%, transparent); margin-inline-end: 7px; }
h1 .src-dot { width: 11px; height: 11px; margin-inline-end: 12px; vertical-align: .18em; box-shadow: 0 0 0 4px color-mix(in srgb, var(--dot) 22%, transparent); }
.result-src { display: flex; align-items: center; margin: 0 0 6px; color: var(--muted); font-size: 13px; }

.spinner { width: 17px; height: 17px; border: 2.5px solid rgba(0, 0, 0, .25); border-top-color: var(--on-accent); border-radius: 50%; display: inline-block; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* result: preview, title, one full-width button per choice, best first */
.result { margin: 18px 0 0; }
.result-card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow); animation: rise .2s ease-out; }
@keyframes rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.result-thumb { position: relative; aspect-ratio: 16 / 9; background: var(--surface-2); }
.result-thumb.square { aspect-ratio: auto; max-height: 420px; display: flex; justify-content: center; }
.result-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.result-thumb.square img { width: auto; max-height: 420px; object-fit: contain; }
.result-thumb.square.no-img { min-height: 160px; }
.result-thumb.gif-play { background: #000; }
.result-thumb video { width: 100%; height: 100%; object-fit: contain; display: block; }
.ts-box { display: flex; justify-content: center; margin: 12px 0 0; }
.ts-box[hidden] { display: none; }
.result-thumb .dur { position: absolute; inset-inline-end: 10px; bottom: 10px; background: rgba(0, 0, 0, .82); color: #fff; font-size: 13px; font-weight: 600; padding: 2px 8px; border-radius: 6px; }
.result-body { padding: 16px; }
.result-title { font-size: 16px; font-weight: 600; margin: 0 0 14px; overflow-wrap: anywhere; }
.result-meta, .result-from { color: var(--muted); font-size: 14px; margin: -8px 0 12px; }
.result-sub { font-size: 16px; margin: 18px 0 10px; }
.qualities { display: grid; gap: 8px; }
.q-btn {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 13px 16px; border-radius: var(--radius-sm); border: 1px solid var(--line-2); background: var(--surface-2);
  color: var(--text); font-weight: 600; font-size: 16px;
}
.q-btn:hover { text-decoration: none; border-color: var(--accent); }
.q-btn small { color: var(--muted); font-weight: 500; font-size: 13px; }
.q-btn.best { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.q-btn.best small { color: rgba(0, 0, 0, .7); }
.q-btn.best:hover { background: color-mix(in srgb, var(--accent) 88%, #ffffff); }
.result-hint { color: var(--faint); font-size: 13px; margin: 12px 0 0; }
.result-msg { padding: 14px 16px; border-radius: var(--radius-sm); background: var(--surface); border: 1px solid var(--line); color: var(--muted); }
.result-msg.error { border-color: color-mix(in srgb, var(--bad) 40%, var(--line)); color: #f5b8b8; }
.req { margin-top: 12px; padding: 14px 16px; border-radius: var(--radius-sm); background: var(--surface); border: 1px solid var(--line); }
.req-ask { margin: 0 0 10px; color: var(--muted); }
.req-ask strong { color: var(--text); word-break: break-all; }
.req .req-form { margin-top: 0; gap: 10px; }
.req .req-form[hidden], .req .req-yes[hidden] { display: none; }
.req-note { margin: 0; font-size: 13px; color: var(--faint); }
.req-done { margin: 0; color: var(--good); }
.linkish { background: none; border: 0; padding: 0; color: var(--accent-text); font: inherit; cursor: pointer; text-align: start; }
.linkish:hover { text-decoration: underline; }
.album-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); gap: 6px; margin-top: 14px; }
.album-photo { display: block; aspect-ratio: 4 / 5; border-radius: 8px; overflow: hidden; background: var(--surface-2); border: 1px solid var(--line); }
.album-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.album-photo:hover { border-color: var(--accent); }
.profile-cover { aspect-ratio: 5 / 1; background: var(--surface-2); overflow: hidden; }
.profile-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.profile-head { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; }
.profile-head .result-title { margin: 0; font-size: 19px; }
.avatar { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; border: 2px solid var(--line-2); flex: none; }
.profile-videos { display: grid; gap: 10px; }
.pv { display: flex; gap: 10px; align-items: center; }
.pv img, .pv-blank { width: 112px; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 6px; background: var(--surface-2); flex: none; display: block; }
.pv-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.pv-title { font-size: 14px; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.pv small { color: var(--faint); }
.btn-small { align-self: flex-start; padding: 5px 10px; font-size: 13px; }

/* sections */
.section { margin: 40px auto; }
.section-title { font-size: 22px; margin-bottom: 14px; }
.prose { color: #d6d6da; }
.prose h2 { font-size: 23px; margin-top: 1.6em; color: var(--text); }
.prose h3 { font-size: 18px; margin-top: 1.4em; color: var(--text); }
.prose p, .prose li { color: #cdcdd2; }
.prose ul, .prose ol { padding-inline-start: 1.3em; }
.prose li { margin: .35em 0; }
.prose strong { color: var(--text); }
.prose code { background: var(--surface-2); padding: 1px 6px; border-radius: 6px; font-size: .92em; }
.prose table { border-collapse: collapse; width: 100%; }
.prose th, .prose td { border: 1px solid var(--line); padding: 8px 10px; text-align: start; }
.home-prose { max-width: 640px; margin: 0 auto; }

/* ── icons: soft white line icons with a small amber accent (Jev, round 10) ── */
.sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.ic { width: 24px; height: 24px; flex: none; display: block; }
.ico { position: relative; display: inline-grid; place-items: center; flex: none; color: var(--text); }
.ico::after { content: ""; position: absolute; top: -2px; inset-inline-end: -4px; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); }

/* ── the download path: four stops on a winding amber road, right under the box ── */
.dpath { position: relative; margin: 30px 0 6px; }
.dp-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); column-gap: 10px; }
.dpath-road { position: absolute; top: 0; left: 0; width: 100%; height: 110px; overflow: visible; pointer-events: none; }
.dpath-road path, .dp-link path {
  fill: none; stroke: var(--accent); stroke-width: 2; stroke-linecap: round; stroke-dasharray: 5 9;
  vector-effect: non-scaling-stroke; opacity: .75; animation: road 1.6s linear infinite;
}
@keyframes road { to { stroke-dashoffset: -28; } }
[dir="rtl"] .dpath-road { transform: scaleX(-1); }
.dp-stop { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; }
.dp-stop:nth-child(even) { margin-top: 54px; } /* the road's low stops */
.dp-badge {
  position: relative; z-index: 1; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%;
  color: var(--text); background: var(--surface); border: 1px solid var(--line-2); box-shadow: 0 0 0 6px var(--bg);
}
.dp-stop:last-child .dp-badge { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
.dp-n {
  position: absolute; top: -5px; inset-inline-end: -5px; min-width: 20px; height: 20px; padding: 0 5px; border-radius: 10px;
  display: grid; place-items: center; font-size: 11.5px; font-weight: 700; line-height: 1; color: var(--on-accent); background: var(--accent);
  box-shadow: 0 0 0 3px var(--bg);
}
.dp-stop:last-child .dp-n { background: var(--text); }
.dp-text { display: grid; gap: 2px; margin-top: 12px; }
.dp-text strong { font-size: 15px; color: var(--text); font-weight: 600; }
.dp-text span { font-size: 13px; color: var(--muted); }
.dp-link { display: none; }
@media (max-width: 719px) {
  .dpath { margin-top: 26px; }
  .dp-list { grid-template-columns: 1fr; }
  .dpath-road { display: none; }
  .dp-stop, .dp-stop:nth-child(even) { display: grid; grid-template-columns: 56px 1fr; column-gap: 16px; align-items: center; text-align: start; margin: 0; padding-bottom: 40px; }
  .dp-stop:last-child { padding-bottom: 0; }
  .dp-text { margin: 0; }
  .dp-link { display: block; position: absolute; top: 62px; inset-inline-start: 16px; width: 24px; height: calc(100% - 68px); overflow: visible; }
  .dp-stop:last-child .dp-link { display: none; }
}
@media (prefers-reduced-motion: reduce) { .dpath-road path, .dp-link path { animation: none; } }

/* ── what you can download: an icon list (Jev, round 10) ── */
.feats-section { max-width: calc(640px + 32px); }
.feats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; }
.feats li { display: flex; gap: 16px; align-items: flex-start; padding: 16px 0; border-bottom: 1px solid var(--line); }
.feats .ico { margin-top: 1px; }
.feats strong { display: block; font-size: 15.5px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.feats li span span { color: var(--muted); font-size: 14px; }
@media (max-width: 640px) { .feats { grid-template-columns: 1fr; } }

/* ── headings in the text: a short amber rule and the section's icon (Jev, round 10) ── */
.prose h2 { position: relative; display: flex; align-items: center; gap: 10px; padding-top: 16px; margin-top: 2em; }
.prose h2::before { content: ""; position: absolute; top: 0; inset-inline-start: 0; width: 36px; height: 3px; border-radius: 2px; background: var(--accent); }
.prose > h2:first-child { margin-top: 0; }
.prose h2 .ic { width: 22px; height: 22px; color: var(--text); }

/* questions: tap a row to open it */
.faq { max-width: 640px; margin: 0 auto; }
.faq-item { border-bottom: 1px solid var(--line); }
.faq-item:first-of-type { border-top: 1px solid var(--line); }
.faq-item summary { cursor: pointer; list-style: none; padding: 15px 2px; padding-inline-end: 36px; font-weight: 600; position: relative; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: ""; position: absolute; inset-inline-end: 8px; top: 50%; width: 8px; height: 8px; margin-top: -6px;
  border-right: 2px solid var(--faint); border-bottom: 2px solid var(--faint); transform: rotate(45deg); transition: transform .15s;
}
.faq-item[open] summary::after { transform: rotate(-135deg); margin-top: -2px; }
.faq-a { padding: 0 2px 16px; color: var(--muted); }
.faq-a p { margin: 0 0 .6em; }
.others { max-width: 640px; margin: 0 auto; }
.others-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.other-card { display: flex; flex-direction: column; gap: 4px; padding: 14px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--text); }
.other-card span { color: var(--muted); font-size: 14px; }
.other-card:hover { border-color: var(--accent); text-decoration: none; }

/* pages */
.page { max-width: 760px; padding-top: 30px; padding-bottom: 56px; }
.page h1 { font-size: clamp(26px, 4vw, 36px); }
.page .tool { margin: 16px 0 0; }
.crumbs { font-size: 13px; color: var(--faint); display: flex; gap: 8px; margin-bottom: 12px; }
.crumbs a { color: var(--muted); }

.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); padding: 20px; box-shadow: var(--shadow); }
.form { display: grid; gap: 14px; margin-top: 28px; }
.form h2 { font-size: 20px; margin: 0; }
.form label { display: grid; gap: 6px; font-size: 14px; font-weight: 600; color: var(--muted); }
.form input, .form textarea, .form select {
  width: 100%; font: inherit; font-size: 15px; font-weight: 400; color: var(--text);
  background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); padding: 11px 12px;
}
.form input:focus, .form textarea:focus, .form select:focus { outline: 0; border-color: var(--accent); }
.form .check { display: flex; gap: 10px; align-items: flex-start; font-weight: 500; line-height: 1.45; }
.form .check input { width: 18px; height: 18px; margin-top: 2px; flex: none; accent-color: var(--accent); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.form-status { margin: 0; font-size: 14px; min-height: 1.2em; }
.form-status.ok { color: var(--good); }
.form-status.error { color: var(--bad); }

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font: inherit; font-weight: 600; font-size: 15px; padding: 11px 20px; border-radius: var(--radius-sm);
  border: 1px solid var(--line-2); background: var(--surface-2); color: var(--text); cursor: pointer;
}
.btn:hover { text-decoration: none; border-color: var(--faint); }
.btn-accent { border-color: var(--accent); color: var(--on-accent); background: var(--accent); }
.btn-accent:hover { background: color-mix(in srgb, var(--accent) 88%, #ffffff); border-color: transparent; }
.btn-ghost { background: transparent; }

.error-page { padding-top: 56px; }
.error-code { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--faint); margin: 0 0 10px; }
.lead { color: var(--muted); font-size: 17px; }

/* ads: each in its own outlined box with a small label, so an ad is never
   mistaken for the site's own buttons */
.ad-row { margin: 20px auto; }
.ad-row[hidden] { display: none; }
.ad-box { border: 1px solid var(--line); border-radius: var(--radius-sm); padding: 8px 8px 10px; background: var(--bg-2); text-align: center; }
.ad-box:not(:has(.ad)) { display: none; }
.ad-label { display: block; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--faint); margin: 0 0 6px; }
.ad { max-width: 100%; overflow: hidden; display: flex; justify-content: center; }
.result-ad { margin: 28px 0 0; }
/* On phones, between the picture and the title and buttons: clear space on
   both sides and the label, so it reads as an ad and not as a button. */
.result-ad.between { margin: 18px 16px 6px; }
.result-ad.between .ad-box { background: var(--bg-2); }
.ad-fill { display: flex; justify-content: center; }
.rail { display: none; }
@media (min-width: 1400px) {
  .rail { display: block; position: fixed; top: 80px; z-index: 5; width: 160px; text-align: center; }
  .rail-left { left: max(16px, calc(50% - 540px - 200px)); }
  .rail-right { right: max(16px, calc(50% - 540px - 200px)); }
  .rail:not(:has(.ad)) { display: none; }
}
.sticky-ad {
  position: fixed; left: 50%; bottom: 0; transform: translateX(-50%); z-index: 40;
  background: var(--bg-2); border: 1px solid var(--line); border-bottom: 0; border-radius: 10px 10px 0 0;
  padding: 18px 30px 6px 6px; max-width: 100%;
}
.sticky-ad::before { content: attr(data-label); position: absolute; left: 8px; top: 3px; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: var(--faint); }
.sticky-close { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; border: 0; background: var(--surface-2); color: var(--muted); cursor: pointer; line-height: 1; }

/* overlays */
.age-gate, .interstitial { position: fixed; inset: 0; z-index: 90; display: flex; padding: 16px; overflow-y: auto; background: rgba(8, 8, 10, .94); }
html.ag-ok .age-gate, .age-gate[hidden], .interstitial[hidden] { display: none; }
/* margin:auto centres the card, and unlike align-items it never pushes the
   top out of reach when the screen is shorter than the card. */
.age-card, .interstitial-card {
  margin: auto; width: 100%; max-width: 440px; text-align: center; padding: 28px 24px;
  background: var(--surface); border: 1px solid var(--line-2); border-radius: var(--radius); box-shadow: var(--shadow);
}
.age-card h2, .interstitial-card h2, .dlg-title { font-size: 24px; margin: 14px 0 10px; }
/* Pop-up titles aren't headings: they aren't part of the page's outline. */
.dlg-title { font-family: var(--head); font-weight: 650; line-height: 1.25; letter-spacing: -.01em; color: var(--text); }
.age-card p, .adblock-msg { color: var(--muted); font-size: 15px; }
.age-actions { display: grid; gap: 10px; margin-top: 20px; }
.interstitial-label { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--faint); margin: 0 0 10px; }
.interstitial-slot { min-height: 60px; display: flex; justify-content: center; }
.interstitial-count { color: var(--muted); margin: 16px 0 12px; }

.cookie-bar {
  position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 80; max-width: 720px; margin: 0 auto;
  display: flex; gap: 16px; align-items: center; padding: 14px 16px;
  background: var(--surface); border: 1px solid var(--line-2); border-radius: var(--radius); box-shadow: var(--shadow);
}
html.cc-set .cookie-bar, .cookie-bar[hidden] { display: none; }
.cookie-bar p { margin: 0; font-size: 14px; color: var(--muted); flex: 1; }
.cookie-actions { display: flex; gap: 8px; flex: none; }
.cookie-actions .btn { padding: 9px 14px; font-size: 14px; }

/* footer: the promise on one side, the links on the other */
.site-footer { border-top: 1px solid var(--line); background: var(--bg-2); padding: 30px 0 36px; margin-top: 40px; }
.footer-top { display: flex; flex-wrap: wrap; gap: 18px 32px; align-items: flex-start; justify-content: space-between; }
.footer-brand { max-width: 380px; }
.footer-brand .logo { font-size: 17px; }
.footer-promise { color: var(--muted); font-size: 14px; margin: 6px 0 0; }
.footer-nav { display: flex; flex-wrap: wrap; gap: 6px 18px; padding-top: 2px; }
.footer-nav a { color: var(--muted); font-size: 14px; }
.footer-others { color: var(--faint); font-size: 14px; margin: 18px 0 0; }
.footer-others a { color: var(--muted); }
.footer-langs { display: flex; flex-wrap: wrap; gap: 4px 14px; margin: 18px 0 0; padding-top: 14px; border-top: 1px solid var(--line); }
.footer-langs a { color: var(--faint); font-size: 13px; }
.footer-langs a[aria-current] { color: var(--text); }
.disclaimer { color: var(--faint); font-size: 12.5px; margin: 16px 0 0; max-width: 780px; }
.copyright { color: var(--faint); font-size: 12.5px; margin: 8px 0 0; }

@media (max-width: 640px) {
  /* a small menu button opens the header links */
  .header-inner { position: relative; }
  .nav-toggle {
    display: inline-flex; align-items: center; gap: 6px;
    font: inherit; font-size: 14px; font-weight: 500; color: var(--muted);
    background: transparent; border: 1px solid var(--line-2); border-radius: 8px; padding: 5px 10px; cursor: pointer;
  }
  .nav-toggle[aria-expanded="true"] { color: var(--text); background: var(--surface); }
  .main-nav {
    display: none; position: absolute; top: 100%; left: 0; right: 0; margin: 0;
    flex-direction: column; gap: 0; padding: 6px 16px 10px; background: var(--bg); border-bottom: 1px solid var(--line);
  }
  .main-nav.open { display: flex; }
  .main-nav a { padding: 12px 4px; font-size: 16px; border-radius: 0; border-top: 1px solid var(--line); }
  .main-nav a:first-child { border-top: 0; }
  .hero { padding: 22px 0 8px; }
  .tool { padding: 14px; }
  .grid2 { grid-template-columns: 1fr; }
  .cookie-bar { flex-direction: column; align-items: stretch; }
  .cookie-actions .btn { flex: 1; }
  .footer-top { flex-direction: column; }
  .pv img, .pv-blank { width: 96px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ── info pages: one side menu for contact, FAQ and the legal pages ── */
.page.info-page { max-width: 1040px; }
.info-layout { display: grid; grid-template-columns: 230px minmax(0, 1fr); gap: 40px; align-items: start; }
.info-layout > * { min-width: 0; }
.info-menu { position: sticky; top: 20px; }
.info-menu-title { color: var(--faint); font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; margin: 4px 0 10px; }
.info-menu ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.info-menu a { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: var(--radius-sm); color: var(--muted); font-size: 14.5px; }
.info-menu a .ic { width: 18px; height: 18px; flex: none; }
.info-menu a:hover { background: var(--bg-2); color: var(--text); }
.info-menu a[aria-current="page"] { background: var(--surface); color: var(--text); box-shadow: inset 3px 0 0 var(--accent); }
[dir="rtl"] .info-menu a[aria-current="page"] { box-shadow: inset -3px 0 0 var(--accent); }
.info-main { min-width: 0; max-width: 720px; }
@media (max-width: 860px) {
  /* One column that never grows past the screen: the menu becomes a row of
     pills that scrolls sideways inside it, fading at the edge to say so. */
  .info-layout { grid-template-columns: minmax(0, 1fr); gap: 18px; }
  .info-menu { position: static; }
  .info-menu-title { display: none; }
  .info-menu ul { display: flex; gap: 6px; overflow-x: auto; padding-bottom: 6px; scrollbar-width: none;
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent); }
  [dir="rtl"] .info-menu ul { -webkit-mask-image: linear-gradient(to left, #000 calc(100% - 28px), transparent);
    mask-image: linear-gradient(to left, #000 calc(100% - 28px), transparent); }
  .info-menu li { flex: none; }
  .info-menu ul::-webkit-scrollbar { display: none; }
  .info-menu a { white-space: nowrap; padding: 7px 12px; border: 1px solid var(--line); border-radius: 999px; font-size: 13.5px; }
  .info-menu a[aria-current="page"] { box-shadow: none; border-color: color-mix(in srgb, var(--accent) 55%, var(--line)); }
}

/* ── the contact page's channels ── */
.channels { margin: 34px 0 8px; }
.channels h2 { font-size: 20px; }
.channel-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; }
.channel-list a { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--bg-2); color: var(--text); }
.channel-list a:hover { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.ch-ico { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 10px; background: var(--surface-2); color: var(--accent-text); flex: none; }
.ch-ico .ic { width: 20px; height: 20px; }
.ch-text { display: grid; min-width: 0; }
.ch-text strong { font-size: 14.5px; }
.ch-text span { color: var(--muted); font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── the footer's channel icons ── */
.footer-social { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 14px; }
.footer-social > span { color: var(--faint); font-size: 13px; margin-inline-end: 4px; }
.footer-social a { display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--line); border-radius: 10px; color: var(--muted); }
.footer-social a:hover { color: var(--accent-text); border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.footer-social .ic { width: 18px; height: 18px; }

/* ── the floating "join our channel" button: it slides up from below a few
   seconds after the page opens, then a ring ripples out twice ── */
.fab-join {
  position: fixed; inset-inline-end: 16px; z-index: 70;
  bottom: calc(16px + env(safe-area-inset-bottom, 0px) + var(--fab-lift, 0px));
  display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%;
  background: var(--accent); color: var(--on-accent); box-shadow: 0 8px 24px rgba(0, 0, 0, .5);
  transform: translateY(calc(100% + 48px)) scale(.6); opacity: 0; pointer-events: none;
  transition: transform .6s cubic-bezier(.2, 1.45, .4, 1), opacity .3s ease, bottom .25s ease;
}
.fab-join.in { transform: none; opacity: 1; pointer-events: auto; }
.fab-join .ic { width: 26px; height: 26px; }
.fab-join:hover { filter: brightness(1.08); }
.fab-join.in:active { transform: scale(.94); }
.fab-join:focus-visible { outline: 2px solid var(--accent-text); outline-offset: 3px; }
.fab-join.in::after {
  content: ""; position: absolute; inset: 0; border-radius: 50%; border: 2px solid var(--accent);
  opacity: 0; animation: fab-ring 1.6s ease-out .7s 2;
}
/* ── "add to home screen": a card that slides up after the first download ── */
.install-sheet {
  position: fixed; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); z-index: 75;
  max-width: 480px; margin: 0 auto; padding: 18px 18px 12px;
  background: var(--surface); border: 1px solid var(--line-2); border-radius: 18px; box-shadow: 0 18px 48px rgba(0, 0, 0, .6);
  transform: translateY(calc(100% + 40px)); transition: transform .45s cubic-bezier(.2, 1.1, .3, 1);
}
.install-sheet[hidden] { display: none; }
.install-sheet.in { transform: none; }
.install-x {
  position: absolute; top: 6px; inset-inline-end: 6px; width: 36px; height: 36px; border: 0; border-radius: 50%;
  background: transparent; color: var(--muted); font-size: 22px; line-height: 1; cursor: pointer;
}
.install-head { display: flex; gap: 14px; align-items: center; padding-inline-end: 28px; }
.install-icon { width: 56px; height: 56px; border-radius: 14px; flex: none; }
.install-title { margin: 0; font-family: var(--head); font-weight: 650; font-size: 17px; color: var(--text); }
.install-text { margin: 4px 0 0; font-size: 14px; color: var(--muted); }
.install-steps { margin: 14px 0 0; padding: 0; list-style: none; counter-reset: st; display: grid; gap: 8px; }
.install-steps[hidden] { display: none; }
.install-steps li { counter-increment: st; display: flex; align-items: center; gap: 10px; font-size: 14px; }
.install-steps li::before {
  content: counter(st); display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; flex: none;
  background: var(--surface-2); color: var(--accent-text); font-size: 13px; font-weight: 650;
}
.install-steps .ic { display: inline-block; width: 18px; height: 18px; vertical-align: -3px; color: var(--accent-text); }
.install-actions { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.install-actions .btn { flex: 1; }
.install-actions .btn[hidden] { display: none; }
.install-later { border: 0; background: none; color: var(--muted); font: inherit; font-size: 14px; cursor: pointer; padding: 10px 6px; }
.install-open .fab-join { opacity: 0; pointer-events: none; }

@keyframes fab-ring { from { transform: scale(1); opacity: .8; } to { transform: scale(1.75); opacity: 0; } }
@media (min-width: 900px) {
  .fab-join { width: 52px; height: 52px; inset-inline-end: 24px; bottom: calc(24px + var(--fab-lift, 0px)); }
}

/* ── the steps and questions on inner pages ── */
.page .dpath { margin-top: 26px; }
.page-faq { margin-top: 40px; }
.page-faq .faq { max-width: none; margin: 0; }

/* The smallest phones (320–400 px): the header's four parts must still fit, so
   the menu button keeps only its icon (its name stays for screen readers). */
@media (max-width: 400px) {
  .header-inner { gap: 10px; }
  .logo { font-size: 17px; gap: 7px; }
  .lang-toggle { padding: 5px 7px; gap: 4px; }
  .nav-toggle { padding: 5px 8px; }
  .nav-toggle span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
}

/* Nothing may widen a page past the screen: a phone would zoom the whole site
   out to fit it. (clip, unlike hidden, keeps sticky elements working.) */
body { overflow-x: clip; }

/* The bell: shown only when there is a notice (an ad blocker limiting
   downloads). A red dot until opened; the panel drops from it, and on phones
   spans the screen under the header. */
.notify { position: relative; }
.notify-bell {
  position: relative; display: inline-grid; place-items: center; width: 34px; height: 31px; padding: 0; cursor: pointer;
  color: var(--muted); background: transparent; border: 1px solid var(--line-2); border-radius: 8px;
}
.notify-bell[hidden] { display: none; }
.notify-bell:hover, .notify-bell[aria-expanded="true"] { color: var(--text); background: var(--surface); }
.notify-bell .ic { width: 17px; height: 17px; }
.notify-dot { display: none; position: absolute; top: 4px; inset-inline-end: 5px; width: 8px; height: 8px; border-radius: 50%; background: #e5484d; box-shadow: 0 0 0 2px var(--bg); }
.notify-bell.unread .notify-dot { display: block; }
.notify-panel {
  position: absolute; top: calc(100% + 10px); inset-inline-end: 0; z-index: 40; width: min(360px, calc(100vw - 32px)); padding: 16px;
  background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); box-shadow: 0 14px 36px rgba(0, 0, 0, .5);
  font-size: 14px; line-height: 1.5; color: var(--muted); text-align: start;
}
.notify-panel[hidden] { display: none; }
.notify-panel p { margin: 0 0 10px; }
.notify-head { display: flex; gap: 8px; align-items: flex-start; color: var(--text); font-size: 15px; }
.notify-head .ic { flex: none; width: 18px; height: 18px; margin-top: 2px; color: var(--accent); }
.notify-how { color: var(--text); }
.notify-panel ul { margin: 0 0 14px; padding-inline-start: 18px; display: grid; gap: 6px; }
.notify-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.notify-actions .btn-small { align-self: auto; }
@media (max-width: 480px) {
  .notify { position: static; }
  .notify-panel { position: fixed; top: 64px; left: 16px; right: 16px; width: auto; max-height: calc(100vh - 80px); overflow-y: auto; }
}
@media (max-width: 400px) { .notify-bell { width: 30px; } }

/* A quality locked while the ad blocker is on: tapping it opens the bell. */
.q-btn.locked { border-style: dashed; opacity: .85; }
.q-btn.locked.best { background: transparent; color: var(--text); border-color: var(--accent); }
.q-btn.locked small, .q-btn.locked.best small { color: var(--accent); display: inline-flex; align-items: center; gap: 4px; }
.q-btn .lock-ic { width: 13px; height: 13px; flex: none; }
@media (max-width: 400px) {
  .q-btn.locked { flex-wrap: wrap; row-gap: 2px; }
  .q-btn.locked small { margin-inline-start: auto; }
}

/* The bell holds two notices; the daily allowance's comes first. */
.notify-sec[hidden] { display: none; }
.notify-sec + .notify-sec { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); }
.notify-sec .notify-actions { margin-bottom: 4px; }
.notify-foot { justify-content: flex-end; margin-top: 10px; }
.notify-how[hidden], .notify-actions a[hidden] { display: none; }

/* The day's allowance used up: a line above the locked buttons. */
.quota-msg { margin-bottom: 14px; color: var(--text); border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.quota-msg p { margin: 0 0 8px; }
.quota-msg p:last-child { margin-bottom: 0; }
.error-note { max-width: 640px; color: var(--muted); }

/* The donation page's supporter code. */
.supporter { margin: 24px 0; }
.supporter h2 { display: flex; align-items: center; gap: 8px; margin-top: 0; font-size: 20px; }
.supporter h2 .ic { width: 20px; height: 20px; color: var(--accent); }
.supporter-form { display: flex; flex-wrap: wrap; gap: 10px; margin: 12px 0 8px; }
.supporter-form[hidden] { display: none; }
.supporter-form .input { flex: 1 1 220px; min-width: 0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .06em; text-transform: uppercase; }
.supporter-active { color: var(--good); margin: 0; }
.supporter-form .input {
  font-size: 15px; color: var(--text); background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); padding: 11px 12px;
}
.supporter-form .input:focus { outline: 0; border-color: var(--accent); }

/* The plans page (premium.go): three plan cards, a coin picker, the order
   with its amount, address and QR code, and the code once it is paid. Same
   palette and cards as the rest (Jev's), the recommended plan in amber. */
.premium { margin: 8px 0 24px; }
.plans { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); gap: 14px; margin: 8px 0 10px; }
.plans[hidden], .pay-form[hidden], .pay-order[hidden], .pay-fields[hidden] { display: none; }
.plan { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 22px 20px 20px; }
.plan-best { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent) inset, var(--shadow); }
.plan-picked { outline: 2px solid var(--accent); outline-offset: 2px; }
.plan-badge { position: absolute; top: -11px; inset-inline-start: 18px; margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .02em;
  background: var(--accent); color: var(--on-accent); border-radius: 999px; padding: 3px 10px; }
.plan-name { margin: 0; font-family: var(--head); font-size: 24px; }
.plan-price { margin: 0; font-family: var(--head); font-size: 34px; font-weight: 700; color: var(--accent-text); line-height: 1.1; }
.plan-features { list-style: none; margin: 4px 0 6px; padding: 0; display: grid; gap: 6px; color: var(--muted); font-size: 14.5px; flex: 1; }
.plan-features li { padding-inline-start: 18px; position: relative; }
.plan-features li::before { content: ""; position: absolute; inset-inline-start: 2px; top: .55em; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.plan-buy { justify-content: center; width: 100%; }
.plan-keep { margin: 0 0 18px; color: var(--faint); font-size: 13.5px; }
.pay-form { display: grid; gap: 14px; margin: 18px 0; }
.pay-form h2 { margin: 0; font-size: 20px; }
.pay-nets { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr)); gap: 8px; }
.pay-net { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line-2); border-radius: var(--radius-sm); cursor: pointer; background: var(--bg-2); }
.pay-net:has(input:checked) { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 9%, var(--bg-2)); }
.pay-net input { accent-color: var(--accent); margin: 0; }
.pay-net .coin-ic { width: 26px; height: 26px; }
.pay-net-name { display: grid; line-height: 1.25; min-width: 0; }
.pay-net-name small { color: var(--faint); font-size: 12.5px; }
.fee { margin-inline-start: auto; font-style: normal; font-size: 11.5px; font-weight: 600; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }
.fee-low { color: var(--good); background: color-mix(in srgb, var(--good) 14%, transparent); }
.fee-medium { color: var(--accent-text); background: color-mix(in srgb, var(--accent) 14%, transparent); }
.fee-high { color: var(--bad); background: color-mix(in srgb, var(--bad) 14%, transparent); }
.pay-topup { display: grid; gap: 6px; font-size: 14px; color: var(--muted); }
.pay-topup .input { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .06em; text-transform: uppercase;
  font-size: 15px; color: var(--text); background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); padding: 10px 12px; max-width: 320px; }
.pay-form > .btn { justify-self: start; }
.pay-order { margin: 18px 0; display: grid; gap: 14px; }
.pay-order p { margin: 0; }
.pay-wait { display: flex; justify-content: center; padding: 24px; }
.pay-wait .spinner, .pay-state .spinner { border-color: color-mix(in srgb, var(--accent) 25%, transparent); border-top-color: var(--accent); }
.pay-grid { display: flex; gap: 20px; align-items: flex-start; }
.pay-qr { flex: none; width: 180px; }
.pay-qr svg { display: block; width: 180px; height: 180px; border-radius: 8px; }
.pay-body { min-width: 0; display: grid; gap: 8px; flex: 1; }
.pay-body .btn { justify-self: start; display: inline-flex; align-items: center; gap: 6px; }
.pay-body .btn .ic, .pay-order .btn .ic { width: 15px; height: 15px; }
.pay-plan { font-weight: 600; color: var(--muted); }
.pay-label { font-size: 13.5px; color: var(--faint); margin-top: 4px !important; }
.pay-amount { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 22px; color: var(--text); }
.pay-amount strong { color: var(--accent-text); }
.pay-state { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: var(--radius-sm); background: var(--bg-2); border: 1px solid var(--line); }
.pay-state.ok { border-color: color-mix(in srgb, var(--good) 45%, var(--line)); }
.pay-state.warn { border-color: color-mix(in srgb, var(--accent) 45%, var(--line)); }
.pay-test { color: var(--accent-text); font-weight: 600; }
.pay-paste { display: grid; gap: 6px; padding-top: 6px; border-top: 1px solid var(--line); }
.pay-paste .input { flex: 1 1 260px; min-width: 0; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 14px;
  color: var(--text); background: var(--bg-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); padding: 10px 12px; }
.pay-link { display: grid; gap: 6px; }
.pay-link code { font-size: 12.5px; word-break: break-all; color: var(--muted); background: var(--bg-2); border: 1px solid var(--line); border-radius: 6px; padding: 7px 9px; }
.pay-link .btn { justify-self: start; display: inline-flex; align-items: center; gap: 6px; }
.form-note { font-size: 12.5px; color: var(--faint); margin: 0; }
.pay-help a { font-size: 14px; }
.pay-new { margin: 0; }
.pay-paid { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 21px; }
.pay-paid .ic { width: 22px; height: 22px; color: var(--accent); }
.pay-code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 28px; letter-spacing: .08em; text-align: center;
  padding: 14px; border: 1px dashed var(--accent); border-radius: var(--radius-sm); background: var(--bg-2); }
.pay-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.pay-actions .btn { display: inline-flex; align-items: center; gap: 6px; }
.premium-link .ic { color: var(--accent); }
.q-btn.premium-lock small { color: var(--accent); display: inline-flex; align-items: center; gap: 4px; }
.pay-fields { display: grid; gap: 12px; }
@media (max-width: 560px) {
  .pay-grid { flex-direction: column; align-items: center; }
  .pay-body { width: 100%; }
  .pay-qr, .pay-qr svg { width: 200px; height: 200px; }
  .pay-code { font-size: 22px; }
}

/* The supported-sites grid (a lean site's /supported-sites and home page). */
.site-cards { margin: 28px 0; }
.site-cards h2 { font-size: 20px; margin: 0 0 12px; }
.site-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 10px; }
.site-card { display: flex; align-items: center; gap: 12px; height: 100%; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--surface); color: var(--text); text-decoration: none; }
a.site-card { transition: border-color .15s, transform .15s; }
a.site-card:hover, a.site-card:focus-visible { border-color: var(--accent); transform: translateY(-1px); }
.site-badge { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 10px; background: var(--dot); color: #fff; font-weight: 800; font-size: 15px; text-shadow: 0 1px 1px rgba(0, 0, 0, .25); }
.site-text { display: flex; flex-direction: column; min-width: 0; gap: 2px; }
.site-text strong { font-size: 14.5px; line-height: 1.25; }
.site-text span { font-size: 12.5px; color: var(--muted); line-height: 1.35; }
.site-go { margin-inline-start: auto; color: var(--faint); font-size: 16px; }
a.site-card:hover .site-go { color: var(--accent); }
.site-grid li:target .site-card { border-color: var(--accent); }

/* A lean site's source page: the downloader's numbers there, last 30 days. */
.live-box { margin: 22px 0 6px; padding: 16px 18px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
.live-box h2 { font-size: 15px; margin: 0 0 12px; color: var(--muted); font-weight: 600; }
.live-box dl { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 10px 16px; margin: 0; }
.live-box dl div { display: flex; flex-direction: column-reverse; gap: 2px; }
.live-box dt { font-size: 12.5px; color: var(--muted); }
.live-box dd { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.live-box p { margin: 12px 0 0; font-size: 12.5px; color: var(--faint); }
