/* cryptopromises — dark, colourful backdrop; colourless facts.
   Colour lives in the animated objects, the headline and the Start button only.
   Nothing about a project (status, counts, stage) is ever coloured. One accent for links. */
@font-face { font-family: "Public Sans"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("/fonts/public-sans-latin-wght-normal.woff2") format("woff2"); }
@font-face { font-family: "Public Sans"; font-style: italic; font-weight: 100 900; font-display: swap; src: url("/fonts/public-sans-latin-wght-italic.woff2") format("woff2"); }

:root {
  --bg: #07091a; --bg2: #0e1130; --ink: #eef0f8; --muted: #9ba1c0; --hair: rgba(255,255,255,0.14); --rule: #eef0f8;
  --wash: rgba(255,255,255,0.05); --accent: #8fd3ff;
  --violet: #7c5cff; --pink: #ff4fa3; --amber: #ffb340; --cyan: #22e6ff; --lime: #a3ff5c;
  --grad: linear-gradient(90deg, var(--cyan), var(--violet), var(--pink), var(--amber), var(--cyan));
  --pad: clamp(1rem, 4vw, 2.5rem); --max: 80rem; --measure: 40rem;
  --font: "Public Sans", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
}
html { color-scheme: dark; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
* { box-sizing: border-box; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 400 18px/1.6 var(--font); position: relative; }
a { color: var(--accent); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.16em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--amber); outline-offset: 3px; }
b, strong { font-weight: 700; }
p { margin: 0 0 1rem; }
ul, ol { padding-left: 1.3rem; margin: 0 0 1rem; }
li { margin-bottom: 0.45rem; }
blockquote { margin: 0.5rem 0 0.9rem; padding-left: 1rem; border-left: 3px solid var(--ink); font-style: italic; }
code { font-size: 0.9em; }
pre { white-space: pre-wrap; word-break: break-word; font-size: 0.88rem; line-height: 1.55; background: var(--wash); padding: 1.2rem; max-width: none; }
.muted { color: var(--muted); }
.small { font-size: 0.9rem; }
.lede { font-size: 1.3rem; line-height: 1.45; }
h1, h2, h3 { font-weight: 800; letter-spacing: -0.015em; line-height: 1.1; margin: 0; }
h1 { font-size: clamp(2.2rem, 5vw, 3.4rem); margin: 1.6rem 0 1.2rem; }
h2 { font-size: 1.65rem; margin: 3.4rem 0 1rem; padding-top: 1.1rem; border-top: 3px solid; border-image: var(--grad) 1; }
h3 { font-size: 1.15rem; font-weight: 700; margin: 1.8rem 0 0.5rem; }
h2 + p, h3 + p { margin-top: 0; }
[hidden] { display: none !important; }

/* animated backdrop: fixed layer of objects moved by scroll (site.js) and drifting on their own */
.fx { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
.fx i { position: absolute; display: block; will-change: transform; }
.fx i > s { display: block; width: 100%; height: 100%; animation: drift var(--d, 14s) ease-in-out infinite alternate; }
.fx .orb > s { border-radius: 50%; filter: blur(70px); opacity: 0.5; }
.fx .ring > s { border-radius: 50%; border: 2px solid; opacity: 0.6; }
.fx .dot > s { border-radius: 50%; opacity: 0.9; }
.fx .bar > s { height: 3px; border-radius: 3px; opacity: 0.7; }
@keyframes drift { from { transform: translate(0, 0) rotate(0deg); } to { transform: translate(var(--dx, 30px), var(--dy, -40px)) rotate(var(--dr, 20deg)); } }
@media (prefers-reduced-motion: reduce) { .fx i > s { animation: none; } }
header.site, main, footer.site { position: relative; z-index: 1; }
.fx .ring, .fx .dot, .fx .bar { display: none; }
.fx .orb > s { opacity: 0.28; }
body.land .fx { display: none; }

/* shell */
.in { max-width: var(--max); margin: 0 auto; padding-left: var(--pad); padding-right: var(--pad); }
header.site { border-bottom: 1px solid var(--hair); backdrop-filter: blur(10px); background: rgba(7,9,26,0.6); position: sticky; top: 0; z-index: 5; }
header.site .in { display: flex; flex-wrap: wrap; gap: 0.4rem 1.6rem; align-items: center; padding-block: 0.8rem; }
header.site .name { font-weight: 800; font-size: 1.15rem; letter-spacing: -0.02em; color: var(--ink); text-decoration: none; margin-right: auto; }
header.site nav { display: flex; flex-wrap: wrap; gap: 0.2rem 1.3rem; font-weight: 600; font-size: 0.95rem; align-items: center; }
header.site nav a { color: var(--ink); text-decoration: none; }
header.site nav a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
header.site nav a.go { background: var(--ink); color: var(--bg); padding: 0.45rem 1rem; border-radius: 999px; }
header.site nav a.go:hover { text-decoration: none; background: var(--accent); }
main { max-width: var(--max); margin: 0 auto; padding: 1rem var(--pad) 5rem; }
main > p, main > ul, main > ol, main > blockquote, main > h1, main > h3, section > p, section > ul, section > ol { max-width: var(--measure); }
main > ul.proof, main > ul.why, main > ul.ledger, main > ul.toc, main > ul.presets, main > ul#results, main > .hero, main > .specimen, main > .notice, main > .steps { max-width: none; }
section > ul.proof, section > ul.why, section > ol.steps, section > ul.ledger, section > .specimen, section > .cta-row { max-width: none; }
footer.site { border-top: 3px solid; border-image: var(--grad) 1; background: var(--bg); }
footer.site .in { padding-block: 2.2rem 3rem; display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 3rem; }
footer.site .stand { font-size: 1.35rem; font-weight: 700; line-height: 1.3; letter-spacing: -0.01em; max-width: 26rem; }
footer.site .links { color: var(--muted); font-size: 0.95rem; }
footer.site .links a { color: var(--ink); }
@media (max-width: 720px) { footer.site .in { grid-template-columns: 1fr; } }

/* the Start button: the one coloured control on the site */
.start { display: inline-flex; align-items: center; gap: 0.7rem; font: 800 1.2rem/1 var(--font); letter-spacing: -0.01em; color: #fff; text-decoration: none; padding: 1.05rem 2rem; border-radius: 999px; background: linear-gradient(100deg, var(--violet), var(--pink)); box-shadow: 0 10px 40px rgba(124,92,255,0.35); transition: transform 0.2s ease, box-shadow 0.3s ease; }
.start:hover { transform: translateY(-2px); box-shadow: 0 16px 50px rgba(255,79,163,0.45); text-decoration: none; }
.start svg { width: 1.1em; height: 1.1em; }
.start.big { font-size: 1.45rem; padding: 1.25rem 2.5rem; }
.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.8rem; }
.cta-row .alt { color: var(--muted); }

/* front page: a pinned scene. One walker follows a lit path from the noise to a confident pick. */
.land main { padding-top: 0; max-width: none; padding-left: 0; padding-right: 0; }
.land header.site { position: fixed; left: 0; right: 0; top: 0; background: transparent; border-bottom-color: transparent; backdrop-filter: none; }
.land header.site.solid { background: rgba(5,6,15,0.7); border-bottom-color: var(--hair); backdrop-filter: blur(10px); }
.journey { position: relative; height: 320vh; }
.journey .stage { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.journey .stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.journey .glow { position: absolute; left: 50%; top: 50%; width: 90vmax; height: 90vmax; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(124,92,255,0.22), rgba(255,79,163,0.08) 45%, transparent 70%); filter: blur(10px); pointer-events: none; transition: opacity 0.6s; }
.journey .glow.end { background: radial-gradient(closest-side, rgba(255,179,64,0.28), rgba(255,79,163,0.12) 40%, transparent 70%); opacity: 0; }
.journey .copy { position: absolute; left: 50%; top: 44%; transform: translate(-50%, -50%); width: min(60rem, 92vw); text-align: center; z-index: 3; }
.journey .copy::before { content: ""; position: absolute; inset: -18% -12%; background: radial-gradient(ellipse at center, rgba(7,9,26,0.9) 35%, rgba(7,9,26,0.55) 60%, transparent 78%); z-index: -1; }
.journey .copy h1 { font-size: clamp(2.6rem, 8vw, 6.4rem); line-height: 1.0; letter-spacing: -0.035em; margin: 0 0 1.2rem; }
.journey .copy .lede { margin: 0 auto 1.4rem; max-width: 30rem; color: var(--muted); font-size: clamp(1.05rem, 1.6vw, 1.3rem); }
.journey .copy .cta-row { margin: 0 0 1.4rem; }
.grad { background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: hue 9s linear infinite; }
@keyframes hue { to { background-position: 300% 0; } }
.cue { color: var(--muted); font-size: 0.9rem; letter-spacing: 0.08em; text-transform: uppercase; margin: 0; display: inline-flex; flex-direction: column; align-items: center; gap: 0.5rem; }
.cue i { display: block; width: 1px; height: 3rem; background: linear-gradient(var(--ink), transparent); animation: cue 1.6s ease-in-out infinite; transform-origin: top; }
@keyframes cue { 0% { transform: scaleY(0); opacity: 0; } 40% { opacity: 1; } 100% { transform: scaleY(1); opacity: 0; } }
.journey .road { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 1; overflow: visible; }
.journey .road #road { stroke-dasharray: 1; stroke-dashoffset: 1; filter: drop-shadow(0 0 6px rgba(124,92,255,0.8)); }
.journey .road .mark.lit { fill: url(#rg); }
#walker .body { animation: bob 0.9s ease-in-out infinite; transform-origin: 0 0; }
#walker.walking .l1 { animation: legA 0.45s ease-in-out infinite alternate; transform-origin: 0px -14px; }
#walker.walking .l2 { animation: legB 0.45s ease-in-out infinite alternate; transform-origin: 0px -14px; }
#walker.walking .a1 { animation: legB 0.45s ease-in-out infinite alternate; transform-origin: 0px -40px; }
#walker.walking .a2 { animation: legA 0.45s ease-in-out infinite alternate; transform-origin: 0px -40px; }
@keyframes bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } }
@keyframes legA { from { transform: rotate(-28deg); } to { transform: rotate(28deg); } }
@keyframes legB { from { transform: rotate(28deg); } to { transform: rotate(-28deg); } }
@media (prefers-reduced-motion: reduce) { #walker .body, #walker.walking .leg, #walker.walking .arm, .cue i, .grad { animation: none; } }
.journey .field { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.frag.noise { position: absolute; left: 0; top: 0; transform: translate(-50%, -50%); display: block; padding: 0.55rem 1rem; border-radius: 999px; border: 1px dashed rgba(255,255,255,0.28); background: rgba(255,255,255,0.04); color: var(--muted); font-style: italic; font-size: 0.95rem; white-space: nowrap; will-change: transform, opacity; }
.sign { position: absolute; left: 0; top: 0; z-index: 4; width: min(30rem, 92vw); padding: 1.2rem 1.4rem 1.3rem; border-radius: 20px; background: rgba(13,15,36,0.9); border: 1px solid rgba(255,255,255,0.14); box-shadow: 0 20px 60px rgba(0,0,0,0.5), 0 0 40px rgba(124,92,255,0.15); opacity: 0; visibility: hidden; will-change: transform, opacity; }
.sign > b { display: block; font-size: clamp(1.35rem, 2.6vw, 1.9rem); font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; margin-bottom: 0.5rem; }
.sign p { margin: 0; color: var(--muted); }
.sign .mini { list-style: none; padding: 0; margin: 0.4rem 0 0; }
.sign .mini li { display: grid; grid-template-columns: auto auto 1fr; gap: 0.15rem 0.6rem; align-items: baseline; padding: 0.45rem 0; border-top: 1px solid var(--hair); font-size: 0.86rem; }
.sign .mini li:first-child { border-top: 0; }
.sign .mini b { font-weight: 700; white-space: nowrap; }
.sign .mini i { font-style: normal; font-weight: 700; color: var(--cyan); letter-spacing: 0.04em; }
.sign .mini span { grid-column: 1 / -1; color: var(--ink); }
.sign .mini em { grid-column: 1 / -1; font-style: normal; color: var(--muted); font-size: 0.8rem; }
.sign .facts3 { list-style: none; padding: 0; margin: 0.5rem 0 0.4rem; display: grid; gap: 0.5rem; }
.sign .facts3 li { display: flex; flex-direction: column; padding: 0.55rem 0.8rem; border-radius: 12px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); font-size: 0.85rem; color: var(--muted); }
.sign .facts3 b { font-size: 1.35rem; font-weight: 800; letter-spacing: -0.02em; color: var(--ink); background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.sign.last { width: min(36rem, 92vw); text-align: center; background: linear-gradient(160deg, rgba(124,92,255,0.25), rgba(255,79,163,0.12) 50%, rgba(13,15,36,0.95)); border-color: rgba(255,179,64,0.5); box-shadow: 0 20px 80px rgba(0,0,0,0.6), 0 0 80px rgba(255,179,64,0.25); }
.sign.last .cta-row { justify-content: center; margin-top: 1rem; }
.sign.last p { color: var(--ink); opacity: 0.85; }
.check { display: inline-grid; place-items: center; width: 3.4rem; height: 3.4rem; border-radius: 50%; background: linear-gradient(120deg, var(--amber), var(--pink)); color: #fff; margin-bottom: 0.8rem; box-shadow: 0 0 40px rgba(255,179,64,0.6); animation: pop 0.8s cubic-bezier(.2,.8,.2,1) both; }
.check svg { width: 1.9rem; height: 1.9rem; }
@keyframes pop { from { transform: scale(0.4); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.8rem; }
.cta-row .alt { color: var(--muted); }
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.8s ease, transform 0.8s ease; }
.js .reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .js .reveal { opacity: 1; transform: none; transition: none; } }
@media (max-width: 700px) { .journey .copy { top: 36%; } .sign { padding: 1rem 1.1rem 1.1rem; } .sign > b { font-size: 1.3rem; } }

/* below the scene: sections strung on one path */
.land .path { max-width: var(--max); margin: 0 auto; padding: 4rem var(--pad) 3rem; position: relative; }
.step-sec { position: relative; padding: 3.5rem 0 3.5rem 3.2rem; border-left: 2px solid rgba(255,255,255,0.12); }
.step-sec::before { content: ""; position: absolute; left: -0.6rem; top: 4.1rem; width: 1.1rem; height: 1.1rem; border-radius: 50%; background: var(--grad); background-size: 300% 100%; box-shadow: 0 0 0 6px var(--bg), 0 0 24px rgba(124,92,255,0.7); }
.step-sec.last { border-left-color: transparent; }
.step-sec h2 { border-top: 0; padding-top: 0; margin-top: 0; font-size: clamp(1.8rem, 3.4vw, 2.6rem); }
.step-sec > p { max-width: var(--measure); }
@media (max-width: 700px) { .step-sec { padding-left: 1.6rem; } .step-sec::before { left: -0.55rem; width: 0.95rem; height: 0.95rem; } }
.cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.8rem; }
.cta-row .alt { color: var(--muted); }
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.8s ease, transform 0.8s ease; }
.js .reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .js .reveal { opacity: 1; transform: none; transition: none; } }

