:root {
  --bg: #151515;
  --paper: #f3eee3;
  --ink: #191817;
  --muted: #888074;
  --line: #bfb5a4;
  --lime: #c9d35c;
  --coral: #e58d70;
  --sky: #91c5c3;
  --yellow: #f1c86f;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  min-width: 320px;
  color: var(--paper);
  background: radial-gradient(circle at 12% 15%, rgba(201,211,92,.07), transparent 26%), radial-gradient(circle at 88% 78%, rgba(229,141,112,.08), transparent 30%), var(--bg);
  font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: .18;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 100 100' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.23'/%3E%3C/svg%3E");
  z-index: 20;
}
button { font: inherit; cursor: pointer; }
a { color: inherit; }
svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.shell { position: relative; z-index: 1; max-width: 1540px; margin: 0 auto; padding: 0 42px 52px; }
.topbar { display:flex; justify-content:space-between; align-items:center; min-height:80px; border-bottom:1px solid rgba(242,233,214,.18); }
.wordmark { display:flex; align-items:center; gap:12px; }
.mark { width:36px; height:36px; border:1.5px solid var(--lime); border-radius:8px 12px 7px 11px; display:grid; place-items:center; color:var(--lime); transform:rotate(-5deg); font:20px Georgia,serif; box-shadow:2px 2px 0 rgba(201,211,92,.25); }
.wordmark-title { font-size:13px; letter-spacing:.16em; font-weight:800; }
.wordmark-sub { color:#8e8980; font-size:9px; margin-top:5px; letter-spacing:.18em; text-transform:uppercase; }
.top-actions { display:flex; align-items:center; gap:14px; }
.sync { display:flex; align-items:center; gap:7px; color:#b7b0a3; font-size:10px; }
.sync-dot { width:6px; height:6px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 4px rgba(201,211,92,.12); }
.notion-link { display:inline-flex; align-items:center; gap:7px; border:1px solid rgba(242,233,214,.25); border-radius:5px 8px 6px 7px; padding:8px 10px; color:var(--paper); text-decoration:none; font-size:10px; }
.notion-link:hover { border-color:var(--lime); color:var(--lime); transform:rotate(-1deg); }
.hero { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr); gap:60px; padding:78px 0 58px; align-items:end; }
.eyebrow { display:flex; align-items:center; gap:10px; color:var(--lime); font-size:10px; letter-spacing:.17em; text-transform:uppercase; font-weight:800; }
.eyebrow-line { width:30px; height:1px; background:var(--lime); }
h1 { max-width:720px; margin:19px 0; font:400 clamp(38px,5.2vw,73px)/1.02 Georgia,"Songti SC",serif; letter-spacing:-.07em; }
.hero-copy { max-width:560px; color:#a7a196; font-size:13px; line-height:1.8; margin:0; }
.hero-note { position:relative; align-self:center; padding:22px 20px; color:#cfc6b8; border:1px solid rgba(242,233,214,.3); border-radius:4px 11px 6px 9px; transform:rotate(1.5deg); background:rgba(255,250,240,.025); }
.hero-note::before { content:""; position:absolute; left:16px; right:16px; top:-7px; height:10px; border-top:1px solid var(--coral); transform:rotate(-1.2deg); }
.hero-note p { margin:0; font:19px/1.5 Georgia,"Songti SC",serif; letter-spacing:-.04em; }
.hero-note small { display:block; color:#827b70; margin-top:13px; font-size:9px; letter-spacing:.11em; text-transform:uppercase; }
.toolbar { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:22px; }
.filters { display:flex; gap:6px; flex-wrap:wrap; }
.filter { border:1px solid rgba(242,233,214,.22); color:#a29b91; background:transparent; border-radius:5px 8px 5px 7px; padding:8px 11px; font-size:10px; transition:.2s; }
.filter:hover, .filter.active { color:var(--bg); background:var(--lime); border-color:var(--lime); transform:rotate(-1deg); }
.toolbar-right { display:flex; align-items:center; gap:14px; flex-shrink:0; }
.view-toggle { display:inline-flex; padding:3px; border:1px solid rgba(242,233,214,.22); border-radius:7px 9px 6px 8px; background:rgba(242,233,214,.04); }
.view-toggle-button { border:0; border-radius:4px 6px 4px 5px; padding:6px 10px; color:#918a80; background:transparent; font:700 9px/1 var(--mono-font); letter-spacing:.08em; cursor:pointer; transition:.2s; }
.view-toggle-button:hover, .view-toggle-button.active { color:var(--bg); background:var(--lime); }
.meta { color:#7f796e; font-size:10px; white-space:nowrap; }
.meta strong { color:var(--paper); font-size:17px; font-weight:500; margin-right:4px; }
.board { display:grid; grid-template-columns:180px minmax(0,1fr); gap:24px; align-items:start; }
.board-side { position:sticky; top:20px; padding-top:8px; }
.side-label { color:#777168; font-size:9px; letter-spacing:.16em; text-transform:uppercase; margin-bottom:14px; }
.side-line { height:1px; width:38px; background:var(--coral); margin-bottom:18px; }
.side-copy { color:#aaa297; font:14px/1.7 Georgia,"Songti SC",serif; margin:0 0 22px; }
.legend { display:grid; gap:9px; color:#777168; font-size:9px; }
.legend-item { display:flex; gap:8px; align-items:center; }
.legend-line { width:18px; height:1px; background:var(--lime); }
.legend-line.coral { background:var(--coral); }
.legend-line.sky { background:var(--sky); }
.source-note { border-top:1px solid rgba(242,233,214,.15); margin-top:26px; padding-top:14px; color:#777168; font-size:9px; line-height:1.65; }
.source-note a { color:#b8ae9e; text-underline-offset:3px; }
.signal-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:17px; }
.signal-card { position:relative; min-height:405px; padding:20px; color:var(--ink); background:var(--paper); border:1px solid #262522; border-radius:5px 10px 7px 8px; box-shadow:5px 6px 0 rgba(242,233,214,.88); transform:rotate(var(--tilt)); transition:.25s; overflow:hidden; }
.signal-card:nth-child(3n+2) { --tilt:-.7deg; }
.signal-card:nth-child(3n+3) { --tilt:.55deg; }
.signal-card:hover { transform:translateY(-5px) rotate(0); box-shadow:7px 10px 0 rgba(242,233,214,.84); }
.signal-card::before { content:""; position:absolute; inset:5px; pointer-events:none; border:1px solid rgba(23,23,23,.17); border-radius:4px 8px 7px 5px; transform:rotate(.5deg); }
.card-top,.card-header,.stats,.pulse,.assets,.card-bottom { position:relative; z-index:1; }
.card-top { display:flex; justify-content:space-between; align-items:center; gap:8px; }
.cats { display:flex; gap:5px; flex-wrap:wrap; }
.cat { padding:4px 7px; border:1px solid var(--ink); border-radius:4px 6px 4px 5px; font-size:9px; line-height:1; white-space:nowrap; }
.cat.main { background:var(--ink); color:var(--paper); }
.status { color:#696256; font-size:9px; display:flex; gap:6px; align-items:center; white-space:nowrap; }
.status i { width:6px; height:6px; border-radius:50%; background:var(--lime); display:inline-block; }
.status i.watch { background:var(--yellow); }
.card-header { margin-top:24px; min-height:80px; }
.code { color:#9c9486; font-size:9px; letter-spacing:.08em; }
.card-title { margin:8px 0 0; font:400 23px/1.18 Georgia,"Songti SC",serif; letter-spacing:-.055em; }
.thesis { color:#6f695e; font-size:10px; line-height:1.55; margin:11px 0 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.stats { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:21px 0 18px; padding:13px 0 12px; border-top:1px solid #c9c0b0; border-bottom:1px solid #c9c0b0; }
.stat-head { display:flex; justify-content:space-between; color:#847c70; font-size:9px; margin-bottom:7px; }
.stat-value { font-size:22px; line-height:1; }
.track { height:3px; background:#d5cdbc; border-radius:4px; overflow:hidden; margin-top:7px; }
.fill { height:100%; background:var(--coral); border-radius:4px; }
.fill.heat { background:var(--lime); }
.label { display:flex; justify-content:space-between; color:#837b6e; font-size:9px; letter-spacing:.12em; text-transform:uppercase; }
.label span:last-child { color:#afa697; letter-spacing:0; text-transform:none; }
.pulse-list { display:grid; gap:8px; margin-top:10px; }
.pulse-item { display:grid; grid-template-columns:8px minmax(0,1fr); gap:8px; color:#37332e; font-size:10px; line-height:1.48; }
.pulse-mark { width:5px; height:5px; margin-top:4px; border-radius:50%; border:1px solid var(--coral); }
.pulse-item:nth-child(2) .pulse-mark { border-color:var(--lime); }
.pulse-item:nth-child(3) .pulse-mark { border-color:var(--sky); }
.pulse-item em { color:#9b9181; font-style:normal; font-size:9px; }
.assets { margin-top:16px; }
.asset-list { display:flex; gap:5px; flex-wrap:wrap; margin-top:9px; }
.asset-chip { padding:4px 6px; background:#e7dfcf; border:1px solid #bfb5a4; border-radius:4px 6px 4px 5px; font-size:9px; color:#4c463d; }
.asset-chip.ticker { background:var(--ink); color:var(--paper); border-color:var(--ink); }
.asset-chip.ticker:hover { background:var(--coral); border-color:var(--coral); }
.card-bottom { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:19px; padding-top:12px; border-top:1px dashed #c0b7a7; color:#938a7c; font-size:9px; }
.action { border:0; background:transparent; padding:0; color:#4e483e; font-size:10px; text-decoration:underline; text-underline-offset:3px; }
.action:hover { color:var(--coral); }
.empty { grid-column:1/-1; padding:60px 20px; border:1px dashed rgba(242,233,214,.25); border-radius:8px; color:#979084; text-align:center; }
.footer { display:flex; justify-content:space-between; gap:15px; color:#6c665d; border-top:1px solid rgba(242,233,214,.15); margin-top:55px; padding-top:15px; font-size:9px; }
.footer strong { color:#aaa197; font-weight:500; }
.footer > div { display:flex; gap:14px; flex-wrap:wrap; }
.footer-links { display:flex; flex-wrap:wrap; gap:10px; }
.footer-links a { color:inherit; text-decoration:none; border-bottom:1px solid currentColor; }
.footer-links a:hover { color:var(--brand); }
.chart-demo-label { display:inline-block; margin:0 0 12px; padding:5px 8px; color:var(--ink); background:var(--lime); border:1px solid var(--ink); border-radius:4px 7px 4px 6px; font-family:var(--mono-font); font-size:9px; letter-spacing:.08em; }
.overlay { position:fixed; inset:0; z-index:30; background:rgba(7,7,7,.78); backdrop-filter:blur(4px); opacity:0; pointer-events:none; transition:opacity .25s; }
.overlay.open { opacity:1; pointer-events:auto; }
.drawer { position:absolute; top:20px; right:20px; bottom:20px; width:min(620px,calc(100% - 40px)); overflow:auto; padding:28px; color:var(--ink); background:var(--paper); border:1px solid #272623; border-radius:7px 14px 8px 11px; box-shadow:-8px 10px 0 rgba(242,233,214,.35); transform:translateX(24px) rotate(.7deg); transition:.3s; }
.overlay.open .drawer { transform:translateX(0) rotate(0); }
.close { position:absolute; top:17px; right:17px; width:28px; height:28px; border:1px solid #b8ae9f; border-radius:50%; background:transparent; color:var(--ink); font-size:16px; line-height:1; }
.close:hover { background:var(--ink); color:var(--paper); }
.drawer-title { max-width:520px; margin:20px 0 10px; font:400 36px/1.1 Georgia,"Songti SC",serif; letter-spacing:-.07em; }
.drawer-thesis { color:#6e675b; font-size:12px; line-height:1.7; max-width:520px; }
.drawer-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:25px 0; }
.drawer-stat { padding:14px; border:1px solid #bcb2a1; border-radius:4px 7px 5px 6px; }
.drawer-stat-label { color:#837b6f; font-size:9px; }
.drawer-stat-value { margin-top:7px; font-size:26px; line-height:1; }
.drawer-section { border-top:1px solid #bcb2a1; padding:18px 0; }
.drawer-section h3 { margin:0 0 12px; font-size:11px; letter-spacing:.13em; text-transform:uppercase; }
.drawer-pulse { display:grid; grid-template-columns:20px minmax(0,1fr); gap:10px; padding:10px 0; border-bottom:1px dashed #c8beae; font-size:12px; line-height:1.6; }
.pulse-index { width:19px; height:19px; border:1px solid var(--coral); border-radius:50%; display:grid; place-items:center; color:var(--coral); font-size:9px; }
.evidence { display:inline-flex; align-items:center; gap:5px; margin-top:7px; color:#84796a; font-size:10px; text-underline-offset:3px; }
.asset-columns { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.asset-column-label { color:#948a7b; font-size:10px; margin-bottom:8px; }
.drawer-assets { display:flex; gap:6px; flex-wrap:wrap; }
.next { color:#5e574b; font-size:12px; line-height:1.7; }
.drawer-link { display:inline-flex; align-items:center; gap:7px; margin-top:10px; color:var(--ink); font-size:10px; }
.chart-overlay .drawer { width:min(760px,calc(100% - 40px)); }
.chart-head { display:flex; justify-content:space-between; gap:20px; }
.chart-kicker { color:#887e70; font-size:10px; letter-spacing:.12em; text-transform:uppercase; }
.chart-title { margin:8px 0 0; font:400 27px Georgia,"Songti SC",serif; letter-spacing:-.06em; }
.chart-stage { margin:28px 0 14px; border:1px solid #bcb2a1; border-radius:5px 8px 6px 9px; background:#eee6d7; padding:15px 10px 9px; }
.chart-stage svg { display:block; width:100%; height:auto; overflow:visible; }
.chart-note { color:#918778; font-size:9px; line-height:1.6; }
.pulse-legend { display:flex; gap:16px; color:#746b5c; font-size:10px; margin-top:16px; }
.pulse-legend span { display:flex; align-items:center; gap:6px; }
.legend-pulse { width:6px; height:6px; border-radius:50%; background:var(--coral); }
.legend-candle { width:10px; height:10px; border:1px solid var(--ink); }
@media(max-width:1150px){.signal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.board{grid-template-columns:150px minmax(0,1fr)}}
@media(max-width:820px){.shell{padding:0 20px 40px}.sync{display:none}.hero{grid-template-columns:1fr;gap:26px;padding:58px 0 42px}.hero-note{max-width:390px;justify-self:end}.board{grid-template-columns:1fr}.board-side{position:static;display:grid;grid-template-columns:1fr 1fr;gap:20px}.toolbar{align-items:flex-start;flex-direction:column;gap:14px}}
@media(max-width:560px){.shell{padding:0 14px 35px}.top-actions .notion-link{padding:7px 8px;font-size:0}.top-actions .notion-link svg{width:15px;height:15px}h1{font-size:42px}.hero-note{justify-self:stretch}.board-side{grid-template-columns:1fr}.signal-grid{grid-template-columns:1fr;gap:20px}.drawer{top:0;right:0;bottom:0;width:100%;border-radius:0;padding:22px 18px 35px}.drawer-title{font-size:32px;padding-right:30px}.drawer-stat{padding:11px 9px}.drawer-stat-value{font-size:22px}.asset-columns{grid-template-columns:1fr;gap:15px}.chart-overlay .drawer{width:100%}.footer{flex-direction:column}}
.timeline-mini { position:relative; z-index:1; margin-top:18px; padding-top:11px; border-top:1px solid #c9c0b0; }
.timeline-head, .timeline-dates { display:flex; justify-content:space-between; align-items:center; color:#8b8173; font-family:"Geist Mono","SFMono-Regular",monospace; font-size:8px; letter-spacing:.05em; text-transform:uppercase; }
.timeline-rail { position:relative; height:12px; margin:8px 3px 2px; border-top:1px solid #5f574c; }
.timeline-rail::after { content:""; position:absolute; left:0; right:0; top:-2px; height:3px; background:linear-gradient(90deg,rgba(229,141,112,.35),rgba(201,211,92,.5)); opacity:.55; }
.timeline-end, .pulse-mark-dot { position:absolute; display:block; z-index:1; width:8px; height:8px; top:-5px; border:1px solid var(--ink); border-radius:50%; background:var(--paper); }
.timeline-end.start { left:0; background:var(--coral); }
.timeline-end.current { right:0; background:var(--lime); }
.pulse-mark-dot { width:7px; height:7px; top:-4px; background:var(--sky); border-color:var(--ink); }
.timeline-dates { text-transform:none; letter-spacing:0; }
.drawer-section-head { display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.drawer-section-head h3 { margin-bottom:0; }
.drawer-section-head > span { color:#8b8173; font-family:"Geist Mono","SFMono-Regular",monospace; font-size:9px; }
.full-timeline { display:grid; gap:0; margin-top:13px; }
.timeline-event { display:grid; grid-template-columns:20px minmax(0,1fr); gap:11px; min-height:55px; }
.timeline-event-rail { position:relative; display:flex; justify-content:center; }
.timeline-event-rail::before { content:""; position:absolute; top:0; bottom:-1px; width:1px; background:#c8beae; }
.timeline-event:last-child .timeline-event-rail::before { bottom:50%; }
.timeline-event-rail span { position:relative; z-index:1; margin-top:4px; width:9px; height:9px; border:1.5px solid var(--ink); border-radius:50%; background:var(--paper); }
.timeline-event.birth .timeline-event-rail span { background:var(--coral); }
.timeline-event.pulse .timeline-event-rail span { background:var(--sky); }
.timeline-event.update .timeline-event-rail span { background:var(--lime); }
.timeline-event-copy { padding:0 0 14px; }
.timeline-event-top { display:flex; justify-content:space-between; gap:12px; color:var(--ink); font-size:11px; font-weight:700; }
.timeline-event-top time { color:#8b8173; font-family:"Geist Mono","SFMono-Regular",monospace; font-size:9px; font-weight:400; white-space:nowrap; }
.timeline-event-copy p { margin:5px 0 0; color:#746b5d; font-size:10px; line-height:1.55; }
/* Poster-inspired product layer: bold display type, high-saturation accents, ink-like edges. */
:root {
  --display-font: "Söhne", "Geist", Inter, system-ui, sans-serif;
  --body-font: Inter, "Helvetica Neue", "PingFang SC", sans-serif;
  --mono-font: "Geist Mono", "SFMono-Regular", Consolas, monospace;
  --cyan: #18d7f2;
  --magenta: #ff3aa8;
  --electric: #5b6dff;
  --acid: #dcf56a;
}
body { overflow-x:hidden; font-family:var(--body-font); background:linear-gradient(135deg,#061d21 0%,#10181c 48%,#24101f 100%); }
body::before { display:none; }
.shell { max-width:1600px; }
.shell::before { content:""; position:absolute; z-index:-1; top:80px; left:0; right:0; height:550px; pointer-events:none; opacity:.78; background:radial-gradient(ellipse at 18% 38%,rgba(24,215,242,.48),transparent 34%),radial-gradient(ellipse at 73% 28%,rgba(91,109,255,.42),transparent 31%),radial-gradient(ellipse at 92% 63%,rgba(255,58,168,.45),transparent 33%); filter:blur(14px); }
.shell::before { filter:none; opacity:.52; }
.wordmark-title, .eyebrow, .side-label, .label, .timeline-head, .timeline-dates, .code, .meta, .sync, .filter, .notion-link { font-family:var(--mono-font); }
.wordmark-title { font-size:12px; letter-spacing:.2em; }
.wordmark-sub { font-family:var(--mono-font); }
.hero { position:relative; padding-top:82px; }
.hero > * { position:relative; z-index:1; }
.eyebrow { color:var(--acid); }
.eyebrow-line { background:var(--cyan); }
h1 { color:#fffdf5; font-family:var(--display-font); font-weight:800; letter-spacing:-.085em; }
.hero-copy { color:#d1d8d0; }
.hero-note { color:#fffdf5; border:0; background:linear-gradient(135deg,#12cfe8 0%,#5276ff 45%,#ff3aa8 100%); box-shadow:7px 8px 0 rgba(0,0,0,.35); transform:rotate(1.2deg); }
.hero-note::before { border-top-color:var(--acid); }
.hero-note p { font-family:var(--display-font); font-weight:800; text-transform:uppercase; letter-spacing:-.05em; }
.hero-note small { color:rgba(255,255,255,.75); font-family:var(--mono-font); }
.filter { color:#d6ddd7; border-color:rgba(255,255,255,.28); }
.filter:hover, .filter.active { color:#071c20; background:linear-gradient(90deg,var(--acid),var(--cyan)); border-color:transparent; box-shadow:3px 3px 0 rgba(0,0,0,.3); }
.meta { color:#9ca9a1; }
.meta strong { color:var(--acid); }
.side-copy { color:#e2ddd1; }
.side-label { color:var(--cyan); }
.side-line { background:var(--magenta); }
.source-note { color:#a6b0a9; }
.source-note a { color:var(--acid); }
.signal-grid { gap:20px; }
.signal-card { --accent:var(--cyan); background:linear-gradient(145deg,#fffaf0 0%,#f4ead9 100%); border-top:3px solid var(--accent); box-shadow:6px 7px 0 rgba(0,0,0,.34); }
.signal-card:nth-child(3n+2) { --accent:var(--magenta); }
.signal-card:nth-child(3n+3) { --accent:var(--acid); }
.signal-card:hover { box-shadow:9px 12px 0 rgba(0,0,0,.42); }
.cat.main { background:var(--accent); border-color:var(--ink); }
.card-title, .drawer-title, .chart-title { font-family:var(--display-font); font-weight:800; }
.card-title { letter-spacing:-.075em; }
.card-code, .code { font-family:var(--mono-font); }
.stat-value, .drawer-stat-value { font-family:var(--mono-font); font-weight:600; }
.fill { background:var(--magenta); }
.fill.heat { background:var(--cyan); }
.pulse-mark { border-color:var(--magenta); }
.pulse-item:nth-child(2) .pulse-mark { border-color:var(--cyan); }
.pulse-item:nth-child(3) .pulse-mark { border-color:var(--acid); }
.timeline-mini { border-top-color:#918575; }
.timeline-rail::after { background:linear-gradient(90deg,var(--magenta),var(--cyan),var(--acid)); }
.pulse-mark-dot { background:var(--cyan); }
.timeline-head, .timeline-dates, .card-bottom { font-family:var(--mono-font); }
.drawer { box-shadow:-8px 10px 0 rgba(0,0,0,.35); }
.drawer-section-head > span, .timeline-event-top time { font-family:var(--mono-font); }
.chart-stage { background:linear-gradient(135deg,#d7fbf1 0%,#d8eaff 55%,#f8d9ee 100%); }
.footer { font-family:var(--mono-font); }

/* Light editorial canvas: keep the cards warm and tactile, while giving the board
   a calm paper-like stage with restrained color accents. */
:root {
  --bg: #f1f0ec;
  --paper: #fffdf8;
  --ink: #202a29;
  --muted: #737b76;
  --line: #c8cdc6;
  --lime: #a4b55b;
  --coral: #c98475;
  --sky: #70aeb5;
  --yellow: #d4ad62;
  --cyan: #76b7bc;
  --magenta: #b58da8;
  --electric: #8497c5;
  --acid: #acbb6d;
}
body {
  color: var(--ink);
  background:
    radial-gradient(ellipse at 10% 8%, rgba(157, 205, 204, .34), transparent 30%),
    radial-gradient(ellipse at 86% 16%, rgba(207, 181, 205, .28), transparent 27%),
    radial-gradient(ellipse at 55% 94%, rgba(219, 204, 160, .25), transparent 35%),
    linear-gradient(135deg, #f6f4ef 0%, #eef1ed 49%, #f3eef1 100%);
}
body::before {
  display: block;
  z-index: 0;
  opacity: .16;
  background-image: radial-gradient(rgba(49, 61, 57, .26) .55px, transparent .7px);
  background-size: 6px 6px;
}
.shell { color: var(--ink); }
.shell::before {
  top: 55px;
  height: 460px;
  opacity: .38;
  background:
    radial-gradient(ellipse at 18% 38%, rgba(118, 183, 188, .23), transparent 34%),
    radial-gradient(ellipse at 74% 25%, rgba(132, 151, 197, .18), transparent 31%),
    radial-gradient(ellipse at 91% 64%, rgba(181, 141, 168, .18), transparent 33%);
}
.topbar { border-bottom-color: rgba(32, 42, 41, .14); }
.mark { color: #688f92; border-color: #688f92; box-shadow: 2px 2px 0 rgba(112, 174, 181, .22); }
.wordmark-title { color: #283330; }
.wordmark-sub { color: #7d8780; }
.sync { color: #6f7973; }
.sync-dot { background: var(--lime); box-shadow: 0 0 0 4px rgba(164, 181, 91, .16); }
.notion-link { color: #34413d; border-color: rgba(32, 42, 41, .22); }
.notion-link:hover { color: #5d7f82; border-color: #76b7bc; }
.eyebrow { color: #718d57; }
.eyebrow-line { background: #76b7bc; }
h1 { color: #1e2a29; }
.hero-copy { color: #68746e; }
.hero-note {
  color: #30413e;
  background: linear-gradient(135deg, rgba(210, 241, 236, .92), rgba(224, 225, 246, .92) 55%, rgba(245, 224, 232, .92));
  border: 1px solid rgba(65, 92, 88, .18);
  box-shadow: 7px 8px 0 rgba(79, 99, 94, .12);
}
.hero-note::before { border-top-color: #b58da8; }
.hero-note small { color: #6e7d78; }
.filter { color: #66736d; border-color: rgba(32, 42, 41, .18); }
.filter:hover, .filter.active {
  color: #263330;
  background: linear-gradient(90deg, #dbe9ba, #c8e4e0);
  border-color: #9fb9a3;
  box-shadow: 3px 3px 0 rgba(79, 99, 94, .10);
}
.meta { color: #758079; }
.meta strong { color: #617b62; }
.side-label { color: #6c8c82; }
.side-line { background: #b58da8; }
.side-copy { color: #5f6e68; }
.legend { color: #78847d; }
.source-note { color: #7b8680; border-top-color: rgba(32, 42, 41, .13); }
.source-note a { color: #668e8e; }
.signal-card {
  background: linear-gradient(145deg, #fffefa 0%, #f8f5ed 100%);
  border-color: #33403d;
  box-shadow: 6px 7px 0 rgba(64, 80, 75, .14);
}
.signal-card:hover { box-shadow: 9px 12px 0 rgba(64, 80, 75, .18); }
.signal-card::before { border-color: rgba(32, 42, 41, .14); }
.cat.main { color: #fffdf8; }
.status { color: #68736d; }
.code { color: #8a948c; }
.card-title { color: #202b29; }
.thesis { color: #69756f; }
.stats { border-color: #c7cec6; }
.stat-head, .label, .timeline-head, .timeline-dates { color: #7b867f; }
.stat-value { color: #25322f; }
.track { background: #e0e5dc; }
.asset-chip { background: #e7eee6; border-color: #bdcbbd; color: #53635b; }
.asset-chip.ticker { color: #fffdf8; }
.card-bottom { color: #89928b; border-top-color: #cbd1c9; }
.action { color: #52635d; }
.empty { color: #7d8880; border-color: rgba(32, 42, 41, .20); }
.footer { color: #758079; border-top-color: rgba(32, 42, 41, .14); }
.footer strong { color: #586c63; }
.overlay { background: rgba(38, 48, 45, .32); }
.drawer { box-shadow: -8px 10px 0 rgba(64, 80, 75, .16); }
.drawer-stat { border-color: #bdc8bf; }
.drawer-section { border-top-color: #c3cdc4; }
.drawer-section-head > span, .timeline-event-top time { color: #7e8a83; }
.chart-stage { background: linear-gradient(135deg, #e2f2ed 0%, #e3e8f5 55%, #f5e6ed 100%); }

/* High-contrast light mode: bright signal colors on a quiet paper canvas. */
:root {
  --bg: #f3f2ed;
  --paper: #fffdf7;
  --ink: #17211f;
  --muted: #626d68;
  --line: #b7c0b9;
  --lime: #b9d83d;
  --coral: #f02e80;
  --sky: #00b9d3;
  --yellow: #e2b72f;
  --display-font: "Söhne", "Geist", "FangSong", "仿宋", "STFangSong", serif;
  --body-font: Inter, "FangSong", "仿宋", "STFangSong", "Songti SC", serif;
  --mono-font: "Geist Mono", "FangSong", "仿宋", "STFangSong", monospace;
  --cyan: #00b9d3;
  --magenta: #f02e80;
  --electric: #5268ff;
  --acid: #b9d83d;
}
body {
  background:
    radial-gradient(ellipse at 8% 8%, rgba(0, 185, 211, .17), transparent 29%),
    radial-gradient(ellipse at 89% 13%, rgba(240, 46, 128, .12), transparent 27%),
    radial-gradient(ellipse at 57% 95%, rgba(185, 216, 61, .14), transparent 32%),
    linear-gradient(135deg, #faf9f5 0%, #eef2ef 48%, #f6eef2 100%);
  font-family: var(--body-font);
}
body::before { opacity: .13; }
.shell::before {
  opacity: .66;
  background:
    radial-gradient(ellipse at 17% 38%, rgba(0, 185, 211, .30), transparent 33%),
    radial-gradient(ellipse at 74% 26%, rgba(82, 104, 255, .24), transparent 30%),
    radial-gradient(ellipse at 91% 63%, rgba(240, 46, 128, .24), transparent 32%);
}
.mark { color: var(--electric); border-color: var(--electric); box-shadow: 2px 2px 0 rgba(0, 185, 211, .32); }
.sync-dot { background: var(--acid); box-shadow: 0 0 0 4px rgba(185, 216, 61, .23); }
.notion-link:hover { color: var(--electric); border-color: var(--electric); }
.eyebrow { color: #5a8100; }
.eyebrow-line { background: var(--cyan); }
h1 { color: #101917; }
.hero-copy { color: #53625c; }
.hero-note {
  color: #fff;
  background: linear-gradient(120deg, #00b9d3 0%, #5268ff 52%, #f02e80 100%);
  border-color: #17211f;
  box-shadow: 8px 9px 0 rgba(23, 33, 31, .20);
}
.hero-note::before { border-top-color: var(--acid); }
.hero-note small { color: rgba(255, 255, 255, .86); }
.filter { color: #3f514a; border-color: rgba(23, 33, 31, .28); }
.filter:hover, .filter.active {
  color: #111b19;
  background: linear-gradient(90deg, var(--acid), #72e1db);
  border-color: #52685f;
  box-shadow: 3px 3px 0 rgba(23, 33, 31, .18);
}
.meta { color: #5d6b65; }
.meta strong { color: #e02175; }
.side-label { color: #007e91; }
.side-line { background: var(--magenta); }
.side-copy { color: #43534c; }
.source-note { color: #5f6e67; }
.source-note a { color: #007e91; }
.signal-card {
  background: linear-gradient(145deg, #fffefa 0%, #f8f3e7 100%);
  border-color: #17211f;
  box-shadow: 7px 8px 0 rgba(23, 33, 31, .24);
}
.signal-card:nth-child(3n+2) { --accent: var(--magenta); }
.signal-card:nth-child(3n+3) { --accent: var(--acid); }
.signal-card:hover { box-shadow: 10px 13px 0 rgba(23, 33, 31, .30); }
.cat.main { color: #111b19; }
.signal-card:nth-child(3n+2) .cat.main { color: #fff; }
.signal-card:nth-child(3n+3) .cat.main { color: #17211f; }
.status i { background: var(--acid); }
.status i.watch { background: var(--yellow); }
.code { color: #697871; }
.card-title { color: #111b19; }
.thesis { color: #52615a; }
.stats { border-color: #aebbb2; }
.stat-head, .label, .timeline-head, .timeline-dates { color: #66756d; }
.stat-value { color: #17211f; }
.track { background: #dce5dc; }
.fill { background: var(--magenta); }
.fill.heat { background: var(--cyan); }
.pulse-mark { border-color: var(--magenta); }
.pulse-item:nth-child(2) .pulse-mark { border-color: var(--cyan); }
.pulse-item:nth-child(3) .pulse-mark { border-color: var(--electric); }
.asset-chip { background: #e8f0dd; border-color: #a9bf8e; color: #33452e; }
.asset-chip.ticker { background: #17211f; color: #fffdf7; border-color: #17211f; }
.asset-chip.ticker:hover { background: var(--magenta); border-color: var(--magenta); }
.card-bottom { color: #708078; border-top-color: #b7c3b9; }
.action { color: #253d35; }
.action:hover { color: var(--magenta); }
.timeline-mini { border-top-color: #9aa99f; }
.timeline-rail::after { background: linear-gradient(90deg, var(--magenta), var(--cyan), var(--acid)); }
.pulse-mark-dot { background: var(--cyan); }
.drawer { box-shadow: -9px 11px 0 rgba(23, 33, 31, .23); }
.drawer-stat { border-color: #aebbb2; }
.drawer-section { border-top-color: #b6c1b8; }
.chart-stage { background: linear-gradient(135deg, #d3fbf2 0%, #d8e1ff 55%, #ffd7e9 100%); }
.footer { color: #66756d; border-top-color: rgba(23, 33, 31, .18); }
.footer strong { color: #253d35; }

/* Every Chinese text run falls back to FangSong, while Latin keeps its display hierarchy. */
h1, .hero-note p, .side-copy, .card-title, .drawer-title, .chart-title,
.drawer, .signal-card, .filter, .notion-link, .sync, .source-note, .footer,
.timeline-event-copy, .pulse-item, .thesis, .action, .asset-chip { font-family: var(--body-font); }
h1, .hero-note p, .card-title, .drawer-title, .chart-title { font-family: var(--display-font); }
.wordmark-title, .wordmark-sub, .eyebrow, .side-label, .label, .timeline-head,
.timeline-dates, .code, .meta, .filter, .notion-link, .sync, .footer,
.stat-value, .drawer-stat-value { font-family: var(--mono-font); }

/* Illustration-led first screen: deep blue field, soft organic frame, and a
   generous image block that sets the palette for the rest of the dashboard. */
:root {
  --cjk-font: "HarmonyOS Sans SC", "HarmonyOS Sans", "鸿蒙黑体", sans-serif;
  --display-font: "Söhne", "Geist", var(--cjk-font), sans-serif;
  --body-font: Inter, var(--cjk-font), sans-serif;
  --mono-font: "Geist Mono", var(--cjk-font), monospace;
}
.hero {
  grid-template-columns: minmax(0, .82fr) minmax(420px, 1.18fr);
  gap: 44px;
  align-items: center;
}
.hero-visual {
  position: relative;
  align-self: center;
  display: flex;
  justify-content: flex-end;
  min-width: 0;
}
.hero-art-frame {
  position: relative;
  width: min(100%, 640px);
  overflow: hidden;
  border: 1.5px solid #17211f;
  border-radius: 18px 12px 20px 10px;
  background: #0869c9;
  box-shadow: 11px 13px 0 var(--magenta);
  transform: rotate(1.1deg);
}
.hero-art-frame::before {
  content: "";
  position: absolute;
  inset: 12px;
  z-index: 1;
  pointer-events: none;
  border: 1px solid rgba(255, 247, 214, .72);
  border-radius: 11px 7px 13px 6px;
}
.hero-art {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}
.hero-art-label,
.hero-art-caption {
  position: absolute;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  color: #17211f;
  background: rgba(255, 248, 218, .94);
  border: 1px solid #17211f;
  box-shadow: 3px 3px 0 rgba(23, 33, 31, .22);
}
.hero-art-label {
  top: 22px;
  right: 24px;
  padding: 6px 8px;
  font: 9px/1 var(--mono-font);
  letter-spacing: .08em;
}
.hero-art-caption {
  left: 24px;
  bottom: 23px;
  padding: 8px 11px 7px;
  font: 700 13px/1 var(--display-font);
  letter-spacing: -.02em;
}
.hero-copy { max-width: 500px; }
@media(max-width:1150px) {
  .hero { grid-template-columns: minmax(0, .8fr) minmax(360px, 1.2fr); gap: 28px; }
}
@media(max-width:820px) {
  .hero { grid-template-columns: 1fr; gap: 30px; }
  .hero-visual { justify-content: stretch; }
  .hero-art-frame { width: 100%; }
}
@media(max-width:560px) {
  .hero-art-label { top: 16px; right: 17px; font-size: 8px; }
  .hero-art-caption { left: 17px; bottom: 17px; font-size: 11px; }
}

/* Sigora purple product layer: the deck's calm field, signal accents, and
   card-first information architecture carried into the working dashboard. */
:root {
  --bg: #f7f4ff;
  --paper: #fffdf9;
  --ink: #26205e;
  --muted: #737185;
  --line: #d4cff2;
  --brand: #5a50bc;
  --brand-mid: #8b7cf6;
  --brand-soft: #eeefff;
  --coral: #e9b0a2;
  --lime: #dce98b;
  --sky: #b7b1f0;
  --display-font: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
  --body-font: Inter, "PingFang SC", "Microsoft YaHei", sans-serif;
  --mono-font: "Geist Mono", "SFMono-Regular", Consolas, monospace;
}
html { background: var(--bg); }
body {
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 12%, rgba(139,124,246,.15), transparent 27%),
    radial-gradient(circle at 88% 36%, rgba(233,176,162,.12), transparent 24%),
    var(--bg);
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .38;
  background-image: linear-gradient(rgba(90,80,188,.055) 1px, transparent 1px), linear-gradient(90deg, rgba(90,80,188,.055) 1px, transparent 1px);
  background-size: 72px 72px;
  mask-image: linear-gradient(to bottom, black, transparent 85%);
}
.shell { max-width: 1540px; padding: 0 48px 56px; }
.shell::before {
  top: 0;
  height: 640px;
  opacity: .42;
  filter: blur(8px);
  background: radial-gradient(ellipse at 14% 20%, rgba(139,124,246,.24), transparent 35%), radial-gradient(ellipse at 78% 17%, rgba(233,176,162,.2), transparent 30%);
}
.topbar { min-height: 86px; border-bottom-color: var(--line); }
.wordmark { gap: 0; display: flex; align-items: center; }
.sigora-logo { width: 180px; height: auto; display: block; }
.wordmark-title { color: var(--ink); font: 700 22px/1 var(--display-font); letter-spacing: -.06em; text-transform: lowercase; }
.wordmark-sub { color: var(--muted); font: 9px/1 var(--mono-font); letter-spacing: .18em; }
.top-actions { gap: 18px; }
.sync { color: var(--muted); font-family: var(--mono-font); }
.sync-dot { background: var(--brand-mid); box-shadow: 0 0 0 4px rgba(139,124,246,.14); }
.notion-link { color: var(--brand); border-color: #bbb5ef; background: rgba(255,253,249,.5); }
.notion-link:hover { color: var(--ink); border-color: var(--brand); background: var(--brand-soft); }
.hero { padding: 88px 0 68px; }
.eyebrow { color: var(--brand); }
.eyebrow-line { background: var(--brand-mid); }
h1 { color: var(--ink); font-family: var(--display-font); font-weight: 800; letter-spacing: -.09em; }
.hero-copy { color: var(--muted); }
.hero-stats { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 28px; color: var(--muted); font: 10px var(--mono-font); letter-spacing: .04em; }
.hero-stats span { display: inline-flex; align-items: baseline; gap: 7px; padding-top: 10px; border-top: 1px solid var(--line); }
.hero-stats b { color: var(--brand); font-size: 18px; font-weight: 500; }
.hero-art-frame { border-color: var(--brand); border-radius: 18px 13px 20px 11px; background: var(--brand-soft); box-shadow: 11px 13px 0 rgba(90,80,188,.2); transform: rotate(.7deg); }
.hero-art-frame::before { border-color: rgba(255,253,249,.78); }
.hero-art-label, .hero-art-caption { color: var(--ink); background: rgba(255,253,249,.9); border-color: var(--brand); box-shadow: 3px 3px 0 rgba(90,80,188,.18); }
.hero-art-caption { font-family: var(--display-font); }
.toolbar { margin-bottom: 25px; }
.filters { gap: 7px; }
.filter { color: var(--muted); border-color: var(--line); background: rgba(255,253,249,.44); }
.filter:hover, .filter.active { color: var(--paper); background: var(--brand); border-color: var(--brand); box-shadow: 3px 3px 0 rgba(90,80,188,.18); }
.view-toggle { border-color: var(--line); background: rgba(255,253,249,.48); }
.view-toggle-button { color: var(--muted); }
.view-toggle-button:hover, .view-toggle-button.active { color: var(--paper); background: var(--brand); }
.meta { color: var(--muted); }
.meta strong { color: var(--brand); }
.board { grid-template-columns: 180px minmax(0,1fr); gap: 30px; }
.board-side { top: 24px; }
.side-label { color: var(--brand); }
.side-line { background: var(--coral); }
.side-copy { color: var(--ink); }
.legend { color: var(--muted); }
.legend-line { background: var(--brand); }
.legend-line.coral { background: var(--coral); }
.legend-line.sky { background: var(--brand-mid); }
.source-note { color: var(--muted); border-top-color: var(--line); }
.source-note a { color: var(--brand); }
.signal-grid { gap: 20px; }
.signal-card { min-height: 415px; color: var(--ink); background: linear-gradient(145deg, #fffdf9 0%, #f4f0ff 100%); border-color: #c3bced; border-top: 3px solid var(--accent, var(--brand)); box-shadow: 6px 8px 0 rgba(90,80,188,.16); }
.signal-card::before { border-color: rgba(90,80,188,.15); }
.signal-card:hover { box-shadow: 9px 12px 0 rgba(90,80,188,.22); }
.cat { border-color: var(--ink); }
.cat.main { color: var(--paper); background: var(--accent, var(--brand)); border-color: var(--ink); }
.status { color: var(--muted); }
.status i { background: var(--brand-mid); }
.status i.watch { background: var(--coral); }
.code { color: #918ba9; }
.card-title { color: var(--ink); font-family: var(--display-font); font-weight: 750; letter-spacing: -.065em; }
.thesis { color: var(--muted); }
.stats { border-color: var(--line); }
.stat-head { color: var(--muted); }
.track { background: #dedaf0; }
.fill { background: var(--brand-mid); }
.fill.heat { background: var(--coral); }
.label { color: var(--muted); }
.label span:last-child { color: #a19cb4; }
.pulse-item { color: var(--ink); }
.pulse-mark { border-color: var(--brand); }
.pulse-item:nth-child(2) .pulse-mark { border-color: var(--coral); }
.pulse-item:nth-child(3) .pulse-mark { border-color: var(--lime); }
.pulse-item em { color: #9c96ae; }
.asset-chip { color: var(--ink); background: var(--brand-soft); border-color: #c3bced; }
.asset-chip.ticker { color: var(--paper); background: var(--brand); border-color: var(--brand); }
.asset-chip.ticker:hover { background: var(--coral); border-color: var(--coral); }
.card-bottom { border-top-color: var(--line); color: #9c96ae; }
.action { color: var(--brand); }
.action:hover { color: var(--coral); }
.timeline-mini { border-top-color: var(--line); }
.timeline-head, .timeline-dates { color: #9690aa; }
.timeline-rail { border-top-color: #8e87aa; }
.timeline-rail::after { background: linear-gradient(90deg, rgba(233,176,162,.5), rgba(139,124,246,.65)); }
.timeline-end.start { background: var(--coral); }
.timeline-end.current { background: var(--brand-mid); }
.pulse-mark-dot { background: var(--lime); }
.footer { color: #9791a7; border-top-color: var(--line); }
.footer strong { color: var(--brand); }
.overlay { background: rgba(38,32,94,.38); }
.drawer { color: var(--ink); background: var(--paper); border-color: #c3bced; box-shadow: -8px 10px 0 rgba(90,80,188,.22); }
.close { color: var(--ink); border-color: #bdb6e7; }
.close:hover { color: var(--paper); background: var(--brand); }
.drawer-title { color: var(--ink); font-family: var(--display-font); font-weight: 800; }
.drawer-thesis, .drawer-stat-label, .drawer-section, .next { color: var(--muted); }
.drawer-stat { border-color: var(--line); }
.drawer-stat-value { color: var(--brand); }
.drawer-section { border-top-color: var(--line); }
.drawer-pulse { border-bottom-color: var(--line); }
.pulse-index { color: var(--brand); border-color: var(--brand); }
.evidence, .drawer-link { color: var(--brand); }
.asset-column-label { color: var(--muted); }
.chart-stage { border-color: var(--line); background: var(--brand-soft); }
.chart-note { color: var(--muted); }
@media(max-width:820px) { .shell { padding: 0 22px 44px; } .hero-stats { gap: 12px 18px; } }
@media(max-width:560px) { .shell { padding: 0 15px 35px; } .sigora-logo { width: 150px; } .hero-stats { display: grid; grid-template-columns: 1fr 1fr; } .hero-stats span:last-child { grid-column: 1 / -1; } }

/* Motion system: editorial signal flow, fast to interrupt and quiet by default. */
:root {
  --ease-out: cubic-bezier(.23, 1, .32, 1);
  --ease-drawer: cubic-bezier(.32, .72, 0, 1);
  --duration-press: 120ms;
  --duration-hover: 180ms;
  --duration-drawer: 280ms;
}
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible { outline: 2px solid var(--brand-mid); outline-offset: 3px; }
.filter, .view-toggle-button, .notion-link, .action, .close, .asset-chip.ticker {
  transition: color 140ms ease, background-color 180ms ease, border-color 180ms ease, transform 140ms ease-out, box-shadow 180ms ease;
}
.filter:active, .view-toggle-button:active, .notion-link:active, .action:active, .close:active, .asset-chip.ticker:active { transform: scale(.97); }
.signal-card {
  transition: transform var(--duration-hover) ease-out, box-shadow var(--duration-hover) ease-out, opacity 180ms ease-out, filter 180ms ease-out;
}
.signal-card.card-enter {
  opacity: 0;
  transform: translateY(8px) rotate(var(--tilt));
}
.signal-card.card-enter.card-entered {
  opacity: 1;
  transform: rotate(var(--tilt));
  transition-delay: var(--enter-delay);
}
@media (hover: hover) and (pointer: fine) {
  .signal-card:hover { transform: translateY(-4px) rotate(0); }
}
@media (hover: none) {
  .signal-card:hover { transform: rotate(var(--tilt)); box-shadow: 6px 8px 0 rgba(90,80,188,.16); }
}
.fill {
  transform-origin: left center;
  transition: transform 520ms var(--ease-out);
}
.fill-reveal { transform: scaleX(0); }
.fill-reveal.fill-reveal-active { transform: scaleX(1); }
.hero > div, .hero-visual, .toolbar {
  animation: signal-enter 460ms var(--ease-out) both;
}
.hero-visual { animation-delay: 70ms; }
.toolbar { animation-delay: 140ms; }
@keyframes signal-enter {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.overlay { transition: opacity 200ms ease-out; }
.drawer { transition: transform var(--duration-drawer) var(--ease-drawer); }
.drawer > #drawerContent, .drawer > #chartContent {
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 160ms ease-out 70ms, transform 220ms var(--ease-out) 70ms;
}
.overlay.open .drawer > #drawerContent, .overlay.open .drawer > #chartContent {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero > div, .hero-visual, .toolbar { animation: none; }
  .signal-card, .filter, .view-toggle-button, .notion-link, .action, .close, .asset-chip.ticker,
  .overlay, .drawer, .drawer > #drawerContent, .drawer > #chartContent, .fill { transition: none !important; }
  .signal-card.card-enter { opacity: 1; transform: rotate(var(--tilt)); }
  .fill-reveal, .fill-reveal.fill-reveal-active { transform: none; }
}
