/* ==========================================================================
   4Search — finance.css
   The Finance service (/finance/...). Every class is fin- prefixed and the
   colours run through the --fin-* tokens below, so the three colour modes of
   app.css section 14 need only the token block at the end of this file:
   hybrid and light share the base (light content), dark restates the tokens.
   Numbers use tabular figures everywhere so columns of prices line up and a
   live update never makes a row jitter.
   ========================================================================== */

/* ------------------------------------------------------------------ tokens */
.fin-page{
  --fin-up:#08804f;
  --fin-up-bg:#e3f5ec;
  --fin-down:#c42b3e;
  --fin-down-bg:#fdebee;
  --fin-flat:#5b6472;
  --fin-ink:#0f1720;
  --fin-ink-2:#3a4250;
  --fin-ink-3:#677180;
  --fin-ink-4:#8b94a3;
  --fin-line:#e4e8ef;
  --fin-line-2:#eef1f6;
  --fin-surface:#ffffff;
  --fin-surface-2:#f5f7fb;
  --fin-surface-3:#eef2f8;
  --fin-page:#f3f5f9;
  --fin-accent:#1a66d2;
  --fin-accent-ink:#ffffff;
  --fin-accent-soft:#e8f0fd;
  --fin-teal:#0f8f77;
  --fin-amber:#b45309;
  --fin-radius:14px;
  --fin-radius-sm:10px;
  --fin-shadow:0 1px 2px rgba(16,24,40,.04), 0 2px 6px rgba(16,24,40,.04);
  --fin-shadow-lg:0 18px 48px -12px rgba(16,24,40,.28);
  /* chart palette, read by finance.js */
  --fin-chart-up:#0b9a5e;
  --fin-chart-down:#d63a4d;
  --fin-chart-line:#1a66d2;
  --fin-chart-grid:#edf0f5;
  --fin-chart-axis:#7a8391;
  --fin-chart-cross:#9aa3b2;
  --fin-chart-vol:#c9d1dd;
  --fin-chart-news:#8b5cf6;
  --fin-chart-bg:#ffffff;
  --fin-chart-tip:#0f1720;
  --fin-chart-tip-ink:#ffffff;
  --fin-c1:#1a66d2; --fin-c2:#e8590c; --fin-c3:#8b5cf6; --fin-c4:#0f8f77; --fin-c5:#d6336c; --fin-c6:#5c7cfa;
  font-variant-numeric:tabular-nums;
}

/* -------------------------------------------------------------------- page */
.fin-main{ padding:0 0 32px; background:var(--fin-page); flex:1; }
.fin-container{ max-width:1400px; margin:0 auto; padding:0 16px; }
.fin-page .content{ min-height:100%; }
.fin-muted{ color:var(--fin-ink-3); }
.fin-nowrap{ white-space:nowrap; }
.fin-dot{ color:var(--fin-ink-4); margin:0 6px; }
.fin-empty{ color:var(--fin-ink-3); font-size:14px; margin:8px 0; }
.fin-h1{ font-size:24px; font-weight:700; letter-spacing:-.02em; color:var(--fin-ink); margin:0; line-height:1.25; }
.fin-lede{ color:var(--fin-ink-3); font-size:15px; margin:6px 0 0; max-width:760px; }
.fin-page-head{ padding:18px 2px 6px; }
.fin-page-head-row{ display:flex; flex-wrap:wrap; gap:12px 24px; align-items:flex-end; justify-content:space-between; }
.fin-subhead{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.08em; color:var(--fin-ink-3); margin:14px 0 8px; }
.fin-prose p{ color:var(--fin-ink-2); font-size:15px; line-height:1.65; }
.fin-credit{ font-size:12px; color:var(--fin-ink-4); margin:-4px 0 10px; }
.fin-credit a{ color:inherit; text-decoration:underline; }
.fin-callout{ background:var(--fin-surface-2); border:1px solid var(--fin-line); border-radius:var(--fin-radius-sm); padding:10px 12px; font-size:14px; color:var(--fin-ink-2); margin:10px 0; }
.fin-disclaimer{ font-size:12px; line-height:1.55; color:var(--fin-ink-4); margin:26px 2px 6px; max-width:980px; }
.fin-disclaimer a{ color:inherit; text-decoration:underline; }
.fin-scroll-x{ overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:thin; }

