.sr-only{
position:absolute; width:1px; height:1px;
padding:0; margin:-1px; overflow:hidden;
clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
/* ---------- stop the vertical scrollbar from causing page "flicker" ----------
   The terminal's widget cards, live rows and connection state all reflow the
   page's total height continuously (a whale row arriving, a widget being
   toggled, the tape reconnecting, etc.). Left alone, each of those height
   changes can cross the point where the browser's own scrollbar appears or
   disappears — and adding/removing that ~15px scrollbar shifts every column
   sideways for a frame, which reads as a visible flicker/jump even though
   nothing about the layout actually changed. Reserving the scrollbar's track
   permanently (this page only — scoped via styles-terminal.css, which no
   other page loads) removes that trigger entirely: the gutter is always
   there, so live updates can never toggle it on/off mid-session.
   scrollbar-gutter is the modern fix; overflow-y:scroll is the same fix for
   browsers that don't support it yet. */
html{ overflow-y:scroll; scrollbar-gutter:stable; }
.dot--collecting{ background:var(--signal); box-shadow:0 0 8px var(--signal); animation:dot-collecting-pulse 1.4s ease-in-out infinite; }
.dot--cached{ background:var(--violet); box-shadow:0 0 8px var(--violet); }
.dot--offline{ background:var(--danger); box-shadow:0 0 8px var(--danger); }
@keyframes dot-collecting-pulse{ 0%,100%{ opacity:1; } 50%{ opacity:.3; } }
.hero-meta{
font-size:13.5px;
color:var(--mute-dim);
margin-top:18px;
}
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
@media (max-width:900px){.grid-3{ grid-template-columns:repeat(2,1fr); }}
.badge-chip--basics{ border-color:var(--pulse); }
.badge-chip--trading{ border-color:var(--signal); }
.badge-chip--safety{ border-color:var(--violet); }
.badge-chip--derivatives{ border-color:var(--cyan); }
.badge-chip--all{ border-color:var(--signal); background:var(--signal-soft); }
.badge-chip--quiz-great{ border-color:var(--pulse); background:var(--pulse-soft); }
.badge-chip--quiz-good{ border-color:var(--pulse); }
.badge-chip--quiz-mid{ border-color:var(--signal); }
.badge-chip--quiz-low{ border-color:var(--danger); }
.track-complete-banner--basics{ border-left-color:var(--pulse); }
.track-complete-banner--trading{ border-left-color:var(--signal); }
.track-complete-banner--safety{ border-left-color:var(--violet); }
.track-complete-banner--derivatives{ border-left-color:var(--cyan); }
.track-complete-banner--all{ border-left-color:var(--signal); background:var(--signal-soft); }
.quiz-score-note--great{ color:var(--pulse); }
.quiz-score-note--good{ color:var(--pulse); }
.quiz-score-note--mid{ color:var(--signal); }
.quiz-score-note--low{ color:var(--danger); }
.callout--cta{ border-left-color:var(--pulse); background:var(--pulse-soft); }
.callout--cta b{ color:var(--pulse); }
.callout--cta a{ color:var(--ink); text-decoration:underline; text-decoration-color:var(--pulse); text-underline-offset:2px; }
.callout--cta a:hover{ color:var(--pulse); }
.fee-table-wrap{ overflow-x:auto; }
.widget-card{
--card-pad-y: 14px;
--card-pad-x: 14px;
--card-head-gap: 10px;
background:var(--panel);
border:1px solid var(--line);
border-radius:var(--radius);
padding:var(--card-pad-y) var(--card-pad-x);
display:flex; flex-direction:column;
min-height:auto;
}
.widget-card__head{
display:flex; align-items:center; justify-content:space-between;
margin:calc(-1 * var(--card-pad-y)) calc(-1 * var(--card-pad-x)) var(--card-head-gap);
padding:calc(var(--card-pad-y) * 0.7) var(--card-pad-x);
background:var(--surface-header);
border-bottom:1px solid var(--line);
}
.widget-card__head h4{ font-size:14px; margin:0; }
.widget-card__head{ flex-wrap:wrap; gap:8px 12px; }
.widget-card__body{ flex:1; display:flex; flex-direction:column; min-width:0; }
.tradingview-widget-container{ width:100%; min-width:0; overflow:hidden; position:relative; min-height:170px; }
.tradingview-widget-container.tv-tall{ min-height:430px; }
.tradingview-widget-container__widget{ width:100%; }
.tradingview-widget-container iframe{ width:100% !important; max-width:100%; }
.tv-watchdog{
position:absolute; inset:0; z-index:2;
display:flex; flex-direction:column; align-items:center; justify-content:center;
gap:10px; text-align:center; padding:18px;
background:var(--panel);
border-radius:var(--radius-sm);
transition:opacity .25s ease;
}
.tv-watchdog__spinner{
width:20px; height:20px; border-radius:50%;
border:2px solid var(--line); border-top-color:var(--signal);
animation:tv-watchdog-spin 0.8s linear infinite;
}
@keyframes tv-watchdog-spin{ to{ transform:rotate(360deg); } }
.tv-watchdog__text{ font-family:var(--font-mono); font-size:13.5px; color:var(--mute-dim); line-height:1.5; max-width:32ch; }
.tv-watchdog--error .tv-watchdog__text{ color:var(--mute); }
.tv-watchdog__text a{ color:var(--signal); text-decoration:underline; }
.tv-watchdog__text a:hover{ color:var(--ink); }
.tv-watchdog.tv-watchdog--hidden{ opacity:0; pointer-events:none; }
@media (prefers-reduced-motion: reduce){.tv-watchdog__spinner{ animation:none; border-top-color:var(--line); }}
.tv-lazy-mount{ width:100%; min-width:0; flex:1; display:flex; flex-direction:column; }
.tv-lazy-placeholder{
flex:1; display:flex; align-items:center; justify-content:center;
min-height:160px; color:var(--mute-dim); font-family:var(--font-mono); font-size:12.5px;
}
.widget-credit{
font-family:var(--font-mono); font-size:10.5px; color:var(--mute-dim);
margin:10px 0 0; text-align:right;
}
.widget-credit a{ color:var(--mute); }
.widget-credit a:hover{ color:var(--signal); }
.fng-embed{ display:flex; flex-direction:column; align-items:center; justify-content:center; flex:1; gap:0; padding:2px 0; min-width:0; }
.fng-gauge{ width:100%; max-width:120px; height:auto; }
.fng-gauge path{ transition:stroke-dasharray .5s ease, stroke .5s ease; }
.fng-gauge #fng-needle-group{ transition:transform .5s ease; transform-origin:100px 100px; }
.fng-value{ font-family:var(--font-mono); font-weight:600; font-size:19px; color:var(--ink); line-height:1; margin-top:-13px; }
.fng-label{ font-size:11.5px; color:var(--mute); text-transform:uppercase; letter-spacing:.05em; }
.news-list{ list-style:none; margin:0; padding:0; flex:1; display:flex; flex-direction:column; gap:2px; overflow-y:auto; max-height:320px; }
.news-item a{
display:flex; flex-direction:column; gap:4px;
padding:11px 4px; border-bottom:1px solid var(--line-soft);
transition:background .12s ease;
}
.news-item:last-child a{ border-bottom:none; }
.news-item a:hover{ background:var(--panel-hover); }
.news-title{ font-size:15px; color:var(--ink); line-height:1.4; }
.news-meta{ font-family:var(--font-mono); font-size:12.5px; color:var(--mute-dim); text-transform:uppercase; letter-spacing:.03em; }
.news-item.news-fallback{ padding:11px 4px; font-size:14.5px; color:var(--mute); }
.news-item.news-fallback a{ display:inline; padding:0; border:none; color:var(--signal); }
.news-skeleton{ color:var(--mute-dim); font-family:var(--font-mono); font-size:14px; padding:20px 4px; text-align:center; }
.tv-chart-main{ height:min(76vh, 860px) !important; min-height:640px !important; width:100% !important; min-width:0; }
.tv-chart-main .tradingview-widget-container__widget{ height:100%; }
.tv-chart-main iframe{ height:100% !important; }
@media (max-width:1300px){.tv-chart-main{ height:min(68vh, 700px) !important; min-height:560px !important; }}
@media (max-width:760px){.tv-chart-main{ height:420px !important; min-height:420px !important; }}
.chart-sym-tabs{
display:flex; gap:6px; overflow-x:auto; scrollbar-width:none; -ms-overflow-style:none;
}
.chart-sym-tabs::-webkit-scrollbar{ display:none; }
.chart-sym-btn{
flex:none; padding:6px 13px; border-radius:999px; border:1px solid var(--line);
background:var(--void); color:var(--mute); font-family:var(--font-mono); font-size:12px;
cursor:pointer; white-space:nowrap; transition:all .15s ease;
}
.chart-sym-btn:hover{ color:var(--ink); border-color:var(--mute-dim); }
.chart-hint{ font-family:var(--font-mono); font-size:12.5px; color:var(--mute-dim); margin:10px 2px 0; }
.term-tabs{
display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:8px 16px;
border-bottom:1px solid var(--line);
}
.term-tabs__list{ display:flex; gap:6px; order:1; }
.term-tabs .term-tools{ order:2; display:flex; align-items:center; gap:8px; }
.term-tab{
font-family:var(--font-mono); font-size:13px; letter-spacing:.02em;
color:var(--mute); background:none; border:none; cursor:pointer;
padding:10px 4px; margin-bottom:-1px;
border-bottom:2px solid transparent;
transition:color .12s ease, border-color .12s ease;
}
.term-tab + .term-tab{ margin-left:14px; }
.term-tab:hover{ color:var(--ink); }
.term-tab--active, .term-tab--active:hover{ color:var(--ink); border-bottom-color:var(--signal); }
.term-panel.term-2col{
display:grid;
grid-template-columns:270px minmax(0,1fr);
gap:14px;
align-items:start;
margin-top:16px;
}
.term-panel.term-2col.term-2col--balanced{
grid-template-columns:minmax(0,1fr) minmax(0,1fr);
}
.term-panel[hidden]{ display:none !important; }
.term-col{
display:flex; flex-direction:column; gap:12px;
min-width:0;
}
@media (max-width:1300px){.term-panel.term-2col{ grid-template-columns:240px minmax(0,1fr); gap:12px; }}
@media (max-width:980px){.term-panel.term-2col{ grid-template-columns:1fr; margin-top:14px; }
.term-panel.term-2col .term-col-main{ order:1; }
.term-panel.term-2col .term-col-left{ order:2; }}
.mini-tv-stack{ display:flex; flex-direction:column; gap:10px; }
.mini-tv-stack .tradingview-widget-container{ min-height:90px; }
.term-bleed{
width:100vw;
position:relative;
left:50%;
transform:translateX(-50%);
background:#0B0E14;
border-top:1px solid var(--line);
border-bottom:1px solid var(--line);
}
.term-swipe-dots{
display:none;
align-items:center; justify-content:center; gap:7px;
padding:10px 0 2px;
}
@media (max-width:900px){.term-swipe-dots{ display:flex; }}
.term-swipe-dot{
width:6px; height:6px; border-radius:50%;
background:var(--line); border:none; padding:0; cursor:pointer;
transition:background .15s ease, transform .15s ease, width .15s ease;
}
.term-swipe-dot--active{ background:var(--signal); width:16px; border-radius:3px; }
.term-panel{ will-change:transform, opacity; }
.term-panel--swipe-in-left{ animation:term-panel-in-left .22s ease; }
.term-panel--swipe-in-right{ animation:term-panel-in-right .22s ease; }
@keyframes term-panel-in-left{ from{ transform:translateX(18px); opacity:.4; } to{ transform:translateX(0); opacity:1; } }
@keyframes term-panel-in-right{ from{ transform:translateX(-18px); opacity:.4; } to{ transform:translateX(0); opacity:1; } }
@media (prefers-reduced-motion: reduce){.term-panel--swipe-in-left, .term-panel--swipe-in-right{ animation:none; }}
.fsnap-sym-row{ display:flex; align-items:center; gap:8px; margin-bottom:2px; }
.fsnap-sym-badge{
display:inline-flex; align-items:center; justify-content:center;
width:26px; height:26px; border-radius:50%;
background:var(--signal-soft); color:var(--signal);
font-family:var(--font-mono); font-size:10.5px; font-weight:700; letter-spacing:.02em;
}
.fsnap-sym-name{ font-family:var(--font-mono); font-size:13.5px; color:var(--mute); }
.calc-quick{ position:relative; flex:none; }
.calc-quick-btn{
display:inline-flex; align-items:center; gap:7px;
background:none; border:1px solid var(--line); border-radius:8px;
color:var(--mute); font-family:var(--font-mono); font-size:12px;
padding:7px 12px; cursor:pointer;
transition:color .15s ease, border-color .15s ease, background .15s ease;
}
.calc-quick-btn:hover, .calc-quick-btn[aria-expanded="true"]{ color:var(--signal); border-color:var(--signal-soft); background:var(--panel-hover); }
.calc-quick-btn svg{ display:block; flex:none; }
.calc-quick-btn--icon-only{ padding:7px 9px; }
@media (max-width:760px){.calc-quick-btn--icon-only{ min-width:36px; min-height:36px; justify-content:center; }}
.calc-quick-panel{
position:absolute; top:calc(100% + 10px); right:0; z-index:120;
width:700px; max-width:calc(100vw - 32px);
max-height:calc(100vh - 120px); overflow-y:auto; overscroll-behavior:contain;
background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
box-shadow:0 24px 70px rgba(0,0,0,.55);
opacity:0; transform:translateY(-6px); pointer-events:none; transition:opacity .15s ease, transform .15s ease;
}
.calc-quick-panel__head{
position:sticky; top:0; z-index:1;
display:flex; align-items:center; justify-content:space-between;
padding:14px 16px; border-bottom:1px solid var(--line);
background:var(--surface-header);
}
.calc-quick-panel__head h4{ font-size:14px; margin:0; }
.calc-quick-close{ background:none; border:none; color:var(--mute-dim); font-size:18px; cursor:pointer; line-height:1; padding:2px 4px; }
.calc-quick-close:hover{ color:var(--ink); }
.calc-quick-body{ padding:16px; }
.calc-quick-footer{
display:block; padding:12px 16px; border-top:1px solid var(--line);
font-family:var(--font-mono); font-size:11.5px; color:var(--mute); text-align:center; text-decoration:none;
}
.calc-quick-footer:hover{ color:var(--signal); }
@media (max-width:820px){.calc-quick-panel{ right:-8px; }}
.calc-quick-backdrop{ display:none; }
@media (max-width:600px){.calc-quick-panel{
position:fixed; top:auto; left:0; right:0; bottom:0;
width:100%; max-width:100%;
max-height:88vh;
border-radius:16px 16px 0 0;
transform:translateY(100%);
}}
.radio-quick{ position:relative; flex:none; }
.radio-quick-panel{ width:300px; }
.calc-quick-btn .radio-active-dot{ margin-left:1px; }
.calc-quick-btn--radio-on{ color:var(--pulse); border-color:var(--pulse); }
.calc-quick-btn--radio-on:hover{ color:var(--pulse); }
.radio-body{ padding:12px; }
.radio-search-row{ margin-bottom:8px; }
.radio-search-input{
width:100%; background:var(--void); border:1px solid var(--line); border-radius:6px;
color:var(--ink); font-family:var(--font-mono); font-size:12.5px;
padding:7px 9px;
}
.radio-search-input:focus{ outline:none; border-color:var(--signal); }
.radio-status{ margin:0 0 6px; font-family:var(--font-mono); font-size:11px; color:var(--mute-dim); }
.radio-station-list{
list-style:none; margin:0; padding:0;
max-height:260px; overflow-y:auto; overscroll-behavior:contain;
border-top:1px solid var(--line-soft);
}
.radio-station-item{
display:flex; align-items:center; gap:8px;
padding:7px 2px; border-bottom:1px solid var(--line-soft);
}
.radio-station-info{ flex:1 1 auto; min-width:0; }
.radio-station-name{
display:block; font-size:12.5px; color:var(--ink);
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.radio-station-meta{
display:block; font-family:var(--font-mono); font-size:10.5px; color:var(--mute-dim);
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.radio-play-btn{
flex:none; background:none; border:1px solid var(--line); border-radius:5px;
color:var(--mute); font-family:var(--font-mono); font-size:11px;
padding:4px 10px; cursor:pointer;
transition:color .15s ease, border-color .15s ease;
}
.radio-play-btn:hover{ color:var(--signal); border-color:var(--signal-soft); }
.radio-source-hint{
margin:8px 0 0; font-family:var(--font-mono); font-size:10px; color:var(--mute-dim); text-align:center;
}
.radio-source-hint a{ color:var(--mute); }
.radio-source-hint a:hover{ color:var(--signal); }
.radio-playing-view{ padding:12px; }
.radio-playing-row{ display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.radio-playing-name{
flex:1 1 auto; min-width:0; font-size:12.5px; color:var(--ink);
overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.radio-playing-controls{ display:flex; align-items:center; gap:10px; }
.radio-mini-btn{
flex:none; background:none; border:1px solid var(--line); border-radius:5px;
color:var(--mute); font-family:var(--font-mono); font-size:11px;
padding:4px 6px; cursor:pointer; line-height:1;
transition:color .15s ease, border-color .15s ease;
}
.radio-mini-btn:hover{ color:var(--signal); border-color:var(--signal-soft); }
.radio-mini-btn--wide{ padding:5px 12px; }
.radio-playing-controls input[type="range"]{ flex:1 1 auto; accent-color:var(--signal); cursor:pointer; }
@media (max-width:600px){.radio-quick-panel{
position:absolute; top:calc(100% + 10px); right:-8px; bottom:auto; left:auto;
width:min(300px, calc(100vw - 24px));
max-width:min(300px, calc(100vw - 24px));
transform:translateY(-6px);
}}
.term-section{ margin-bottom:12px; }
.term-section:last-child{ margin-bottom:0; }
.term-section__title{
font-family:var(--font-mono); font-size:11px; text-transform:uppercase;
letter-spacing:.07em; color:var(--mute-dim); margin:0 0 8px;
}
.term-scroll{ max-height:400px; overflow-y:auto; }
@media (max-width:760px){.term-scroll{ max-height:none; }}
.term-table-wrap{ overflow-x:auto; }
table.term-table{ width:100%; border-collapse:collapse; font-size:15px; min-width:400px; }
table.term-table th, table.term-table td{ padding:8px 12px; text-align:left; border-bottom:1px solid var(--line-soft); }
table.term-table thead th{ font-family:var(--font-mono); font-size:12px; text-transform:uppercase; letter-spacing:.06em; color:var(--mute-dim); }
table.term-table tbody tr:last-child td{ border-bottom:none; }
table.term-table th:not(:first-child){ text-align:right; }
.funding-trend{ display:inline-flex; gap:3px; margin-left:6px; vertical-align:middle; }
.funding-dot{ width:6px; height:6px; border-radius:50%; display:inline-block; opacity:.85; }
.term-table--compact{ max-height:none; overflow-y:visible; }
.term-table--compact table.term-table th, .term-table--compact table.term-table td{ padding:5px 12px; }
.liq-ticker{
overflow:hidden; position:relative; border-radius:6px; padding:2px 0;
-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 20px, #000 calc(100% - 20px), transparent 100%);
mask-image: linear-gradient(90deg, transparent 0, #000 20px, #000 calc(100% - 20px), transparent 100%);
}
.liq-ticker__track{
display:flex; align-items:center; gap:8px; width:max-content;
will-change:transform; animation:liq-ticker-scroll linear infinite;
}
@keyframes liq-ticker-scroll{
from{ transform:translateX(0); }
to{ transform:translateX(-50%); }
}
.liq-ticker:hover .liq-ticker__track,
.liq-ticker:focus-within .liq-ticker__track{ animation-play-state:paused; }
.liq-ticker--static{ overflow-x:auto; -webkit-mask-image:none; mask-image:none; }
.liq-ticker--static .liq-ticker__track{ animation:none !important; }
.liq-ticker{ scrollbar-width:none; -ms-overflow-style:none; }
.liq-ticker::-webkit-scrollbar{ display:none; width:0; height:0; }
.liq-chip{
display:inline-flex; flex:none; align-items:center; gap:6px;
padding:5px 10px; border-radius:999px; border:1px solid var(--line-soft);
font-family:var(--font-mono); font-size:11.5px; white-space:nowrap;
}
.liq-chip--empty{ border:none; padding:6px 2px; color:var(--mute-dim); }
.liq-chip.liq-side--long{ background:rgba(255,77,77,.10); border-color:rgba(255,77,77,.25); }
.liq-chip.liq-side--short{ background:rgba(0,255,136,.10); border-color:rgba(0,255,136,.25); }
.liq-chip.liq-tier-2.liq-side--long{ background:rgba(255,77,77,.18); }
.liq-chip.liq-tier-2.liq-side--short{ background:rgba(0,255,136,.18); }
.liq-chip.liq-tier-3{ font-weight:700; }
.liq-chip.liq-tier-3.liq-side--long{ background:rgba(255,77,77,.30); }
.liq-chip.liq-tier-3.liq-side--short{ background:rgba(0,255,136,.30); }
.liq-chip.liq-tier-4{ font-weight:800; }
.liq-chip.liq-tier-4.liq-side--long{ background:rgba(255,77,77,.46); }
.liq-chip.liq-tier-4.liq-side--short{ background:rgba(0,255,136,.46); }
.liq-chip.liq-tier-4 .liq-chip__amt, .liq-chip.liq-tier-4 .liq-chip__price{ color:#fff; }
.liq-chip__icon{
flex:none; width:15px; height:15px; border-radius:50%;
display:flex; align-items:center; justify-content:center;
font-size:8px; font-weight:800; color:#1a1a1a; line-height:1;
}
.liq-icon--binance{ background:#F0B90B; }
.liq-icon--bybit{ background:#FF7A1A; }
.liq-icon--okx{ background:#FFFFFF; }
.liq-chip__side{ flex:none; font-size:10.5px; }
.liq-chip.liq-side--long .liq-chip__side{ color:var(--danger); }
.liq-chip.liq-side--short .liq-chip__side{ color:var(--pulse); }
.liq-chip__sym{ font-weight:700; color:var(--mute); }
.liq-chip__price{ color:var(--ink); font-variant-numeric:tabular-nums; }
.liq-chip__amt{ font-weight:700; color:var(--ink); }
.liq-chip.liq-side--long .liq-chip__amt{ color:var(--danger); }
.liq-chip.liq-side--short .liq-chip__amt{ color:var(--pulse); }
.liq-ticker-card .widget-card__head h4{ display:flex; align-items:center; flex-wrap:wrap; }
.grid-3--top{ align-items:start; }
.term-grid-deriv{
display:grid; grid-template-columns: 1.6fr 1fr; gap:16px; align-items:start;
}
@media (max-width:900px){.term-grid-deriv{ grid-template-columns:1fr; }}
.widget-card--compact{ padding:10px 12px; }
.widget-card--compact .widget-card__head{ margin-bottom:6px; }
.widget-card--compact .tradingview-widget-container{ min-height:90px; }
.heatmap-controls{
display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;
gap:10px; margin-bottom:14px;
}
.heatmap-hint{ font-family:var(--font-mono); font-size:13px; color:var(--mute-dim); }
.widget-live-note{
font-family:var(--font-mono); font-size:12.5px; line-height:1.5; color:var(--mute-dim);
margin:-2px 0 12px;
}
.heatmap-empty-note{
display:flex; align-items:center; gap:8px;
font-family:var(--font-mono); font-size:13.5px; line-height:1.5; color:var(--mute-dim);
padding:16px; margin-bottom:10px;
border:1px dashed var(--line); border-radius:8px; background:var(--void);
}
.heatmap-wrap{ overflow-x:auto; }
.heatmap-table{ display:flex; flex-direction:column; gap:3px; min-width:640px; }
.heatmap-row{ display:grid; grid-template-columns:110px repeat(21,1fr); gap:3px; align-items:center; }
.heatmap-row--head{ margin-bottom:2px; }
.heatmap-symbol{
font-family:var(--font-mono); font-size:12.5px; font-weight:600; color:var(--ink);
display:flex; flex-direction:column; line-height:1.3; padding-right:8px;
}
.heatmap-price{ font-size:12px; font-weight:400; color:var(--mute-dim); }
.heatmap-axis-label{
font-family:var(--font-mono); font-size:10.5px; color:var(--mute-dim); text-align:center;
writing-mode:horizontal-tb;
}
.heatmap-axis-label--zero{ color:var(--signal); font-weight:600; }
.heatmap-cell{
height:26px; border-radius:3px; background:var(--panel-hover);
border:1px solid var(--line-soft);
transition:background .25s ease;
}
.heatmap-cell--zero{ border-color:var(--signal-soft); border-width:1px; }
@media (max-width:560px){.heatmap-row{ grid-template-columns:76px repeat(21,1fr); }
.heatmap-symbol{ font-size:12.5px; }
.heatmap-cell{ height:20px; }}
.dom-heatmap-table{ display:flex; flex-direction:column; gap:3px; min-width:640px; }
.dom-row{ display:grid; grid-template-columns:96px repeat(var(--dom-cols,25),1fr); gap:2px; align-items:center; }
.dom-row--head{ margin-bottom:2px; }
.dom-row--agg{ margin-bottom:4px; padding-bottom:6px; border-bottom:1px solid var(--line-soft); }
.dom-row-label{
font-family:var(--font-mono); font-size:12px; font-weight:600; color:var(--ink);
display:flex; align-items:center; gap:6px; padding-right:6px; white-space:nowrap;
}
.dom-row--agg .dom-row-label{ color:var(--signal); }
.dom-row-label__stale{ color:var(--mute-dim); font-weight:400; font-size:10.5px; }
.dom-axis-label{
font-family:var(--font-mono); font-size:10px; color:var(--mute-dim); text-align:center;
}
.dom-axis-label--zero{ color:var(--signal); font-weight:600; }
.dom-cell{
height:22px; border-radius:2px; background:var(--panel-hover);
border:1px solid var(--line-soft); position:relative;
transition:background .25s ease;
}
.dom-row--agg .dom-cell{ height:28px; }
.dom-cell--zero{ border-color:var(--signal-soft); }
.dom-cell--wall{ border-color:var(--cyan); border-width:2px; box-shadow:0 0 6px rgba(76,194,255,.5); }
.dom-callouts{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.dom-callout{
display:flex; flex-direction:column; gap:2px; padding:8px 10px;
border:1px solid var(--line-soft); border-radius:6px; background:var(--void);
font-family:var(--font-mono); font-size:12px; min-width:170px; flex:1;
}
.dom-callout__label{ color:var(--mute-dim); font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; }
.dom-callout__value{ color:var(--ink); font-size:13.5px; font-weight:600; }
.dom-callout--bid{ border-left:2px solid var(--pulse); }
.dom-callout--ask{ border-left:2px solid var(--danger); }
.dom-callout--vacuum{ border-left:2px solid var(--cyan); }
.dom-legend{
display:flex; flex-wrap:wrap; gap:14px; margin:10px 0 4px;
font-family:var(--font-mono); font-size:11.5px; color:var(--mute-dim);
}
.dom-legend span{ display:flex; align-items:center; gap:6px; }
.dom-legend-swatch{ width:12px; height:12px; border-radius:2px; display:inline-block; }
.dom-legend-swatch--bid{ background:rgba(0,255,136,.55); }
.dom-legend-swatch--ask{ background:rgba(255,77,77,.55); }
.dom-legend-swatch--wall{ background:transparent; border:2px solid var(--cyan); }
@media (max-width:560px){.dom-row{ grid-template-columns:64px repeat(var(--dom-cols,25),1fr); }
.dom-row-label{ font-size:11px; }
.dom-cell{ height:18px; }
.dom-row--agg .dom-cell{ height:22px; }}
.event-glossary{ display:flex; flex-direction:column; gap:10px; }
.event-item{
background:var(--panel); border:1px solid var(--line); border-radius:var(--radius-sm);
overflow:hidden;
}
.event-item summary{
list-style:none; cursor:pointer; padding:14px 16px;
display:flex; align-items:center; justify-content:space-between; gap:12px;
font-family:var(--font-display); font-weight:600; font-size:14.5px; color:var(--ink);
}
.event-item summary::-webkit-details-marker{ display:none; }
.event-item summary .ev-meta{ display:flex; align-items:center; gap:10px; }
.event-item summary .impact{
font-family:var(--font-mono); font-size:11.5px; text-transform:uppercase; letter-spacing:.05em;
padding:3px 8px; border-radius:20px; font-weight:500;
}
.impact.medium{ color:var(--signal); background:var(--signal-soft); }
.event-item summary .chev{ color:var(--mute-dim); transition:transform .15s ease; flex-shrink:0; }
.event-item[open] summary .chev{ transform:rotate(180deg); }
.event-item .event-body{ padding:0 16px 16px; font-size:15px; color:var(--mute); line-height:1.55; }
.event-item .event-body p{ margin:0 0 .8em; }
.event-item .event-body p:last-child{ margin-bottom:0; }
.event-item .event-body b{ color:var(--ink); }
.info-btn{
display:inline-flex; align-items:center; justify-content:center;
width:26px; height:26px; border-radius:50%;
background:none; border:1px solid var(--line); color:var(--mute);
font-family:var(--font-mono); font-size:12.5px; line-height:1; cursor:pointer;
transition:color .15s ease, border-color .15s ease, background .15s ease;
flex-shrink:0;
}
.info-btn:hover{ color:var(--signal); border-color:var(--signal); background:var(--signal-soft); }
@media (max-width:760px){.info-btn{ width:32px; height:32px; }}
dialog.glossary-dialog{
background:var(--panel);
color:var(--ink);
border:1px solid var(--line);
border-radius:var(--radius);
padding:0;
width:min(560px, calc(100vw - 32px));
max-height:min(640px, calc(100vh - 64px));
box-shadow:0 20px 60px rgba(0,0,0,.5);
}
dialog.glossary-dialog::backdrop{ background:rgba(3,3,3,.72); }
.glossary-dialog__head{
display:flex; align-items:center; justify-content:space-between; gap:12px;
padding:18px 20px; border-bottom:1px solid var(--line);
background:var(--surface-header);
}
.glossary-dialog__head h4{ margin:0; font-size:15px; }
.glossary-dialog__close{
background:none; border:1px solid var(--line); color:var(--mute);
width:28px; height:28px; border-radius:50%; cursor:pointer; font-size:14px; line-height:1;
flex-shrink:0;
}
.glossary-dialog__close:hover{ color:var(--signal); border-color:var(--signal); }
.glossary-dialog__body{ padding:16px 20px 20px; max-height:calc(min(640px, calc(100vh - 64px)) - 66px); overflow-y:auto; }
@media (max-width:560px){.glossary-dialog__body .event-item summary{ padding:12px 14px; }}
.widget-info-pop{
position:absolute; z-index:120; display:none;
background:var(--panel); border:1px solid var(--line); border-radius:var(--radius-sm);
padding:14px 16px; box-shadow:0 14px 40px rgba(0,0,0,.5);
}
.widget-info-pop__title{ font-family:var(--font-display); font-weight:600; font-size:15px; color:var(--ink); margin-bottom:6px; }
.widget-info-pop__text{ margin:0 0 10px; font-size:14.5px; color:var(--mute); line-height:1.55; }
.widget-info-pop__link{ display:inline-block; font-size:14px; font-weight:600; color:var(--signal); text-decoration:none; }
.widget-info-pop__link:hover{ text-decoration:underline; }
.calendar-tz-row{
display:flex; flex-wrap:wrap; align-items:center; gap:10px 12px;
margin-bottom:14px;
}
.calendar-tz-row label{
font-family:var(--font-mono); font-size:12.5px; letter-spacing:.05em; text-transform:uppercase;
color:var(--mute-dim);
}
.calendar-tz-row select{
background:var(--void); border:1px solid var(--line); border-radius:var(--radius-sm);
color:var(--ink); font-family:var(--font-body); font-size:13px; padding:7px 10px; cursor:pointer;
}
.calendar-tz-row select:focus{ border-color:var(--signal); outline:none; }
.calendar-tz-hint{ font-family:var(--font-mono); font-size:13px; color:var(--mute-dim); }
.widget-cta{
display:block; margin-top:10px; padding-top:10px; border-top:1px solid var(--line-soft);
font-family:var(--font-mono); font-size:12px; color:var(--signal); text-decoration:none;
}
.widget-cta:hover{ text-decoration:underline; }
.footer-grid{
max-width:var(--maxw); margin:0 auto;
display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:32px;
}
@media (max-width:760px){.footer-grid{ grid-template-columns:1fr 1fr; }}
.footer-grid h5{ font-family:var(--font-mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--mute-dim); margin:0 0 14px; }
.footer-grid ul{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:10px; }
.footer-grid a{ color:var(--mute); font-size:13.5px; }
.footer-grid a:hover{ color:var(--signal); }
.footer-bottom{
max-width:var(--maxw); margin:36px auto 0;
padding-top:20px; border-top:1px solid var(--line-soft);
display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;
font-family:var(--font-mono); font-size:11.5px; color:var(--mute-dim);
}
.page-terminal #term-data-note{
border:none;
border-top:1px solid var(--line-soft);
border-bottom:1px solid var(--line-soft);
border-radius:0;
background:transparent;
max-width:min(2400px, 96vw);
margin:14px auto;
padding:10px 18px;
font-size:12px;
}
.widget-card__head{ position:relative; padding-left:calc(var(--card-pad-x) - 4px); }
.widget-card__head::before{
content:''; position:absolute; left:0; top:1px; bottom:3px; width:3px;
border-radius:2px; background:var(--signal); opacity:.85;
}
.widget-card--compact .widget-card__head::before{ left:0; }
.mktw-head-row{
display:flex; align-items:center; justify-content:space-between; gap:8px;
padding:0 6px 8px; margin-bottom:2px; border-bottom:1px solid var(--line);
}
.mktw-sort-btn{
background:none; border:none; padding:0; margin:0; cursor:pointer;
display:inline-flex; align-items:center; gap:4px;
font-family:var(--font-mono); font-size:10px; text-transform:uppercase; letter-spacing:.06em;
color:var(--mute-dim); white-space:nowrap;
}
.mktw-sort-btn--right{ margin-left:auto; }
.mktw-sort-btn:hover{ color:var(--ink); }
.mktw-sort-btn.mktw-sort-active{ color:var(--signal); }
.mktw-sort-arrow{ display:inline-block; opacity:.7; }
.mktw-list{ list-style:none; margin:0; padding:0; }
.mktw-row{
display:flex; align-items:center; justify-content:space-between; gap:8px;
cursor:pointer; transition:background .12s ease;
padding:8px 6px; border-bottom:1px solid var(--line-soft);
min-width:0;
}
.mktw-row:last-child{ border-bottom:none; }
.mktw-row:hover{ background:var(--panel-hover); }
.mktw-sym-cell{ display:flex; align-items:center; gap:8px; min-width:0; flex:1 1 auto; overflow:hidden; }
.mktw-sym-badge{
width:26px; height:26px; border-radius:50%; flex:none;
display:flex; align-items:center; justify-content:center;
font-family:var(--font-mono); font-size:9.5px; font-weight:700;
background:var(--panel-hover); border:1px solid var(--line); color:var(--mute);
}
.mktw-sym-text{ min-width:0; overflow:hidden; }
.mktw-sym-name{ display:block; font-family:var(--font-mono); font-weight:600; color:var(--ink); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mktw-sym-pair{ display:block; font-size:10px; color:var(--mute-dim); font-weight:400; margin-top:1px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mktw-quote{ display:flex; flex-direction:column; align-items:flex-end; gap:2px; flex:none; white-space:nowrap; }
.mktw-price{ font-family:var(--font-mono); color:var(--ink); font-weight:500; font-size:13px; }
.mktw-change{ font-family:var(--font-mono); font-weight:600; font-size:11.5px; }
.mktw-loading-row{ text-align:center; color:var(--mute-dim); font-family:var(--font-mono); font-size:12.5px; padding:20px 4px; list-style:none; }
@media (max-width:760px){.mktw-sym-badge{ width:22px; height:22px; }}
.chart-hero{
display:flex; flex-wrap:wrap; align-items:center; gap:6px 13px;
padding:12px 2px 16px; margin-bottom:2px; border-bottom:1px solid var(--line-soft);
}
.chart-hero__pair{ display:flex; align-items:baseline; gap:9px; flex:none; }
.chart-hero__sym{ font-family:var(--font-display); font-weight:700; font-size:17px; color:var(--ink); }
.chart-hero__exch{ font-family:var(--font-mono); font-size:10.5px; color:var(--mute-dim); text-transform:uppercase; letter-spacing:.04em; }
.chart-hero__price-row{ display:flex; align-items:baseline; gap:8px; flex:none; }
.chart-hero__price{ font-family:var(--font-mono); font-weight:600; font-size:20px; color:var(--ink); flex:none; }
.chart-hero__change{
font-family:var(--font-mono); font-weight:600; font-size:12px; flex:none;
padding:3px 6px; border-radius:5px; line-height:1;
}
.chart-hero__divider{
width:1px; align-self:stretch; min-height:28px; background:var(--line-soft); flex:none;
}
.chart-hero__stats{ display:flex; flex-wrap:wrap; align-items:center; gap:4px 14px; }
.chart-hero__stat{ display:flex; flex-direction:column; gap:2px; }
.chart-hero__stat span{ font-family:var(--font-mono); font-size:9px; color:var(--mute-dim); text-transform:uppercase; letter-spacing:.06em; }
.chart-hero__stat b{ font-family:var(--font-mono); font-size:12px; color:var(--ink); font-weight:500; }
@media (min-width:1650px){.chart-hero{ gap:8px 22px; }
.chart-hero__price{ font-size:24px; }
.chart-hero__change{ font-size:13px; padding:4px 8px; }
.chart-hero__stats{ gap:4px 22px; }
.chart-hero__stat span{ font-size:9.5px; }
.chart-hero__stat b{ font-size:12.5px; }}
@media (max-width:640px){.chart-hero__stats{ gap:8px 16px; }
.chart-hero__price{ font-size:20px; }
.chart-hero__divider{ display:none; }}
.fsnap-body{ display:flex; flex-direction:column; flex:1; justify-content:center; gap:10px; padding:2px 0; }
.fsnap-avg-row{ display:flex; align-items:baseline; gap:8px; }
.fsnap-avg-value{ font-family:var(--font-mono); font-weight:700; font-size:22px; }
.fsnap-avg-label{ font-family:var(--font-mono); font-size:13.5px; color:var(--mute-dim); text-transform:uppercase; letter-spacing:.05em; }
.fsnap-split{ display:flex; gap:1px; height:5px; border-radius:3px; overflow:hidden; }
.fsnap-split i{ display:block; }
.fsnap-extremes{ display:flex; flex-direction:column; gap:5px; font-size:13.5px; }
.fsnap-extremes div{ display:flex; justify-content:space-between; gap:8px; }
.fsnap-extremes span:first-child{ color:var(--mute); }
.fsnap-extremes span:last-child{ font-family:var(--font-mono); font-weight:600; }
.grid-snapshot .widget-card{ height:100%; }
.grid-snapshot .widget-card__body{ flex:1; justify-content:center; }
body.term-immersive{ overflow:hidden; }
body.th-settings-scroll-lock{ overflow:hidden; }
body.th-settings-scroll-lock--fixed{ position:fixed; left:0; right:0; }
body.term-immersive #terminal-shell{
position:fixed; inset:0; z-index:900;
width:100vw; height:100vh; max-width:none;
margin:0; padding:10px 14px 10px;
overflow:hidden;
background:var(--void);
display:flex; flex-direction:column;
}
body.term-immersive .term-tabs{ flex:none; padding-bottom:6px; border-bottom:none; justify-content:flex-end; }
body.term-immersive .term-tabs__list{ display:none; }
body.term-immersive .term-panel{ flex:1; min-height:0; }
body.term-immersive .term-panel[hidden]{ display:none !important; }
body.term-immersive .term-panel[data-term-panel="crypto"]{ display:flex !important; flex-direction:column; overflow:hidden; }
body.term-immersive .term-panel[data-term-panel="macro"]{ display:none !important; }
body.term-immersive .term-bleed{ flex:1; min-height:0; display:flex; }
body.term-immersive #crypto-tape-root{ flex:1; min-height:0; display:flex; width:100%; }
body.term-immersive #crypto-tape-root .live-term{ flex:1; min-height:0; height:100%; }
body.term-immersive #crypto-tape-root .live-term__main{ height:100%; max-height:100%; overflow-y:auto; -webkit-overflow-scrolling:touch; }
body.term-immersive #crypto-tape-root .live-term__side{ max-height:100%; overflow-y:auto; -webkit-overflow-scrolling:touch; }
@media (max-width:980px){body.term-immersive .term-panel[data-term-panel="crypto"]{ overflow-y:auto; }
body.term-immersive #crypto-tape-root .live-term{ height:auto; }
body.term-immersive #crypto-tape-root .live-term__main{ max-height:none; overflow-y:visible; }
body.term-immersive #crypto-tape-root .live-term__side{ max-height:none; overflow-y:visible; }}
@media (max-width:560px){body.term-immersive #terminal-shell{ padding:52px 12px 10px; }}
.term-immersive-nav{
display:block; position:fixed; bottom:16px; right:16px; z-index:1000;
transition:right .2s ease, left .2s ease, opacity .2s ease;
}
.term-immersive-nav--avoid-watchlist{ right:auto; left:16px; }
body.term-immersive .term-immersive-nav{
top:16px; left:16px; bottom:auto; right:auto;
}
.term-immersive-fab{
display:inline-flex; align-items:center; gap:5px;
background:rgba(11,11,11,0.92); backdrop-filter:blur(10px);
border:1px solid var(--line); border-radius:8px;
color:var(--ink);
padding:6px 8px; cursor:pointer;
box-shadow:0 10px 30px rgba(0,0,0,.45);
opacity:.5;
transition:opacity .25s ease, border-color .15s ease, color .15s ease;
}
.term-immersive-fab:hover, .term-immersive-fab:focus-visible, .term-immersive-fab[aria-expanded="true"]{
opacity:1; color:var(--signal); border-color:var(--signal-soft);
}
.term-immersive-nav:focus-within .term-immersive-fab{ opacity:1; }
.term-immersive-fab__mark{ display:inline-flex; align-items:center; color:var(--signal); }
.term-immersive-fab svg{ flex:none; }
.term-immersive-fab > svg{ transition:transform .15s ease; }
.term-immersive-fab[aria-expanded="true"] > svg{ transform:rotate(180deg); }
@media (max-width:640px){.term-immersive-nav{
bottom:calc(12px + env(safe-area-inset-bottom, 0px)); right:12px;
}
.term-immersive-nav--avoid-watchlist{ right:auto; left:12px; }
.term-immersive-fab{ padding:5px 7px; border-radius:7px; }}
.term-immersive-menu{
position:absolute; bottom:calc(100% + 8px); right:0; left:auto; z-index:1001;
min-width:200px;
background:var(--panel); border:1px solid var(--line); border-radius:var(--radius-sm);
box-shadow:0 24px 70px rgba(0,0,0,.55);
padding:6px;
display:flex; flex-direction:column;
opacity:0; transform:translateY(6px); pointer-events:none;
transition:opacity .15s ease, transform .15s ease;
}
body.term-immersive .term-immersive-menu{
top:calc(100% + 8px); bottom:auto; left:0; right:auto;
transform:translateY(-6px);
}
.term-immersive-nav--avoid-watchlist .term-immersive-menu{ right:auto; left:0; }
.term-immersive-menu__brand{
font-family:var(--font-display); font-weight:700; font-size:14.5px; color:var(--ink);
padding:9px 10px; border-bottom:1px solid var(--line-soft); margin-bottom:4px;
}
.term-immersive-menu__brand span{ color:var(--signal); }
.term-immersive-menu__item{
display:flex; align-items:center; justify-content:space-between; gap:10px;
width:100%; text-align:left;
background:none; border:none; border-radius:6px;
color:var(--mute); font-family:var(--font-mono); font-size:13px;
padding:9px 10px; cursor:pointer;
transition:color .12s ease, background .12s ease;
}
.term-immersive-menu__item kbd{
font-family:var(--font-mono); font-size:10.5px; color:var(--mute-dim);
border:1px solid var(--line); border-radius:4px; padding:1px 5px;
}
.term-immersive-menu__item:hover{ color:var(--ink); background:var(--panel-hover); }
.term-immersive-menu__toggle{ margin-top:4px; border-top:1px solid var(--line-soft); border-radius:0 0 6px 6px; padding-top:11px; }
.term-immersive-menu__toggle--exit{ color:var(--danger); }
.term-immersive-menu__toggle--exit:hover{ color:var(--danger); background:rgba(255,77,77,0.1); }
#terminal-shell,
#terminal-shell *,
.widget-info-pop,
.widget-info-pop *{
font-family: var(--font-mono);
}
#terminal-shell{
background:var(--void);
}
#terminal-shell.theme-light{
--void:        #F4F5F6;
--panel:       #FFFFFF;
--panel-hover: #F0F1F3;
--line:        #DEE1E4;
--line-soft:   #EBEDEF;
--ink:         #14161A;
--mute:        #5B6067;
--mute-dim:    #6B7079;
--signal:      #B5790F;
--signal-soft: rgba(181,121,15,0.12);
--pulse:       #0F8F63;
--pulse-soft:  rgba(15,143,99,0.12);
--danger:      #C93338;
}
#terminal-shell.theme-light .asset-pill--active{ color:#FFFFFF; }
#terminal-shell.th-settings-compact .widget-card__body{ padding:8px 10px; }
#terminal-shell.th-settings-compact .widget-card__head{ padding:6px 10px; }
#terminal-shell.th-settings-compact .mstat-row{ padding:3px 0; }
#terminal-shell.th-settings-compact .tape-toolbar{ padding:4px 8px; gap:6px; }
#terminal-shell.th-settings-compact .asset-select{ padding:4px 8px; }
#terminal-shell.th-settings-compact .exch-select{ padding:3px 8px; }
#terminal-shell.th-settings-compact .tape-row{ padding-top:2px; padding-bottom:2px; }
#terminal-shell.th-settings-no-animations,
#terminal-shell.th-settings-no-animations *{
transition-duration:0s !important;
animation-duration:0s !important;
animation-delay:0s !important;
}
.widget-info-pop{ border-radius:0; }
#terminal-shell .widget-card{
background:transparent;
border:none;
border-bottom:1px solid var(--line);
border-radius:0;
}
#terminal-shell .widget-card__head h4{
font-size:11.5px; font-weight:700;
letter-spacing:.06em; text-transform:uppercase;
color:var(--mute);
}
#terminal-shell .tv-watchdog{ border-radius:0; background:var(--panel); }
#terminal-shell, #terminal-shell *{ border-radius:0 !important; }
#terminal-shell .dot,
#terminal-shell .funding-dot,
#terminal-shell .term-identity-bar__dot{ border-radius:50% !important; }
#terminal-shell .widget-card{ --card-pad-y:10px; --card-pad-x:10px; --card-head-gap:7px; padding:10px; }
#terminal-shell .widget-card__head{ margin-bottom:7px; }
#terminal-shell .widget-card--compact{ padding:7px 9px; }
#terminal-shell .widget-card--compact .widget-card__head{ margin-bottom:4px; }
#terminal-shell .tv-watchdog{ padding:13px; }
#terminal-shell .page-head{ padding-top:18px; padding-bottom:8px; }
#terminal-shell .term-tabs{ padding-bottom:10px; margin-top:12px; }
#terminal-shell .term-tabs__list{ gap:4px; }
#terminal-shell .term-tab{ padding:7px 3px; }
#terminal-shell .term-tab + .term-tab{ margin-left:10px; }
#terminal-shell .term-panel.term-2col{ gap:10px; margin-top:12px; }
#terminal-shell .term-col{ gap:9px; }
#terminal-shell .term-section{ margin-bottom:9px; }
#terminal-shell .calc-quick-btn{ padding:5px 9px; border-radius:3px; }
#terminal-shell .calc-quick-panel__head{ padding:10px 12px; }
#terminal-shell .calc-quick-body{ padding:12px; }
#terminal-shell .calc-quick-body .calc-tabs{ margin-bottom:13px; }
#terminal-shell .calc-quick-body .calc-form,
#terminal-shell .calc-quick-body .calc-result{ padding:13px; }
#terminal-shell .calc-quick-footer{ padding:9px 12px; }
#terminal-shell table.term-table th,
#terminal-shell table.term-table td{ padding:6px 9px; }
#terminal-shell .term-table--compact table.term-table th,
#terminal-shell .term-table--compact table.term-table td{ padding:4px 9px; }
#terminal-shell .liq-chip{ padding:4px 8px; gap:5px; }
#terminal-shell .news-item a,
#terminal-shell .news-item.news-fallback{ padding:8px 3px; }
#terminal-shell .news-skeleton,
#terminal-shell .mktw-loading-row{ padding:15px 3px; }
#terminal-shell .mktw-head-row{ padding:0 4px 6px; }
#terminal-shell .mktw-row{ padding:6px 4px; }
#terminal-shell .term-grid-deriv{ gap:12px; }
#terminal-shell .heatmap-controls{ gap:8px; margin-bottom:10px; }
#terminal-shell .heatmap-empty-note{ padding:12px; margin-bottom:8px; border-radius:3px; }
#terminal-shell .heatmap-cell{ border-radius:2px; }
#terminal-shell .event-item{ border-radius:3px; }
#terminal-shell .event-item summary{ padding:10px 12px; }
#terminal-shell .event-item .event-body{ padding:0 12px 12px; }
#terminal-shell dialog.glossary-dialog{ border-radius:5px; }
#terminal-shell .glossary-dialog__head{ padding:13px 15px; }
#terminal-shell .glossary-dialog__body{ padding:12px 15px 15px; }
.widget-info-pop{ padding:10px 12px; }
#terminal-shell .chart-hero{ padding:9px 2px 12px; }
#terminal-shell .chart-sym-tabs{ gap:4px; }
#terminal-shell .chart-sym-btn{ padding:5px 10px; border-radius:3px; }
#terminal-shell .chart-hint{ margin:7px 2px 0; }
@media (max-width:560px){body.term-immersive #terminal-shell{ padding:48px 9px 8px; }}
#terminal-shell .widget-card{ --card-pad-y:7px; --card-pad-x:10px; --card-head-gap:4px; padding:7px 10px; }
#terminal-shell .widget-card__head{ margin-bottom:4px; }
#terminal-shell .widget-card--compact{ padding:6px 8px; }
#terminal-shell .widget-card--compact .widget-card__head{ margin-bottom:3px; }
.live-term__side .widget-card{ --card-pad-y:6px; --card-pad-x:10px; --card-head-gap:4px; padding:6px 10px; }
.live-term__side .widget-card__head{ margin-bottom:4px; }
#terminal-shell .livechart-toolbar{ margin-bottom:5px; }
#terminal-shell .livechart-ticker{ margin-bottom:4px; padding:4px 6px 3px; }
#terminal-shell .livechart-ticker__stat{ padding:2px 2px; gap:0; }
/* The zero gap above is meant for the compact 24H/Low/Vol/OI tiles
   (label stacked tight above value) — it also matches the Price cell
   since that's a ".livechart-ticker__stat" too, which glued the "PRICE"
   label straight onto the value with no space. Restore its own gap
   here with equal (ID+class) specificity so it wins regardless of
   viewport, instead of relying on the mobile-only rule in
   live-tape.css that a same-specificity, unconditional rule was
   silently beating. */
#terminal-shell .livechart-ticker__stat--price{ gap:6px; }
#terminal-shell .livechart-replay-bar{ margin-bottom:5px; }
#terminal-shell .livechart-subpane{ height:56px; margin-top:3px; }
#terminal-shell .orderflow-60s{ margin-top:6px; padding-top:6px; }
#terminal-shell .orderflow-ratio-bar{ height:14px; }
#terminal-shell .liq-sidebar__head-row{ padding:3px 6px 5px; }
#terminal-shell .liq-sidebar__row{ padding:5px 6px; }
#terminal-shell .news-item a,
#terminal-shell .news-item.news-fallback{ padding:6px 3px; }
#terminal-shell .ofscore-value{ font-size:24px; }
#terminal-shell .ofscore-label{ margin-bottom:6px; }
#terminal-shell .ofscore-pressure__ratio{ font-size:22px; margin-bottom:5px; }
#terminal-shell .ofscore-pressure__bar{ margin-bottom:7px; }
#terminal-shell .whale-stats{ padding-bottom:6px; margin-bottom:6px; }
#terminal-shell .whale-stats__row{ margin-bottom:5px; }
#terminal-shell .whale-row{ padding:5px 6px; }
#terminal-shell .term-tabs{ padding-bottom:7px; margin-top:9px; }
@media (max-width:980px){#terminal-shell .widget-card{ --card-pad-y:5px; --card-pad-x:8px; --card-head-gap:4px; padding:5px 8px; }
#terminal-shell .widget-card__head{ margin-bottom:4px; }
#terminal-shell .widget-card__head h4{ font-size:10px; }
#terminal-shell .term-section{ margin-bottom:8px; }
#terminal-shell .term-panel.term-2col{ gap:8px; margin-top:10px; }
#terminal-shell .term-col{ gap:8px; }
#terminal-shell .widget-card--compact{ padding:6px 8px; }
#terminal-shell .widget-card--compact .widget-card__head{ margin-bottom:3px; }
#terminal-shell .liq-sidebar__row,
#terminal-shell .whale-row{ padding:5px 6px; }
#terminal-shell .dom-legend{ margin:8px 0 2px; }
#terminal-shell .dom-callouts{ margin-bottom:10px; }}
/* ===================== MOBILE ONLY: Macro & Forex panel (#term-panel-macro) —
   one continuous panel instead of five boxed cards. Scoped strictly to
   max-width:980px and to #term-panel-macro; the desktop .term-2col /
   .term-2col--balanced grid above 980px and every other tab (incl. Crypto)
   are untouched. */
@media (max-width:980px){
/* Pre-existing bug this also fixes: .term-2col--balanced has 3 classes,
   which outranks the generic 2-class ".term-panel.term-2col{grid-template-
   columns:1fr}" mobile override on specificity alone — so without this,
   the macro grid never actually collapsed to one column on phones. */
#term-panel-macro.term-panel.term-2col.term-2col--balanced{
grid-template-columns:1fr; gap:0; margin-top:10px;
}
#term-panel-macro .term-col{ gap:0; }

/* Single shared panel: one border/background for the whole tab; each card
   loses its own box and becomes a section separated by a thin divider. */
#term-panel-macro{ background:var(--panel); border:1px solid var(--line); }
#term-panel-macro .widget-card{
background:none; border:none; border-radius:0;
padding:12px 10px;
}
#term-panel-macro .widget-card + .widget-card,
#term-panel-macro .term-col + .term-col > .widget-card:first-child{
border-top:1px solid var(--line-soft);
}

/* Small inline section labels instead of the boxed head bar */
#term-panel-macro .widget-card__head{
background:none; border-bottom:none; margin:0 0 8px; padding:0;
}
#term-panel-macro .widget-card__head h4{
font-size:10.5px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--mute);
}

/* Timezone row: stacked, full-width select, hint on its own line */
#term-panel-macro .calendar-tz-row{
flex-direction:column; align-items:stretch; gap:6px; margin-bottom:12px;
}
#term-panel-macro .calendar-tz-row label{ font-size:11px; }
#term-panel-macro .calendar-tz-row select{ width:100%; padding:9px 10px; font-size:13.5px; }
#term-panel-macro .calendar-tz-hint{
display:block; width:100%; white-space:normal; font-size:11.5px; line-height:1.45;
}

/* Mini TV widgets (Dominance / Indices, gold & oil) */
#term-panel-macro .mini-tv-stack{ gap:10px; }
#term-panel-macro .mini-tv-stack .tradingview-widget-container{ min-height:96px; }

/* Funding snapshot rows */
#term-panel-macro .fsnap-extremes{ gap:9px; font-size:13px; }
#term-panel-macro .fsnap-extremes div{ gap:10px; }

/* Fear & Greed gauge — no extra card padding now that the box is gone */
#term-panel-macro .fng-embed{ padding:4px 0 0; }
#term-panel-macro .fng-gauge{ max-width:132px; }
}
#terminal-shell .widget-card--paired .widget-card__head h4{
display:inline-flex; align-items:center; flex-wrap:wrap; gap:5px;
}
#terminal-shell .wc-head-sep{ color:var(--mute-dim); font-weight:400; }
#terminal-shell .wc-split-body{
display:flex; flex-direction:row; align-items:flex-start; gap:14px;
}
#terminal-shell .wc-split-col{ flex:1 1 0; min-width:0; }
#terminal-shell .wc-split-col + .wc-split-col{
border-left:1px solid var(--line-soft);
padding-left:12px;
}
#terminal-shell .wc-split-col .ofscore-value{ font-size:24px; }
#terminal-shell .wc-split-col .ofscore-label{ margin-bottom:5px; }
@media (max-width:560px){#terminal-shell .wc-split-body{ flex-direction:column; align-items:stretch; gap:2px; }
#terminal-shell .wc-split-col + .wc-split-col{
border-left:none; padding-left:0;
border-top:1px solid var(--line-soft); padding-top:8px; margin-top:6px;
}}
.live-term__side{ container-type:inline-size; container-name:live-side; }
@container live-side (max-width:360px){#terminal-shell .wc-split-body{ flex-direction:column; align-items:stretch; gap:2px; }
#terminal-shell .wc-split-col + .wc-split-col{
border-left:none; padding-left:0;
border-top:1px solid var(--line-soft); padding-top:8px; margin-top:6px;
}}
#terminal-shell .livechart-card .widget-card__head{ margin-bottom:3px; }
#terminal-shell .livechart-ticker{ margin-bottom:4px; padding:4px 5px 3px; }
#terminal-shell .livechart-ticker__stat--price .livechart-ticker__price{ font-size:13px; }
#terminal-shell .livechart-ticker__stat{ padding:2px 2px; gap:0; }
#terminal-shell .livechart-ticker__stat-label{ font-size:10.5px; }
/* Same fix as above, repeated for this second (later, duplicate)
   zero-gap rule — otherwise it would re-glue "PRICE" onto the value
   by winning on source order at equal specificity. */
#terminal-shell .livechart-ticker__stat--price{ gap:6px; }

/* ---------------------------------------------------------------
   Guide → terminal handoff (guide-handoff.js). A reader arriving
   from a guide via #panel-<name>[?symbol=...] gets scrolled to the
   relevant widget-card, which flashes briefly so it's obvious what
   they were sent to look at.
--------------------------------------------------------------- */
@keyframes term-handoff-flash{
0%{ box-shadow:0 0 0 0 var(--signal-soft); border-color:var(--signal); }
50%{ box-shadow:0 0 0 6px var(--signal-soft); border-color:var(--signal); }
100%{ box-shadow:0 0 0 0 rgba(255,200,87,0); border-color:var(--line); }
}
.term-handoff-flash{
animation:term-handoff-flash 1.6s ease-out;
}