.proof { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem 2.5rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.proof li { border-top: 3px solid; border-image: var(--grad) 1; padding-top: 0.8rem; margin: 0; line-height: 1.35; }
.proof .n { display: block; width: max-content; font-size: clamp(2.6rem, 5vw, 4.4rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1; margin-bottom: 0.45rem; font-variant-numeric: tabular-nums; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
@media (max-width: 900px) { .proof { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .proof { grid-template-columns: 1fr; } }

.why { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem 2.5rem; padding: 0; margin: 0; list-style: none; }
.why li { border-top: 3px solid var(--cyan); padding-top: 0.9rem; margin: 0; }
.why li:nth-child(2) { border-top-color: var(--pink); }
.why li:nth-child(3) { border-top-color: var(--amber); }
.why b { display: block; font-size: 1.35rem; font-weight: 800; letter-spacing: -0.015em; line-height: 1.15; margin-bottom: 0.5rem; }
.why p { margin: 0; }
@media (max-width: 760px) { .why { grid-template-columns: 1fr; } }

.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem 2.5rem; padding: 0; margin: 0; list-style: none; counter-reset: step; }
.steps li { margin: 0; padding-top: 1rem; border-top: 1px solid var(--hair); }
.steps li::before { counter-increment: step; content: counter(step); display: inline-block; font-weight: 800; font-size: 0.9rem; width: 1.9rem; height: 1.9rem; line-height: 1.9rem; text-align: center; border-radius: 50%; background: linear-gradient(120deg, var(--violet), var(--pink)); color: #fff; margin-bottom: 0.7rem; }
.steps b { display: block; font-size: 1.2rem; margin-bottom: 0.3rem; }
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }

.specimen { border-top: 3px solid; border-bottom: 3px solid; border-image: var(--grad) 1; padding: 1.4rem 0 0.5rem; margin: 0 0 1.2rem; }
.specimen .who { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 1rem; margin-bottom: 0.4rem; }
.specimen .who a { font-size: 1.6rem; font-weight: 800; letter-spacing: -0.02em; color: var(--ink); }

/* the ledger: a list of dated events */
.ledger { list-style: none; padding: 0; margin: 0 0 1.2rem; max-width: 60rem; }
.ledger li { display: grid; grid-template-columns: 11rem 1fr; gap: 0.3rem 1.5rem; padding: 0.75rem 0; border-top: 1px solid var(--hair); margin: 0; }
.ledger li:last-child { border-bottom: 1px solid var(--hair); }
.ledger .when { color: var(--muted); white-space: nowrap; }
.ledger .what a { font-weight: 700; }
@media (max-width: 600px) { .ledger li { grid-template-columns: 1fr; gap: 0.1rem; } }

/* project record: first screen */
.title { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 1rem; margin: 1.8rem 0 1rem; }
.title h1 { margin: 0; }
.title .sym { font-size: 1.4rem; font-weight: 500; color: var(--muted); letter-spacing: 0.02em; }
.title .rank { color: var(--muted); font-size: 1rem; }
.notice { border-left: 4px solid var(--amber); padding: 0.3rem 0 0.3rem 1rem; margin: 0 0 1.4rem; font-weight: 500; }
.notice.checked { border-left-color: var(--cyan); font-weight: 400; color: var(--muted); }
dl.facts { display: grid; grid-template-columns: 1fr 1fr; gap: 0 3rem; margin: 0 0 1.5rem; border-top: 3px solid; border-image: var(--grad) 1; }
dl.facts > div { border-bottom: 1px solid var(--hair); padding: 1.1rem 0 1.2rem; min-width: 0; }
dl.facts > div.span { grid-column: 1 / -1; }
dl.facts dt { font-weight: 700; font-size: 0.95rem; margin: 0 0 0.35rem; color: var(--cyan); }
dl.facts > div:nth-child(2) dt { color: var(--amber); }
dl.facts > div:nth-child(3) dt { color: var(--pink); }
dl.facts > div:nth-child(4) dt { color: var(--lime); }
dl.facts > div:nth-child(5) dt { color: var(--violet); filter: brightness(1.35); }
dl.facts dd { margin: 0; }
dl.facts dd + dd { margin-top: 0.5rem; }
dl.facts .big { font-size: clamp(1.35rem, 2.4vw, 1.75rem); font-weight: 700; line-height: 1.25; letter-spacing: -0.015em; }
dl.facts .say { font-size: clamp(1.25rem, 2.2vw, 1.6rem); font-weight: 600; line-height: 1.3; letter-spacing: -0.012em; max-width: 46rem; }
dl.facts blockquote { margin: 0.6rem 0 0.4rem; font-size: 1rem; max-width: 46rem; }
dl.facts .src { color: var(--muted); font-size: 0.9rem; }
dl.facts.plain { grid-template-columns: 1fr; border-top: 0; }
dl.facts.plain > div { padding: 0.6rem 0; }
@media (max-width: 760px) { dl.facts { grid-template-columns: 1fr; } }

.toc { margin: 0.5rem 0 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.3rem 1.4rem; font-weight: 500; }
.toc a { color: var(--ink); }
.presets { padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 0.3rem 1.4rem; font-weight: 500; }

/* the panel: a search, a wall of coin cards, and sheets that open on tap */
.deck-head { text-align: center; padding: 1.4rem 0 0.8rem; }
.deck-head h1 { font-size: clamp(2rem, 4vw, 3rem); letter-spacing: -0.03em; margin: 0 0 0.3rem; }
.deck-head .lede { max-width: 40rem; margin: 0 auto 1rem; color: var(--muted); font-size: 0.95rem; }
.finder { max-width: 40rem; margin: 0 auto 1.2rem; position: relative; }
.finder input { width: 100%; font: 500 1.1rem var(--font); padding: 0.75rem 1.2rem; border: 1px solid rgba(255,255,255,0.16); border-radius: 999px; background: rgba(255,255,255,0.06); color: var(--ink); box-shadow: 0 10px 40px rgba(0,0,0,0.35), inset 0 0 0 0 transparent; transition: border-color 0.25s, box-shadow 0.25s, background 0.25s; }
.finder input::placeholder { color: var(--muted); opacity: 1; }
.finder input:focus { outline: 0; border-color: rgba(255,255,255,0.4); background: rgba(255,255,255,0.09); box-shadow: 0 10px 40px rgba(0,0,0,0.35), 0 0 0 4px rgba(124,92,255,0.25), 0 0 40px rgba(124,92,255,0.25); }
.chips, .menu { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.5rem; margin: 0 0 0.8rem; }
.chip, .btn { font: 600 0.95rem var(--font); color: var(--ink); background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: 999px; padding: 0.5rem 1rem; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; gap: 0.5rem; transition: background 0.2s, border-color 0.2s, transform 0.2s, box-shadow 0.2s; }
.chip:hover, .btn:hover { background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.3); transform: translateY(-1px); text-decoration: none; }
.chip i { font-style: normal; color: var(--muted); font-weight: 500; }
.chip.on { background: linear-gradient(100deg, var(--violet), var(--pink)); border-color: transparent; color: #fff; box-shadow: 0 6px 24px rgba(124,92,255,0.35); }
.chip.on i { color: rgba(255,255,255,0.8); }
.btn svg { width: 1em; height: 1em; }
.btn.ghost { color: var(--muted); }
.btn.ghost:hover { color: var(--ink); }
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(12.5rem, 1fr)); gap: 0.7rem; margin: 1rem 0 2rem; }
.card { position: relative; width: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: 0.25rem; text-align: left; font: inherit; color: var(--ink); background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; padding: 0.85rem 0.95rem 0.9rem; cursor: pointer; min-height: 8.2rem; overflow: hidden; transition: transform 0.35s cubic-bezier(.2,.8,.2,1), border-color 0.3s, background 0.3s, box-shadow 0.35s, opacity 0.5s; }
.card::before { content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1px; background: var(--grad); background-size: 300% 100%; -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity 0.3s; pointer-events: none; }
.card::after { content: ""; position: absolute; right: -30%; top: -40%; width: 70%; height: 90%; background: radial-gradient(closest-side, rgba(124,92,255,0.35), transparent); opacity: 0; transition: opacity 0.4s; pointer-events: none; }
.card:hover, .card:focus-visible { transform: translateY(-4px) scale(1.01); background: rgba(255,255,255,0.07); box-shadow: 0 18px 50px rgba(0,0,0,0.45); }
.card:hover::before, .card:focus-visible::before { opacity: 1; }
.card:hover::after { opacity: 1; }
.card .top { display: flex; justify-content: space-between; align-items: baseline; width: 100%; gap: 0.5rem; }
.card .sym { font-weight: 800; font-size: 1rem; letter-spacing: 0.04em; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.card .conf { font-size: 0.75rem; color: var(--muted); font-weight: 600; white-space: nowrap; }
.card .name { font-weight: 700; font-size: 1rem; letter-spacing: -0.01em; line-height: 1.2; }
.card .big { display: block; font-size: 1.9rem; font-weight: 800; letter-spacing: -0.04em; line-height: 1; margin: 0.2rem 0 0.1rem; font-variant-numeric: tabular-nums; }
.card .big i { font-style: normal; font-size: 1rem; color: var(--muted); font-weight: 600; letter-spacing: -0.02em; }
.card .big.none { color: var(--muted); }
.card .fact { font-size: 0.85rem; color: var(--ink); line-height: 1.3; }
.card .fact2 { font-size: 0.78rem; color: var(--muted); margin-top: auto; padding-top: 0.3rem; }
.card.stub { min-height: 6.8rem; background: rgba(255,255,255,0.03); }
.card.stub .sym { background: none; color: var(--muted); -webkit-text-fill-color: var(--muted); }
.card.stub .fact { color: var(--muted); }
.js .card { opacity: 0; transform: translateY(18px); }
.js .card.in { opacity: 1; transform: none; }
.js .card.in:hover { transform: translateY(-4px) scale(1.01); }
.nomatch { text-align: center; color: var(--muted); padding: 3rem 0; }
@media (prefers-reduced-motion: reduce) { .js .card { opacity: 1; transform: none; transition: none; } }

/* the sheet: a record slides up over the deck */
.sheet { position: fixed; inset: 0; z-index: 20; display: grid; place-items: end center; background: rgba(4,5,14,0.55); backdrop-filter: blur(8px); opacity: 0; transition: opacity 0.3s; }
.sheet.on { opacity: 1; }
.sheet-in { position: relative; width: min(64rem, 100%); max-height: 94vh; overflow-y: auto; overscroll-behavior: contain; background: linear-gradient(180deg, #121531, #0a0c1f 40%); border: 1px solid rgba(255,255,255,0.12); border-bottom: 0; border-radius: 26px 26px 0 0; padding: 2rem clamp(1.2rem, 4vw, 3rem) 4rem; box-shadow: 0 -20px 80px rgba(0,0,0,0.6), 0 0 60px rgba(124,92,255,0.15); transform: translateY(40px); transition: transform 0.45s cubic-bezier(.2,.8,.2,1); }
.sheet.on .sheet-in { transform: none; }
.sheet .close { position: sticky; top: 0; float: right; margin: -0.6rem -0.6rem 0 0; z-index: 2; width: 2.6rem; height: 2.6rem; border-radius: 50%; border: 1px solid rgba(255,255,255,0.18); background: rgba(20,22,48,0.9); color: var(--ink); font: 400 1.6rem/1 var(--font); cursor: pointer; transition: background 0.2s, transform 0.2s; }
.sheet .close:hover { background: var(--pink); transform: rotate(90deg); }
.sheet-body .title { margin-top: 0.2rem; }
.sheet-body h1 { font-size: clamp(1.6rem, 3.2vw, 2.3rem); }
.sheet-body > h1:first-child { margin-top: 0.2rem; }
.sheet-body h2 { font-size: 1.3rem; }
.sheet-body .more { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1rem; margin: 0.4rem 0 1rem; }
.sheet-body p, .sheet-body ul, .sheet-body ol { max-width: var(--measure); }
.sheet-body .ledger, .sheet-body .notice, .sheet-body .more { max-width: none; }
body.locked { overflow: hidden; }
@media (max-width: 600px) { .sheet-in { max-height: 96vh; border-radius: 20px 20px 0 0; } .grid { grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); gap: 0.7rem; } .card { padding: 0.9rem 0.9rem 1rem; min-height: 9.5rem; border-radius: 14px; } .card .big { font-size: 2.1rem; } .card .name { font-size: 1rem; } }

/* tables */
.tablewrap { overflow-x: auto; margin: 0 0 1.5rem; }
table { border-collapse: collapse; width: 100%; font-size: 0.95rem; }
table.log { min-width: 50rem; }
table.sortable { min-width: 54rem; }
th, td { text-align: left; vertical-align: top; padding: 0.7rem 0.9rem 0.7rem 0; border-bottom: 1px solid var(--hair); }
th { font-weight: 700; border-bottom: 2px solid var(--ink); white-space: nowrap; }
th button { all: unset; cursor: pointer; font: inherit; color: inherit; }
th button:hover { text-decoration: underline; }
th[aria-sort="ascending"] button::after { content: " ↑"; }
th[aria-sort="descending"] button::after { content: " ↓"; }
td.num, th.num { text-align: right; padding-right: 0.9rem; font-variant-numeric: tabular-nums; }
table.log .q { display: block; color: var(--muted); font-style: italic; margin-top: 0.3rem; }
table.log .src, table.log .small { display: block; color: var(--muted); font-size: 0.88rem; margin-top: 0.3rem; }
table.log td.status { font-weight: 600; }
table.sortable td:first-child a { font-weight: 700; }

#results { list-style: none; padding: 0; margin: 0 0 2rem; max-width: 52rem; }
#results li { padding: 0.8rem 0; border-bottom: 1px solid var(--hair); margin: 0; }
#results li a { font-weight: 700; font-size: 1.15rem; }
#results li .sym { color: var(--muted); font-weight: 500; margin-left: 0.4rem; }
#results li .sum { display: block; color: var(--muted); }
.search { display: flex; gap: 0.6rem; flex-wrap: wrap; margin: 1rem 0 1.5rem; }
.search input { flex: 1 1 18rem; font: inherit; padding: 0.55rem 0.7rem; border: 1px solid var(--hair); border-radius: 6px; background: var(--wash); color: var(--ink); }

.byline { color: var(--muted); font-size: 0.9rem; }
@media (max-width: 600px) { body { font-size: 17px; } th, td { padding-right: 0.6rem; } }

/* dashboard layout: the deck plus an alerts rail on the right */
.dash { display: grid; grid-template-columns: 19rem minmax(0, 1fr) 20rem; gap: 0 1.8rem; align-items: start; }
.dash:has(.caldock.min) { grid-template-columns: 2.6rem minmax(0, 1fr) 20rem; }
.rail-right { position: sticky; top: 4.5rem; max-height: calc(100vh - 5rem); overflow-y: auto; padding: 1.2rem 0 2rem; scrollbar-width: thin; }
.alerts-head { display: flex; flex-direction: column; gap: 0.1rem; margin: 0 0 0.7rem; }
.alerts-head b { font-size: 1.25rem; letter-spacing: -0.01em; }
.alert-filters { display: flex; flex-wrap: wrap; gap: 0.35rem; margin: 0 0 0.8rem; }
.chip.mini { font-size: 0.8rem; padding: 0.3rem 0.7rem; }
.alertlist, .newslist, .cal { list-style: none; padding: 0; margin: 0; }
.alertlist li, .newslist li { display: flex; flex-direction: column; gap: 0.15rem; padding: 0.55rem 0; border-top: 1px solid var(--hair); font-size: 0.88rem; line-height: 1.35; }
.alertlist li:first-child, .newslist li:first-child { border-top: 0; }
.alertlist .meta, .newslist .meta, .cal .when { font-size: 0.78rem; color: var(--muted); font-weight: 600; letter-spacing: 0.02em; }
.alertlist a, .newslist a { color: var(--ink); font-weight: 600; text-decoration: none; }
.alertlist a:hover, .newslist a:hover { color: var(--accent); text-decoration: underline; }
.alertlist .ev .txt { color: var(--ink); }
.tag { display: inline-block; font-style: normal; font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 0.15rem 0.5rem; border-radius: 999px; margin-right: 0.3rem; background: rgba(255,179,64,0.18); color: var(--amber); width: max-content; }
.tag.upcoming { background: rgba(34,230,255,0.15); color: var(--cyan); }
.coins { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.15rem; }
.coinlink { font: 600 0.78rem var(--font); color: var(--ink); background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14); border-radius: 999px; padding: 0.15rem 0.6rem; cursor: pointer; transition: background 0.2s, border-color 0.2s; }
.coinlink:hover { background: linear-gradient(100deg, var(--violet), var(--pink)); border-color: transparent; color: #fff; }
.alerts-btn, .alerts.in-sheet .alerts-head { display: none; }
.alerts.in-sheet .alertlist li { font-size: 1rem; }
.lookline { text-align: center; max-width: 40rem; margin: 0 auto 0.8rem; }
@media (max-width: 1300px) { .dash, .dash:has(.caldock.min) { grid-template-columns: minmax(0, 1fr); } .rail-right { position: static; max-height: none; overflow: visible; display: grid; grid-template-columns: 1fr 1fr; gap: 0 2rem; } }
@media (max-width: 700px) { .rail-right { grid-template-columns: 1fr; } }

/* coin sheet: bold boxes first, the full record behind a button */
.boxes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.9rem; margin: 1rem 0 1.5rem; }
.box { position: relative; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); border-radius: 16px; padding: 0.8rem 0.95rem 0.9rem; min-width: 0; }
.box::before { content: ""; position: absolute; left: 1.1rem; right: 1.1rem; top: 0; height: 3px; border-radius: 0 0 3px 3px; background: var(--grad); background-size: 300% 100%; opacity: 0.9; }
.box > b { display: block; font-size: 0.8rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 0.2rem 0 0.5rem; }
.box p { margin: 0 0 0.3rem; max-width: none; font-size: 0.92rem; line-height: 1.4; }
.box .big { font-size: clamp(1.4rem, 2.4vw, 1.9rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; margin-bottom: 0.4rem; font-variant-numeric: tabular-nums; }
.box .big i { font-style: normal; font-size: 1.1rem; color: var(--muted); font-weight: 600; }
.box .big.none { color: var(--muted); font-size: 1.3rem; }
.box.up { background: linear-gradient(160deg, rgba(124,92,255,0.22), rgba(255,79,163,0.1) 60%, rgba(255,255,255,0.04)); border-color: rgba(124,92,255,0.45); }
.box.up::before { opacity: 1; }
.box.up .big { background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.box.wide { grid-column: span 2; }
.box.news { grid-column: 1 / -1; }
.box.price .chg { font-size: 1rem; color: var(--muted); font-weight: 600; margin-left: 0.3rem; }
.spark { width: 100%; height: 44px; display: block; margin: 0.2rem 0 0.5rem; }
.box .newslist li { padding: 0.5rem 0; font-size: 0.92rem; }
.box .newslist li:first-child { border-top: 0; padding-top: 0; }
.card .px { font-size: 0.85rem; color: var(--muted); font-weight: 600; white-space: nowrap; }
.card .px i { font-style: normal; color: var(--muted); }
.card.look::after { opacity: 0.55; background: radial-gradient(closest-side, rgba(255,179,64,0.45), transparent); }
@media (max-width: 760px) { .boxes { grid-template-columns: 1fr 1fr; } .box.up, .box.wide, .box.news { grid-column: span 2; } }
@media (max-width: 460px) { .boxes { grid-template-columns: 1fr; } .box.up, .box.wide, .box.news { grid-column: auto; } }

/* the roadmap timeline */
.timeline { width: 100%; height: auto; display: block; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.08); border-radius: 18px; padding: 0.5rem; margin: 0 0 0.5rem; overflow: visible; }
.timeline text { fill: var(--ink); font: 600 13px var(--font); }
.timeline .t-date { fill: var(--muted); font-weight: 500; font-size: 12px; }
.timeline .t-today { fill: var(--muted); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; }
.timeline .pt { cursor: default; }
.timeline .pt:hover circle:first-of-type { r: 12; }
.legend { color: var(--muted); font-size: 0.85rem; display: flex; flex-wrap: wrap; gap: 0.3rem 0.9rem; align-items: center; max-width: none; }
.legend .k { display: inline-block; width: 12px; height: 12px; border-radius: 50%; border: 3px solid var(--violet); box-sizing: border-box; margin-right: 0.3rem; vertical-align: -1px; }
.legend .k.done { background: var(--violet); }
.legend .k.late { background: radial-gradient(circle, var(--amber) 30%, transparent 32%); }
.legend .k.now { border: 0; width: 2px; height: 14px; border-radius: 0; background: repeating-linear-gradient(var(--pink) 0 3px, transparent 3px 6px); }
.sheet-body .more { margin-top: 1rem; }
.sheet-body .full { margin-top: 1.5rem; padding-top: 0.5rem; border-top: 1px solid var(--hair); }
.sheet-body .notice.small { font-size: 0.9rem; padding: 0.2rem 0 0.2rem 0.9rem; margin-bottom: 0.6rem; color: var(--muted); }
.cal li { display: grid; grid-template-columns: 9rem 1fr; gap: 0.2rem 1rem; padding: 0.6rem 0; border-top: 1px solid var(--hair); }
.cal .txt { max-width: none; }
.sheet-body ul.cal { max-width: none; }
@media (max-width: 600px) { .cal li { grid-template-columns: 1fr; } }
.rail-right .alertlist { max-width: none; }

.sheet-body h2 .count, .rail .group .count { display: inline-block; font-size: 0.8rem; font-weight: 700; color: var(--ink); background: rgba(255,255,255,0.1); border-radius: 999px; padding: 0.1rem 0.6rem; vertical-align: middle; margin-left: 0.4rem; }
.timeline .t-lab { font-size: 12px; }

.undated { display: flex; flex-wrap: wrap; gap: 0.4rem; padding: 0; margin: 0.4rem 0 0.8rem; list-style: none; max-width: none; }
.undated li { margin: 0; font-size: 0.88rem; padding: 0.35rem 0.8rem; border-radius: 999px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); }

/* tap-to-reveal: stats, upcoming box, roadmap points open the promise list */
.box.tap { text-align: left; font: inherit; color: inherit; cursor: pointer; transition: transform 0.25s, box-shadow 0.25s; }
.box.tap:hover { transform: translateY(-2px); box-shadow: 0 14px 40px rgba(124,92,255,0.25); }
.tapcue { display: block; margin-top: 0.5rem; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); opacity: 0.8; }
.stats { display: flex; flex-wrap: wrap; gap: 0.45rem; margin-top: 0.2rem; }
.stat { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 0; font: 600 0.78rem var(--font); color: var(--muted); background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); border-radius: 12px; padding: 0.45rem 0.75rem; cursor: pointer; min-width: 5.2rem; transition: background 0.2s, border-color 0.2s, transform 0.2s; }
.stat b { font-size: 1.35rem; font-weight: 800; letter-spacing: -0.02em; line-height: 1.1; color: var(--ink); }
.stat:hover { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.3); transform: translateY(-1px); }
.stat.shipped { border-left: 3px solid var(--cyan); } .stat.open { border-left: 3px solid #a58cff; } .stat.missed { border-left: 3px solid var(--amber); }
.plist { margin: 0.5rem 0 1.5rem; padding: 1rem 1.1rem 0.6rem; border-radius: 18px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); }
.plist-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.6rem; margin-bottom: 0.6rem; }
.plist-head b { font-size: 1.05rem; }
.plist-head .chips { margin: 0; justify-content: flex-start; }
.prows { list-style: none; padding: 0; margin: 0; max-width: none; }
.prows li { display: grid; grid-template-columns: 6.2rem 8.5rem minmax(0, 1fr); gap: 0.2rem 0.9rem; align-items: start; padding: 0.7rem 0; border-top: 1px solid var(--hair); margin: 0; font-size: 0.95rem; transition: background 0.3s; }
.prows li.hl { background: rgba(124,92,255,0.18); border-radius: 10px; padding-left: 0.6rem; padding-right: 0.6rem; }
.pill { display: inline-block; font-style: normal; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase; padding: 0.22rem 0.55rem; border-radius: 999px; background: rgba(255,255,255,0.08); color: var(--ink); white-space: nowrap; }
.pill.shipped { background: rgba(34,230,255,0.16); color: var(--cyan); } .pill.open { background: rgba(124,92,255,0.22); color: #b9a8ff; } .pill.missed { background: rgba(255,179,64,0.18); color: var(--amber); } .pill.withdrawn { color: var(--muted); }
.prows .pdate { font-weight: 700; white-space: nowrap; font-size: 0.9rem; padding-top: 0.1rem; }
.prows .ptxt { line-height: 1.4; }
.prows .ptxt em { display: block; font-style: normal; color: var(--muted); font-size: 0.85rem; margin-top: 0.15rem; }
.prows details { grid-column: 3; font-size: 0.88rem; }
.prows summary { cursor: pointer; color: var(--accent); font-weight: 600; list-style: none; }
.prows summary::-webkit-details-marker { display: none; }
.prows summary::after { content: " ▾"; }
.prows details[open] summary::after { content: " ▴"; }
.prows blockquote { margin: 0.4rem 0; font-size: 0.9rem; }
.timeline .pt { cursor: pointer; }
.timeline .pt:focus-visible { outline: 0; } .timeline .pt:focus-visible circle:last-of-type, .timeline .pt:hover circle:last-of-type { r: 8; }
@media (max-width: 600px) { .prows li { grid-template-columns: 1fr; gap: 0.15rem; } .prows details { grid-column: 1; } }

/* breaking: the biggest stories, big and tappable */
.brk-head { display: flex; flex-direction: column; gap: 0.1rem; margin: 0 0 0.6rem; }
.brk-head b { font-size: 1.25rem; letter-spacing: -0.01em; }
.brk-when { font-size: 0.78rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin: 1rem 0 0.4rem; }
.brklist { list-style: none; padding: 0; margin: 0 0 0.6rem; counter-reset: brk; }
.brklist li { position: relative; display: flex; flex-direction: column; gap: 0.25rem; padding: 0.75rem 0.9rem 0.8rem 2.6rem; margin: 0 0 0.5rem; border-radius: 14px; background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.1); transition: background 0.2s, border-color 0.2s, transform 0.2s; }
.brklist li::before { counter-increment: brk; content: counter(brk); position: absolute; left: 0.8rem; top: 0.8rem; font-weight: 800; font-size: 1.05rem; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.brklist li:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.22); transform: translateY(-1px); }
.brklist li.gov { border-left: 3px solid var(--amber); }
.brklist a { color: var(--ink); font-weight: 700; text-decoration: none; font-size: 0.9rem; line-height: 1.3; }
.brklist a:hover { color: var(--accent); text-decoration: underline; }
.brklist .meta { font-size: 0.78rem; color: var(--muted); font-weight: 600; }
.brklist .meta .tag { vertical-align: middle; }
.breaking.in-sheet .brklist a { font-size: 1.1rem; }
.rail-right > section + section { margin-top: 1.6rem; }
.rail-right .breaking { margin-bottom: 0.5rem; }