/* ----------------------------------------------------------- search box */
.fin-search{ margin:6px 0 2px; }
.fin-search-box{
  position:relative; display:flex; align-items:center; gap:6px;
  background:#fff; border:1px solid #dfe5ec; border-radius:16px; padding:5px 6px 5px 14px;
  box-shadow:0 2px 10px rgba(9,14,22,.10); transition:box-shadow .2s ease, border-color .2s ease;
}
.fin-search-box:focus-within{ border-color:var(--accent, #1abc9c); box-shadow:0 0 0 3px rgba(26,188,156,.22), 0 8px 24px rgba(9,14,22,.12); }
.fin-search-ico{ color:#7a8391; display:inline-flex; }
.fin-search-ico .ico{ width:18px; height:18px; }
.fin-search-input{
  flex:1; min-width:0; border:0; outline:0; background:transparent; font-size:16px; color:#0f1720;
  padding:8px 4px; font-family:inherit;
}
.fin-search-input::placeholder{ color:#8b94a3; }
.fin-search-input::-webkit-search-cancel-button{ cursor:pointer; }
.fin-search-btn{
  flex-shrink:0; width:40px; height:40px; border-radius:12px; border:0; cursor:pointer;
  background:#ffc107; color:#1b1f26; display:inline-flex; align-items:center; justify-content:center;
  box-shadow:0 2px 6px rgba(16,24,40,.18); transition:transform .15s ease;
}
.fin-search-btn:hover{ transform:scale(1.05); }
.fin-search-btn .ico{ width:18px; height:18px; }

/* Autocomplete (search box, compare, watchlist add) */
.fin-suggest{
  position:absolute; left:0; right:0; top:calc(100% + 8px); z-index:1100;
  background:#fff; border:1px solid rgba(16,24,40,.10); border-radius:14px;
  box-shadow:0 18px 44px rgba(16,24,40,.20); padding:6px; max-height:420px; overflow-y:auto;
}
.fin-suggest[hidden]{ display:none; }
.fin-sug-item{
  display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:10px; cursor:pointer;
  color:#0f1720; text-decoration:none;
}
.fin-sug-item.is-active, .fin-sug-item:hover{ background:#f0f4fa; }
.fin-sug-sym{ font-weight:700; min-width:64px; font-size:14px; }
.fin-sug-name{ flex:1; min-width:0; font-size:14px; color:#3a4250; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fin-sug-tag{ font-size:11px; color:#677180; background:#f2f4f8; border-radius:6px; padding:2px 6px; white-space:nowrap; }
.fin-sug-foot{ font-size:12px; color:#677180; padding:6px 10px 4px; border-top:1px solid #eef1f6; margin-top:4px; }

/* ---------------------------------------------------------------- strip */
.fin-strip{ background:var(--fin-surface); border-bottom:1px solid var(--fin-line); }
.fin-strip-track{
  display:flex; gap:2px; overflow-x:auto; scrollbar-width:none; padding:8px 12px; max-width:1400px; margin:0 auto;
  scroll-snap-type:x proximity;
}
.fin-strip-track::-webkit-scrollbar{ display:none; }
.fin-strip-chip{
  flex:0 0 auto; display:grid; grid-template-columns:auto auto; grid-template-rows:auto auto; column-gap:12px;
  align-items:center; padding:6px 12px; border-radius:12px; text-decoration:none; color:var(--fin-ink);
  scroll-snap-align:start; transition:background .15s ease;
}
.fin-strip-chip:hover{ background:var(--fin-surface-2); }
.fin-strip-name{ grid-column:1; font-size:12.5px; font-weight:600; color:var(--fin-ink-2); white-space:nowrap; }
.fin-strip-row{ grid-column:1; display:flex; gap:8px; align-items:baseline; font-size:13px; }
.fin-strip-price{ font-weight:600; color:var(--fin-ink); }
.fin-strip-chip .fin-spark{ grid-column:2; grid-row:1 / span 2; }

/* -------------------------------------------------------------- subnav */
.fin-subnav{ background:var(--fin-surface); border-bottom:1px solid var(--fin-line); margin-bottom:16px; }
.fin-subnav-track{ display:flex; gap:4px; overflow-x:auto; scrollbar-width:none; padding:6px 12px; max-width:1400px; margin:0 auto; }
.fin-subnav-track::-webkit-scrollbar{ display:none; }
.fin-subnav-link{
  flex:0 0 auto; padding:7px 13px; border-radius:999px; font-size:14px; font-weight:500; color:var(--fin-ink-2);
  text-decoration:none; transition:background .15s ease, color .15s ease;
}
.fin-subnav-link:hover{ background:var(--fin-surface-2); color:var(--fin-ink); }
.fin-subnav-link.is-active{ background:var(--fin-accent-soft); color:var(--fin-accent); font-weight:600; }

/* ---------------------------------------------------------------- grid */
.fin-grid{ display:grid; grid-template-columns:minmax(0,1fr); gap:16px; align-items:start; }
@media (min-width:1100px){
  .fin-grid{ grid-template-columns:minmax(0,1fr) 360px; }
  .fin-grid-wide-side{ grid-template-columns:minmax(0,1fr) 420px; }
}
.fin-col-main, .fin-col-side{ display:flex; flex-direction:column; gap:16px; min-width:0; }

/* ---------------------------------------------------------------- cards */
.fin-card{
  background:var(--fin-surface); border:1px solid var(--fin-line); border-radius:var(--fin-radius);
  box-shadow:var(--fin-shadow); padding:16px 18px; min-width:0;
}
.fin-card-head{ display:flex; align-items:center; gap:10px; margin:-2px 0 12px; flex-wrap:wrap; }
.fin-card-title{ font-size:16px; font-weight:700; color:var(--fin-ink); margin:0; letter-spacing:-.01em; display:flex; align-items:center; gap:8px; }
.fin-card-ico{ color:var(--fin-accent); width:16px; height:16px; }
.fin-card-more{ margin-left:auto; font-size:13px; font-weight:600; color:var(--fin-accent); text-decoration:none; white-space:nowrap; }
.fin-card-more:hover{ text-decoration:underline; }
.fin-card-note{ font-size:12px; color:var(--fin-ink-4); margin:12px 0 0; line-height:1.5; }
.fin-card-side{ padding:14px 16px; }

/* ------------------------------------------------------------- numbers */
.fin-chg{ font-weight:600; white-space:nowrap; }
.fin-chg.fin-up{ color:var(--fin-up); }
.fin-chg.fin-down{ color:var(--fin-down); }
.fin-chg.fin-flat{ color:var(--fin-flat); }
.fin-pill{ display:inline-flex; align-items:center; gap:4px; padding:3px 8px; border-radius:8px; font-size:.92em; }
.fin-pill.fin-up{ background:var(--fin-up-bg); }
.fin-pill.fin-down{ background:var(--fin-down-bg); }
.fin-pill.fin-flat{ background:var(--fin-surface-3); }
.fin-arrow{ width:0; height:0; border-left:4px solid transparent; border-right:4px solid transparent; display:inline-block; }
.fin-up .fin-arrow{ border-bottom:6px solid currentColor; }
.fin-down .fin-arrow{ border-top:6px solid currentColor; }
.fin-flat .fin-arrow{ display:none; }
.fin-price{ font-weight:600; color:var(--fin-ink); }
.fin-neg{ color:var(--fin-down); }

@keyframes fin-flash-up{ 0%{ background:rgba(11,154,94,.28); } 100%{ background:transparent; } }
@keyframes fin-flash-down{ 0%{ background:rgba(214,58,77,.26); } 100%{ background:transparent; } }
.fin-flash-up{ animation:fin-flash-up 1.4s ease-out; border-radius:4px; }
.fin-flash-down{ animation:fin-flash-down 1.4s ease-out; border-radius:4px; }

/* -------------------------------------------------------------- badges */
.fin-badge{
  --fin-hue:210;
  display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
  width:32px; height:32px; border-radius:50%; font-size:11px; font-weight:700; letter-spacing:-.02em;
  background:hsl(var(--fin-hue) 75% 94%); color:hsl(var(--fin-hue) 55% 30%);
  border:1px solid hsl(var(--fin-hue) 60% 88%);
}
.fin-badge-long{ font-size:9.5px; }
.fin-badge-lg{ width:44px; height:44px; font-size:14px; }
.fin-badge-lg.fin-badge-long{ font-size:12px; }
.fin-coin{ width:28px; height:28px; border-radius:50%; flex-shrink:0; }

/* ---------------------------------------------------------- sparklines */
.fin-spark{ display:block; overflow:visible; }
.fin-spark path{ fill:none; stroke-width:1.6; stroke-linejoin:round; stroke-linecap:round; stroke:var(--fin-flat); }
.fin-spark.fin-up path{ stroke:var(--fin-chart-up); }
.fin-spark.fin-down path{ stroke:var(--fin-chart-down); }
.fin-spark-base{ stroke:var(--fin-ink-4); stroke-width:1; stroke-dasharray:2 3; opacity:.6; }

/* --------------------------------------------------------------- tables */
.fin-table{ width:100%; border-collapse:collapse; font-size:14px; color:var(--fin-ink); }
.fin-table th{ font-size:12px; font-weight:600; color:var(--fin-ink-3); text-align:left; padding:8px 10px; border-bottom:1px solid var(--fin-line); white-space:nowrap; }
.fin-table th small{ display:block; font-weight:500; color:var(--fin-ink-4); }
.fin-table td{ padding:9px 10px; border-bottom:1px solid var(--fin-line-2); vertical-align:middle; }
.fin-table tbody tr:last-child td, .fin-table tbody tr:last-child th{ border-bottom:0; }
.fin-table tbody th{ font-weight:500; color:var(--fin-ink-2); text-align:left; padding:9px 10px; border-bottom:1px solid var(--fin-line-2); font-size:13.5px; }
.fin-table tbody tr[data-href]{ cursor:pointer; transition:background .12s ease; }
.fin-table tbody tr[data-href]:hover{ background:var(--fin-surface-2); }
.fin-th-num, .fin-td-num{ text-align:right !important; white-space:nowrap; }
/* The name cell takes the room the numbers leave and truncates; a table
   never pushes past its card (max-width:0 + width:100% is the table-cell
   way to say "shrink me first"). */
.fin-td-name{ width:100%; max-width:0; }
.fin-td-name a, .fin-td-name > span{ display:flex; align-items:center; gap:10px; color:inherit; text-decoration:none; min-width:0; }
.fin-name-stack{ display:flex; flex-direction:column; min-width:0; line-height:1.25; }
.fin-name{ font-weight:600; color:var(--fin-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:280px; }
.fin-sym{ font-size:12px; color:var(--fin-ink-3); white-space:nowrap; }
.fin-td-spark{ width:96px; padding-top:4px; padding-bottom:4px; }
.fin-td-rank{ color:var(--fin-ink-4); width:34px; }
.fin-td-range{ min-width:110px; }
.fin-table-compact td, .fin-table-compact tbody th{ padding:7px 6px; }
.fin-table-compact .fin-badge{ width:28px; height:28px; font-size:10px; }
.fin-table-compact .fin-badge-long{ font-size:8.5px; }
.fin-table-compact .fin-name{ max-width:150px; font-size:13.5px; }
.fin-table-compact .fin-td-num{ font-size:13.5px; }
.fin-card-side .fin-table{ font-size:13.5px; }
.fin-td-stack > *{ display:block; text-align:right; }
.fin-td-stack .fin-chg{ font-size:12.5px; margin-top:1px; }
.fin-card-side .fin-td-spark{ width:64px; }
.fin-card-side .fin-td-spark .fin-spark{ width:60px; height:24px; }
/* phones: the secondary columns go, the name takes what is left */
@media (max-width:575.98px){
  .fin-table .fin-c-spark, .fin-table .fin-c-volume, .fin-table .fin-c-mcap, .fin-table .fin-c-range52, .fin-table .fin-c-opt{ display:none; }
  .fin-table td, .fin-table th{ padding-left:6px; padding-right:6px; }
  .fin-name{ max-width:38vw; }
  .fin-share-bar{ display:none; }
  .fin-table th{ white-space:normal; }
  .fin-share{ flex-direction:column; align-items:flex-end; gap:3px; }
}

/* ----------------------------------------------------------------- tabs */
.fin-tabbar{ display:flex; gap:2px; border-bottom:1px solid var(--fin-line); margin:-4px 0 10px; overflow-x:auto; scrollbar-width:none; }
.fin-tabbar::-webkit-scrollbar{ display:none; }
.fin-tab{
  flex:0 0 auto; border:0; background:transparent; padding:9px 12px 10px; font-size:14px; font-weight:600;
  color:var(--fin-ink-3); border-bottom:2px solid transparent; margin-bottom:-1px; cursor:pointer; font-family:inherit;
  transition:color .15s ease, border-color .15s ease;
}
.fin-tab:hover{ color:var(--fin-ink); }
.fin-tab.is-active{ color:var(--fin-accent); border-bottom-color:var(--fin-accent); }
.fin-tab:focus-visible{ outline:2px solid var(--fin-accent); outline-offset:-2px; border-radius:6px; }
.fin-tabpanel[data-fin-hidden]{ display:none; }
html:not([data-fin-js]) .fin-tabpanel[data-fin-hidden]{ display:block; margin-top:14px; }

/* -------------------------------------------------------------- buttons */
.fin-btn{
  display:inline-flex; align-items:center; gap:7px; padding:7px 13px; border-radius:10px; border:1px solid var(--fin-line);
  background:var(--fin-surface); color:var(--fin-ink-2); font-size:14px; font-weight:600; cursor:pointer; text-decoration:none;
  font-family:inherit; line-height:1.2; transition:background .15s ease, border-color .15s ease, color .15s ease;
}
.fin-btn:hover{ background:var(--fin-surface-2); border-color:#cfd6e0; color:var(--fin-ink); }
.fin-btn .ico{ width:15px; height:15px; }
.fin-btn-sm{ padding:5px 10px; font-size:13px; }
.fin-btn-xs{ padding:4px; border-radius:8px; }
.fin-btn-icon{ padding:7px; }
.fin-btn-block{ width:100%; justify-content:center; }
.fin-btn-primary{ background:var(--fin-accent); border-color:var(--fin-accent); color:var(--fin-accent-ink); }
.fin-btn-primary:hover{ background:#1557b8; border-color:#1557b8; color:#fff; }
.fin-star{
  width:16px; height:16px; display:inline-block; background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 17.3l-6.2 3.7 1.6-7L2 9.2l7.1-.6L12 2l2.9 6.6 7.1.6-5.4 4.8 1.6 7z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 17.3l-6.2 3.7 1.6-7L2 9.2l7.1-.6L12 2l2.9 6.6 7.1.6-5.4 4.8 1.6 7z' fill='none' stroke='black' stroke-width='2' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}
.fin-btn-watch[aria-pressed="true"]{ color:#c98a04; border-color:#f3d48a; background:#fff8e6; }
.fin-btn-watch[aria-pressed="true"] .fin-star{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 17.3l-6.2 3.7 1.6-7L2 9.2l7.1-.6L12 2l2.9 6.6 7.1.6-5.4 4.8 1.6 7z'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 17.3l-6.2 3.7 1.6-7L2 9.2l7.1-.6L12 2l2.9 6.6 7.1.6-5.4 4.8 1.6 7z'/%3E%3C/svg%3E");
}
.fin-input, .fin-select{
  border:1px solid var(--fin-line); border-radius:10px; padding:8px 11px; font-size:14px; background:var(--fin-surface);
  color:var(--fin-ink); font-family:inherit; min-width:0;
}
.fin-input:focus, .fin-select:focus{ outline:0; border-color:var(--fin-accent); box-shadow:0 0 0 3px var(--fin-accent-soft); }
.fin-seg{ display:inline-flex; background:var(--fin-surface-3); border-radius:10px; padding:3px; gap:2px; }
.fin-seg-btn{
  border:0; background:transparent; padding:5px 10px; border-radius:8px; font-size:13px; font-weight:600; color:var(--fin-ink-3);
  cursor:pointer; font-family:inherit; display:inline-flex; align-items:center; gap:6px;
}
.fin-seg-btn .ico{ width:15px; height:15px; }
.fin-seg-btn.is-active{ background:var(--fin-surface); color:var(--fin-ink); box-shadow:0 1px 3px rgba(16,24,40,.12); }
.fin-period-toggle, .fin-filter{ display:inline-flex; background:var(--fin-surface-3); border-radius:10px; padding:3px; gap:2px; margin:0 0 12px; flex-wrap:wrap; }

/* ------------------------------------------------------------ dropdown */
.fin-dd{ position:relative; }
.fin-dd-menu{
  position:absolute; right:0; top:calc(100% + 6px); z-index:1050; min-width:230px; background:var(--fin-surface);
  border:1px solid var(--fin-line); border-radius:12px; box-shadow:var(--fin-shadow-lg); padding:6px;
}
.fin-dd-menu[hidden]{ display:none; }
.fin-menu-item{ display:flex; align-items:center; gap:9px; padding:7px 9px; border-radius:8px; font-size:13.5px; color:var(--fin-ink-2); cursor:pointer; margin:0; }
.fin-menu-item:hover{ background:var(--fin-surface-2); }
.fin-menu-item input{ accent-color:var(--fin-accent); width:15px; height:15px; margin:0; }

/* ------------------------------------------------------------- charts */
.fin-chart{ position:relative; width:100%; height:300px; user-select:none; -webkit-user-select:none; touch-action:pan-y; }
.fin-chart > svg.fin-spark{ width:100%; height:100%; }
.fin-chart canvas{ position:absolute; inset:0; width:100%; height:100%; display:block; }
.fin-chart-home{ height:280px; }
.fin-chart-quote{ height:400px; }
.fin-chart-quote.fin-has-osc{ height:520px; }
.fin-chart-compare{ height:380px; }
.fin-chart-loading::after{
  content:""; position:absolute; top:12px; right:14px; width:16px; height:16px; border-radius:50%;
  border:2px solid var(--fin-line); border-top-color:var(--fin-accent); animation:fs-spin .8s linear infinite;
}
.fin-chart-msg{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; color:var(--fin-ink-3); font-size:14px; }
.fin-chart-shell{ margin-top:6px; }
.fin-chart-toolbar{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:0 0 10px; }
.fin-tools{ display:flex; align-items:center; gap:8px; margin-left:auto; flex-wrap:wrap; }
.fin-ranges{ display:inline-flex; gap:2px; background:var(--fin-surface-3); border-radius:10px; padding:3px; overflow-x:auto; scrollbar-width:none; max-width:100%; }
.fin-ranges::-webkit-scrollbar{ display:none; }
.fin-range-btn{
  border:0; background:transparent; border-radius:8px; padding:5px 10px; font-size:13px; font-weight:600; color:var(--fin-ink-3);
  cursor:pointer; font-family:inherit; flex:0 0 auto;
}
.fin-range-btn:hover{ color:var(--fin-ink); }
.fin-range-btn.is-active{ background:var(--fin-surface); color:var(--fin-accent); box-shadow:0 1px 3px rgba(16,24,40,.12); }
.fin-chart-open{ margin-left:auto; font-size:13px; font-weight:600; color:var(--fin-accent); text-decoration:none; }
.fin-chart-legend{ display:flex; flex-wrap:wrap; gap:6px 16px; font-size:12.5px; color:var(--fin-ink-3); margin-top:8px; min-height:18px; }
.fin-legend-item{ display:inline-flex; align-items:center; gap:6px; }
.fin-legend-key{ width:12px; height:3px; border-radius:2px; display:inline-block; }
.fin-compare{ position:relative; }
.fin-compare-input{ width:130px; border:1px dashed var(--fin-line); border-radius:10px; padding:6px 10px; font-size:13px; background:transparent; color:var(--fin-ink); font-family:inherit; }
.fin-compare-input:focus{ outline:0; border-style:solid; border-color:var(--fin-accent); width:200px; }
.fin-compare-suggest{ left:auto; right:0; width:300px; }
.fin-compare-chips{ display:flex; flex-wrap:wrap; gap:6px; margin:-4px 0 8px; }
.fin-compare-chips:empty{ display:none; }
.fin-cmp-chip{
  display:inline-flex; align-items:center; gap:6px; padding:3px 6px 3px 10px; border-radius:999px; font-size:12.5px; font-weight:600;
  background:var(--fin-surface-2); border:1px solid var(--fin-line); color:var(--fin-ink-2);
}
.fin-cmp-chip i{ width:8px; height:8px; border-radius:50%; display:inline-block; }
.fin-cmp-chip button{ border:0; background:transparent; color:var(--fin-ink-3); cursor:pointer; font-size:14px; line-height:1; padding:0 2px; }
.fin-chart-card.is-expanded{
  position:fixed; inset:16px; z-index:1200; overflow:auto; box-shadow:0 30px 80px rgba(0,0,0,.35);
}
.fin-chart-card.is-expanded .fin-chart-quote{ height:calc(100vh - 210px); }
body.fin-modal-open{ overflow:hidden; }
body.fin-modal-open::after{ content:""; position:fixed; inset:0; background:rgba(9,14,22,.55); z-index:1150; }

/* ------------------------------------------------------- market summary */
.fin-summary-head{ display:flex; align-items:center; flex-wrap:wrap; gap:8px 12px; margin-bottom:12px; }
.fin-status{
  display:inline-flex; align-items:center; gap:7px; font-size:13px; font-weight:600; padding:4px 10px; border-radius:999px;
  background:var(--fin-surface-3); color:var(--fin-ink-2);
}
.fin-status-dot{ width:8px; height:8px; border-radius:50%; background:var(--fin-ink-4); }
.fin-status-open{ background:var(--fin-up-bg); color:var(--fin-up); }
.fin-status-open .fin-status-dot{ background:var(--fin-up); box-shadow:0 0 0 0 rgba(8,128,79,.5); animation:fin-pulse 2s infinite; }
.fin-status-pre .fin-status-dot, .fin-status-post .fin-status-dot{ background:#d97706; }
@keyframes fin-pulse{ 0%{ box-shadow:0 0 0 0 rgba(8,128,79,.45); } 70%{ box-shadow:0 0 0 7px rgba(8,128,79,0); } 100%{ box-shadow:0 0 0 0 rgba(8,128,79,0); } }
.fin-status-note{ font-size:12.5px; color:var(--fin-ink-4); }
.fin-idx-buttons{ display:grid; grid-template-columns:repeat(4, minmax(0,1fr)); gap:8px; margin-bottom:10px; }
.fin-idx-btn{
  text-align:left; border:1px solid var(--fin-line); background:var(--fin-surface); border-radius:12px; padding:9px 11px; cursor:pointer;
  display:flex; flex-direction:column; gap:1px; font-family:inherit; transition:border-color .15s ease, background .15s ease; min-width:0;
}
.fin-idx-btn:hover{ background:var(--fin-surface-2); }
.fin-idx-btn.is-active{ border-color:var(--fin-accent); box-shadow:inset 0 0 0 1px var(--fin-accent); background:var(--fin-accent-soft); }
.fin-idx-name{ font-size:12.5px; font-weight:600; color:var(--fin-ink-3); }
.fin-idx-price{ font-size:16px; font-weight:700; color:var(--fin-ink); }
.fin-idx-btn .fin-chg{ font-size:12.5px; }
.fin-mini-quotes{ display:grid; grid-template-columns:repeat(6, minmax(0,1fr)); gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid var(--fin-line-2); }
.fin-mini-quote{ display:flex; flex-direction:column; gap:1px; text-decoration:none; color:var(--fin-ink); padding:4px 6px; border-radius:8px; min-width:0; }
.fin-mini-quote:hover{ background:var(--fin-surface-2); }
.fin-mini-name{ font-size:12px; color:var(--fin-ink-3); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fin-mini-price{ font-size:14px; font-weight:700; }
.fin-mini-quote .fin-chg{ font-size:12.5px; }
@media (max-width:767.98px){
  .fin-idx-buttons{ grid-template-columns:repeat(2, minmax(0,1fr)); }
  .fin-mini-quotes{ grid-template-columns:repeat(3, minmax(0,1fr)); }
}

/* ------------------------------------------------------------- AI box */
.fin-ai .ai-overview{ margin:0; border-radius:var(--fin-radius); }

/* ---------------------------------------------------------------- news */
.fin-news{ display:flex; flex-direction:column; }
.fin-news-item{ display:flex; gap:14px; padding:12px 0; border-bottom:1px solid var(--fin-line-2); align-items:flex-start; }
.fin-news-item:last-child{ border-bottom:0; padding-bottom:2px; }
.fin-news-item:first-child{ padding-top:2px; }
.fin-news-body{ flex:1; min-width:0; }
.fin-news-meta{ display:flex; align-items:center; flex-wrap:wrap; gap:0; font-size:12.5px; color:var(--fin-ink-3); margin-bottom:4px; }
.fin-fav{ width:16px; height:16px; border-radius:4px; margin-right:7px; flex-shrink:0; }
.fin-news-src{ font-weight:600; color:var(--fin-ink-2); max-width:220px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fin-news-title{ font-size:15.5px; font-weight:600; line-height:1.35; margin:0; letter-spacing:-.005em; }
.fin-news-title a{ color:var(--fin-ink); text-decoration:none; }
.fin-news-title a:hover{ color:var(--fin-accent); text-decoration:underline; text-underline-offset:2px; }
.fin-news-title-lg{ font-size:20px; line-height:1.3; }
.fin-news-snippet{ font-size:13.5px; color:var(--fin-ink-3); line-height:1.5; margin:5px 0 0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.fin-news-thumb{ flex:0 0 132px; height:84px; border-radius:10px; overflow:hidden; background:var(--fin-surface-3); }
.fin-news-thumb img{ width:100%; height:100%; object-fit:cover; display:block; }
.fin-news-compact .fin-news-title{ font-size:14px; }
.fin-news-compact{ padding:9px 0; }
.fin-news-lead{ display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:18px; padding:2px 0 14px; border-bottom:1px solid var(--fin-line-2); }
.fin-news-lead-img{ border-radius:12px; overflow:hidden; aspect-ratio:16/9; background:var(--fin-surface-3); display:block; }
.fin-news-lead-img img{ width:100%; height:100%; object-fit:cover; display:block; }
.fin-news-lead .fin-news-snippet{ -webkit-line-clamp:4; }
@media (max-width:767.98px){
  .fin-news-lead{ grid-template-columns:1fr; gap:10px; }
  .fin-news-thumb{ flex-basis:96px; height:64px; }
  .fin-news-title{ font-size:15px; }
}
.fin-news-syms{ display:flex; gap:5px; flex-wrap:wrap; margin-top:7px; }
.fin-mini-chip{
  font-size:11.5px; font-weight:700; padding:2px 7px; border-radius:6px; color:var(--fin-accent);
  background:var(--fin-accent-soft); text-decoration:none;
}
.fin-mini-chip:hover{ background:var(--fin-accent); color:#fff; }
.fin-tone{ font-size:11px; font-weight:700; padding:1px 6px; border-radius:6px; margin-left:8px; }
.fin-tone-pos{ color:var(--fin-up); background:var(--fin-up-bg); }
.fin-tone-neg{ color:var(--fin-down); background:var(--fin-down-bg); }

/* --------------------------------------------------------------- stats */
.fin-stats{ display:grid; grid-template-columns:1fr; gap:0 28px; margin:0; }
.fin-stats-2{ grid-template-columns:repeat(2, minmax(0,1fr)); }
.fin-stats-4{ grid-template-columns:repeat(4, minmax(0,1fr)); margin-top:14px; }
@media (max-width:767.98px){ .fin-stats-2, .fin-stats-4{ grid-template-columns:1fr; } }
@media (min-width:768px) and (max-width:1099.98px){ .fin-stats-4{ grid-template-columns:repeat(2, minmax(0,1fr)); } }
.fin-stat{ display:flex; justify-content:space-between; align-items:center; gap:14px; padding:9px 0; border-bottom:1px solid var(--fin-line-2); min-width:0; }
.fin-stat-k{ font-size:13.5px; color:var(--fin-ink-3); font-weight:500; white-space:nowrap; }
.fin-stat-v{ margin:0; font-size:14px; font-weight:600; color:var(--fin-ink); text-align:right; min-width:0; }
.fin-stat-v a{ color:var(--fin-accent); text-decoration:none; }
.fin-stats-4 .fin-stat{ flex-direction:column; align-items:flex-start; gap:3px; border:1px solid var(--fin-line-2); border-radius:10px; padding:9px 11px; margin:0 0 8px; }
.fin-stats-4 .fin-stat-v{ text-align:left; font-size:16px; }
.fin-stats-4{ gap:0 10px; }

/* range bar (day / 52-week) */
.fin-range-wrap{ display:inline-flex; align-items:center; gap:8px; font-size:13px; font-weight:600; }
.fin-range-lo, .fin-range-hi{ color:var(--fin-ink-2); }
.fin-range{ display:inline-block; width:90px; }
.fin-td-range .fin-range{ width:100%; min-width:90px; }
.fin-range-track{ position:relative; display:block; height:4px; border-radius:2px; background:linear-gradient(90deg, var(--fin-down-bg), var(--fin-line), var(--fin-up-bg)); }
.fin-range-dot{ position:absolute; top:50%; width:10px; height:10px; border-radius:50%; background:var(--fin-ink); border:2px solid var(--fin-surface); transform:translate(-50%,-50%); box-shadow:0 0 0 1px var(--fin-ink-3); }

/* ------------------------------------------------------------- heatmap */
.fin-heatmap{ display:grid; grid-template-columns:repeat(auto-fill, minmax(150px, 1fr)); gap:8px; }
.fin-heat{
  --fin-heat:.5;
  display:flex; flex-direction:column; gap:2px; padding:12px; border-radius:12px; text-decoration:none; min-height:78px;
  color:#0f1720; transition:transform .12s ease, box-shadow .12s ease;
}
.fin-heat:hover{ transform:translateY(-1px); box-shadow:0 6px 16px -6px rgba(16,24,40,.3); }
.fin-heat.fin-up{ background:rgba(11,154,94,calc(var(--fin-heat) * .55)); }
.fin-heat.fin-down{ background:rgba(214,58,77,calc(var(--fin-heat) * .5)); }
.fin-heat.fin-flat{ background:var(--fin-surface-3); }
.fin-heat-label{ font-size:13px; font-weight:600; }
.fin-heat-pct{ font-size:19px; font-weight:800; letter-spacing:-.02em; }
.fin-heat-sub{ font-size:11px; opacity:.7; font-weight:600; }

/* share-of-coverage bars and buzz badges */
.fin-share{ display:inline-flex; align-items:center; gap:8px; justify-content:flex-end; }
.fin-share-bar{ display:inline-block; width:80px; height:6px; border-radius:3px; background:var(--fin-line-2); overflow:hidden; vertical-align:middle; }
.fin-share-bar > span{ display:block; height:100%; background:var(--fin-chart-news); border-radius:3px; }
.fin-share-n{ font-weight:600; min-width:44px; text-align:right; }
.fin-buzz{ font-size:11px; font-weight:700; padding:2px 6px; border-radius:6px; min-width:44px; text-align:center; }
.fin-buzz-up{ color:var(--fin-up); background:var(--fin-up-bg); }
.fin-buzz-down{ color:var(--fin-down); background:var(--fin-down-bg); }
.fin-buzz-flat{ color:var(--fin-ink-3); background:var(--fin-surface-3); }
.fin-buzz-new{ color:#7c3aed; background:#f1ebfe; }

/* ---------------------------------------------------------- side lists */
.fin-earn-list{ list-style:none; margin:0; padding:0; }
.fin-earn-list li{ display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid var(--fin-line-2); }
.fin-earn-list li:last-child{ border-bottom:0; }
.fin-earn-list a{ display:flex; gap:10px; align-items:baseline; min-width:0; flex:1; color:inherit; text-decoration:none; }
.fin-earn-sym{ font-weight:700; font-size:13.5px; color:var(--fin-accent); min-width:52px; }
.fin-earn-name{ font-size:13px; color:var(--fin-ink-2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.fin-earn-time{ font-size:11.5px; font-weight:600; padding:2px 7px; border-radius:6px; white-space:nowrap; background:var(--fin-surface-3); color:var(--fin-ink-3); }
.fin-earn-pre{ background:#fff4e0; color:#a15c07; }
.fin-earn-post{ background:#ede9fe; color:#6d28d9; }
.fin-eco-mini{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:8px; margin:0; }
.fin-eco-cell{ border:1px solid var(--fin-line-2); border-radius:10px; padding:9px 11px; }
.fin-eco-k{ display:block; font-size:12px; color:var(--fin-ink-3); font-weight:600; }
.fin-eco-v{ display:block; margin:2px 0 0; font-size:18px; font-weight:800; color:var(--fin-ink); letter-spacing:-.02em; }
.fin-eco-mini small{ display:block; font-size:11px; font-weight:500; color:var(--fin-ink-4); letter-spacing:0; }
.fin-tips{ margin:0; padding-left:18px; font-size:13.5px; color:var(--fin-ink-2); line-height:1.55; }
.fin-tips li{ margin-bottom:6px; }

/* ------------------------------------------------------------ watchlist */
.fin-watch-body .fin-table{ margin-top:-4px; }
.fin-watch-add{ position:relative; margin-left:auto; }
.fin-watch-add .fin-input{ width:240px; }
.fin-watch-remove{ color:var(--fin-ink-4); }
.fin-watch-remove:hover{ color:var(--fin-down); }
.fin-watch-remove .ico{ width:13px; height:13px; }

/* --------------------------------------------------------------- quote */
.fin-quote{ display:flex; flex-direction:column; }
.fin-qhead{ padding:6px 2px 4px; }
.fin-crumbs{ display:flex; gap:7px; font-size:13px; color:var(--fin-ink-4); margin-bottom:10px; flex-wrap:wrap; }
.fin-crumbs a{ color:var(--fin-ink-3); text-decoration:none; }
.fin-crumbs a:hover{ color:var(--fin-accent); }
.fin-qhead-row{ display:flex; align-items:flex-start; gap:12px 20px; flex-wrap:wrap; justify-content:space-between; }
.fin-qid{ display:flex; align-items:center; gap:14px; min-width:0; }
.fin-qlogo{ width:44px; height:44px; border-radius:12px; background:#fff; border:1px solid var(--fin-line); padding:6px; flex-shrink:0; object-fit:contain; }
.fin-qlogo-x{ display:none; }
.fin-qname{ font-size:26px; font-weight:700; letter-spacing:-.02em; margin:0; color:var(--fin-ink); line-height:1.2; }
.fin-qsub{ display:flex; align-items:center; flex-wrap:wrap; font-size:13.5px; color:var(--fin-ink-3); margin-top:3px; }
.fin-qsym{ font-weight:700; color:var(--fin-ink-2); }
.fin-qactions{ display:flex; gap:8px; flex-wrap:wrap; }
.fin-qprice-row{ margin-top:14px; }
.fin-qprice{ display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; }
.fin-qprice-big{ font-size:42px; font-weight:800; letter-spacing:-.035em; color:var(--fin-ink); line-height:1; }
.fin-qprice .fin-pill{ font-size:16px; padding:5px 10px; border-radius:10px; }
.fin-qtoday{ font-size:14px; color:var(--fin-ink-3); font-weight:500; }
.fin-qtime{ font-size:12.5px; color:var(--fin-ink-4); margin-top:6px; }
/* real-time or delayed, as the feed reports it (fs_fin_timeliness) */
.fin-timeliness{ font-weight:600; cursor:help; }
.fin-timeliness-rt{ color:var(--fin-up); }
.fin-timeliness-delayed{ color:var(--fin-amber); }
.fin-qext{ display:flex; gap:10px; align-items:baseline; flex-wrap:wrap; margin-top:6px; font-size:14px; }
.fin-qext-label{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; color:var(--fin-ink-3); }
.fin-qext-price{ font-weight:700; color:var(--fin-ink); }
.fin-qext-time{ font-size:12px; color:var(--fin-ink-4); }
.fin-qtabs{ border-bottom:1px solid var(--fin-line); margin:16px 0 16px; }
.fin-qtabs-track{ display:flex; gap:4px; overflow-x:auto; scrollbar-width:none; }
.fin-qtabs-track::-webkit-scrollbar{ display:none; }
.fin-qtab{
  flex:0 0 auto; padding:10px 14px 11px; font-size:14.5px; font-weight:600; color:var(--fin-ink-3); text-decoration:none;
  border-bottom:2px solid transparent; margin-bottom:-1px; transition:color .15s ease, border-color .15s ease;
}
.fin-qtab:hover{ color:var(--fin-ink); }
.fin-qtab.is-active{ color:var(--fin-accent); border-bottom-color:var(--fin-accent); }
.fin-qbody{ min-height:300px; transition:opacity .2s ease; }
.fin-qbody.is-loading{ opacity:.45; pointer-events:none; }
@media (max-width:767.98px){
  .fin-qname{ font-size:21px; }
  .fin-qprice-big{ font-size:34px; }
  .fin-qactions .fin-btn span:not(.fin-star){ display:none; }
  .fin-chart-quote{ height:320px; }
  .fin-tools{ margin-left:0; width:100%; }
  .fin-compare-input{ width:110px; }
}

/* about */
.fin-about-text{ font-size:14px; line-height:1.6; color:var(--fin-ink-2); margin:0 0 6px; }
.fin-about-text:empty{ display:none; }

/* analysts */
.fin-consensus{ display:flex; align-items:baseline; justify-content:space-between; margin-bottom:8px; }
.fin-consensus-label{ font-size:20px; font-weight:800; color:var(--fin-ink); letter-spacing:-.02em; }
.fin-consensus-n{ font-size:13px; color:var(--fin-ink-3); }
.fin-recbar{ display:flex; height:12px; border-radius:6px; overflow:hidden; gap:2px; }
.fin-rec{ display:block; min-width:3px; }
.fin-rec-0{ background:#0b7a4b; } .fin-rec-1{ background:#34b37a; } .fin-rec-2{ background:#c4cad4; } .fin-rec-3{ background:#ef8a5a; } .fin-rec-4{ background:#cf3046; }
.fin-reclegend{ list-style:none; padding:0; margin:10px 0 0; display:flex; flex-wrap:wrap; gap:4px 12px; font-size:12px; color:var(--fin-ink-3); }
.fin-reclegend b{ color:var(--fin-ink); }
.fin-rec-key{ width:9px; height:9px; border-radius:3px; display:inline-block; margin-right:5px; vertical-align:-1px; }
.fin-target{ margin-top:16px; padding-top:14px; border-top:1px solid var(--fin-line-2); }
.fin-target-head{ display:flex; gap:8px; align-items:baseline; font-size:13px; color:var(--fin-ink-3); }
.fin-target-head b{ font-size:18px; color:var(--fin-ink); margin-left:auto; }
.fin-target-track{ position:relative; height:8px; border-radius:4px; background:var(--fin-line-2); margin:14px 0 8px; }
.fin-target-range{ position:absolute; top:0; bottom:0; border-radius:4px; background:linear-gradient(90deg, rgba(26,102,210,.25), rgba(26,102,210,.45)); }
.fin-target-mark{ position:absolute; top:50%; width:14px; height:14px; border-radius:50%; transform:translate(-50%,-50%); border:2px solid var(--fin-surface); }
.fin-target-mean{ background:var(--fin-accent); }
.fin-target-cur{ background:var(--fin-ink); width:4px; height:18px; border-radius:2px; border:0; }
.fin-target-ends{ display:flex; justify-content:space-between; font-size:11.5px; color:var(--fin-ink-3); gap:6px; }

/* earnings + financial bars */
.fin-eps-chart, .fin-fin-chart{ position:relative; height:170px; }
.fin-fin-chart-lg{ height:260px; }
.fin-rec-chart{ position:relative; height:220px; }
.fin-eps-chart canvas, .fin-fin-chart canvas, .fin-rec-chart canvas, .fin-cov-chart canvas, .fin-curve canvas, .fin-multiline canvas, .fin-kpi-chart canvas{ position:absolute; inset:0; width:100%; height:100%; }
.fin-eps-legend{ list-style:none; margin:8px 0 0; padding:0; display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12px; color:var(--fin-ink-3); }
.fin-eps-key{ width:10px; height:10px; border-radius:50%; display:inline-block; margin-right:5px; vertical-align:-1px; }
.fin-eps-a{ background:var(--fin-accent); }
.fin-eps-e{ background:transparent; border:2px solid var(--fin-ink-4); }
.fin-key-rev{ background:var(--fin-c1); border-radius:3px; }
.fin-key-ni{ background:var(--fin-c4); border-radius:3px; }
.fin-key-fcf{ background:var(--fin-c3); border-radius:3px; }
.fin-next-earn{ font-size:13.5px; color:var(--fin-ink-2); margin:10px 0 0; }

/* holdings */
.fin-holdings{ list-style:none; padding:0; margin:0; counter-reset:h; }
.fin-holdings li{ display:flex; align-items:center; gap:10px; padding:7px 0; border-bottom:1px solid var(--fin-line-2); font-size:13.5px; }
.fin-holdings li:last-child{ border-bottom:0; }
.fin-holdings a, .fin-holdings li > span:first-child{ display:flex; gap:8px; align-items:baseline; min-width:0; flex:1; color:inherit; text-decoration:none; }
.fin-hold-name{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-weight:600; }
.fin-hold-pct{ display:inline-flex; align-items:center; gap:8px; font-weight:600; }
.fin-hold-pct .fin-share-bar{ width:60px; }
.fin-hold-pct .fin-share-bar > span{ background:var(--fin-accent); }
.fin-weights{ list-style:none; padding:0; margin:0; }
.fin-weights li{ display:grid; grid-template-columns:minmax(0,1fr) 80px 52px; gap:10px; align-items:center; font-size:13px; padding:4px 0; }
.fin-weights b{ text-align:right; }
.fin-weights .fin-share-bar{ width:100%; }
.fin-weights .fin-share-bar > span{ background:var(--fin-c3); }

/* coverage (4Search index) */
.fin-cov-top{ display:flex; flex-wrap:wrap; gap:14px 28px; align-items:flex-end; margin-bottom:12px; }
.fin-cov-stat{ display:flex; flex-direction:column; }
.fin-cov-stat b{ font-size:22px; font-weight:800; color:var(--fin-ink); letter-spacing:-.02em; line-height:1.15; }
.fin-cov-stat span{ font-size:12px; color:var(--fin-ink-3); }
.fin-tone-word.fin-tone-pos{ color:var(--fin-up); background:none; padding:0; }
.fin-tone-word.fin-tone-neg{ color:var(--fin-down); background:none; padding:0; }
.fin-tone-word.fin-tone-mix{ color:var(--fin-ink-2); }
.fin-tonebar{ display:flex; flex:1 1 180px; height:8px; border-radius:4px; overflow:hidden; gap:2px; align-self:center; max-width:280px; }
.fin-tonebar span{ display:block; min-width:2px; }
/* scoped: unscoped, these painted every headline tone badge solid */
.fin-tonebar .fin-tone-pos{ background:var(--fin-chart-up); }
.fin-tonebar .fin-tone-neu{ background:var(--fin-line); }
.fin-tonebar .fin-tone-neg{ background:var(--fin-chart-down); }
.fin-tonebar span{ padding:0; margin:0; border-radius:0; }
.fin-cov-chart{ position:relative; height:150px; margin-bottom:6px; }
.fin-cov-grid{ display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:4px 22px; }
@media (max-width:767.98px){ .fin-cov-grid{ grid-template-columns:1fr; } }
.fin-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.fin-chip{
  display:inline-flex; align-items:center; gap:6px; padding:4px 10px; border-radius:999px; font-size:12.5px; font-weight:600;
  color:var(--fin-ink-2); background:var(--fin-surface-2); border:1px solid var(--fin-line); text-decoration:none;
}
.fin-chip small{ color:var(--fin-ink-4); font-weight:600; font-size:11px; }
.fin-chip:hover{ border-color:var(--fin-accent); color:var(--fin-accent); }
.fin-sources{ list-style:none; padding:0; margin:0; }
.fin-sources li{ display:flex; align-items:center; gap:4px; padding:5px 0; font-size:13px; color:var(--fin-ink-2); }
.fin-sources b{ margin-left:auto; font-size:12.5px; color:var(--fin-ink-3); }

/* statements */
.fin-statement th.fin-st-line, .fin-statement td:first-child{ position:sticky; left:0; background:var(--fin-surface); z-index:1; min-width:190px; }
.fin-statement thead th.fin-st-line{ z-index:2; }
.fin-st-key th, .fin-st-key td{ font-weight:700 !important; color:var(--fin-ink) !important; }
.fin-st-trend{ width:76px; }
.fin-bars-mini{ display:inline-block; width:64px; height:22px; position:relative; vertical-align:middle; }
.fin-bars-mini canvas{ position:absolute; inset:0; width:100%; height:100%; }
.fin-tabs-statements .fin-tabbar{ margin-top:0; }

/* analysis */
.fin-act{ font-size:12px; font-weight:700; padding:2px 8px; border-radius:6px; background:var(--fin-surface-3); color:var(--fin-ink-2); white-space:nowrap; }
.fin-act-up{ background:var(--fin-up-bg); color:var(--fin-up); }
.fin-act-down{ background:var(--fin-down-bg); color:var(--fin-down); }
.fin-act-init{ background:var(--fin-accent-soft); color:var(--fin-accent); }

/* options */
.fin-opt-head{ display:flex; align-items:center; gap:12px 20px; flex-wrap:wrap; margin-bottom:10px; font-size:13.5px; }
.fin-opt-form label{ display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--fin-ink-2); }
.fin-options th.fin-opt-side{ text-align:center; color:var(--fin-ink); font-size:13px; text-transform:uppercase; letter-spacing:.06em; }
.fin-options .fin-strike{ text-align:center; font-weight:800; color:var(--fin-ink); background:var(--fin-surface-2); }
.fin-options td{ font-size:13px; }
.fin-options tr.fin-itm-c td:nth-child(-n+6){ background:rgba(26,102,210,.07); }
.fin-options tr.fin-itm-p td:nth-child(n+8){ background:rgba(26,102,210,.07); }

/* filings */
.fin-form{ font-size:12px; font-weight:800; padding:2px 8px; border-radius:6px; background:var(--fin-surface-3); color:var(--fin-ink-2); white-space:nowrap; }
.fin-form-periodic{ background:var(--fin-accent-soft); color:var(--fin-accent); }
.fin-form-8-K{ background:#fff4e0; color:#a15c07; }
.fin-form-insider{ background:#ede9fe; color:#6d28d9; }
.fin-items{ display:block; font-size:12.5px; color:var(--fin-ink-3); margin-top:2px; }
.fin-filings a{ font-weight:600; color:var(--fin-ink); text-decoration:none; }
.fin-filings a:hover{ color:var(--fin-accent); text-decoration:underline; }
.fin-filings tr[hidden]{ display:none; }

/* markets sections */
.fin-kpis-inline{ display:flex; flex-wrap:wrap; gap:12px 34px; margin-bottom:12px; }
.fin-kpis-inline div{ display:flex; flex-direction:column; }
.fin-kpis-inline span{ font-size:12px; color:var(--fin-ink-3); font-weight:600; }
.fin-kpis-inline b{ font-size:20px; font-weight:800; color:var(--fin-ink); letter-spacing:-.02em; }
.fin-curve{ position:relative; height:280px; }
.fin-multiline{ position:relative; height:260px; }
.fin-multiline-sm{ height:180px; }
.fin-perf{ position:relative; display:inline-flex; justify-content:flex-end; align-items:center; min-width:96px; height:22px; }
.fin-perf-bar{ position:absolute; right:0; top:3px; bottom:3px; border-radius:4px; opacity:.18; }
.fin-perf.fin-up .fin-perf-bar{ background:var(--fin-chart-up); }
.fin-perf.fin-down .fin-perf-bar{ background:var(--fin-chart-down); }
.fin-perf-n{ position:relative; font-weight:700; font-size:13px; padding-right:6px; }
.fin-perf.fin-up .fin-perf-n{ color:var(--fin-up); }
.fin-perf.fin-down .fin-perf-n{ color:var(--fin-down); }
.fin-td-perf{ text-align:right; }

/* converter */
.fin-converter{ display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap; }
.fin-conv-field{ display:flex; flex-direction:column; gap:4px; font-size:12px; font-weight:600; color:var(--fin-ink-3); flex:1 1 150px; min-width:0; }
.fin-conv-field .fin-input, .fin-conv-field .fin-select{ width:100%; }
.fin-conv-swap{ margin-bottom:2px; }
.fin-conv-out{ flex:1 1 100%; font-size:24px; font-weight:800; color:var(--fin-ink); letter-spacing:-.02em; padding-top:8px; }
.fin-conv-out small{ display:block; font-size:12.5px; font-weight:500; color:var(--fin-ink-3); letter-spacing:0; }

/* economy */
.fin-kpis{ display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:12px; }
.fin-kpi{ border:1px solid var(--fin-line); border-radius:12px; padding:13px 14px 12px; display:flex; flex-direction:column; min-width:0; background:var(--fin-surface); }
.fin-kpi-top{ display:flex; justify-content:space-between; gap:8px; align-items:baseline; }
.fin-kpi-title{ font-size:13px; font-weight:700; color:var(--fin-ink-2); }
.fin-kpi-asof{ font-size:11.5px; color:var(--fin-ink-4); white-space:nowrap; }
.fin-kpi-value{ font-size:26px; font-weight:800; letter-spacing:-.03em; color:var(--fin-ink); margin-top:4px; }
.fin-kpi-delta{ font-size:12.5px; font-weight:600; color:var(--fin-ink-3); }
.fin-kpi-delta.fin-up{ color:var(--fin-up); }
.fin-kpi-delta.fin-down{ color:var(--fin-down); }
.fin-kpi-chart{ position:relative; height:70px; margin:8px 0 6px; }
.fin-kpi-note{ font-size:11.5px; color:var(--fin-ink-4); margin:0; line-height:1.45; }

/* earnings week */
.fin-weeknav{ display:flex; gap:6px; flex-wrap:wrap; }

/* compare */
.fin-compare-form{ display:flex; gap:8px; margin-top:12px; max-width:560px; }
.fin-compare-form .fin-input{ flex:1; }
.fin-compare-table th a{ display:inline-flex; align-items:center; gap:8px; color:var(--fin-ink); text-decoration:none; font-weight:700; }
.fin-compare-table thead th{ vertical-align:bottom; }
.fin-compare-table thead th small{ font-weight:500; }
.fin-cmp-sym{ font-size:14px; }

/* search page */
.fin-search-head{ display:flex; align-items:baseline; gap:6px 14px; flex-wrap:wrap; padding:4px 2px 0; }
.fin-search-head q{ quotes:"“" "”"; }
.fin-pager{ display:flex; gap:8px; justify-content:center; }

/* ------------------------------------- cookie consent for the watchlist */
/* finance.js prefsDialog(): following a stock without the privacy panel's
   Saved preferences consent explains why and offers to enable it. */
.fin-dialog-back{ position:fixed; inset:0; background:rgba(9,14,22,.55); z-index:1300; }
.fin-dialog{
  position:fixed; z-index:1301; left:50%; top:50%; transform:translate(-50%,-50%);
  width:min(460px, calc(100vw - 32px)); max-height:calc(100vh - 32px); overflow:auto;
  background:var(--fin-surface); color:var(--fin-ink-2); border:1px solid var(--fin-line);
  border-radius:var(--fin-radius); box-shadow:var(--fin-shadow-lg); padding:20px 22px;
}
.fin-dialog-title{ font-size:18px; font-weight:700; color:var(--fin-ink); margin:0 0 10px; letter-spacing:-.01em; }
.fin-dialog p{ font-size:14.5px; line-height:1.55; margin:0 0 10px; }
.fin-dialog .fin-dialog-small{ font-size:12.5px; color:var(--fin-ink-3); }
.fin-dialog-small a{ color:var(--fin-accent); }
.fin-dialog-warn{ color:var(--fin-amber); font-weight:600; }
.fin-dialog-error{ color:var(--fin-down); font-weight:600; }
.fin-dialog-actions{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.fin-btn-link{ border-color:transparent; background:transparent; color:var(--fin-accent); }
.fin-btn-link:hover{ background:var(--fin-accent-soft); border-color:transparent; color:var(--fin-accent); }
.fin-watch-consent{ margin-bottom:10px; }
.fin-watch-consent p{ font-size:13.5px; color:var(--fin-ink-2); margin:0 0 10px; line-height:1.5; }

/* --------------------------------------------------------------- topics */
/* /finance/topics/ (finance.topics.theme.php). Tokens only: dark mode needs
   no rules of its own. */
.fin-topic-jump{ margin:4px 2px 14px; }
.fin-topic-sections{ display:flex; flex-direction:column; gap:16px; }
.fin-topic-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:12px; }
.fin-topic-grid-mini{ grid-template-columns:repeat(auto-fill, minmax(190px, 1fr)); gap:8px; }
.fin-topic-tile{
  display:flex; flex-direction:column; gap:8px; min-width:0;
  background:var(--fin-surface-2); border:1px solid var(--fin-line); border-radius:var(--fin-radius-sm); padding:12px 14px;
}
.fin-topic-tile:hover{ border-color:var(--fin-accent); }
.fin-topic-mini{ padding:10px 12px; gap:7px; }
.fin-topic-head{ display:flex; align-items:center; gap:8px; min-width:0; }
.fin-topic-ico{ flex:0 0 auto; width:18px; height:18px; color:var(--fin-accent); }
.fin-topic-name{ font-size:15px; font-weight:700; margin:0; line-height:1.3; min-width:0; overflow-wrap:anywhere; }
.fin-topic-name a{ color:var(--fin-ink); text-decoration:none; }
.fin-topic-name a:hover{ color:var(--fin-accent); text-decoration:underline; }
.fin-topic-mini .fin-topic-name{ font-size:14px; }
.fin-topic-desc{
  font-size:13px; line-height:1.5; color:var(--fin-ink-3); margin:0;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.fin-topic-subs{ gap:5px; }
.fin-topic-subs .fin-chip{ font-size:12px; padding:3px 9px; background:var(--fin-surface); }
.fin-chip-more{ color:var(--fin-accent); }
.fin-chip-static{ cursor:default; }
.fin-chip-static:hover{ border-color:var(--fin-line); color:var(--fin-ink-2); }
.fin-topic-gauge{
  display:inline-flex; align-items:baseline; gap:8px; align-self:flex-start; max-width:100%;
  padding:4px 10px; border-radius:8px; background:var(--fin-surface); border:1px solid var(--fin-line);
  border-left-width:3px; font-size:13px; text-decoration:none; color:var(--fin-ink-2);
}
.fin-topic-gauge.fin-up{ border-left-color:var(--fin-up); }
.fin-topic-gauge.fin-down{ border-left-color:var(--fin-down); }
.fin-topic-gauge:hover{ border-color:var(--fin-accent); }
.fin-topic-gauge-name{ font-weight:600; color:var(--fin-ink-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
.fin-topic-gauge-price{ font-weight:700; color:var(--fin-ink); }
.fin-topic-foot-note{ margin:14px 2px 0; }
.fin-topic-pagehead{ padding-top:2px; }
.fin-topic-titlerow{ display:flex; align-items:center; gap:10px; }
.fin-topic-titlerow .fin-topic-ico{ width:24px; height:24px; }
.fin-topic-stat{ font-size:13px; color:var(--fin-ink-4); margin:8px 0 0; }
.fin-topic-pagehead .fin-topic-subs{ margin-top:12px; }
.fin-topic-up{ margin:0 0 10px; font-size:13.5px; font-weight:600; }
.fin-topic-up a{ color:var(--fin-accent); text-decoration:none; }
.fin-topic-up a:hover{ text-decoration:underline; }
.fin-chips + .fin-topic-up{ margin:12px 0 0; }

/* ---------------------------------------------------------- live status */
/* Shown when live updates pause on an idle page (finance.js). */
.fin-live-paused{
  position:fixed; right:16px; bottom:16px; z-index:1040; display:flex; align-items:center; gap:10px;
  padding:8px 10px 8px 14px; border-radius:999px; background:var(--fin-surface); border:1px solid var(--fin-line);
  box-shadow:var(--fin-shadow-lg); font-size:13px; color:var(--fin-ink-2);
}
.fin-live-paused[hidden]{ display:none; }
.fin-live-paused .fin-btn{ padding:4px 12px; font-size:12.5px; }

/* =====================================================================
   DARK MODE (html[data-fs-theme="dark"], app.css section 14)
   Hybrid and light keep the light content surfaces above; dark restates
   the tokens and the few surfaces painted with literals.
   ===================================================================== */
html[data-fs-theme="dark"] .fin-page{
  --fin-up:#3ddc97;
  --fin-up-bg:rgba(61,220,151,.13);
  --fin-down:#ff7a85;
  --fin-down-bg:rgba(255,122,133,.13);
  --fin-flat:#9aa8b8;
  --fin-ink:#e2e9f1;
  --fin-ink-2:#c3cdd9;
  --fin-ink-3:#93a3b5;
  --fin-ink-4:#73839a;
  --fin-line:#243040;
  --fin-line-2:#1d2734;
  --fin-surface:#141b24;
  --fin-surface-2:#1a2330;
  --fin-surface-3:#212c3a;
  --fin-page:#0f141b;
  --fin-accent:#79b8ff;
  --fin-accent-ink:#0b1420;
  --fin-accent-soft:rgba(121,184,255,.13);
  --fin-shadow:0 1px 2px rgba(0,0,0,.3);
  --fin-shadow-lg:0 18px 48px -12px rgba(0,0,0,.7);
  --fin-chart-up:#2fd18b;
  --fin-chart-down:#ff6b77;
  --fin-chart-line:#79b8ff;
  --fin-chart-grid:#1e2834;
  --fin-chart-axis:#7d8da2;
  --fin-chart-cross:#55657a;
  --fin-chart-vol:#2c3a4c;
  --fin-chart-news:#a78bfa;
  --fin-chart-bg:#141b24;
  --fin-chart-tip:#e2e9f1;
  --fin-chart-tip-ink:#0b1420;
  --fin-c1:#79b8ff; --fin-c2:#ff9f5a; --fin-c3:#b197fc; --fin-c4:#3ddc97; --fin-c5:#f783ac; --fin-c6:#91a7ff;
}
html[data-fs-theme="dark"] .fin-main{ background:var(--fin-page); }
html[data-fs-theme="dark"] .fin-search-box{ background:#1a222d; border-color:#2a3542; box-shadow:0 2px 10px rgba(0,0,0,.35); }
html[data-fs-theme="dark"] .fin-search-input{ color:#dbe4ee; }
html[data-fs-theme="dark"] .fin-search-input::placeholder{ color:#6f7e90; }
html[data-fs-theme="dark"] .fin-suggest{ background:#1a222d; border-color:#2a3542; box-shadow:0 18px 44px rgba(0,0,0,.6); }
html[data-fs-theme="dark"] .fin-sug-item{ color:#dbe4ee; }
html[data-fs-theme="dark"] .fin-sug-item.is-active, html[data-fs-theme="dark"] .fin-sug-item:hover{ background:#232e3c; }
html[data-fs-theme="dark"] .fin-sug-name{ color:#b4bfcd; }
html[data-fs-theme="dark"] .fin-sug-tag{ background:#232e3c; color:#93a3b5; }
html[data-fs-theme="dark"] .fin-sug-foot{ border-top-color:#232e3b; color:#93a3b5; }
html[data-fs-theme="dark"] .fin-badge{ background:hsl(var(--fin-hue) 30% 20%); color:hsl(var(--fin-hue) 70% 78%); border-color:hsl(var(--fin-hue) 25% 28%); }
html[data-fs-theme="dark"] .fin-heat{ color:#eef3f8; }
html[data-fs-theme="dark"] .fin-heat.fin-up{ background:rgba(47,209,139,calc(var(--fin-heat) * .42)); }
html[data-fs-theme="dark"] .fin-heat.fin-down{ background:rgba(255,107,119,calc(var(--fin-heat) * .4)); }
html[data-fs-theme="dark"] .fin-btn-watch[aria-pressed="true"]{ color:#f5c451; border-color:#5a4718; background:rgba(245,196,81,.1); }
html[data-fs-theme="dark"] .fin-btn-primary:hover{ background:#a3ccff; border-color:#a3ccff; color:#0b1420; }
html[data-fs-theme="dark"] .fin-qlogo{ background:#f4f6f9; border-color:#2a3542; }
html[data-fs-theme="dark"] .fin-earn-pre{ background:rgba(245,158,11,.14); color:#fbbf24; }
html[data-fs-theme="dark"] .fin-timeliness-delayed{ color:#fbbf24; }
html[data-fs-theme="dark"] .fin-dialog-warn{ color:#fbbf24; }
html[data-fs-theme="dark"] .fin-dialog-back{ background:rgba(0,0,0,.7); }
html[data-fs-theme="dark"] .fin-earn-post, html[data-fs-theme="dark"] .fin-form-insider{ background:rgba(167,139,250,.15); color:#c4b5fd; }
html[data-fs-theme="dark"] .fin-form-8-K{ background:rgba(245,158,11,.14); color:#fbbf24; }
html[data-fs-theme="dark"] .fin-buzz-new{ background:rgba(167,139,250,.15); color:#c4b5fd; }
html[data-fs-theme="dark"] .fin-rec-2{ background:#4a5768; }
html[data-fs-theme="dark"] .fin-options tr.fin-itm-c td:nth-child(-n+6),
html[data-fs-theme="dark"] .fin-options tr.fin-itm-p td:nth-child(n+8){ background:rgba(121,184,255,.08); }
html[data-fs-theme="dark"] body.fin-modal-open::after{ background:rgba(0,0,0,.7); }

/* Light mode: the header band is light, so the search box needs an edge. */
html[data-fs-theme="light"] .fin-search-box{ border-color:#cfd8e3; box-shadow:0 1px 3px rgba(15,23,42,.08); }

/* Reduced motion: no pulsing, no flashing. */
@media (prefers-reduced-motion:reduce){
  .fin-status-open .fin-status-dot{ animation:none; }
  .fin-flash-up, .fin-flash-down{ animation:none; }
}