/* basics box */
.blist { list-style: none; padding: 0; margin: 0 0 0.5rem; max-width: none; }
.blist li { display: grid; grid-template-columns: 6.5rem 1fr; gap: 0 0.7rem; align-items: baseline; padding: 0.4rem 0; border-top: 1px solid var(--hair); font-size: 0.9rem; line-height: 1.35; margin: 0; }
.blist li:first-child { border-top: 0; }
.blist b { font-size: 1.15rem; font-weight: 800; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.blist li.muted b { color: var(--muted); font-size: 0.95rem; }
.box.basics { grid-column: span 2; }
@media (max-width: 760px) { .box.basics { grid-column: span 2; } }
@media (max-width: 460px) { .box.basics { grid-column: auto; } .blist li { grid-template-columns: 1fr; } }

/* coming-up strip and the always-open calendar */
.strip { margin: 0.8rem 0 0.2rem; }
.strip-head, .calendar h2 { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 1rem; }
.strip-head h2, .calendar h2 { border-top: 0; padding-top: 0; margin: 0; font-size: 1.2rem; }
.strip-row { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(12rem, 1fr); gap: 0.8rem; overflow-x: auto; padding: 0.8rem 0 0.6rem; scroll-snap-type: x proximity; scrollbar-width: thin; }
.strip-row .ev { scroll-snap-align: start; display: flex; flex-direction: column; align-items: flex-start; gap: 0.15rem; text-align: left; font: inherit; color: var(--ink); background: linear-gradient(160deg, rgba(124,92,255,0.2), rgba(255,255,255,0.04) 70%); border: 1px solid rgba(124,92,255,0.35); border-radius: 16px; padding: 0.9rem 1rem 1rem; cursor: pointer; transition: transform 0.25s, border-color 0.25s, box-shadow 0.25s; }
.strip-row .ev:hover { transform: translateY(-3px); border-color: rgba(255,255,255,0.4); box-shadow: 0 14px 40px rgba(0,0,0,0.4); }
.strip-row .ev b { font-size: 1.05rem; font-weight: 800; letter-spacing: -0.02em; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.strip-row .ev i { font-style: normal; font-size: 0.78rem; font-weight: 700; color: var(--muted); letter-spacing: 0.04em; text-transform: uppercase; }
.strip-row .ev .who { font-weight: 700; margin-top: 0.3rem; }
.strip-row .ev .txt { font-size: 0.86rem; color: var(--muted); line-height: 1.35; }
.calendar { margin: 2rem 0 1rem; padding-top: 1.5rem; border-top: 1px solid var(--hair); }
.calendar .lede { font-size: 1rem; color: var(--muted); max-width: 44rem; margin: 0.4rem 0 1rem; }
.months { display: grid; grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); gap: 1rem; }
.month { background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); border-radius: 18px; padding: 1rem 1.1rem; min-width: 0; }
.month.late { border-color: rgba(255,179,64,0.4); }
.month h3 { margin: 0 0 0.4rem; font-size: 1.1rem; }
.month .cal li { grid-template-columns: 1fr; gap: 0.1rem; padding: 0.55rem 0; font-size: 0.92rem; }
.month .cal .when { font-size: 0.75rem; }
.morelinks { text-align: center; margin: 2rem 0 0; }
.morelinks a { color: var(--muted); }
.morelinks a:hover { color: var(--ink); }
.menu:empty { display: none; }

/* the calendar dock: a real month grid in its own column; minimises to a slim tab */
.caldock { position: sticky; top: 4.5rem; max-height: calc(100vh - 5rem); display: flex; flex-direction: column; background: rgba(255,255,255,0.035); border: 1px solid rgba(255,255,255,0.1); border-radius: 18px; overflow: hidden; margin-top: 1.5rem; }
.caldock .caltab { display: none; }
.caldock.min { background: transparent; border: 0; }
.caldock.min .calbody { display: none; }
.caldock.min .caltab { display: block; writing-mode: vertical-rl; transform: rotate(180deg); font: 800 0.78rem var(--font); letter-spacing: 0.12em; text-transform: uppercase; color: #fff; background: linear-gradient(180deg, var(--pink), var(--violet)); border: 0; border-radius: 10px; padding: 0.9rem 0.55rem; cursor: pointer; width: 2.4rem; }
.calbody { padding: 0.9rem 0.9rem 1rem; overflow-y: auto; scrollbar-width: thin; }
.calhead { display: grid; grid-template-columns: auto 1fr auto auto; gap: 0.3rem; align-items: center; margin-bottom: 0.6rem; }
.calhead b { text-align: center; font-size: 1rem; }
.calnav, .calmin { font: 700 1.05rem/1 var(--font); color: var(--ink); background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); border-radius: 8px; width: 1.9rem; height: 1.9rem; cursor: pointer; }
.calnav:hover, .calmin:hover { background: rgba(255,255,255,0.14); }
.calgrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.calgrid .dow { font-size: 0.66rem; font-weight: 700; color: var(--muted); text-align: center; padding: 0.2rem 0 0.3rem; letter-spacing: 0.04em; }
.calgrid .day { position: relative; aspect-ratio: 1; border-radius: 8px; background: rgba(255,255,255,0.04); border: 1px solid transparent; font: 600 0.8rem var(--font); color: var(--ink); display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding-top: 0.22rem; gap: 0.12rem; cursor: default; }
.calgrid .day.out { opacity: 0.3; }
.calgrid .day.has { cursor: pointer; background: rgba(255,255,255,0.07); border-color: rgba(255,255,255,0.1); }
.calgrid .day.has:hover { border-color: rgba(255,255,255,0.35); }
.calgrid .day.today { border-color: var(--pink); box-shadow: 0 0 0 1px var(--pink) inset; }
.calgrid .day.on { background: linear-gradient(120deg, rgba(124,92,255,0.5), rgba(255,79,163,0.35)); border-color: transparent; }
.calgrid .marks { display: flex; gap: 2px; flex-wrap: wrap; justify-content: center; max-width: 80%; }
.calgrid .mk { width: 6px; height: 6px; border-radius: 50%; border: 1.5px solid #b9a8ff; box-sizing: border-box; }
.calgrid .mk.shipped { background: var(--cyan); border-color: var(--cyan); }
.calgrid .mk.missed { border-color: var(--amber); background: rgba(255,179,64,0.5); }
.calgrid .more { font-size: 0.6rem; color: var(--muted); }
.calday { margin-top: 0.8rem; padding-top: 0.6rem; border-top: 1px solid var(--hair); font-size: 0.86rem; }
.calday h4 { margin: 0 0 0.4rem; font-size: 0.95rem; }
.calday ul { list-style: none; padding: 0; margin: 0; }
.calday li { display: grid; grid-template-columns: auto 1fr; gap: 0.2rem 0.5rem; align-items: start; padding: 0.45rem 0; border-top: 1px solid var(--hair); }
.calday li:first-child { border-top: 0; }
.calday .txt { grid-column: 1 / -1; color: var(--muted); font-size: 0.8rem; }
@media (max-width: 1300px) { .caldock { position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 8; margin: 0; max-height: 70vh; border-radius: 18px 18px 0 0; background: rgba(9,11,30,0.96); backdrop-filter: blur(12px); transition: transform 0.4s cubic-bezier(.2,.8,.2,1); }
  .caldock.min { transform: translateY(100%); background: transparent; }
  .caldock.min .caltab { position: absolute; left: 50%; bottom: 100%; transform: translateX(-50%); writing-mode: horizontal-tb; width: auto; padding: 0.55rem 1rem; border-radius: 10px 10px 0 0; }
  .caldock.min { overflow: visible; } }

/* walker polish: aura when moving, a light trail of footsteps, a forward lean */
#walker .aura { transition: opacity 0.4s; }
#walker.walking .aura { opacity: 0.55; }
#walker .body { transition: transform 0.3s; }
#walker.walking .body { animation: bob 0.5s ease-in-out infinite; transform: rotate(6deg); }
#trail circle { fill: url(#rg); }

.deck, .panel .body, .rail-right, .strip, .strip-row { min-width: 0; }

/* rings, bars, venues, talking points */
.ring { flex: 0 0 auto; }
.ring .rv { fill: var(--ink); font: 800 13px var(--font); }
.ring .rs { fill: var(--muted); font: 600 8px var(--font); letter-spacing: 0.04em; }
.bigring { display: flex; align-items: center; gap: 0.6rem; margin: 0.25rem 0 0.2rem; }
.bigring .big { margin: 0; }
.card .bigring .fact { color: var(--muted); font-size: 0.78rem; }
.blist li.withring { grid-template-columns: auto 1fr; align-items: center; }
.box.market { grid-column: 1 / -1; }
.box .sub { display: block; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 0.9rem 0 0.35rem; }
.bars { list-style: none; padding: 0; margin: 0.2rem 0 0.4rem; max-width: none; }
.bars li { display: grid; grid-template-columns: 9rem 1fr 6rem; gap: 0.6rem; align-items: center; padding: 0.22rem 0; margin: 0; font-size: 0.86rem; }
.bars li i { display: block; height: 0.7rem; border-radius: 999px; background: var(--grad); background-size: 300% 100%; opacity: 0.85; min-width: 4px; }
.bars li.me i { opacity: 1; box-shadow: 0 0 14px rgba(124,92,255,0.7); }
.bars li.me .nm { font-weight: 800; }
.bars .nm { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bars .v { text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); }
.venues { list-style: none; padding: 0; margin: 0 0 0.3rem; display: flex; flex-wrap: wrap; gap: 0.4rem; max-width: none; }
.venues li { margin: 0; font-size: 0.85rem; padding: 0.3rem 0.7rem; border-radius: 999px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); }
.venues a { color: var(--ink); font-weight: 700; text-decoration: none; }
.venues a:hover { color: var(--accent); }
.talk { margin: 0.2rem 0 0.6rem; }
.talk .chips { justify-content: flex-start; margin: 0.3rem 0 0; }
.chip.mini.on { background: linear-gradient(100deg, var(--violet), var(--pink)); border-color: transparent; color: #fff; }
.newslist.capped > li:nth-child(n+7) { display: none; }
.newslist.capped.all > li:nth-child(n+7) { display: flex; }
.newslist > li[hidden] { display: none !important; }
.linkbtn { font: inherit; color: var(--accent); background: none; border: 0; padding: 0; cursor: pointer; text-decoration: underline; }
.card.wide .fact { color: var(--muted); }
@media (max-width: 600px) { .bars li { grid-template-columns: 1fr auto; gap: 0.2rem 0.6rem; font-size: 0.82rem; } .bars li i { grid-column: 1 / -1; } }

/* dashboard v4: sections, spotlight cards, readable rows, results panel */
.deck-head h1 { font-size: clamp(1.8rem, 3.4vw, 2.6rem); margin-bottom: 0.6rem; }
.examples { margin: 0.6rem 0 0; display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.4rem; }
.sec { margin: 1.6rem 0 0; }
.sec-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.9rem; margin: 0 0 0.7rem; }
.sec-head h2 { border-top: 0; padding-top: 0; margin: 0; font-size: 1.3rem; }
.sec-head p { margin: 0; max-width: 46rem; }
.spots { display: grid; grid-template-columns: repeat(auto-fill, minmax(17rem, 1fr)); gap: 0.8rem; }
.spot { display: flex; flex-direction: column; gap: 0.35rem; text-align: left; font: inherit; color: var(--ink); cursor: pointer; padding: 0.95rem 1.05rem 1rem; border-radius: 16px; background: linear-gradient(160deg, rgba(124,92,255,0.18), rgba(255,79,163,0.06) 60%, rgba(255,255,255,0.035)); border: 1px solid rgba(124,92,255,0.35); transition: transform 0.25s, border-color 0.25s, box-shadow 0.25s; }
.spot:hover { transform: translateY(-3px); border-color: rgba(255,255,255,0.4); box-shadow: 0 16px 44px rgba(0,0,0,0.45); }
.spot .top { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; }
.spot .who b { font-size: 1.05rem; }
.spot .who .sym { color: var(--muted); font-weight: 600; font-size: 0.8rem; letter-spacing: 0.04em; }
.spot .what { font-size: 0.86rem; color: var(--ink); opacity: 0.9; line-height: 1.35; }
.spot .why, .box.look .why { list-style: none; padding: 0; margin: 0.2rem 0 0; display: grid; gap: 0.25rem; }
.spot .why li, .box.look .why li { font-size: 0.8rem; color: var(--muted); padding-left: 1rem; position: relative; margin: 0; }
.spot .why li::before, .box.look .why li::before { content: ""; position: absolute; left: 0; top: 0.45em; width: 0.45rem; height: 0.45rem; border-radius: 50%; background: var(--grad); background-size: 300% 100%; }
.box.look .why li { font-size: 0.92rem; color: var(--ink); }
.px .up { color: var(--lime); } .px .dn { color: var(--amber); }
.px { font-size: 0.85rem; color: var(--muted); font-weight: 600; white-space: nowrap; }
.px i { font-style: normal; }
.rows { display: flex; flex-direction: column; gap: 0.35rem; }
.row { display: grid; grid-template-columns: 4.2rem minmax(7rem, 11rem) minmax(0, 1fr) auto; gap: 0.3rem 0.9rem; align-items: center; text-align: left; font: inherit; color: var(--ink); cursor: pointer; padding: 0.6rem 0.9rem; border-radius: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); transition: background 0.2s, border-color 0.2s, transform 0.2s; }
.row:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.22); transform: translateX(3px); }
.row .sym { font-weight: 800; letter-spacing: 0.04em; font-size: 0.85rem; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.row.stub .sym { background: none; color: var(--muted); -webkit-text-fill-color: var(--muted); }
.row .nm { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.row .line { font-size: 0.88rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.row.stub .line { opacity: 0.85; }
.results h2 { border-top: 0; padding-top: 0; margin: 1.2rem 0 0.6rem; font-size: 1.2rem; }
@media (max-width: 700px) { .row { grid-template-columns: 3.4rem 1fr auto; } .row .line { grid-column: 1 / -1; white-space: normal; } }

/* sheet v4: summary line, supply pie, what box, comparison table, roadmap section */
.sumline { color: var(--muted); font-size: 0.92rem; margin: 0 0 0.9rem; max-width: none; }
.box.supply .pie { display: flex; gap: 0.9rem; align-items: center; }
.box.supply .pie p { margin: 0 0 0.35rem; font-size: 0.88rem; }
.box.what .lead { font-size: 1.02rem; line-height: 1.45; }
.box.what .purpose { margin-top: 0.4rem; }
.box.what .venues-line { font-size: 0.85rem; margin: 0.3rem 0 0; }
.box.what .venues-line a { color: var(--ink); font-weight: 600; }
.cmpbox { grid-column: 1 / -1; }
.cmplead { margin: 0.6rem 0 0.3rem; }
table.cmp { font-size: 0.86rem; min-width: 34rem; }
table.cmp th, table.cmp td { padding: 0.45rem 0.7rem 0.45rem 0; }
table.cmp tr.me td { font-weight: 700; background: rgba(124,92,255,0.12); }
table.cmp tr.me td:first-child { border-radius: 8px 0 0 8px; padding-left: 0.5rem; }
.box.up.tap .tapcue { margin-top: 0.4rem; }
.roadmap { margin: 1.4rem 0 0.6rem; padding: 1rem 1.1rem 0.6rem; border-radius: 16px; background: rgba(255,255,255,0.035); border: 1px solid rgba(255,255,255,0.08); }
.rm-head h2 { border-top: 0; padding-top: 0; margin: 0 0 0.2rem; font-size: 1.25rem; }
.rm-head p { margin: 0 0 0.6rem; max-width: none; }
.roadmap .stats { margin-bottom: 0.7rem; }
.roadmap .plist { margin-top: 0.8rem; }
.boxes { grid-template-columns: repeat(3, 1fr); }
.box.look { grid-column: 1 / -1; background: linear-gradient(160deg, rgba(255,179,64,0.16), rgba(255,255,255,0.04) 60%); border-color: rgba(255,179,64,0.4); }
@media (max-width: 760px) { .boxes { grid-template-columns: 1fr 1fr; } .box.up, .box.wide, .box.news, .box.look, .cmpbox { grid-column: span 2; } }
@media (max-width: 460px) { .boxes { grid-template-columns: 1fr; } .box.up, .box.wide, .box.news, .box.look, .cmpbox { grid-column: auto; } }

/* tighter spotlight cards */
.spots { grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr)); }
.spot { padding: 0.8rem 0.95rem 0.85rem; gap: 0.3rem; }
.spot .what { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.spot .why { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.35rem; }
.spot .why li { padding: 0.25rem 0.6rem 0.25rem 0.6rem; border-radius: 999px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1); font-size: 0.76rem; color: var(--ink); max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.spot .why li::before { display: none; }

/* ===== v5: the front page is one screen: the point, and a receipt printer ===== */
.land main { padding: 0; }
.intro { position: relative; min-height: 100vh; overflow: hidden; display: grid; align-items: center; }
.intro .stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.intro .glow { position: absolute; left: 60%; top: 50%; width: 80vmax; height: 80vmax; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(124,92,255,0.22), rgba(255,79,163,0.08) 45%, transparent 70%); filter: blur(10px); pointer-events: none; }
.intro-in { position: relative; z-index: 1; max-width: var(--max); margin: 0 auto; padding: 5rem var(--pad) 3rem; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(20rem, 0.9fr); gap: 3rem; align-items: center; width: 100%; }
.intro-copy h1 { font-size: clamp(2.6rem, 5.6vw, 4.8rem); line-height: 1.0; letter-spacing: -0.035em; margin: 0 0 1.2rem; }
.intro-copy .lede { max-width: 32rem; color: var(--muted); font-size: clamp(1.05rem, 1.5vw, 1.25rem); margin-bottom: 1.2rem; }
.points { list-style: none; padding: 0; margin: 0 0 1.6rem; display: grid; gap: 0.45rem; max-width: 34rem; }
.points li { font-size: 0.98rem; color: var(--muted); padding-left: 1.2rem; position: relative; margin: 0; }
.points li b { color: var(--ink); }
.points li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--grad); background-size: 300% 100%; }
.printer { position: relative; justify-self: center; width: min(24rem, 100%); }
.printer .slot { height: 14px; border-radius: 8px; background: linear-gradient(180deg, #2a2d55, #14162f); box-shadow: 0 6px 20px rgba(0,0,0,0.6), inset 0 2px 0 rgba(255,255,255,0.15); position: relative; z-index: 2; }
.paper { position: relative; margin: 0 0.8rem; background: #f4f1e8; color: #1a1a1a; font: 500 0.86rem/1.45 "Public Sans", ui-monospace, monospace; padding: 1rem 1rem 1.3rem; min-height: 15rem; box-shadow: 0 20px 50px rgba(0,0,0,0.5); transform-origin: top; }
.paper::after { content: ""; position: absolute; left: 0; right: 0; bottom: -8px; height: 8px; background: linear-gradient(-45deg, transparent 6px, #f4f1e8 0) 0 0 / 12px 8px, linear-gradient(45deg, transparent 6px, #f4f1e8 0) 0 0 / 12px 8px; }
.paper .rl { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px dashed rgba(0,0,0,0.15); padding: 0.28rem 0; opacity: 0; transform: translateY(4px); transition: opacity 0.25s, transform 0.25s; }
.paper .rl.on { opacity: 1; transform: none; }
.paper .rl b { font-weight: 800; letter-spacing: 0.06em; font-size: 0.72rem; color: #555; text-transform: uppercase; white-space: nowrap; }
.paper .rl span { text-align: right; }
.paper .rl.big span { font-weight: 800; font-size: 1.05rem; text-align: left; }
.paper .rl.txt { flex-direction: column; gap: 0.1rem; }
.paper .rl.txt span { text-align: left; }
.paper .stamp { position: absolute; right: 1rem; bottom: 1.6rem; font: 900 1.25rem/1 "Public Sans", sans-serif; letter-spacing: 0.08em; text-transform: uppercase; padding: 0.35rem 0.6rem; border: 3px solid; border-radius: 6px; transform: rotate(-8deg) scale(0.4); opacity: 0; transition: transform 0.35s cubic-bezier(.2,1.4,.4,1), opacity 0.2s; mix-blend-mode: multiply; }
.paper .stamp.on { transform: rotate(-8deg) scale(1); opacity: 0.9; }
.paper .stamp.shipped { color: #0b7a4b; border-color: #0b7a4b; }
.paper .stamp.missed { color: #b8560f; border-color: #b8560f; }
.paper .stamp.open { color: #4a3fc4; border-color: #4a3fc4; }
.paper.tear { animation: tear 0.6s ease-in forwards; }
@keyframes tear { to { transform: translateY(40px) rotate(2deg); opacity: 0; } }
@media (max-width: 900px) { .intro-in { grid-template-columns: 1fr; padding-top: 5.5rem; gap: 2rem; } .printer { width: min(22rem, 100%); } .intro { min-height: 0; } }

/* ===== v5: the dashboard as an app that fits the screen ===== */
.panel-page main { max-width: none; padding: 0; }
.app { height: calc(100vh - 3.6rem); display: grid; grid-template-columns: 18rem minmax(0, 1fr) 20rem; gap: 0.7rem; padding: 0.7rem; box-sizing: border-box; align-items: stretch; }
.app:has(.caldock.min) { grid-template-columns: 2.6rem minmax(0, 1fr) 20rem; }
.app .caldock { position: static; max-height: none; margin: 0; height: 100%; }
.mid { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 0.6rem; min-height: 0; min-width: 0; }
.topbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem 1rem; }
.topbar .finder { flex: 1 1 22rem; margin: 0; max-width: none; }
.topbar .examples { margin: 0; }
.panels { display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, 1fr); gap: 0.6rem; min-height: 0; }
.pane { min-height: 0; display: flex; flex-direction: column; background: rgba(255,255,255,0.035); border: 1px solid rgba(255,255,255,0.09); border-radius: 14px; overflow: hidden; }
.pane-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.15rem 0.7rem; padding: 0.6rem 0.9rem 0.45rem; border-bottom: 1px solid rgba(255,255,255,0.08); }
.pane-head h2 { border-top: 0; padding-top: 0; margin: 0; font-size: 1.02rem; }
.pane-head span { line-height: 1.3; }
.pane-body { min-height: 0; overflow-y: auto; padding: 0.6rem 0.9rem 0.8rem; scrollbar-width: thin; }
.pane.look { grid-column: 1 / -1; }
.pane .spots { grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); gap: 0.6rem; }
.pane .rows { gap: 0.3rem; }
.pane .row { padding: 0.45rem 0.7rem; }
.pane .strip-row { grid-auto-columns: minmax(11rem, 1fr); padding: 0.2rem 0 0.4rem; }
.gl { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.gl > div { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.gl .row { grid-template-columns: 3.4rem minmax(0, 1fr) auto; }
.gl .row .line { display: none; }
.gl .row .px { display: none; }
.gl .row .line { display: block; font-weight: 800; color: var(--ink); }
.gl .row .line .up { color: var(--lime); } .gl .row .line .dn { color: var(--amber); }
.rail-right.pane { padding: 0; overflow-y: auto; height: 100%; }
.rail-right.pane > section { padding: 0.8rem 0.9rem; }
.rail-right.pane > section + section { border-top: 1px solid rgba(255,255,255,0.08); margin: 0; }
.morelinks { margin: 0; text-align: center; font-size: 0.78rem; }
.results.pane { grid-row: 2; }
.results .pane-body { padding-top: 0.5rem; }
.app .calbody { max-height: none; }
@media (max-width: 1300px) { .app { height: auto; grid-template-columns: minmax(0, 1fr); } .app:has(.caldock.min) { grid-template-columns: minmax(0, 1fr); } .app .caldock { position: fixed; height: auto; } .panels { grid-template-rows: none; } .pane { max-height: 32rem; } .pane.look { max-height: 40rem; } .rail-right.pane { height: auto; max-height: none; display: grid; grid-template-columns: 1fr 1fr; } }
@media (max-width: 800px) { .panels { grid-template-columns: 1fr; } .pane.look { grid-column: auto; } .gl { grid-template-columns: 1fr; } .rail-right.pane { grid-template-columns: 1fr; } }

/* ===== v5: the sheet fills the screen in three columns ===== */
.sheet { place-items: center; padding: 1rem; }
.sheet-in { width: min(112rem, 100%); max-height: 96vh; border-radius: 22px; border-bottom: 1px solid rgba(255,255,255,0.12); padding: 1.1rem clamp(1rem, 2.5vw, 2rem) 1.4rem; transform: translateY(24px) scale(0.985); display: flex; flex-direction: column; }
.sheet.on .sheet-in { transform: none; }
.sheet-body { display: flex; flex-direction: column; gap: 0.8rem; min-height: 0; }
.sh-head .title { margin: 0 0 0.2rem; }
.sh-head h1 { font-size: clamp(1.5rem, 2.6vw, 2rem); }
.sh-head .sumline { margin: 0; }
.cols { display: grid; grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.25fr) minmax(0, 1fr); gap: 0.7rem; }
.col { display: flex; flex-direction: column; gap: 0.7rem; min-width: 0; }
.col .box { grid-column: auto; }
.col .box.news .newslist.capped > li:nth-child(n+7) { display: none; }
.col .box.news .newslist.capped.all > li:nth-child(n+7) { display: flex; }
.roadmap { margin: 0; }
.roadmap .timeline { max-height: 26vh; }
.confirm { display: block; font-size: 0.8rem; margin-top: 0.15rem; }
.confirm.yes { color: var(--cyan); font-weight: 600; }
.confirm.no { color: var(--muted); }
.dbar { display: flex; height: 0.55rem; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,0.08); margin: 0.2rem 0 0.8rem; }
.dbar i { display: block; height: 100%; }
.dbar .shipped { background: var(--cyan); } .dbar .open { background: #7c5cff; } .dbar .missed { background: var(--amber); }
.stat.conf { cursor: default; border-left: 3px solid var(--lime); }
.stat.conf:hover { transform: none; }
.timeline .t-year { fill: var(--muted); font: 700 11px var(--font); letter-spacing: 0.06em; }
.gap { font-size: 0.9rem; margin: 0.2rem 0 0.5rem; padding: 0.5rem 0.7rem; border-radius: 10px; background: rgba(124,92,255,0.14); border: 1px solid rgba(124,92,255,0.3); }
.gap b { font-weight: 800; }
@media (max-width: 1000px) { .cols { grid-template-columns: 1fr 1fr; } .col:last-child { grid-column: 1 / -1; } }
@media (max-width: 640px) { .cols { grid-template-columns: 1fr; } .col:last-child { grid-column: auto; } .sheet { padding: 0; place-items: end center; } .sheet-in { border-radius: 20px 20px 0 0; max-height: 96vh; } }

/* v5 fixes */
.sheet .close { position: absolute; top: 0.8rem; right: 0.9rem; float: none; margin: 0; z-index: 3; }
.pane.vol .row { grid-template-columns: 3.4rem minmax(0, 1fr) auto; }
.pane.vol .row .nm { display: none; }
.pane.vol .row .line { white-space: normal; color: var(--ink); }
.pane.vol .row .sym { font-size: 0.8rem; }
.paper { font-size: 0.92rem; min-height: 17rem; }
.printer { width: min(26rem, 100%); }
.pane.gl-pane .row .nm { white-space: normal; font-size: 0.9rem; line-height: 1.2; }
.panel-page main { z-index: 6; }
.paper::before { content: "cryptopromises · receipt"; display: block; font-size: 0.68rem; letter-spacing: 0.12em; text-transform: uppercase; color: #777; border-bottom: 1px dashed rgba(0,0,0,0.15); padding-bottom: 0.35rem; margin-bottom: 0.3rem; }

.paper .stamp { bottom: 4.2rem; right: 1.2rem; }
.paper .rl.on { opacity: 1 !important; }

/* ===== v6 front page: the tools themselves, assembling ===== */
.intro.v2 .intro-in { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: 2.5rem; padding-top: 4.5rem; }
.kicker { font-size: 0.8rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); margin: 0 0 0.9rem; }
.intro.v2 h1 { font-size: clamp(2.3rem, 4.6vw, 4rem); }
.deckwrap { perspective: 1400px; }
.deck3d { position: relative; display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: minmax(7.2rem, auto); gap: 0.7rem; transform: rotateY(-10deg) rotateX(5deg); transform-style: preserve-3d; transition: transform 0.25s ease-out; }
.w { position: relative; padding: 0.7rem 0.8rem 0.75rem; border-radius: 14px; background: rgba(16,18,44,0.82); border: 1px solid rgba(255,255,255,0.12); box-shadow: 0 20px 60px rgba(0,0,0,0.45), inset 0 1px 0 rgba(255,255,255,0.08); backdrop-filter: blur(8px); font-size: 0.82rem; color: var(--ink); overflow: hidden; opacity: 0; transform: translateY(24px) translateZ(0) scale(0.96); animation: win 0.7s cubic-bezier(.2,.9,.2,1) forwards; animation-delay: var(--d, 0s); }
.w::after { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, transparent 30%, rgba(255,255,255,0.08) 45%, transparent 60%); transform: translateX(-120%); animation: sheen 3.5s ease-in-out infinite; animation-delay: calc(var(--d) + 1.5s); pointer-events: none; }
@keyframes win { to { opacity: 1; transform: none; } }
@keyframes sheen { 0%, 60% { transform: translateX(-120%); } 100% { transform: translateX(120%); } }
.w.on { animation: float 6s ease-in-out infinite; animation-delay: var(--d); }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } }
.wt { display: block; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--muted); margin-bottom: 0.45rem; }
.w-road { grid-column: span 2; }
.road { position: relative; height: 2.6rem; margin: 0.6rem 0 0.4rem; }
.road .line { position: absolute; left: 4%; right: 4%; top: 50%; height: 3px; border-radius: 3px; background: var(--grad); background-size: 300% 100%; transform: scaleX(0); transform-origin: left; animation: grow 1.6s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(var(--d, 0s) + 0.5s); }
@keyframes grow { to { transform: scaleX(1); } }
.road .d { position: absolute; top: 50%; width: 12px; height: 12px; margin: -6px 0 0 -6px; border-radius: 50%; border: 3px solid #a58cff; background: #0d0f24; transform: scale(0); animation: pop 0.45s cubic-bezier(.2,1.5,.4,1) forwards; animation-delay: calc(var(--d, 0s) + 0.7s + var(--i) * 0.16s); }
.road .d.shipped { background: var(--cyan); border-color: var(--cyan); }
.road .d.missed { border-color: var(--amber); }
@keyframes pop { to { transform: scale(1); } }
.road .today { position: absolute; left: 92%; top: 10%; bottom: 10%; width: 2px; background: repeating-linear-gradient(var(--pink) 0 4px, transparent 4px 8px); opacity: 0; animation: win 0.4s forwards; animation-delay: calc(var(--d, 0s) + 1.9s); }
.w .tag { display: inline-block; font-size: 0.7rem; font-weight: 700; color: var(--cyan); background: rgba(34,230,255,0.14); border-radius: 999px; padding: 0.2rem 0.6rem; opacity: 0; transform: translateY(6px); animation: win 0.5s forwards; animation-delay: calc(var(--d, 0s) + 2.2s); }
.w-price .num { display: block; font-size: 1.25rem; font-weight: 800; letter-spacing: -0.02em; }
.w-price .num i { font-style: normal; font-size: 0.85rem; }
.w-price .up { color: var(--lime); } .w-price .dn { color: var(--amber); }
.spark2 { width: 100%; height: 40px; display: block; margin-top: 0.3rem; }
.spark2 polyline { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 2.2s ease-out forwards; animation-delay: calc(var(--d, 0s) + 0.4s); }
@keyframes draw { to { stroke-dashoffset: 0; } }
.pie2 { display: flex; align-items: center; gap: 0.6rem; }
.pie2 svg { width: 3.4rem; height: 3.4rem; flex: 0 0 auto; }
.pie2 .arc { stroke-dasharray: 0 100; animation: arc 1.6s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(var(--d, 0s) + 0.5s); }
@keyframes arc { to { stroke-dasharray: var(--p, 63) 100; } }
.pie2 b { font-size: 1.15rem; font-weight: 800; }
.w-look b { display: block; font-size: 1rem; margin-bottom: 0.3rem; }
.w-look ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.25rem; }
.w-look li { font-size: 0.74rem; padding: 0.2rem 0.55rem; border-radius: 999px; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.1); opacity: 0; transform: translateX(-8px); animation: win 0.45s forwards; animation-delay: calc(var(--d, 0s) + 0.5s + var(--i) * 0.25s); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bars2 { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.3rem; }
.bars2 li { display: grid; grid-template-columns: 5.2rem 1fr auto; gap: 0.4rem; align-items: center; font-size: 0.74rem; margin: 0; }
.bars2 li span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bars2 li i { display: block; height: 0.5rem; border-radius: 999px; background: var(--grad); background-size: 300% 100%; width: 0; animation: bar 1.2s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(var(--d, 0s) + 0.5s + var(--i) * 0.15s); opacity: 0.8; }
.bars2 li.me i { opacity: 1; box-shadow: 0 0 12px rgba(124,92,255,0.8); }
.bars2 li.me span, .bars2 li.me b { font-weight: 800; }
.bars2 li b { font-weight: 500; color: var(--muted); font-variant-numeric: tabular-nums; }
@keyframes bar { to { width: var(--w); } }
.w-cal .date { display: block; font-size: 1.1rem; font-weight: 800; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; animation: pulse 2.4s ease-in-out infinite; animation-delay: calc(var(--d) + 0.8s); }
@keyframes pulse { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.5); } }
.w-cal .who { display: block; font-weight: 700; margin-top: 0.15rem; }
.w-cal .what { display: block; color: var(--muted); font-size: 0.76rem; line-height: 1.3; }
.w-news { grid-column: span 2; }
.ticker { overflow: hidden; white-space: nowrap; mask: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent); }
.ticker .track { display: inline-block; animation: tick 40s linear infinite; animation-delay: calc(var(--d) + 0.3s); }
.ticker span { display: inline-block; margin-right: 2.2rem; font-size: 0.8rem; }
.ticker span b { color: var(--cyan); margin-right: 0.35rem; }
@keyframes tick { to { transform: translateX(-50%); } }
.w-rcpt { grid-row: span 2; }
.paper.mini { margin: 0; padding: 0.6rem 0.7rem 0.8rem; min-height: 9rem; font-size: 0.74rem; border-radius: 4px; box-shadow: 0 10px 30px rgba(0,0,0,0.45); }
.paper.mini::before { font-size: 0.55rem; }
.paper.mini .rl { padding: 0.15rem 0; }
.paper.mini .rl.big span { font-size: 0.9rem; }
.paper.mini .stamp { font-size: 0.85rem; bottom: 2.6rem; right: 0.7rem; padding: 0.2rem 0.4rem; border-width: 2px; }
.paper.mini::after { display: none; }
@media (max-width: 1000px) { .intro.v2 .intro-in { grid-template-columns: 1fr; padding-top: 5rem; } .deck3d { transform: none; } .intro.v2 { min-height: 0; } }
@media (max-width: 560px) { .deck3d { grid-template-columns: repeat(2, 1fr); } .w-road, .w-news { grid-column: span 2; } .w-rcpt { grid-row: auto; grid-column: span 2; } }
@media (prefers-reduced-motion: reduce) { .w, .road .line, .road .d, .road .today, .w .tag, .spark2 polyline, .pie2 .arc, .w-look li, .bars2 li i, .w-cal .date, .ticker .track, .w::after { animation: none !important; opacity: 1; transform: none; width: var(--w); stroke-dashoffset: 0; stroke-dasharray: var(--p, 63) 100; } }
.w.on { opacity: 1; transform: none; }

.w-gl { grid-column: span 2; }
.gl2 { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0.25rem 1rem; }
.gl2 li { display: flex; justify-content: space-between; gap: 0.5rem; font-size: 0.78rem; margin: 0; opacity: 0; transform: translateY(6px); animation: win 0.4s forwards; animation-delay: calc(var(--d, 0s) + 0.4s + var(--i) * 0.12s); }
.gl2 li span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gl2 b.up { color: var(--lime); } .gl2 b.dn { color: var(--amber); }
@media (prefers-reduced-motion: reduce) { .gl2 li { animation: none; opacity: 1; transform: none; } }

/* hidden gems panel + layout with six panels; no overlapping text anywhere */
.panels { grid-template-columns: 1fr 1fr; grid-template-rows: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr); }
.pane.look { grid-column: auto; }
.pane .spots { grid-template-columns: 1fr; }
@media (min-width: 1900px) { .pane .spots { grid-template-columns: 1fr 1fr; } }
.pane.gems { background: linear-gradient(160deg, rgba(255,179,64,0.08), rgba(255,255,255,0.035) 50%); }
.pane.gems .spot { border-color: rgba(255,179,64,0.35); background: linear-gradient(160deg, rgba(255,179,64,0.14), rgba(255,255,255,0.03) 60%); }
.row .sym { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.row { grid-template-columns: 3.8rem minmax(6rem, 10rem) minmax(0, 1fr) auto; }
.pane .row { grid-template-columns: 3.4rem minmax(5rem, 9rem) minmax(0, 1fr) auto; }
.gl .row { grid-template-columns: 3.2rem minmax(0, 1fr) auto; }
.calgrid .day { overflow: hidden; }
.calgrid .more { position: absolute; right: 2px; bottom: 1px; font-size: 0.55rem; line-height: 1; }
.calgrid .marks { max-width: 70%; }
.spot .why li, .spot .what, .spot .who b { min-width: 0; }
.spot .who { min-width: 0; display: flex; flex-wrap: wrap; gap: 0.2rem 0.4rem; align-items: baseline; }
.spot .top .px { flex: 0 0 auto; }
.pane-head span { flex: 1 1 100%; }
.strip-row .ev .txt { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pane .strip-row .ev { padding: 0.6rem 0.7rem 0.7rem; }
.alertlist a, .brklist a { overflow-wrap: anywhere; }
.rail-right .coins { flex-wrap: wrap; }
@media (max-width: 1300px) { .panels { grid-template-rows: none; } }

/* ===== coin page as an app: five panels, no page scroll ===== */
.coin main { max-width: none; padding: 0; }
.capp { height: calc(100vh - 3.6rem); display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 0.6rem; padding: 0.7rem; box-sizing: border-box; }
.chead { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.3rem 1.2rem; padding: 0 0.3rem; }
.crumb { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--muted); text-decoration: none; font-weight: 600; font-size: 0.9rem; }
.crumb svg { width: 1em; height: 1em; }
.crumb:hover { color: var(--ink); }
.chead .sh-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 1rem; min-width: 0; }
.chead .title { margin: 0; }
.chead h1 { font-size: clamp(1.4rem, 2.4vw, 1.9rem); }
.chead .sumline { margin: 0; font-size: 0.85rem; }
.cgrid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.3fr) minmax(0, 0.9fr); grid-template-rows: minmax(0, 1fr) minmax(0, 1fr); gap: 0.6rem; min-height: 0; }
.cgrid .pane { min-height: 0; }
.cgrid .pane-body { display: flex; flex-direction: column; gap: 0.6rem; }
.pane.facts { grid-column: 1; grid-row: 1; }
.pane.whatp { grid-column: 2; grid-row: 1; }
.pane.newsp { grid-column: 3; grid-row: 1 / 3; }
.pane.roadp { grid-column: 2; grid-row: 2; }
.pane.recp { grid-column: 1; grid-row: 2; }
.cgrid .box { grid-column: auto; }
.cgrid .roadmap { margin: 0; padding: 0; background: none; border: 0; }
.cgrid .rm-head h2 { font-size: 1.05rem; }
.cgrid .pane-body h2 { border-top: 0; padding-top: 0.6rem; margin: 0.4rem 0 0.3rem; font-size: 1.05rem; }
.cgrid .pane-body h3 { font-size: 0.95rem; margin: 0.8rem 0 0.3rem; }
.cgrid .pane-body p, .cgrid .pane-body ul, .cgrid .pane-body ol { max-width: none; font-size: 0.9rem; }
.cgrid dl.facts { font-size: 0.9rem; }
.cgrid dl.facts .say, .cgrid dl.facts .big { font-size: 1rem; }
.cgrid table { font-size: 0.82rem; }
.cgrid table.log { min-width: 40rem; }
.cgrid .plist { padding: 0.6rem 0.7rem 0.4rem; }
.cgrid .timeline { max-height: 22vh; }
.cgrid .box.news .newslist.capped > li:nth-child(n+7) { display: none; }
.cgrid .box.news .newslist.capped.all > li:nth-child(n+7) { display: flex; }
@media (max-width: 1300px) { .capp { height: auto; } .cgrid { grid-template-columns: 1fr 1fr; grid-template-rows: none; } .pane.facts, .pane.whatp, .pane.newsp, .pane.roadp, .pane.recp { grid-column: auto; grid-row: auto; } .pane.roadp, .pane.recp { grid-column: 1 / -1; } .cgrid .pane { max-height: 36rem; } }
@media (max-width: 760px) { .cgrid { grid-template-columns: 1fr; } .pane.roadp, .pane.recp { grid-column: auto; } }
/* links that look like cards never underline */
a.spot, a.row, a.ev, a.coinlink, .crumb { text-decoration: none; }
a.spot:hover, a.row:hover, a.ev:hover { text-decoration: none; }
.spot .who b { overflow-wrap: anywhere; }

.box.sizecheck { border-color: rgba(255,179,64,0.35); }
table.cmp.mini { min-width: 0; font-size: 0.84rem; }
table.cmp.mini th, table.cmp.mini td { padding: 0.35rem 0.6rem 0.35rem 0; }
table.cmp.mini tr.worse td:nth-child(2) { color: var(--amber); font-weight: 700; }
.box.sizecheck .diff { font-size: 0.86rem; margin: 0.5rem 0 0.3rem; }
.box.sizecheck .closing { font-size: 0.9rem; margin: 0.4rem 0 0; padding: 0.5rem 0.7rem; border-radius: 10px; background: rgba(255,179,64,0.1); border: 1px solid rgba(255,179,64,0.25); }

/* plain-language pass */
.box.short { background: linear-gradient(160deg, rgba(34,230,255,0.12), rgba(124,92,255,0.08) 60%, rgba(255,255,255,0.04)); border-color: rgba(34,230,255,0.35); }
.box.short p:first-of-type { font-size: 1.02rem; line-height: 1.5; }
abbr[title] { text-decoration: underline dotted rgba(255,255,255,0.4); text-underline-offset: 0.15em; cursor: help; }
.star { font: 600 0.85rem var(--font); color: var(--ink); background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: 999px; padding: 0.35rem 0.8rem; cursor: pointer; margin-left: auto; transition: background 0.2s, border-color 0.2s; }
.star:hover { background: rgba(255,255,255,0.12); }
.star[aria-pressed="true"] { background: linear-gradient(100deg, var(--amber), var(--pink)); color: #fff; border-color: transparent; }
.pane.mine { background: linear-gradient(160deg, rgba(255,179,64,0.1), rgba(255,255,255,0.035) 60%); }
.pane-head span { font-size: 0.82rem; }

/* ===== coin page v8: the map on top, details below ===== */
.cgrid.v2 { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 0.9fr); grid-template-rows: minmax(0, 1.05fr) minmax(0, 1fr); }
.cgrid.v2 .pane.mapp { grid-column: 1 / 3; grid-row: 1; display: grid; place-items: center; padding: 0.4rem 0.6rem; }
.cgrid.v2 .pane.cmpp { grid-column: 3; grid-row: 1; }
.cgrid.v2 .pane.facts { grid-column: 1; grid-row: 2; }
.cgrid.v2 .pane.whatp { grid-column: 2; grid-row: 2; }
.cgrid.v2 .pane.newsp { grid-column: 3; grid-row: 2; }
.mapwrap { width: 100%; height: 100%; display: grid; grid-template-rows: minmax(0, 1fr) auto; place-items: center; }
.coinmap { width: 100%; height: 100%; max-height: 100%; }
.coinmap .spoke { stroke-width: 2; opacity: 0.55; stroke-dasharray: 300; stroke-dashoffset: 300; animation: draw 0.9s ease-out forwards; animation-delay: calc(0.2s + var(--i) * 0.12s); }
.coinmap .node { cursor: pointer; opacity: 0; animation: win 0.5s ease-out forwards; animation-delay: calc(0.5s + var(--i) * 0.12s); }
.coinmap .node rect { fill: rgba(16,18,44,0.92); stroke-width: 2; }
.coinmap .node:hover rect, .coinmap .node:focus-visible rect { fill: rgba(124,92,255,0.25); }
.coinmap .node:focus-visible { outline: 0; }
.coinmap .nl { fill: var(--muted); font: 700 12px var(--font); letter-spacing: 0.06em; text-transform: uppercase; }
.coinmap .nv { fill: var(--ink); font: 700 15px var(--font); }
.coinmap .core { fill: #0d0f24; stroke: url(#sg); stroke-width: 4; filter: drop-shadow(0 0 24px rgba(124,92,255,0.7)); }
.coinmap .core-t { fill: var(--ink); font: 800 28px var(--font); letter-spacing: 0.04em; }
.maphint { margin: 0; }
.pane.flash { box-shadow: 0 0 0 2px var(--pink), 0 0 30px rgba(255,79,163,0.5); transition: box-shadow 0.3s; }
.cmpgraph > b, .avail > b { display: block; font-size: 0.8rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin: 0.2rem 0 0.5rem; }
.cbars { list-style: none; padding: 0; margin: 0 0 0.5rem; max-width: none; display: grid; gap: 0.35rem; }
.cbars li { display: grid; grid-template-columns: 1.6rem 6.5rem minmax(0, 1fr) 4.2rem; gap: 0.5rem; align-items: center; margin: 0; font-size: 0.86rem; }
.cbars img, .cbars .nologo { width: 1.6rem; height: 1.6rem; border-radius: 50%; background: rgba(255,255,255,0.08); display: block; }
.cbars .nm { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbars .nm a { color: var(--ink); text-decoration: none; }
.cbars .nm a:hover { color: var(--accent); }
.cbars .bar { display: block; height: 0.9rem; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; }
.cbars .bar i { display: block; height: 100%; border-radius: 999px; background: var(--grad); background-size: 300% 100%; opacity: 0.75; }
.cbars li.me .bar i { opacity: 1; box-shadow: 0 0 14px rgba(124,92,255,0.8); }
.cbars li.me .nm { font-weight: 800; }
.cbars .v { text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; }
.avail { margin-top: 0.8rem; padding-top: 0.6rem; border-top: 1px solid var(--hair); }
.avail ul { list-style: none; padding: 0; margin: 0 0 0.3rem; display: flex; flex-wrap: wrap; gap: 0.35rem; max-width: none; }
.avail li { margin: 0; font-size: 0.84rem; padding: 0.3rem 0.7rem; border-radius: 999px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); }
.avail a { color: var(--ink); font-weight: 700; text-decoration: none; }
.avail a:hover { color: var(--accent); }
@media (max-width: 1300px) { .cgrid.v2 { grid-template-columns: 1fr 1fr; grid-template-rows: none; } .cgrid.v2 .pane.mapp { grid-column: 1 / -1; grid-row: auto; min-height: 26rem; } .cgrid.v2 .pane.cmpp, .cgrid.v2 .pane.facts, .cgrid.v2 .pane.whatp, .cgrid.v2 .pane.newsp { grid-column: auto; grid-row: auto; } }
@media (max-width: 760px) { .cgrid.v2 { grid-template-columns: 1fr; } .cgrid.v2 .pane.mapp { min-height: 22rem; } .coinmap .nl { font-size: 15px; } .coinmap .nv { font-size: 18px; } }
@media (prefers-reduced-motion: reduce) { .coinmap .spoke, .coinmap .node { animation: none; opacity: 1; stroke-dashoffset: 0; } }
/* the map always fits its panel */
.cgrid.v2 .pane.mapp { display: block; position: relative; padding: 0; }
.mapwrap { position: absolute; inset: 0; display: block; }
.coinmap { position: absolute; left: 0.4rem; right: 0.4rem; top: 0.3rem; bottom: 1.6rem; width: calc(100% - 0.8rem); height: calc(100% - 1.9rem); }
.maphint { position: absolute; left: 0; right: 0; bottom: 0.3rem; text-align: center; margin: 0; }
@media (max-width: 1300px) { .cgrid.v2 .pane.mapp { min-height: 30rem; } }

/* ===== coin page v9: the whole page is the map ===== */
.capp.v3 { grid-template-rows: auto minmax(0, 1fr); }
.mapfull { position: relative; min-height: 0; border-radius: 14px; background: radial-gradient(ellipse at center, rgba(124,92,255,0.14), rgba(255,255,255,0.02) 60%, transparent 80%); }
.coinmap.full { position: absolute; left: 0; right: 0; top: 0; bottom: 1.4rem; width: 100%; height: calc(100% - 1.6rem); }
.coinmap .fo { overflow: visible; opacity: 0; animation: win 0.5s ease-out forwards; animation-delay: calc(0.5s + var(--i) * 0.1s); }
.coinmap.full .spoke { stroke-dasharray: 700; stroke-dashoffset: 700; }
.coinmap.full .core { stroke-width: 5; }
.mnode { box-sizing: border-box; width: 100%; height: 100%; display: flex; flex-direction: column; gap: 0.15rem; padding: 0.55rem 0.7rem 0.5rem; border-radius: 16px; background: rgba(14,16,40,0.94); border: 2px solid var(--c, #7c5cff); box-shadow: 0 10px 30px rgba(0,0,0,0.45); color: var(--ink); font: 500 13px/1.3 var(--font); cursor: pointer; transition: transform 0.25s, box-shadow 0.25s, background 0.25s; overflow: hidden; }
.mnode:hover, .mnode:focus-visible { transform: translateY(-3px); background: rgba(24,26,60,0.98); box-shadow: 0 16px 40px rgba(0,0,0,0.55), 0 0 24px var(--c); outline: 0; }
.mnode .ml { font-size: 10px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: var(--c, var(--muted)); }
.mnode .mc { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.mnode .mc b { font-size: 17px; font-weight: 800; letter-spacing: -0.01em; line-height: 1.15; }
.mnode .mc b i { font-style: normal; font-size: 12px; }
.mnode .mc b .up { color: var(--lime); } .mnode .mc b .dn { color: var(--amber); }
.mnode .mc > span { color: var(--muted); font-size: 11.5px; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mnode .mc .spark { height: 26px; margin: 0.1rem 0; }
.mnode .mc .ring { align-self: flex-start; }
.mnode .mc .ring + span { -webkit-line-clamp: 3; }
.mnode .mc { flex-direction: column; }
.mnode .mc .ring { float: left; }
.mnode .mbar { display: flex; height: 6px; border-radius: 999px; overflow: hidden; background: rgba(255,255,255,0.08); margin: 0.15rem 0; }
.mnode .mbar i { display: block; height: 100%; }
.mnode .mbar .shipped { background: var(--cyan); } .mnode .mbar .open { background: #7c5cff; } .mnode .mbar .missed { background: var(--amber); }
.mnode .chips { display: flex; flex-wrap: wrap; gap: 0.25rem; }
.mnode .chips i { font-style: normal; font-size: 11px; padding: 0.15rem 0.5rem; border-radius: 999px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); white-space: nowrap; }
.mnode .chips i em { font-style: normal; color: var(--muted); }
.mnode .lbl { font-size: 10.5px; color: var(--muted); }
.mnode .rb { display: grid; grid-template-columns: 5.2rem 1fr; gap: 0.4rem; align-items: center; font-size: 11px; }
.mnode .rb span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mnode .rb i { display: block; height: 6px; border-radius: 999px; background: var(--grad); background-size: 300% 100%; opacity: 0.7; }
.mnode .rb.me i { opacity: 1; box-shadow: 0 0 8px rgba(124,92,255,0.8); }
.mnode .rb.me span { font-weight: 800; }
.mnode .more { align-self: flex-end; font-size: 10px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--c); opacity: 0.8; }
.sheet-title { display: flex; align-items: baseline; gap: 0.8rem; margin: 0 0 0.6rem; }
.sheet-title h1 { font-size: 1.5rem; margin: 0; }
.sheet-title p { margin: 0; }
.sheet .box { grid-column: auto; margin-bottom: 0.7rem; }
.sheet .cmpgraph, .sheet .avail { margin-bottom: 0.8rem; }
.sheet .roadmap { margin: 0; }
@media (max-width: 1100px) { .capp.v3 { height: auto; } .mapfull { min-height: 34rem; } .coinmap.full { position: relative; height: auto; } }
@media (prefers-reduced-motion: reduce) { .coinmap .fo { animation: none; opacity: 1; } }
.mnode .mc .supplyline { display: flex; gap: 0.5rem; align-items: center; }
/* v9 fixes */
.mnode .mc > span.rb { display: grid; -webkit-line-clamp: unset; overflow: visible; }
.mnode .mc > span.chips { display: flex; -webkit-line-clamp: unset; overflow: hidden; max-height: 3.2rem; }
.mnode .mc > span.lbl { display: block; }
.coin main { z-index: 6; }
@media (prefers-reduced-motion: reduce) { .coinmap.full .spoke { stroke-dashoffset: 0; animation: none; } }
/* ===== v10: topic visuals inside sheets, and a cleaner professional finish ===== */
.viz { margin: 0 0 1rem; padding: 1rem 1.1rem; border-radius: 16px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.09); }
.viz .vz-big { font-size: clamp(1.8rem, 3.4vw, 2.6rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1.05; margin: 0.2rem 0 0.3rem; max-width: none; }
.viz .vz-sub { margin: 0 0 0.4rem; max-width: 40rem; font-size: 0.95rem; }
.viz .vz-title { margin: 0 0 0.5rem; font-weight: 700; font-size: 0.95rem; max-width: none; }
.viz .legend { margin-top: 0.5rem; }
.viz.delivery, .viz.news { display: grid; grid-template-columns: minmax(14rem, 0.8fr) minmax(0, 1.4fr); gap: 1.2rem; align-items: start; }
.vz-left { display: flex; flex-direction: column; align-items: flex-start; }
.ycols { display: flex; align-items: flex-end; gap: 0.5rem; height: 12rem; padding-bottom: 2.2rem; position: relative; }
.ycol { flex: 1 1 0; display: flex; flex-direction: column; justify-content: flex-end; height: 100%; position: relative; min-width: 2.6rem; opacity: 0; animation: win 0.5s ease-out forwards; animation-delay: calc(0.15s + var(--i) * 0.1s); }
.ycol .stack { display: flex; flex-direction: column-reverse; height: 100%; width: 100%; border-radius: 6px 6px 0 0; overflow: hidden; background: rgba(255,255,255,0.04); }
.ycol .stack i { display: block; width: 100%; transform-origin: bottom; animation: growy 0.7s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(0.3s + var(--i) * 0.1s); transform: scaleY(0); }
.ycol .stack .shipped { background: var(--cyan); } .ycol .stack .open { background: #7c5cff; } .ycol .stack .missed { background: var(--amber); }
.ycol > span { position: absolute; top: 100%; left: 0; right: 0; text-align: center; font-size: 0.78rem; color: var(--muted); padding-top: 0.3rem; }
.ycol > em { position: absolute; top: 100%; left: 0; right: 0; text-align: center; font-size: 0.75rem; font-style: normal; color: var(--ink); padding-top: 1.3rem; font-weight: 700; }
@keyframes growy { to { transform: scaleY(1); } }
.viz.supply { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1.4rem; align-items: center; }
.dots { display: grid; grid-template-columns: repeat(10, 1.1rem); gap: 0.35rem; }
.dots i { display: block; width: 1.1rem; height: 1.1rem; border-radius: 50%; border: 2px solid rgba(255,255,255,0.35); box-sizing: border-box; opacity: 0; animation: win 0.25s ease-out forwards; animation-delay: calc(var(--i) * 0.012s); }
.dots i.out { background: var(--cyan); border-color: var(--cyan); }
.dots i.held { background: transparent; border-color: #a58cff; }
.pchart { width: 100%; height: 12rem; display: block; border-radius: 12px; }
.pchart polyline { stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw 1.6s ease-out forwards; }
.prow { display: flex; justify-content: space-between; font-size: 0.88rem; color: var(--muted); margin: 0.3rem 0 0.8rem; }
.gauge { margin-top: 0.6rem; }
.gbar { position: relative; height: 0.9rem; border-radius: 999px; background: rgba(255,255,255,0.08); margin: 1.6rem 0 0.4rem; }
.gbar i { display: block; height: 100%; border-radius: 999px; background: var(--grad); background-size: 300% 100%; width: 0; animation: bar 1.2s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: 0.3s; --w: attr(data-w); }
.gbar b { position: absolute; top: -1.5rem; transform: translateX(-50%); font-size: 0.8rem; white-space: nowrap; }
.cd { display: flex; gap: 1.2rem; align-items: center; margin-bottom: 0.8rem; }
.nextlist, .themelist, .venuelist { list-style: none; padding: 0; margin: 0; max-width: none; display: grid; gap: 0.35rem; }
.nextlist li, .venuelist li, .themelist li { display: grid; grid-template-columns: 7rem minmax(6rem, 1fr) 2fr; gap: 0.6rem; align-items: center; margin: 0; font-size: 0.88rem; opacity: 0; animation: win 0.4s ease-out forwards; animation-delay: calc(0.2s + var(--i) * 0.08s); }
.themelist li { grid-template-columns: 7rem 1fr 2.5rem; }
.venuelist li { grid-template-columns: 9rem 1fr 2fr; }
.nextlist .bar, .themelist .bar, .venuelist .bar { display: block; height: 0.6rem; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; }
.nextlist .bar i, .themelist .bar i, .venuelist .bar i { display: block; height: 100%; border-radius: 999px; background: var(--grad); background-size: 300% 100%; transform-origin: left; transform: scaleX(0); animation: growx 0.8s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(0.3s + var(--i) * 0.08s); }
@keyframes growx { to { transform: scaleX(1); } }
.nextlist .when { font-weight: 700; } .nextlist em, .venuelist em, .themelist em { font-style: normal; color: var(--muted); font-size: 0.82rem; }
.nextlist .txt { grid-column: 3; }
.venuelist .nm a { color: var(--ink); font-weight: 700; text-decoration: none; }
.bubbles { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 0.6rem; padding: 0.6rem 0 0; }
.bub { --d: calc(3rem + var(--s) * 8rem); width: var(--d); height: var(--d); border-radius: 50%; background: radial-gradient(circle at 35% 30%, rgba(124,92,255,0.6), rgba(34,230,255,0.25) 70%, rgba(255,255,255,0.05)); border: 2px solid rgba(255,255,255,0.18); display: grid; place-items: center; text-align: center; transform: scale(0); animation: pop 0.6s cubic-bezier(.2,1.4,.4,1) forwards; animation-delay: calc(0.15s + var(--i) * 0.07s); }
.bub.me { background: radial-gradient(circle at 35% 30%, rgba(255,79,163,0.75), rgba(255,179,64,0.35) 70%, rgba(255,255,255,0.05)); border-color: var(--pink); box-shadow: 0 0 30px rgba(255,79,163,0.5); }
.bub a { color: var(--ink); text-decoration: none; display: grid; gap: 0.05rem; font-size: clamp(0.62rem, calc(0.55rem + var(--s) * 0.45rem), 1rem); line-height: 1.1; padding: 0.2rem; }
.bub a span { font-weight: 800; } .bub a em { font-style: normal; color: var(--muted); font-size: 0.85em; }
.daycols { display: flex; align-items: flex-end; gap: 3px; height: 8rem; }
.daycols i { flex: 1 1 0; display: block; background: var(--grad); background-size: 300% 100%; border-radius: 3px 3px 0 0; min-height: 2px; transform-origin: bottom; transform: scaleY(0); animation: growy 0.6s ease-out forwards; animation-delay: calc(var(--i) * 0.03s); }
.testlist { list-style: none; padding: 0; margin: 0.4rem 0 0.6rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.7rem; max-width: none; }
.testlist li { margin: 0; padding: 0.9rem 1rem; border-radius: 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.1); display: grid; gap: 0.3rem; opacity: 0; animation: win 0.45s ease-out forwards; animation-delay: calc(0.2s + var(--i) * 0.25s); }
.testlist li i { font-style: normal; width: 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; font-weight: 800; background: rgba(255,255,255,0.08); color: var(--muted); }
.testlist li.pass i { background: linear-gradient(120deg, var(--cyan), #7c5cff); color: #fff; }
.testlist li.pass { border-color: rgba(34,230,255,0.4); }
.testlist li b { font-size: 1rem; } .testlist li span { font-size: 0.86rem; color: var(--muted); }
.mnode .ticks { display: flex; gap: 0.3rem; flex-wrap: wrap; }
.mnode .ticks i { font-style: normal; font-size: 11px; padding: 0.15rem 0.5rem; border-radius: 999px; border: 1px solid rgba(255,255,255,0.15); color: var(--muted); }
.mnode .ticks i.on { border-color: var(--cyan); color: var(--cyan); }
.mnode .mc > span.ticks, .mnode .mc > span.supplyline { display: flex; -webkit-line-clamp: unset; overflow: visible; }
.mnode .supplyline { align-items: center; gap: 0.5rem; }
.mnode .supplyline > span { font-size: 12px; color: var(--muted); }
.mnode .mc > span { -webkit-line-clamp: 3; }
.mnode .mc b { font-size: 18px; }
@media (max-width: 800px) { .viz.delivery, .viz.news, .viz.supply { grid-template-columns: 1fr; } .testlist { grid-template-columns: 1fr; } .nextlist li, .venuelist li { grid-template-columns: 1fr; } }
@media (prefers-reduced-motion: reduce) { .ycol, .ycol .stack i, .dots i, .pchart polyline, .gbar i, .nextlist li, .themelist li, .venuelist li, .nextlist .bar i, .themelist .bar i, .venuelist .bar i, .bub, .daycols i, .testlist li { animation: none; opacity: 1; transform: none; stroke-dashoffset: 0; width: var(--w, auto); } .gbar i { width: attr(data-w); } }

/* professional finish: sentence-case labels, calmer glows, no tracked caps */
.wt, .mnode .ml, .box > b, .box .sub, .brk-when, .tapcue, .kicker, .mnode .more, .cmpgraph > b, .avail > b, .cue, .alertlist .meta, .newslist .meta, .cal .when, .strip-row .ev i, .tag, .pill, .mnode .ml { text-transform: none; letter-spacing: 0; }
.box > b, .box .sub, .cmpgraph > b, .avail > b { font-size: 0.85rem; font-weight: 700; color: var(--muted); }
.mnode .ml { font-size: 11px; font-weight: 700; }
.mnode .more { font-size: 11px; }
.tag, .pill { font-weight: 700; }
.kicker { font-size: 0.95rem; font-weight: 600; }
.coinmap .core { filter: drop-shadow(0 0 14px rgba(124,92,255,0.45)); }
.mnode:hover, .mnode:focus-visible { box-shadow: 0 14px 34px rgba(0,0,0,0.5), 0 0 14px var(--c); }
.start { box-shadow: 0 8px 26px rgba(124,92,255,0.28); }
.start svg { display: none; }
.btn svg { display: none; }

.bub { flex: 0 0 auto; }
.mnode .mc > span { -webkit-line-clamp: 3; }

.daycols { width: 100%; align-self: stretch; }
.vz-left > * { max-width: 100%; }

.bub { flex: 0 0 var(--d); min-width: var(--d); min-height: var(--d); aspect-ratio: 1; }
.bubbles { align-items: center; }

/* ===== v11: sheets that fit the screen; bars with differences; record tiles ===== */
.sheet-in { height: 96vh; max-height: 96vh; overflow: hidden; }
.sheet-body { flex: 1 1 auto; min-height: 0; }
.sh2 { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr); gap: 0.9rem; min-height: 0; height: 100%; }
.sh-left, .sh-right { min-height: 0; overflow-y: auto; scrollbar-width: thin; padding-right: 0.2rem; }
.sh-left .viz { margin-bottom: 0.8rem; }
.sh-right .box { margin-bottom: 0.7rem; }
.sh-right .roadmap.plain { padding: 0; background: none; border: 0; margin-bottom: 0.6rem; }
.sheet-body { display: flex; flex-direction: column; }
.sheet-body > .sh2 { flex: 1 1 auto; }
@media (max-width: 900px) { .sheet-in { height: auto; max-height: 96vh; overflow-y: auto; } .sh2 { grid-template-columns: 1fr; height: auto; } .sh-left, .sh-right { overflow: visible; } }
.cbars2 { list-style: none; padding: 0; margin: 0.3rem 0 0.6rem; max-width: none; display: grid; gap: 0.3rem; }
.cbars2 li { display: grid; grid-template-columns: 1.5rem 6.5rem minmax(4rem, 1fr) 4.4rem 9rem 7rem 4.5rem 7rem; gap: 0.5rem; align-items: center; margin: 0; font-size: 0.82rem; opacity: 0; animation: win 0.4s ease-out forwards; animation-delay: calc(0.15s + var(--i, 0) * 0.08s); }
.cbars2 li.head { opacity: 1; animation: none; color: var(--muted); font-size: 0.72rem; font-weight: 700; border-bottom: 1px solid var(--hair); padding-bottom: 0.3rem; }
.cbars2 img, .cbars2 .nologo { width: 1.5rem; height: 1.5rem; border-radius: 50%; background: rgba(255,255,255,0.08); display: block; }
.cbars2 .nm { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbars2 .nm a { color: var(--ink); text-decoration: none; }
.cbars2 .bar { display: block; height: 0.9rem; border-radius: 999px; background: rgba(255,255,255,0.06); overflow: hidden; }
.cbars2 .bar i { display: block; height: 100%; border-radius: 999px; background: var(--grad); background-size: 300% 100%; opacity: 0.75; transform-origin: left; transform: scaleX(0); animation: growx 0.8s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(0.3s + var(--i, 0) * 0.08s); }
.cbars2 li.me .bar i { opacity: 1; box-shadow: 0 0 12px rgba(124,92,255,0.8); }
.cbars2 li.me { background: rgba(124,92,255,0.12); border-radius: 8px; }
.cbars2 li.me .nm { font-weight: 800; }
.cbars2 .v { text-align: right; color: var(--muted); font-variant-numeric: tabular-nums; }
.cbars2 .d { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbars2 li.me .d { color: var(--ink); }
@media (max-width: 1100px) { .cbars2 li { grid-template-columns: 1.5rem 6rem 1fr 4.4rem; } .cbars2 .d { display: none; } }
.tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.tile { padding: 0.8rem 0.9rem; border-radius: 14px; background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.1); opacity: 0; animation: win 0.4s ease-out forwards; animation-delay: calc(0.1s + var(--i) * 0.1s); min-width: 0; }
.tile b { display: block; font-size: 0.8rem; color: var(--muted); margin-bottom: 0.3rem; }
.tile p { margin: 0; font-size: 0.95rem; line-height: 1.4; max-width: none; }
.tile blockquote { font-size: 0.85rem; margin: 0.4rem 0 0.2rem; }
.tile .src { font-size: 0.8rem; color: var(--muted); }
.tile:first-child { grid-column: 1 / -1; }
@media (prefers-reduced-motion: reduce) { .cbars2 li, .cbars2 .bar i, .tile { animation: none; opacity: 1; transform: none; } }

/* sheets fit their content, never taller than the screen */
.sheet-in { height: auto; max-height: 96vh; }
.sh2 { height: auto; max-height: calc(96vh - 5.6rem); }
.sh-left, .sh-right { max-height: calc(96vh - 5.6rem); }
/* header: mark, name, quiet tagline, plain nav */
header.site .name { display: inline-flex; align-items: center; gap: 0.6rem; }
header.site .name .mark { width: 1.6rem; height: 1.6rem; }
header.site .name small { font-size: 0.78rem; font-weight: 500; color: var(--muted); letter-spacing: 0; margin-left: 0.2rem; padding-left: 0.8rem; border-left: 1px solid var(--hair); }
header.site nav a { font-weight: 600; color: var(--muted); }
header.site nav a:hover { color: var(--ink); text-decoration: none; }
header.site nav a.go { background: none; color: var(--ink); padding: 0.4rem 0.9rem; border: 1px solid rgba(255,255,255,0.18); border-radius: 999px; }
header.site nav a.go:hover { background: rgba(255,255,255,0.08); }
@media (max-width: 600px) { header.site .name small { display: none; } }

/* ===== v12: a simple dashboard of tiles; a simple front page ===== */
.panel-page main { padding: 0; }
.dash2 { max-width: 90rem; margin: 0 auto; padding: 1rem var(--pad) 1.2rem; min-height: calc(100vh - 3.6rem); display: flex; flex-direction: column; gap: 0.9rem; }
.dtiles { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.9rem; flex: 1 1 auto; align-content: start; }
.dtile { display: flex; flex-direction: column; gap: 0.35rem; padding: 0.95rem 1.05rem 0.9rem; border-radius: 16px; background: rgba(255,255,255,0.045); border: 1px solid rgba(255,255,255,0.1); cursor: pointer; min-height: 13rem; transition: transform 0.25s, border-color 0.25s, box-shadow 0.25s, background 0.25s; }
.dtile:hover, .dtile:focus-visible { transform: translateY(-3px); border-color: rgba(255,255,255,0.28); background: rgba(255,255,255,0.065); box-shadow: 0 14px 40px rgba(0,0,0,0.4); outline: 0; }
.dtile .dt-head { display: flex; justify-content: space-between; align-items: baseline; }
.dtile .dt-head b { font-size: 1.05rem; }
.dtile .dt-head em { font-style: normal; font-size: 0.8rem; font-weight: 700; color: var(--muted); background: rgba(255,255,255,0.08); border-radius: 999px; padding: 0.1rem 0.55rem; }
.dtile .dt-sub { margin: 0 0 0.3rem; font-size: 0.82rem; color: var(--muted); line-height: 1.35; max-width: none; }
.dt-rows { display: flex; flex-direction: column; gap: 0.3rem; flex: 1 1 auto; }
.drow { display: grid; grid-template-columns: minmax(0, 7.5rem) minmax(0, 1fr) auto; gap: 0.5rem; align-items: baseline; font-size: 0.86rem; padding: 0.35rem 0; border-top: 1px solid rgba(255,255,255,0.07); }
.drow:first-child { border-top: 0; }
.drow .nm { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.drow .ln { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.drow .ln.big { grid-column: 1 / 3; color: var(--ink); white-space: normal; font-weight: 600; line-height: 1.3; }
.drow .src { color: var(--muted); font-size: 0.78rem; white-space: nowrap; }
.dtile .more { align-self: flex-end; font-size: 0.78rem; font-weight: 700; color: var(--accent); }
.dtile.mine { background: linear-gradient(160deg, rgba(255,179,64,0.12), rgba(255,255,255,0.04) 60%); border-color: rgba(255,179,64,0.35); }
.dtile.mine .rows { gap: 0.3rem; }
.dtile.mine .row { padding: 0.35rem 0.5rem; font-size: 0.85rem; }
.dash2 .topbar { justify-content: center; }
.dash2 .finder { flex: 1 1 26rem; max-width: 44rem; }
.dash2 .morelinks { margin-top: auto; }
@media (max-width: 1200px) { .dtiles { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .dtiles { grid-template-columns: 1fr; } .dash2 { min-height: 0; } }
.cal2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.month2 h3 { margin: 0 0 0.4rem; font-size: 1rem; }
.month2 .calgrid .day { font-size: 0.78rem; }
.dayitems { margin-top: 0.8rem; }
.dayset h4 { margin: 0 0 0.4rem; font-size: 0.95rem; }
.dayset ul { list-style: none; padding: 0; margin: 0; }
.dayset li { display: grid; grid-template-columns: auto auto 1fr; gap: 0.5rem; align-items: baseline; padding: 0.4rem 0; border-top: 1px solid var(--hair); font-size: 0.88rem; }
.dayset .txt { grid-column: 1 / -1; color: var(--muted); }
.strip-row.vertical { grid-auto-flow: row; grid-auto-columns: auto; grid-template-columns: 1fr; overflow: visible; }
@media (max-width: 800px) { .cal2 { grid-template-columns: 1fr; } }
/* front page v3: one sentence and one real picture */
.intro.v3 .intro-in { grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr); align-items: center; gap: 2rem; padding-top: 4rem; }
.intro.v3 h1 { font-size: clamp(2.2rem, 4.2vw, 3.6rem); }
.intro.v3 .lede { max-width: 30rem; }
.demo { position: relative; }
.demo-map { position: relative; aspect-ratio: 1700 / 940; width: 100%; }
.demo-map .coinmap.full { position: absolute; inset: 0; width: 100%; height: 100%; }
.demo .mnode { cursor: default; pointer-events: none; }
.demo .mnode .more { display: none; }
.demo > p { text-align: center; margin: 0.4rem 0 0; }
@media (max-width: 1000px) { .intro.v3 .intro-in { grid-template-columns: 1fr; } }

/* tile rows: whole words, wrapping, no ellipsis */
.drow { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "nm px" "ln ln"; gap: 0.1rem 0.6rem; }
.drow .nm { grid-area: nm; white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.25; }
.drow .px { grid-area: px; }
.drow .ln { grid-area: ln; white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.3; }
.drow .ln:empty { display: none; }
.drow .ln.big { grid-area: nm; }
.drow .src { grid-area: px; }
.dtile.about .dt-sub { font-size: 0.9rem; color: var(--ink); opacity: 0.9; }

/* ===== v13: livelier start and dashboard, no logo mark ===== */
header.site .name .mark { display: none; }
.intro.v3 { position: relative; overflow: hidden; }
.intro.v3 .stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.intro.v3 .glow { position: absolute; left: 70%; top: 50%; width: 80vmax; height: 80vmax; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(124,92,255,0.26), rgba(255,79,163,0.1) 45%, transparent 70%); filter: blur(12px); pointer-events: none; animation: breathe 9s ease-in-out infinite; }
.intro.v3 .glow.two { left: 15%; top: 80%; width: 60vmax; height: 60vmax; background: radial-gradient(closest-side, rgba(34,230,255,0.16), transparent 70%); animation-delay: -4s; }
@keyframes breathe { 0%, 100% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-48%, -52%) scale(1.08); } }
.intro.v3 .intro-in { position: relative; z-index: 1; }
.tries { display: flex; flex-wrap: wrap; align-items: center; gap: 0.4rem; margin: 1.2rem 0 0; }
.tries .chip { text-decoration: none; }
.demo-map { animation: floaty 7s ease-in-out infinite; }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
.demo .coinmap .core { animation: corepulse 3.6s ease-in-out infinite; }
@keyframes corepulse { 0%, 100% { filter: drop-shadow(0 0 12px rgba(124,92,255,0.45)); } 50% { filter: drop-shadow(0 0 28px rgba(255,79,163,0.7)); } }
.dtile { position: relative; overflow: hidden; opacity: 0; transform: translateY(14px); animation: win 0.55s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: calc(0.08s + var(--i, 0) * 0.07s); }
.dtile::before { content: ""; position: absolute; left: 1.05rem; right: 1.05rem; top: 0; height: 3px; border-radius: 0 0 3px 3px; background: var(--c, #7c5cff); opacity: 0.9; }
.dtile::after { content: ""; position: absolute; right: -35%; top: -45%; width: 70%; height: 90%; background: radial-gradient(closest-side, color-mix(in srgb, var(--c, #7c5cff) 35%, transparent), transparent); opacity: 0; transition: opacity 0.4s; pointer-events: none; }
.dtile:hover::after { opacity: 1; }
.dtile:hover, .dtile:focus-visible { border-color: var(--c, #7c5cff); box-shadow: 0 14px 40px rgba(0,0,0,0.4), 0 0 24px color-mix(in srgb, var(--c, #7c5cff) 35%, transparent); }
.dtile .more { color: var(--c, var(--accent)); }
.dtile .dt-head em { border: 1px solid color-mix(in srgb, var(--c, #7c5cff) 50%, transparent); background: color-mix(in srgb, var(--c, #7c5cff) 14%, transparent); color: var(--ink); }
.px .up, .gl .row .line .up, .drow .px .up { text-shadow: 0 0 10px rgba(163,255,92,0.35); }
.px .dn, .drow .px .dn { text-shadow: 0 0 10px rgba(255,179,64,0.3); }
.dash2 { position: relative; }
@media (prefers-reduced-motion: reduce) { .dtile { animation: none; opacity: 1; transform: none; } .demo-map, .demo .coinmap .core, .intro.v3 .glow { animation: none; } }

/* no empty space: tiles fill the screen; sheet columns balanced and stretched */
.dtiles { grid-template-rows: repeat(2, minmax(0, 1fr)); flex: 1 1 auto; align-content: stretch; }
.dtile { min-height: 0; }
.dt-rows { overflow: hidden; }
.dtile .dt-sub { flex: 0 0 auto; }
.sh2 { align-items: stretch; }
.sh-left, .sh-right { display: flex; flex-direction: column; gap: 0.7rem; }
.sh-left .viz, .sh-right .box { margin: 0; }
.sh-left > :last-child, .sh-right > :last-child { flex: 1 1 auto; }
.sheet-in { padding-bottom: 1rem; }
@media (max-width: 1200px) { .dtiles { grid-template-rows: none; } }
/* the dashboard never scrolls: cap to the viewport; rows that do not fit fade at the tile edge */
@media (min-width: 1201px) { .dash2 { height: calc(100vh - 3.6rem); min-height: 0; overflow: hidden; } .dtiles { min-height: 0; } .dtile { overflow: hidden; } .dt-rows { position: relative; min-height: 0; overflow: hidden; mask: linear-gradient(#000 calc(100% - 1.6rem), transparent); -webkit-mask: linear-gradient(#000 calc(100% - 1.6rem), transparent); } .dtile .more { position: relative; z-index: 1; } }
/* ===== v14: eye candy up front, graphics in every tile ===== */
.intro.v4 { position: relative; min-height: 100vh; overflow: hidden; display: grid; grid-template-rows: auto minmax(0, 1fr); }
.intro.v4 .stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.intro.v4 .glow { position: absolute; left: 50%; top: 62%; width: 90vmax; height: 70vmax; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(124,92,255,0.28), rgba(255,79,163,0.1) 45%, transparent 70%); filter: blur(14px); pointer-events: none; animation: breathe 9s ease-in-out infinite; }
.intro.v4 .glow.two { left: 20%; top: 30%; width: 50vmax; height: 50vmax; background: radial-gradient(closest-side, rgba(34,230,255,0.18), transparent 70%); animation-delay: -4s; }
.intro-top { position: relative; z-index: 1; text-align: center; max-width: 64rem; margin: 0 auto; padding: 4.6rem var(--pad) 0.6rem; }
.intro-top h1 { font-size: clamp(2.2rem, 4.4vw, 3.8rem); line-height: 1.02; letter-spacing: -0.035em; margin: 0 0 0.8rem; }
.intro-top .lede { max-width: 46rem; margin: 0 auto 1rem; color: var(--muted); font-size: clamp(1rem, 1.35vw, 1.2rem); }
.intro-top .cta-row { justify-content: center; }
.intro-top .tries { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin: 0; }
.demo.big { position: relative; z-index: 1; min-height: 0; padding: 0 var(--pad) 0.6rem; display: grid; grid-template-rows: minmax(0, 1fr) auto; }
.demo.big .demo-map { position: relative; height: 100%; min-height: 0; aspect-ratio: auto; max-width: 118rem; width: 100%; margin: 0 auto; animation: floaty 8s ease-in-out infinite; }
.demo.big .demo-map .coinmap.full { position: absolute; inset: 0; width: 100%; height: 100%; }
.demo.big > p { text-align: center; margin: 0.2rem 0 0; }
.demo .coinmap .spoke { stroke-dasharray: 7 9 !important; stroke-dashoffset: 0 !important; animation: flow 1.1s linear infinite !important; opacity: 0.85; }
@keyframes flow { to { stroke-dashoffset: -16; } }
.demo .coinmap .core { animation: corepulse 3.2s ease-in-out infinite; }
@media (max-width: 900px) { .intro.v4 { min-height: 0; display: block; } .demo.big .demo-map { height: auto; aspect-ratio: 1700 / 940; } .intro-top { padding-top: 5rem; } }
@media (prefers-reduced-motion: reduce) { .demo .coinmap .spoke, .demo.big .demo-map { animation: none !important; } }
.drow.hasviz { grid-template-areas: "nm px" "viz viz" "ln ln"; }
.drow .mb { grid-area: viz; display: block; height: 0.45rem; border-radius: 999px; background: rgba(255,255,255,0.07); overflow: hidden; margin: 0.15rem 0 0.05rem; }
.drow .mb i { display: block; height: 100%; border-radius: 999px; background: var(--grad); background-size: 300% 100%; transform-origin: left; transform: scaleX(0); animation: growx 0.9s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: 0.4s; }
.drow .mb.cyan i { background: linear-gradient(90deg, var(--cyan), #7c5cff); }
.drow .mb.amber i { background: linear-gradient(90deg, var(--amber), var(--pink)); }
.drow .mb.violet i { background: linear-gradient(90deg, #7c5cff, var(--pink)); }
.drow .mb.pink i { background: linear-gradient(90deg, var(--pink), var(--amber)); }
.drow.news { grid-template-areas: "nm px" "viz viz"; }
.drow.news .mb { margin-top: 0.3rem; }
.drow .ticks3 { grid-area: viz; display: flex; gap: 0.3rem; margin: 0.15rem 0; }
.drow .ticks3 i { display: block; width: 1.3rem; height: 0.45rem; border-radius: 999px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); }
.drow .ticks3 i.on { background: linear-gradient(90deg, var(--cyan), #7c5cff); border-color: transparent; box-shadow: 0 0 8px rgba(34,230,255,0.5); }
.drow .dv { grid-area: viz; display: grid; grid-template-columns: 1fr 1fr; gap: 2px; height: 0.5rem; margin: 0.15rem 0; }
.drow .dv .l, .drow .dv .r { position: relative; background: rgba(255,255,255,0.06); border-radius: 999px; overflow: hidden; }
.drow .dv .l i { position: absolute; right: 0; top: 0; bottom: 0; background: linear-gradient(90deg, var(--amber), rgba(255,179,64,0.5)); transform-origin: right; transform: scaleX(0); animation: growx 0.8s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: 0.4s; border-radius: 999px; }
.drow .dv .r i { position: absolute; left: 0; top: 0; bottom: 0; background: linear-gradient(90deg, rgba(163,255,92,0.5), var(--lime)); transform-origin: left; transform: scaleX(0); animation: growx 0.8s cubic-bezier(.2,.8,.2,1) forwards; animation-delay: 0.4s; border-radius: 999px; }
.drow .px i:not(.up):not(.dn) { color: var(--muted); font-weight: 600; font-style: normal; }
.steps3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; margin: 0.4rem 0 0.6rem; position: relative; }
.steps3::before { content: ""; position: absolute; left: 12%; right: 12%; top: 1.1rem; height: 2px; background: repeating-linear-gradient(90deg, rgba(255,255,255,0.35) 0 6px, transparent 6px 12px); animation: flowbg 1.2s linear infinite; }
@keyframes flowbg { to { background-position: 12px 0; } }
.steps3 .st { position: relative; display: grid; justify-items: center; text-align: center; gap: 0.2rem; opacity: 0; animation: win 0.5s ease-out forwards; animation-delay: calc(0.3s + var(--i) * 0.25s); }
.steps3 .st i { font-style: normal; width: 2.2rem; height: 2.2rem; border-radius: 50%; display: grid; place-items: center; font-weight: 800; background: linear-gradient(120deg, #7c5cff, var(--pink)); color: #fff; box-shadow: 0 0 16px rgba(124,92,255,0.6); }
.steps3 .st b { font-size: 0.9rem; }
.steps3 .st span { font-size: 0.76rem; color: var(--muted); line-height: 1.3; }
@media (prefers-reduced-motion: reduce) { .drow .mb i, .drow .dv i, .steps3 .st, .steps3::before { animation: none; transform: none; opacity: 1; } }
@media (min-width: 901px) { .intro.v4 { height: 100vh; min-height: 0; } .demo.big { min-height: 0; } .demo.big .demo-map { min-height: 0; } }

/* ===== v15: the dashboard is a map too; start-page map stretches ===== */
.intro.v4 { align-items: stretch; }
.demo.big { height: 100%; }
.dash3 { height: calc(100vh - 3.6rem); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 0.4rem; padding: 0.8rem var(--pad) 0.5rem; box-sizing: border-box; overflow: hidden; }
.dash3 .topbar { justify-content: center; }
.dash3 .finder { flex: 1 1 26rem; max-width: 44rem; }
.dashwrap { position: relative; min-height: 0; }
.dashwrap .coinmap.full { position: absolute; inset: 0; width: 100%; height: 100%; }
.dashwrap .dtile.mine { position: absolute; left: 1rem; bottom: 0.5rem; width: 18rem; max-height: 12rem; overflow: auto; animation: none; opacity: 1; transform: none; min-height: 0; }
.dash3 #results { min-height: 0; }
.mnode.dash { padding: 0.65rem 0.8rem 0.55rem; }
.mnode.dash .ml { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: var(--ink); }
.mnode.dash .ml em { font-style: normal; font-size: 11px; font-weight: 700; color: var(--c); background: rgba(255,255,255,0.08); border-radius: 999px; padding: 0.05rem 0.5rem; }
.mnode.dash .mc { gap: 0.1rem; overflow: hidden; }
.mnode.dash .drow { font-size: 12px; padding: 0.28rem 0; grid-template-columns: minmax(0, 1fr) auto; }
.mnode.dash .drow .nm { font-size: 12.5px; }
.mnode.dash .drow .ln { font-size: 11px; -webkit-line-clamp: 1; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.mnode.dash .drow .ln.big { font-size: 12px; -webkit-line-clamp: 2; }
.mnode.dash .drow .mb { height: 0.35rem; }
.mnode.dash .drow .ticks3 i { width: 1rem; height: 0.35rem; }
.mnode.dash .drow .dv { height: 0.4rem; }
.mnode.dash .drow .px { font-size: 11.5px; }
.steps3.tiny { margin: 0.3rem 0 0.2rem; gap: 0.3rem; }
.steps3.tiny .st i { width: 1.7rem; height: 1.7rem; font-size: 0.8rem; }
.steps3.tiny .st b { font-size: 0.8rem; }
.steps3.tiny::before { top: 0.85rem; }
.corefo { overflow: visible; }
.dcore { box-sizing: border-box; width: 100%; height: 100%; border-radius: 999px; background: rgba(14,16,40,0.94); border: 3px solid transparent; background-clip: padding-box; box-shadow: 0 0 0 3px rgba(124,92,255,0.65), 0 0 40px rgba(124,92,255,0.45); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.1rem; text-align: center; color: var(--ink); font: 500 14px/1.3 var(--font); padding: 0.6rem 1.2rem; animation: corepulse 3.6s ease-in-out infinite; }
.dcore b { font-size: 1.5rem; font-weight: 800; letter-spacing: -0.02em; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.dcore .date { font-weight: 700; font-size: 1rem; }
.coinmap.dash .spoke { stroke-dasharray: 7 9 !important; stroke-dashoffset: 0 !important; animation: flow 1.3s linear infinite !important; opacity: 0.7; }
@media (max-width: 1100px) { .dash3 { height: auto; overflow: visible; } .dashwrap .coinmap.full { position: relative; height: auto; aspect-ratio: 1800 / 1000; } .dashwrap .dtile.mine { position: static; width: auto; margin-top: 0.8rem; } }
@media (max-width: 700px) { .dashwrap .coinmap.full { display: none; } .dashwrap::after { content: "Turn your phone sideways, or use the search above. The map needs a wider screen."; display: block; color: var(--muted); padding: 1rem 0; text-align: center; } }
@media (prefers-reduced-motion: reduce) { .coinmap.dash .spoke, .dcore { animation: none !important; } }

.mnode.dash .drow .ln { -webkit-line-clamp: 2; }
.mnode.dash .drow .ln.big { -webkit-line-clamp: 2; }
.mnode.dash .drow b, .mnode.dash .drow .ln b { font-size: inherit; font-weight: 700; letter-spacing: 0; line-height: inherit; }
.mnode.dash .drow { padding: 0.22rem 0; }
.demo .mnode { font-size: 15px; padding: 0.6rem 0.8rem; }
.demo .mnode .ml { font-size: 12px; }
.demo .mnode .mc b { font-size: 20px; }
.demo .mnode .mc > span { font-size: 13px; }
.demo .mnode .chips i, .demo .mnode .ticks i, .demo .mnode .rb { font-size: 12px; }
.mnode.dash .drow .ln.big { -webkit-line-clamp: 3; }

/* ===== v16: maps on a tidy grid ===== */
.coinmap.grid .spoke { stroke-width: 2; }
.mnode.big { padding: 0.85rem 1rem 0.7rem; font-size: 14px; border-radius: 18px; }
.mnode.big .ml { font-size: 12.5px; }
.mnode.big .mc b { font-size: 21px; }
.mnode.big .mc > span { font-size: 13px; -webkit-line-clamp: 4; }
.mnode.big .mc .spark { height: 40px; }
.mnode.big .chips i, .mnode.big .ticks i { font-size: 12px; }
.mnode.big .rb { font-size: 12.5px; grid-template-columns: 6.5rem 1fr; }
.mnode.big .mbar { height: 8px; }
.mnode.big .more { font-size: 11.5px; }
.mnode.dash.big { padding: 0.7rem 0.9rem 0.55rem; }
.mnode.dash.big .ml { font-size: 14px; }
.mnode.dash.big .drow { font-size: 13px; padding: 0.3rem 0; }
.mnode.dash.big .drow .nm { font-size: 13.5px; }
.mnode.dash.big .drow .ln { font-size: 12px; }
.mnode.dash.big .drow .ln.big { font-size: 13px; }
.mnode.dash.big .drow .px { font-size: 12.5px; }
.dcore { border-radius: 28px; animation: none; box-shadow: 0 0 0 3px rgba(124,92,255,0.55), 0 0 50px rgba(124,92,255,0.35); }
.dcore b { font-size: 2rem; }
.dcore .date { font-size: 1.15rem; }
.steps3.tiny .st span { display: block; font-size: 0.72rem; }
.intro-top { padding-top: 4.3rem; }
.intro-top h1 { font-size: clamp(2rem, 3.6vw, 3.1rem); margin-bottom: 0.5rem; }
.intro-top .lede { font-size: clamp(0.95rem, 1.2vw, 1.08rem); margin-bottom: 0.7rem; }
.intro-top .cta-row .start.big { font-size: 1.15rem; padding: 0.9rem 1.8rem; }
.demo.big .demo-map { max-width: 150rem; }
.demo .mnode.big { font-size: 15px; }
.demo .mnode.big .mc b { font-size: 22px; }
.demo .mnode.big .mc > span { font-size: 14px; }
.dashwrap .coinmap.full { inset: 0.2rem 0 0.4rem; height: calc(100% - 0.6rem); }

/* richer coin cards */
.mnode .mc .li { display: block; font-size: 12.5px; color: var(--ink); opacity: 0.9; line-height: 1.35; padding-left: 0.8rem; position: relative; }
.mnode .mc .li::before { content: ""; position: absolute; left: 0; top: 0.5em; width: 0.35rem; height: 0.35rem; border-radius: 50%; background: var(--c, #7c5cff); }
.mnode .mc .li em { font-style: normal; color: var(--muted); }
.mnode.big .mc .li { font-size: 13px; }
.mnode .mc .lbl { display: block; font-size: 11.5px; color: var(--muted); margin-top: 0.2rem; }
.mnode .mc > span.lbl, .mnode .mc > span.li { -webkit-line-clamp: unset; display: block; }
.mnode.big .mc > span.li { display: -webkit-box; -webkit-line-clamp: 2; }
.mnode.big .mc { gap: 0.2rem; }
.mnode.big .mc .spark { height: 60px; }

/* ===== v17: the coin universe; a calm centred start page ===== */
.intro.v5 { position: relative; min-height: 100vh; overflow: hidden; display: grid; place-items: center; }
.intro.v5 .stars { position: absolute; inset: 0; width: 100%; height: 100%; }
.intro.v5 .glow { position: absolute; left: 50%; top: 55%; width: 70vmax; height: 60vmax; transform: translate(-50%, -50%); background: radial-gradient(closest-side, rgba(124,92,255,0.22), rgba(255,79,163,0.08) 45%, transparent 70%); filter: blur(14px); pointer-events: none; animation: breathe 9s ease-in-out infinite; }
.intro.v5 .glow.two { left: 22%; top: 30%; width: 45vmax; height: 45vmax; background: radial-gradient(closest-side, rgba(34,230,255,0.16), transparent 70%); animation-delay: -4s; }
.intro-mid { position: relative; z-index: 1; text-align: center; max-width: 60rem; padding: 5rem var(--pad) 3rem; display: grid; gap: 1.4rem; justify-items: center; }
.intro-mid h1 { font-size: clamp(2.4rem, 5vw, 4.4rem); line-height: 1.02; letter-spacing: -0.035em; margin: 0; }
.intro-mid .lede { max-width: 40rem; margin: 0; color: var(--muted); font-size: clamp(1.05rem, 1.5vw, 1.25rem); }
.intro-mid .cta-row { justify-content: center; }
.intro-mid .tries { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; }
.goals { list-style: none; padding: 0; margin: 1.2rem 0 0; display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.4rem; max-width: 58rem; width: 100%; }
.goals li { margin: 0; display: grid; gap: 0.2rem; padding-top: 0.9rem; border-top: 1px solid rgba(255,255,255,0.14); text-align: left; }
.goals b { font-size: clamp(1.6rem, 2.6vw, 2.3rem); font-weight: 800; letter-spacing: -0.03em; line-height: 1; background: var(--grad); background-size: 300% 100%; -webkit-background-clip: text; background-clip: text; color: transparent; }
.goals span { font-size: 0.9rem; color: var(--muted); line-height: 1.35; }
.logostrip { width: min(60rem, 100%); overflow: hidden; margin-top: 1.4rem; mask: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); -webkit-mask: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.logostrip .track { display: flex; gap: 1.1rem; width: max-content; animation: tick 70s linear infinite; }
.logostrip a { display: block; width: 2.6rem; height: 2.6rem; border-radius: 50%; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); padding: 0.3rem; box-sizing: border-box; transition: transform 0.2s, border-color 0.2s; }
.logostrip a:hover { transform: scale(1.15); border-color: var(--pink); }
.logostrip img { width: 100%; height: 100%; border-radius: 50%; display: block; }
@media (max-width: 760px) { .goals { grid-template-columns: 1fr 1fr; } .intro-mid { padding-top: 5rem; } }
@media (prefers-reduced-motion: reduce) { .logostrip .track, .intro.v5 .glow { animation: none; } }

.dash4 { height: calc(100vh - 3.6rem); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 0.5rem; padding: 0.8rem var(--pad) 0.4rem; box-sizing: border-box; overflow: hidden; }
.dash4 .topbar { justify-content: center; }
.dash4 .finder { flex: 1 1 26rem; max-width: 44rem; }
.uhome { display: grid; grid-template-rows: minmax(0, 1.35fr) auto; gap: 0.6rem; min-height: 0; }
.uwrap { position: relative; min-height: 0; border-radius: 18px; background: radial-gradient(ellipse at center, rgba(124,92,255,0.14), rgba(255,255,255,0.02) 55%, transparent 80%); border: 1px solid rgba(255,255,255,0.08); overflow: hidden; cursor: grab; }
.uwrap.dragging { cursor: grabbing; }
.universe { position: absolute; inset: 0; width: 100%; height: 100%; }
.universe .bub2 circle { fill: rgba(16,18,44,0.92); stroke-width: 2.5; stroke: rgba(255,255,255,0.22); transition: stroke-width 0.15s; }
.universe .bub2.done circle { stroke: var(--cyan); }
.universe .bub2.rec circle { stroke: #a58cff; }
.universe .bub2.late circle { stroke: var(--amber); }
.universe .bub2.none circle { stroke: rgba(255,255,255,0.16); }
.universe .bub2 text { fill: var(--ink); font-family: var(--font); font-weight: 800; pointer-events: none; }
.universe .bub2:hover circle { stroke-width: 5; filter: drop-shadow(0 0 10px rgba(124,92,255,0.8)); }
.universe .bub2 image { pointer-events: none; }
.ulegend { position: absolute; left: 0.9rem; bottom: 0.7rem; font-size: 0.78rem; color: var(--muted); background: rgba(9,11,30,0.75); padding: 0.4rem 0.7rem; border-radius: 10px; max-width: 60%; }
.ulegend b { color: var(--ink); }
.ulegend .k { display: inline-block; width: 0.7rem; height: 0.7rem; border-radius: 50%; border: 2px solid; box-sizing: border-box; margin: 0 0.25rem 0 0.6rem; vertical-align: -1px; background: none; }
.ulegend .k.done { border-color: var(--cyan); } .ulegend .k.rec { border-color: #a58cff; } .ulegend .k.late { border-color: var(--amber); } .ulegend .k.none { border-color: rgba(255,255,255,0.3); }
.uzoom { position: absolute; right: 0.8rem; top: 0.8rem; display: flex; flex-direction: column; gap: 0.3rem; }
.uzoom button { width: 2.2rem; height: 2.2rem; border-radius: 10px; border: 1px solid rgba(255,255,255,0.16); background: rgba(9,11,30,0.85); color: var(--ink); font: 700 1.1rem var(--font); cursor: pointer; }
.uzoom button:hover { background: rgba(124,92,255,0.5); }
.utip { position: absolute; z-index: 3; pointer-events: none; background: rgba(12,14,36,0.96); border: 1px solid rgba(255,255,255,0.16); border-radius: 12px; padding: 0.55rem 0.8rem; font-size: 0.85rem; max-width: 18rem; box-shadow: 0 10px 30px rgba(0,0,0,0.5); }
.utip b { display: block; font-size: 1rem; }
.utip .px { display: block; margin: 0.1rem 0; }
.utip span.ln { color: var(--muted); }
.ucards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.55rem; min-height: 0; }
.ucard { position: relative; display: flex; flex-direction: column; gap: 0.15rem; padding: 0.55rem 0.75rem 0.5rem; border-radius: 14px; background: rgba(14,16,40,0.9); border: 1px solid rgba(255,255,255,0.1); border-top: 3px solid var(--c, #7c5cff); cursor: pointer; overflow: hidden; max-height: 9.6rem; transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s; }
.ucard:hover, .ucard:focus-visible { transform: translateY(-2px); box-shadow: 0 12px 30px rgba(0,0,0,0.45), 0 0 16px color-mix(in srgb, var(--c) 40%, transparent); outline: 0; }
.ucard .ml { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.88rem; font-weight: 800; }
.ucard .ml em { font-style: normal; font-size: 0.72rem; color: var(--c); background: rgba(255,255,255,0.08); border-radius: 999px; padding: 0.05rem 0.5rem; }
.ucard .mc { overflow: hidden; mask: linear-gradient(#000 calc(100% - 1rem), transparent); -webkit-mask: linear-gradient(#000 calc(100% - 1rem), transparent); }
.ucard .drow { font-size: 0.78rem; padding: 0.22rem 0; grid-template-columns: minmax(0, 1fr) auto; }
.ucard .drow .nm { font-size: 0.8rem; }
.ucard .drow .ln { font-size: 0.72rem; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.ucard .drow .ln.big { -webkit-line-clamp: 2; }
.ucard .drow .mb { height: 0.3rem; margin: 0.05rem 0; }
.ucard .drow .ticks3 i { width: 0.9rem; height: 0.3rem; }
.ucard .drow .dv { height: 0.32rem; }
.ucard .drow .px { font-size: 0.74rem; }
.ucard .steps3.tiny .st span { display: none; }
.ucard .steps3.tiny { margin: 0.2rem 0 0; }
.ucard.mine { border-top-color: var(--amber); }
@media (max-width: 1100px) { .dash4 { height: auto; overflow: visible; } .uhome { grid-template-rows: none; } .uwrap { height: 60vh; } .ucards { grid-template-columns: 1fr 1fr; } }
@media (max-width: 640px) { .ucards { grid-template-columns: 1fr; } .uwrap { height: 50vh; } }

.ulegend { bottom: auto; top: 0.7rem; left: 0.9rem; max-width: 46rem; }

/* ===== v18: cards flank the universe; no scroll; airier coin map ===== */
.dash4 { height: calc(100vh - 3.6rem); max-height: calc(100vh - 3.6rem); overflow: hidden; }
.panel-page, .panel-page body { overflow: hidden; }
.uhome.side { grid-template-rows: minmax(0, 1fr); grid-template-columns: minmax(15rem, 0.8fr) minmax(0, 2.4fr) minmax(15rem, 0.8fr); gap: 0.6rem; }
.uhome.side .ucards { grid-template-columns: 1fr; grid-auto-rows: minmax(0, 1fr); display: grid; min-height: 0; }
.uhome.side .ucard { max-height: none; min-height: 0; }
.uhome.side .ucard .mc { flex: 1 1 auto; min-height: 0; }
.ucard .more { font-size: 0.7rem; font-weight: 700; color: var(--c); align-self: flex-end; }
.ucard .drow { padding: 0.26rem 0; }
.ucard .drow .ln { -webkit-line-clamp: 2; }
.ulegend { max-width: 34rem; font-size: 0.74rem; }
@media (max-width: 1400px) { .uhome.side { grid-template-columns: minmax(13rem, 0.7fr) minmax(0, 2fr) minmax(13rem, 0.7fr); } .ucard .drow .ln { -webkit-line-clamp: 1; } }
@media (max-width: 1100px) { .panel-page, .panel-page body { overflow: auto; } .dash4 { height: auto; max-height: none; overflow: visible; } .uhome.side { grid-template-columns: 1fr; } .uhome.side .ucards { grid-template-columns: 1fr 1fr; grid-auto-rows: auto; } .uwrap { height: 60vh; order: -1; } }
@media (max-width: 640px) { .uhome.side .ucards { grid-template-columns: 1fr; } }
.coin, .coin body { overflow: hidden; }
@media (max-width: 1300px) { .coin, .coin body { overflow: auto; } }
.mnode.big { padding: 0.75rem 0.9rem 0.6rem; }
.mnode.big .mc > span { -webkit-line-clamp: 3; }
.mnode.big .mc .li { -webkit-line-clamp: 2; }
.coinmap.grid .core { r: 100; }

/* ===== v19: fits laptops; news panel; rivalry lines ===== */
.dash4 { gap: 0.4rem; padding: 0.55rem var(--pad) 0.3rem; }
.dash4 .finder input { padding: 0.5rem 1rem; font-size: 1rem; }
.dash4 .examples .chip { padding: 0.3rem 0.7rem; font-size: 0.82rem; }
.uhome.side.v2 { grid-template-columns: minmax(14rem, 0.75fr) minmax(0, 2.5fr) minmax(16rem, 0.9fr); }
.umid { display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 0.45rem; min-height: 0; }
.ucards.under { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.45rem; }
.ucards.under .ucard { max-height: 6.4rem; }
.ucards.under .ucard .drow .ln { -webkit-line-clamp: 1; }
.ucards.under .ucard.mine { display: none; }
.uhome.side.v2 .ucards.left { grid-auto-rows: minmax(0, 1fr); }
.ucard .mc { display: flex; flex-direction: column; }
.ucard .drow { flex: 0 0 auto; }
.uright { min-height: 0; }
.newspanel { height: 100%; display: flex; flex-direction: column; gap: 0.3rem; padding: 0.7rem 0.85rem 0.6rem; border-radius: 14px; background: linear-gradient(180deg, rgba(255,79,163,0.12), rgba(14,16,40,0.9) 30%); border: 1px solid rgba(255,79,163,0.35); border-top: 3px solid var(--pink); overflow: hidden; }
.np-head b { font-size: 1.15rem; display: block; }
.newspanel h4 { margin: 0.35rem 0 0.1rem; font-size: 0.78rem; color: var(--pink); font-weight: 800; }
.nplist { list-style: none; padding: 0; margin: 0; max-width: none; min-height: 0; overflow: hidden; }
.nplist li { display: grid; gap: 0.12rem; padding: 0.4rem 0; border-top: 1px solid rgba(255,255,255,0.07); margin: 0; font-size: 0.82rem; }
.nplist li:first-child { border-top: 0; }
.nplist a { color: var(--ink); font-weight: 700; text-decoration: none; line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.nplist a:hover { color: var(--accent); }
.nplist .meta { font-size: 0.72rem; color: var(--muted); }
.nplist .mb { display: block; height: 0.3rem; border-radius: 999px; background: rgba(255,255,255,0.07); overflow: hidden; }
.nplist .mb i { display: block; height: 100%; background: linear-gradient(90deg, var(--pink), var(--amber)); }
.nplist .coins { display: flex; gap: 0.25rem; flex-wrap: wrap; }
.nplist .coinlink { font-size: 0.7rem; padding: 0.08rem 0.5rem; }
.newspanel .btn { margin-top: auto; align-self: stretch; justify-content: center; font-size: 0.85rem; }
.universe .links line { stroke-width: 1.6; opacity: 0.35; stroke-dasharray: 6 8; display: none; }
.universe .links line.on { opacity: 1; stroke-width: 3; }
.universe .bubbles a.dim { opacity: 0.35; }
.universe .bub2.wide circle { stroke: rgba(255,255,255,0.1); fill: rgba(16,18,44,0.8); }
.universe .bub2.wide text { fill: var(--muted); }
@media (max-height: 900px) { .ucard .drow:nth-child(n+3) { display: none; } .ucards.left .ucard { max-height: none; } .newspanel h4 + .nplist li:nth-child(n+4) { display: none; } .ulegend { font-size: 0.68rem; max-width: 30rem; } }
@media (max-height: 800px) { .ucard .drow:nth-child(n+3) { display: none; } .newspanel h4 + .nplist li:nth-child(n+4) { display: none; } .newspanel .nplist:last-of-type li:nth-child(n+3) { display: none; } .ucards.under .ucard { max-height: 4.6rem; } }
@media (max-width: 1100px) { .uhome.side.v2 { grid-template-columns: 1fr; } .newspanel { height: auto; } .umid { order: -1; } }
@media (prefers-reduced-motion: reduce) { .universe .links line { animation: none; } }
/* under-cards: two columns of rows so they fill without empty space; rivalry lines a touch stronger */
.ucards.under .ucard { max-height: 7.6rem; }
.ucards.under .ucard .mc { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; }
.ucards.under .ucard .drow:nth-child(n+3) { display: grid; }
@media (max-height: 800px) { .ucards.under .ucard .mc { display: grid; } .ucards.under .ucard .drow:nth-child(n+3) { display: grid; } .ucards.under .ucard .drow:nth-child(n+3) { display: none; } .ucards.under .ucard .drow .ln { display: none; } .newspanel .nplist:last-of-type li:nth-child(n+3) { display: grid; } .newspanel .nplist:last-of-type li:nth-child(n+4) { display: none; } }
.universe .links line { opacity: 0.55; }
.ucards.under .ucard[data-sheet="s-about"] .mc { display: block; }
@media (max-height: 900px) { .ucards.under .ucard { max-height: 5.4rem; } .ucards.under .ucard .drow { padding: 0.15rem 0; } .ucards.under .ucard .drow .ln { display: none; } .ucards.under .ucard[data-sheet="s-about"] .steps3.tiny { margin: 0.1rem 0 0; } .ucards.under .ucard[data-sheet="s-about"] .steps3.tiny .st i { width: 1.4rem; height: 1.4rem; font-size: 0.7rem; } .ucards.under .ucard[data-sheet="s-about"] .steps3.tiny .st b { font-size: 0.72rem; } .ucards.under .ucard[data-sheet="s-about"] p { display: none; } .ucard .drow .ln { -webkit-line-clamp: 1; } .ucard .mc { mask: none; -webkit-mask: none; } .ucards.left .ucard .drow:nth-child(n+3) { display: none; } .newspanel h4 + .nplist li:nth-child(n+3) { display: none; } .nplist a { -webkit-line-clamp: 1; } }
@media (max-height: 900px) and (min-height: 801px) { .newspanel h4 + .nplist li:nth-child(n+3) { display: grid; } .newspanel h4 + .nplist li:nth-child(n+5) { display: none; } .nplist a { -webkit-line-clamp: 2; } }

/* ===== v20: the universe is calm by default; a Show filter draws rivalries or one purpose at a time ===== */
.universe.all .links line, .universe .links line.on { display: block; }
.universe .links line.on { opacity: 1; stroke-width: 3; }
.universe .glines line { stroke-width: 2; opacity: 0.7; stroke-dasharray: 6 8; }
.universe .glines line.on { opacity: 1; stroke-width: 3.5; }
.universe .bubbles a.dim { opacity: 0.18; }
.ulegend { display: flex; align-items: center; gap: 0.7rem; flex-wrap: wrap; max-width: 52rem; }
.ufilter { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--ink); font-weight: 700; }
.ufilter select { font: 700 0.8rem var(--font); color: var(--ink); background: rgba(124,92,255,0.25); border: 1px solid rgba(255,255,255,0.18); border-radius: 8px; padding: 0.25rem 0.5rem; max-width: 12rem; cursor: pointer; }
.ufilter select:hover { background: rgba(124,92,255,0.45); }
.ufilter select option { background: #12143a; color: #fff; }
@media (max-height: 900px) { .ulegend { max-width: 46rem; } .ulegend .ulk { font-size: 0.68rem; } }

/* ===== v21: the coin page is its own space: cards drift, tilt toward the pointer, and the whole map pans and zooms ===== */
.mapfull.space { overflow: hidden; cursor: grab; isolation: isolate; }
.mapfull.space.dragging { cursor: grabbing; }
.mapfull.space .orbs { position: absolute; inset: 0; pointer-events: none; z-index: 0; }
.mapfull.space .orbs i { position: absolute; width: 38vw; height: 38vw; max-width: 560px; max-height: 560px; border-radius: 50%; opacity: 0.55; background: radial-gradient(circle, rgba(124,92,255,0.34), transparent 62%); animation: orb 22s ease-in-out infinite alternate; transform: translate(calc(var(--px, 0px) * -0.6), calc(var(--py, 0px) * -0.6)); }
.mapfull.space .orbs i:nth-child(1) { left: -8%; top: -18%; }
.mapfull.space .orbs i:nth-child(2) { right: -10%; top: 30%; background: radial-gradient(circle, rgba(34,230,255,0.22), transparent 62%); animation-duration: 27s; animation-delay: -9s; }
.mapfull.space .orbs i:nth-child(3) { left: 30%; bottom: -30%; background: radial-gradient(circle, rgba(255,79,163,0.2), transparent 62%); animation-duration: 31s; animation-delay: -17s; }
@keyframes orb { from { translate: 0 0; } to { translate: 6vw 4vh; } }
.coinmap.space { z-index: 1; }
.coinmap.space .fo { transition: opacity 0.3s; }
.coinmap.space .mnode.big { translate: calc(var(--px, 0px) * var(--d, 1)) calc(var(--py, 0px) * var(--d, 1)); transition: translate 0.7s cubic-bezier(0.2, 0.7, 0.2, 1), box-shadow 0.25s, background 0.25s, opacity 0.3s; animation: hoverdrift 7s ease-in-out infinite alternate; animation-delay: calc(var(--ph, 0) * -1s); will-change: transform; }
@keyframes hoverdrift { 0% { transform: translate(0, 0) rotate(0deg); } 50% { transform: translate(3px, -7px) rotate(0.4deg); } 100% { transform: translate(-4px, 4px) rotate(-0.3deg); } }
.coinmap.space .mnode.big.tilt { animation: none; transition: translate 0.7s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.12s ease-out, box-shadow 0.25s, background 0.25s; }
.coinmap.space .mnode.big:hover, .coinmap.space .mnode.big:focus-visible { background: rgba(26,28,66,0.98); box-shadow: 0 22px 50px rgba(0,0,0,0.6), 0 0 34px var(--c); }
.coinmap.space.hov .fo:not(.hot) .mnode { opacity: 0.72; }
.coinmap.space .spoke { stroke-dasharray: 8 12; stroke-dashoffset: 0; opacity: 0; animation: spokein 0.6s ease-out forwards, flow 1.8s linear infinite; animation-delay: calc(0.3s + var(--i) * 0.1s), 0s; }
@keyframes spokein { to { opacity: 0.5; } }
.coinmap.space .spoke.lit { opacity: 1; stroke-width: 3.5; animation: flow 0.7s linear infinite; filter: drop-shadow(0 0 6px currentColor); }
.coinmap.space .corewrap { translate: calc(var(--px, 0px) * -0.35) calc(var(--py, 0px) * -0.35); transition: translate 0.7s cubic-bezier(0.2, 0.7, 0.2, 1); }
.coinmap.space .core { animation: corepulse 4s ease-in-out infinite; }
.coinmap.space .orbit { fill: none; stroke: rgba(124,92,255,0.55); stroke-width: 1.5; stroke-dasharray: 3 14; transform-box: fill-box; transform-origin: center; animation: spin 48s linear infinite; }
.coinmap.space .orbit.two { stroke: rgba(34,230,255,0.4); stroke-dasharray: 2 22; animation: spin 80s linear infinite reverse; }
@keyframes spin { to { rotate: 360deg; } }
.mapfull.space .uzoom { z-index: 2; }
.mapfull.space .maphint { position: absolute; left: 0.9rem; bottom: 0.2rem; z-index: 2; margin: 0; }
@media (prefers-reduced-motion: reduce) { .mapfull.space .orbs i, .coinmap.space .mnode.big, .coinmap.space .core, .coinmap.space .orbit { animation: none; } .coinmap.space .spoke { animation: none; opacity: 0.5; } }
@media (max-height: 900px) and (min-height: 801px) { .newspanel .nplist:last-of-type li:nth-child(n+3) { display: none; } }

/* ===== v22: the whole market at the very top; a purpose view shows only its coins, packed together ===== */
header.site .in { display: flex; align-items: center; gap: 1.2rem; }
.mcap { display: inline-flex; align-items: baseline; gap: 0.5rem; margin: 0 auto; white-space: nowrap; }
.mcap .lb { color: var(--muted); font-size: 0.85rem; }
.mcap .v { color: #fff; font-size: 1.35rem; font-weight: 800; letter-spacing: -0.02em; }
.mcap i { font-style: normal; font-weight: 700; font-size: 0.85rem; }
.mcap i.up { color: var(--lime); } .mcap i.dn { color: var(--amber); }
@media (max-width: 900px) { .mcap .lb { display: none; } .mcap .v { font-size: 1.1rem; } }
@media (max-width: 640px) { .mcap { display: none; } }
.universe .bubbles a { transition: transform 0.9s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.4s; }
.universe .bubbles a.off { display: none; }
.universe .glines line { opacity: 0.75; }
.universe .glines line.on { opacity: 1; }

/* ===== v23: the whole market sits above the coins inside the space; the key moves to the bottom ===== */
.uwrap .mcap { position: absolute; left: 50%; top: 0.7rem; transform: translateX(-50%); z-index: 2; margin: 0; background: rgba(9,11,30,0.78); padding: 0.4rem 1rem; border-radius: 12px; border: 1px solid rgba(255,255,255,0.1); }
.uwrap .mcap .v { font-size: 1.5rem; }
.ulegend { max-width: none; }
.ukey { position: absolute; left: 0.9rem; bottom: 0.6rem; z-index: 2; font-size: 0.74rem; color: var(--muted); background: rgba(9,11,30,0.75); padding: 0.35rem 0.7rem; border-radius: 10px; max-width: calc(100% - 2rem); }
.ukey b { color: var(--ink); }
.ukey .k { display: inline-block; width: 0.7rem; height: 0.7rem; border-radius: 50%; border: 2px solid; box-sizing: border-box; margin: 0 0.25rem 0 0.6rem; vertical-align: -1px; background: none; }
.ukey .k.done { border-color: var(--cyan); } .ukey .k.rec { border-color: #a58cff; } .ukey .k.late { border-color: var(--amber); } .ukey .k.none { border-color: rgba(255,255,255,0.3); }
@media (max-width: 1400px) { .uwrap .mcap .lb { display: none; } .uwrap .mcap .v { font-size: 1.3rem; } .ukey { font-size: 0.68rem; } }

/* ===== v24: the market number floats as plain text above the coins; the coin page ends with where to buy and why it moved ===== */
.uwrap .mcap { background: none; border: 0; padding: 0; top: 0.55rem; pointer-events: none; gap: 0.6rem; }
.uwrap .mcap .lb { display: none; }
.uwrap .mcap .v { font-size: 1.9rem; text-shadow: 0 2px 18px rgba(0,0,0,0.7); }
.uwrap .mcap i { font-size: 1rem; text-shadow: 0 2px 12px rgba(0,0,0,0.7); }
@media (max-height: 900px) { .uwrap .mcap .v { font-size: 1.6rem; } }
.mapfull.space .coinmap.full { bottom: 3.6rem; height: calc(100% - 3.8rem); }
.mapfoot { position: absolute; left: 1rem; right: 1rem; bottom: 0.45rem; z-index: 2; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 2rem; color: #fff; font-size: 0.9rem; line-height: 1.35; }
.mapfoot p { margin: 0; max-width: none; color: #fff; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mapfoot .lb { display: inline-block; font-size: 0.72rem; font-weight: 800; color: var(--lime); margin-right: 0.6rem; }
.mapfoot .moveline .lb { color: var(--pink); }
.mapfoot a { color: #fff; font-weight: 800; text-decoration: underline; text-decoration-color: rgba(255,255,255,0.35); text-underline-offset: 3px; }
.mapfoot a:hover { text-decoration-color: #fff; }
.mapfoot b { color: #fff; font-weight: 800; }
.mapfoot .none { color: #fff; }
.mapfoot .muted { color: var(--muted); }
.mapfoot i { font-style: normal; font-weight: 800; }
.mapfoot i.up { color: var(--lime); } .mapfoot i.dn { color: var(--amber); }
.mapfoot .buyline:only-child { grid-column: 1 / -1; }
@media (max-width: 1100px) { .mapfoot { position: static; grid-template-columns: 1fr; padding: 0.6rem 0 0; } .mapfull.space .coinmap.full { bottom: 0; height: auto; } }

/* ===== v25: the number is part of the space; coins float in six gentle groups; search filters the map; news scrolls inside its panel; calmer cards ===== */
.universe .mcap-t { font: 800 46px var(--font); fill: #fff; letter-spacing: -0.02em; paint-order: stroke; stroke: rgba(9,11,30,0.85); stroke-width: 10px; stroke-linejoin: round; pointer-events: none; }
.universe .mcap-t .chg { font-size: 22px; font-weight: 700; letter-spacing: 0; }
.universe .mcap-t .chg.up { fill: var(--lime); } .universe .mcap-t .chg.dn { fill: var(--amber); }
.uwrap .mcap { display: none; }
.universe .fl { animation: ufloat 12s ease-in-out infinite alternate; animation-delay: calc(var(--i) * -2.3s); }
.universe .fl:nth-child(2n) { animation-duration: 15s; }
.universe .fl:nth-child(3n) { animation-duration: 10s; animation-direction: alternate-reverse; }
@keyframes ufloat { 0% { transform: translate(0, 0); } 30% { transform: translate(2.5px, -3px); } 60% { transform: translate(-3px, 1.5px); } 100% { transform: translate(1.5px, 3px); } }
.uwrap.dragging .universe .fl { animation-play-state: paused; }
.uhome.side.v2.searching .ucards.left { display: none; }
.uhome.side.v2 #results.pane { grid-column: 1; grid-row: 1; min-height: 0; overflow: auto; margin: 0; display: flex; flex-direction: column; }
.uhome.side.v2 #results .pane-body { overflow: auto; min-height: 0; }
.uhome.side.v2 #results .rows .row { padding: 0.45rem 0.6rem; }
.newspanel { overflow: hidden; }
.newspanel .npscroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.18) transparent; padding-right: 0.3rem; }
.newspanel .npscroll::-webkit-scrollbar { width: 6px; } .newspanel .npscroll::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.18); border-radius: 999px; }
.newspanel .nplist li { display: grid !important; }
.newspanel .nplist a { -webkit-line-clamp: 2 !important; }
.newspanel .btn { margin-top: 0.5rem; }
.mnode.big .mc > span { -webkit-line-clamp: 2 !important; }
.mnode.big .mc > span.li ~ span.li { display: none; }
.mnode.big .chips i:nth-child(n+4) { display: none; }
.mnode.big .rb:nth-of-type(n+5) { display: none; }
.coinmap .core-eco { font: 600 15px var(--font); fill: var(--muted); }
.coinmap .core-cap { font: 800 24px var(--font); fill: #fff; letter-spacing: -0.01em; }
.mapfoot { translate: calc(var(--px, 0px) * 0.5) calc(var(--py, 0px) * 0.5); transition: translate 0.7s cubic-bezier(0.2, 0.7, 0.2, 1); animation: footdrift 9s ease-in-out infinite alternate; }
@keyframes footdrift { from { transform: translateY(0); } to { transform: translateY(-4px); } }
.viz.token .gets { list-style: none; padding: 0; margin: 0.6rem 0 1rem; display: grid; gap: 0.4rem; }
.viz.token .gets li { padding: 0.5rem 0.8rem 0.5rem 2rem; border-radius: 10px; background: rgba(163,255,92,0.08); border: 1px solid rgba(163,255,92,0.25); position: relative; font-weight: 600; }
.viz.token .gets li::before { content: ""; position: absolute; left: 0.8rem; top: 0.95rem; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--lime); }
.viz.token .gets li.none { background: rgba(255,179,64,0.08); border-color: rgba(255,179,64,0.3); font-weight: 500; }
.viz.token .gets li.none::before { background: var(--amber); }
.worthmath { display: flex; align-items: center; gap: 0.8rem; flex-wrap: wrap; margin: 0.4rem 0; }
.worthmath .wm { padding: 0.6rem 0.9rem; border-radius: 12px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); display: grid; }
.worthmath .wm b { font-size: 1.3rem; font-weight: 800; letter-spacing: -0.02em; }
.worthmath .wm span { font-size: 0.75rem; color: var(--muted); }
.worthmath .wm.big { background: rgba(124,92,255,0.18); border-color: rgba(124,92,255,0.5); }
.worthmath .wm.big b { font-size: 1.6rem; color: #fff; }
.worthmath > i { font-style: normal; font-size: 1.4rem; color: var(--muted); }
@media (prefers-reduced-motion: reduce) { .universe .fl, .mapfoot { animation: none; } }

/* results in the narrow left column stack their parts instead of squeezing one line */
.uhome.side.v2 #results .rows .row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0 0.5rem; align-items: center; }
.uhome.side.v2 #results .rows .row .sym { grid-column: 1; font-size: 0.68rem; color: var(--muted); letter-spacing: 0; }
.uhome.side.v2 #results .rows .row .nm { grid-column: 1; white-space: normal; font-size: 0.95rem; line-height: 1.2; }
.uhome.side.v2 #results .rows .row .px { grid-column: 2; grid-row: 1 / span 2; text-align: right; white-space: nowrap; font-size: 0.85rem; }
.uhome.side.v2 #results .rows .row .line { grid-column: 1 / -1; font-size: 0.72rem; color: var(--muted); white-space: normal; }
.uhome.side.v2 #results .pane-head { padding-bottom: 0.4rem; }

/* ===== v26: where to buy sits under the coin in the middle, white, like the worth line above it ===== */
.coinmap .core-buy-l { font: 600 14px var(--font); fill: var(--lime); }
.coinmap .core-buy { font: 800 21px var(--font); fill: #fff; letter-spacing: -0.01em; }
.coinmap .core-buy .sep { fill: var(--muted); font-weight: 500; }
.coinmap .core-buy a { cursor: pointer; }
.coinmap .core-buy a .vn { text-decoration: underline; text-decoration-color: rgba(255,255,255,0.35); text-underline-offset: 4px; }
.coinmap .core-buy a:hover .vn { fill: var(--lime); text-decoration-color: var(--lime); }
.coinmap .core-buy.none { font-size: 15px; font-weight: 600; fill: #fff; }
.mapfoot.one { grid-template-columns: 1fr; justify-items: center; text-align: center; }
.mapfoot.one:empty { display: none; }
.mapfull.space:has(.mapfoot.one:empty) .coinmap.full { bottom: 1rem; height: calc(100% - 1.2rem); }

/* ===== v27: no lag. Coin page cards are HTML on a fixed stage (one composited transform for pan and zoom); the universe floats as seven stacked layers. Calmer cards. ===== */
.mapfull.space .mapstage { position: absolute; left: 50%; top: calc((100% - var(--foot, 0px)) / 2); width: 1800px; height: 900px; transform: translate(-50%, -50%) scale(var(--fit, 0.5)); transform-origin: center; will-change: transform; z-index: 1; }
.mapfull.space .mapstage .coinmap.full { position: absolute; inset: 0; width: 1800px; height: 900px; bottom: auto; will-change: transform; }
.mapfull.space:has(.mapfoot.one:empty) .coinmap.full { bottom: auto; height: 900px; }
.mapstage .mnode.big { position: absolute; box-sizing: border-box; opacity: 0; animation: cardin 0.5s ease-out forwards, hoverdrift 7s ease-in-out infinite alternate; animation-delay: calc(0.4s + var(--i) * 0.08s), calc(var(--ph, 0) * -1s); will-change: transform, opacity; font-size: 15px; padding: 1rem 1.1rem 0.8rem; border-radius: 20px; }
@keyframes cardin { to { opacity: 1; } }
.mapstage .mnode.big.tilt { animation: cardin 0.5s ease-out forwards; opacity: 1; }
.mapstage.hov .mnode:not(.hot) { opacity: 0.72; }
.coinmap.space.hov .fo:not(.hot) .mnode { opacity: 1; }
/* calmer cards: label, one bold line, one short line, one small visual; the rest lives in the sheet */
.mapstage .mnode.big .ml { font-size: 13px; letter-spacing: 0.02em; text-transform: none; font-weight: 700; }
.mapstage .mnode.big .mc b { font-size: 24px; line-height: 1.12; }
.mapstage .mnode.big .mc > span { font-size: 14px; -webkit-line-clamp: 2 !important; line-height: 1.35; }
.mapstage .mnode.big .mc > span.li { display: none; }
.mapstage .mnode.big .mc > span.lbl { display: block; font-size: 13px; }
.mapstage .mnode.big .chips i:nth-child(n+4) { display: none; }
.mapstage .mnode.big .rb:nth-of-type(n+4) { display: none; }
.mapstage .mnode.big .mc { gap: 0.35rem; }
.mapstage .mnode.big .more { font-size: 11px; }
.ustack { position: absolute; inset: 0; }
.universe.layer { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.universe.layer .bub2 { pointer-events: auto; }
.universe.layer.fl { animation: ufloat calc(10s + var(--i) * 1.4s) ease-in-out infinite alternate; animation-delay: calc(var(--i) * -2.3s); will-change: transform; }
.universe.layer.fl:nth-of-type(3n) { animation-direction: alternate-reverse; }
.uwrap.dragging .universe.layer.fl { animation-play-state: paused; }
.universe .fl { animation: none; }
.uwrap .ustack + .ulegend, .uwrap .ulegend, .uwrap .ukey, .uwrap .uzoom, .uwrap .utip { z-index: 3; }
@media (prefers-reduced-motion: reduce) { .universe.layer.fl, .mapstage .mnode.big { animation: cardin 0.01s forwards; } }

/* price card: no clipped lines; the spark is small and the third line waits for the sheet */
.mapstage .mnode.big .mc .spark { height: 30px; margin: 0; }
.mapstage .mnode.big .mc > span:nth-of-type(n+3):not(.chips):not(.rb):not(.lbl) { display: none; }
.mapstage .mnode.big .mc { overflow: hidden; }
.gemtests { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 0.5rem; }
.gemtests li { padding: 0.55rem 0.8rem; border-radius: 12px; background: rgba(255,179,64,0.08); border: 1px solid rgba(255,179,64,0.28); display: grid; gap: 0.15rem; }
.gemtests li b { font-size: 0.9rem; } .gemtests li span { font-size: 0.78rem; color: var(--muted); }
