/* EigenPoint v035 Audit Pass 4 — owned SHARED chrome, typography and geometry.
   Owner: css/shared-foundation.css (last CSS link on all thirteen pages).
   Homepage and tool-specific panels keep their own styling until audited separately.
   The source still contains historical overrides; this pass consolidates the SHARED
   header + two tickers into one responsible source rather than adding a 15th file. */
:root {
  --ep-brand-deep:#081f1c;
  --ep-brand-panel:#10302b;
  --ep-brand-gold:#d6b778;
  --ep-brand-ivory:#f7f2e7;
  --ep-brand-secondary:#c4d2c9;
  --ep-brand-line:rgba(214,183,120,.29);
  --ep-frame-max:1780px;
  --ep-frame-gutter:clamp(16px,2.6vw,56px);
  --ep-hero-max:1780px;
  --ep-hero-gutter:var(--ep-frame-gutter);
  --ep-hero-text-inset:clamp(20px,2.1vw,40px);
  --ep-news-height:40px;
  --ep-nav-height:76px;
}
/* One shared content grid: logo / hero heading / major section bodies. */
.top-stack {position:fixed!important;inset:0 0 auto 0!important;display:flex!important;flex-direction:column!important;gap:0!important;z-index:1000;pointer-events:none;width:100%}
.top-stack .market-news-ribbon {
  pointer-events:auto;
  height:var(--ep-news-height)!important;flex:0 0 var(--ep-news-height)!important;
  background:#071b19!important;border-top:1px solid rgba(214,183,120,.35);
  border-bottom:1px solid var(--ep-brand-line);box-shadow:none;
}
.top-stack .site-header {
  position:relative!important;
  inset:auto!important;
  top:auto!important;left:auto!important;right:auto!important;
  display:block!important;
  width:100%!important;
  height:auto!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:rgba(6,27,25,.94)!important;box-shadow:0 7px 19px rgba(0,8,8,.17)!important;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  pointer-events:auto;
}
.top-stack .site-header .nav-shell {
  box-sizing:border-box;
  width:min(calc(100% - 2 * var(--ep-frame-gutter)),var(--ep-frame-max))!important;
  max-width:var(--ep-frame-max)!important;
  height:var(--ep-nav-height)!important;
  padding-inline:var(--ep-hero-text-inset)!important;
  margin-inline:auto!important;
  background:transparent!important;backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;box-shadow:none!important;
  border-bottom:1px solid var(--ep-brand-line);gap:clamp(14px,1.4vw,27px);
}
.top-stack .brand {min-width:0;flex:0 0 auto}
.top-stack .nav-shell nav.primary-nav{gap:clamp(14px,1.15vw,23px)}
.top-stack .nav-shell nav.primary-nav>a,.top-stack .nav-link {
  font-size:clamp(12px,.81vw,14px);text-shadow:none!important;
}
.top-stack .brand-copy{text-shadow:none!important}
.top-stack .nav-shell :is(a,button):focus-visible,
.market-news-ribbon :is(button,a):focus-visible,
.ep-shared-strip a:focus-visible {outline:2px solid var(--ep-brand-gold);outline-offset:3px}
/* News: readable compact editorial tape; no tiny 8px metadata or oversized provider stamps. */
.market-news-ribbon .market-news-label {
  font-size:11px;min-width:147px;justify-content:center;padding:0 15px;
  color:#e1c58c;letter-spacing:.075em;
}
.market-news-ribbon .market-news-status {
  min-width:126px;justify-content:center;color:#c6d2cb;
  font-size:11px;letter-spacing:.025em;padding:0 11px;
}
.market-news-ribbon .market-news-viewport {
  min-width:0;overflow:hidden;mask-image:none;-webkit-mask-image:none;
}
/* The animated element must be as wide as BOTH headline sets. The previous
   flex-item shrink-to-fit reduced its width to the viewport, making -50%
   travel only half a viewport rather than one complete news set. */
.market-news-ribbon .market-news-track{width:max-content;min-width:max-content;flex:0 0 auto}
.market-news-ribbon .market-news-item {
  height:39px;gap:9px;padding:0 17px;
  border-right:1px solid rgba(214,183,120,.20);overflow:hidden;
}
.market-news-ribbon .market-news-headline {
  font-size:12px;line-height:1.2;font-weight:650;display:block;
  max-width:clamp(245px,25vw,470px);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.market-news-ribbon .market-news-item small {
  font-size:11px;color:#cbd8d1;display:block;max-width:112px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.market-news-ribbon .market-news-item time {
  font-size:11px;color:#c5d0c9;flex:0 0 auto;
}
.market-news-ribbon .market-news-tag {
  font-size:10px;flex:0 0 auto;padding:4px 7px;background:#345b50;
}
.market-news-ribbon .market-news-tag.policy{background:#78603b}
.market-news-ribbon .market-news-tag.global{background:#365c61}
.market-news-ribbon .market-news-sep {padding:0 3px;color:#cfb479}
.market-news-ribbon.ready .market-news-track{animation-duration:var(--news-duration,36s)!important}
/* Keep approved full-bleed photography; floating word plaques covered the real title. */
.hero::before{display:none!important}
body[data-page=home] .hero-slide-content {
  box-sizing:border-box;
  width:min(calc(100% - 2 * var(--ep-frame-gutter)),var(--ep-frame-max))!important;
  max-width:var(--ep-frame-max)!important;
  padding:clamp(136px,9.4vw,170px) var(--ep-hero-text-inset) 62px!important;
  margin-inline:auto!important;
}
/* Shared 6-symbol market strip: preserve genuine feed + unavailable states. */
.live-strip.ep-shared-strip {
  height:62px!important;min-height:62px!important;max-height:62px!important;
  background:#09231f!important;border-top:1px solid var(--ep-brand-line);
  border-bottom:1px solid var(--ep-brand-line);overflow:hidden;
  color:var(--ep-brand-ivory);position:relative;z-index:6;
}
.ep-strip-inner {
  height:100%;width:min(calc(100% - 2 * var(--ep-frame-gutter)),var(--ep-frame-max));
  margin:auto;display:grid;grid-template-columns:174px minmax(0,1fr) 139px;
  align-items:center;gap:11px;
}
.ep-strip-label {display:grid;grid-template-columns:9px minmax(0,1fr);
  align-content:center;column-gap:9px;row-gap:4px;
  font-size:11px;color:var(--ep-brand-gold);letter-spacing:.05em;
}
.ep-strip-label i {width:7px;height:7px;border-radius:50%;background:#83d0af;align-self:center}
.ep-strip-label b{font-size:11px;white-space:nowrap}
.ep-strip-label small {grid-column:2;color:var(--ep-brand-secondary);font-size:11px;letter-spacing:0;white-space:nowrap}
.ep-strip-quotes {
  min-width:0;height:100%;overflow:hidden;display:flex;align-items:center;
}
.ep-strip-track{
  display:flex;align-items:center;width:max-content;flex:0 0 auto;
  animation:epMarketSnapshotCrawl var(--strip-duration,16s) linear infinite;
  will-change:transform;
}
.ep-strip-set{
  display:flex;align-items:center;flex:0 0 auto;
  min-width:var(--ep-strip-set-min,1140px);
  box-sizing:border-box;
}
.ep-strip-quote {
  flex:1 0 185px;
  display:flex;align-items:baseline;justify-content:center;gap:6px;
  min-width:0;border-left:1px solid rgba(214,183,120,.2);
  padding:4px 12px;font-size:12px;white-space:nowrap;
}
@keyframes epMarketSnapshotCrawl{to{transform:translateX(-50%)}}
.ep-strip-quote strong {color:#f4eddd;font-size:11px;font-weight:730}
.ep-strip-value {font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;color:#f5f0e8}
.ep-strip-change{font-size:11px;color:#d3dbd5;font-style:normal}
.ep-strip-change.up{color:#8bdbb7}.ep-strip-change.down{color:#e5a19a}
.ep-strip-status{justify-self:end;text-align:right;font-size:11px;line-height:1.45;color:#d4dfd8}
@media(max-width:1590px){
  .ep-strip-inner{grid-template-columns:163px minmax(0,1fr)}
  .ep-strip-status{display:none}
  .ep-strip-quote{gap:5px;padding-inline:5px}
}
@media(max-width:1270px){
  .ep-strip-inner{grid-template-columns:150px minmax(0,1fr);gap:5px}
  .ep-strip-quotes{display:flex;overflow:hidden}
  .ep-strip-quote{flex:0 0 177px}
}
@media(max-width:1050px){
  .top-stack .site-header .nav-shell{padding-inline:clamp(12px,2.3vw,25px)!important}
  .ep-strip-inner{grid-template-columns:143px minmax(0,1fr)}
}
@media(max-width:760px){
  :root{--ep-news-height:34px;--ep-nav-height:70px;--ep-frame-gutter:16px;--ep-hero-text-inset:16px}
  .top-stack .site-header .nav-shell{width:calc(100% - 32px)!important;padding-inline:8px!important}
  .market-news-ribbon .market-news-label{min-width:116px;padding:0 8px;font-size:10px}
  .market-news-ribbon .market-news-headline{font-size:11px;max-width:215px}
  .market-news-ribbon .market-news-item{height:33px;padding:0 10px}
  .market-news-ribbon .market-news-item small{display:none}
  .market-news-ribbon .market-news-status{display:none}
  body[data-page=home] .hero-slide-content{padding-top:132px!important;padding-bottom:56px!important}
  .ep-strip-inner{grid-template-columns:114px minmax(0,1fr);width:calc(100% - 24px)}
  .ep-strip-label b,.ep-strip-label small{font-size:9px;letter-spacing:0}
  .ep-strip-quote{flex-basis:150px}
}
@media(prefers-reduced-motion:reduce){
  .market-news-ribbon.ready .market-news-track{animation:none!important;transform:none!important}
  /* Reduced motion must not turn either ribbon into a horizontal scroller.
     Keep one static sourced set clipped inside the same viewport instead. */
  .market-news-ribbon .market-news-viewport{overflow:hidden!important;scrollbar-width:none!important}
  .market-news-ribbon .market-news-viewport::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
  .market-news-set[aria-hidden="true"]{display:none}
  .ep-strip-track{animation:none!important;transform:none!important}
  .ep-strip-quotes{overflow:hidden!important;overscroll-behavior-x:none;scrollbar-width:none!important}
  .ep-strip-quotes::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
  .ep-strip-set[aria-hidden="true"]{display:none}
}

/* v035 / Audit Pass 2 — canonical inner-page hero geometry.
   Earlier v032/v033 rules removed the hero's horizontal padding with !important.
   Fix that source conflict in the existing shared stylesheet, not another page-specific layer.
   The hero photo remains full bleed; only its content gets the protected text-safe inset. */
body:not([data-page="home"]) .hero.compact{
  min-height:clamp(420px,46vh,510px)!important;
  background-color:#081f1c;
}
body:not([data-page="home"]) .hero.compact .hero-grid{
  box-sizing:border-box;
  width:min(calc(100% - 2 * var(--ep-hero-gutter)),var(--ep-hero-max))!important;
  max-width:var(--ep-hero-max)!important;
  min-height:clamp(420px,46vh,510px)!important;
  margin-inline:auto!important;
  padding:clamp(125px,7.5vw,145px) var(--ep-hero-text-inset) clamp(24px,2.1vw,36px)!important;
  grid-template-columns:minmax(0,1fr)!important;
  align-items:center;
}
body:not([data-page="home"]) .hero.compact .hero-copy{
  box-sizing:border-box;
  width:100%;
  max-width:min(710px,100%)!important;
  min-width:0;
  margin:0;
  overflow-wrap:normal;
}
body:not([data-page="home"]) .hero.compact .eyebrow{
  max-width:100%;
  font-size:clamp(10px,.74vw,12px);
  letter-spacing:clamp(.14em,.18vw,.25em);
  line-height:1.5;
  margin-bottom:clamp(9px,1vw,15px);
}
body:not([data-page="home"]) .hero.compact h1{
  max-width:100%!important;
  margin:0 0 clamp(15px,1.3vw,22px);
  font-size:clamp(43px,3.22vw,63px)!important;
  line-height:1.065!important;
  letter-spacing:-.037em;
  text-wrap:balance;
  overflow-wrap:normal;
}
body:not([data-page="home"]) .hero.compact .hero-copy p{
  max-width:600px!important;
  margin:0 0 clamp(18px,1.5vw,25px);
  font-size:clamp(15px,.94vw,18px)!important;
  line-height:1.57;
  color:#f5f2eb;
  text-shadow:0 2px 10px rgba(0,14,12,.58);
}
body:not([data-page="home"]) .hero.compact .actions{gap:clamp(9px,.85vw,15px)}
body:not([data-page="home"]) .hero.compact .actions .btn{min-height:44px}
/* Image-dependent legibility: keep the right-hand photographs visible and the text area calm. */
body:not([data-page="home"]) .hero.compact::after{
  z-index:1;
  background:
    linear-gradient(90deg,rgba(2,23,21,.90) 0%,rgba(3,27,25,.81) 21%,rgba(3,28,26,.66) 38%,rgba(5,28,26,.27) 65%,rgba(5,28,26,.03) 86%),
    linear-gradient(0deg,rgba(0,20,17,.32),transparent 43%);
}
body[data-page="performance"] .hero.compact::after{
  background:
    linear-gradient(90deg,rgba(1,22,21,.94) 0%,rgba(2,23,22,.85) 23%,rgba(3,26,25,.71) 39%,rgba(5,28,26,.22) 66%,rgba(5,28,26,.03) 87%),
    linear-gradient(0deg,rgba(0,18,16,.29),transparent 47%);
}
body:not([data-page="home"]) .hero.compact .hero-art{
  inset:0!important;width:100%!important;height:100%!important;
  opacity:1;
}
body:not([data-page="home"]) .hero.compact .hero-bg-photo{
  width:100%;height:100%;object-fit:cover;
}
/* Source-verified stacking fix: the photograph is inside .hero-grid (z-index:2),
   while the historic .hero::after shade sits outside the grid (z-index:1).
   Therefore the historic shade cannot cover the photograph. Place the real shade
   INSIDE the art layer, above the photo but underneath .hero-copy (z-index:4). */
body:not([data-page="home"]) .hero.compact .hero-grid .hero-art{
  inset:0 auto 0 50%!important;
  width:100vw!important;height:100%!important;
  transform:translateX(-50%);
  overflow:hidden;
}
body:not([data-page="home"]) .hero.compact .hero-grid .hero-art::after{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  background:linear-gradient(90deg,
    rgba(3,21,19,.93) 0%,rgba(4,26,24,.88) 22%,
    rgba(5,27,25,.75) 39%,rgba(5,28,26,.24) 68%,transparent 91%),
    linear-gradient(0deg,rgba(2,23,20,.2),transparent 55%);
}
body[data-page="performance"] .hero.compact .hero-grid .hero-art::after{
  background:linear-gradient(90deg,
    rgba(3,21,19,.97) 0%,rgba(4,26,24,.94) 23%,
    rgba(5,27,25,.83) 41%,rgba(5,28,26,.31) 68%,transparent 91%),
    linear-gradient(0deg,rgba(2,23,20,.2),transparent 55%);
}
@media (max-width:1050px){
 body:not([data-page="home"]) .hero.compact,
 body:not([data-page="home"]) .hero.compact .hero-grid{min-height:clamp(465px,56vh,570px)!important}
 body:not([data-page="home"]) .hero.compact .hero-grid{
   padding-top:clamp(122px,14vw,150px)!important;
   padding-bottom:34px!important;
   grid-template-columns:minmax(0,1fr)!important;
 }
 body:not([data-page="home"]) .hero.compact .hero-copy{max-width:min(620px,100%)!important}
 body:not([data-page="home"]) .hero.compact h1{font-size:clamp(40px,5.2vw,58px)!important}
 body:not([data-page="home"]) .hero.compact::after{
   background:linear-gradient(90deg,rgba(2,23,21,.93) 0%,rgba(3,27,25,.86) 35%,rgba(3,28,26,.45) 75%,rgba(3,28,26,.17) 100%);
 }
}
@media (max-width:760px){
 body:not([data-page="home"]) .hero.compact,
 body:not([data-page="home"]) .hero.compact .hero-grid{min-height:clamp(525px,74svh,690px)!important}
 body:not([data-page="home"]) .hero.compact .hero-grid{
   width:calc(100% - 32px)!important;
   max-width:none!important;
   padding:clamp(130px,20vw,160px) 16px 34px!important;
   align-items:center;
 }
 body:not([data-page="home"]) .hero.compact .hero-copy{max-width:100%!important}
 body:not([data-page="home"]) .hero.compact h1{
   font-size:clamp(34px,8.5vw,48px)!important;
   line-height:1.08!important;
   letter-spacing:-.033em;
 }
 body:not([data-page="home"]) .hero.compact .hero-copy p{font-size:clamp(14px,3.6vw,16px)!important}
 body:not([data-page="home"]) .hero.compact .eyebrow{letter-spacing:.17em}
 body:not([data-page="home"]) .hero.compact .actions{gap:9px}
 body:not([data-page="home"]) .hero.compact .actions .btn{padding:11px 14px;font-size:12px}
 body:not([data-page="home"]) .hero.compact .hero-bg-photo{object-position:62% center}
 body:not([data-page="home"]) .hero.compact::after,
 body[data-page="performance"] .hero.compact::after{
   background:linear-gradient(90deg,rgba(2,22,20,.93) 0%,rgba(3,25,23,.83) 52%,rgba(3,28,26,.56) 100%),linear-gradient(0deg,rgba(1,22,20,.4),transparent 55%);
 }
}
@media(max-width:760px){
 body:not([data-page="home"]) .hero.compact .hero-grid .hero-art::after,
 body[data-page="performance"] .hero.compact .hero-grid .hero-art::after{
   background:linear-gradient(90deg,rgba(3,21,19,.94),rgba(4,26,24,.80) 67%,rgba(5,28,26,.45)),
     linear-gradient(0deg,rgba(3,21,19,.34),transparent 68%);
 }
}
@media (max-width:390px){
 body:not([data-page="home"]) .hero.compact h1{font-size:clamp(32px,8.3vw,36px)!important}
 body:not([data-page="home"]) .hero.compact .hero-grid{min-height:clamp(525px,74svh,690px)!important;padding-inline:16px!important}
}

/* v035 Audit Pass 6 — informational page responsive composition.
   Source/visual finding: premium-v032.css reintroduces display:flex on
   .section-head AFTER styles.css mobile display:block. As a result page titles
   and lead paragraphs become two narrow columns at 390px. Restore one readable
   editorial column without affecting homepage, tools, desktop, or card logic. */
@media (max-width: 800px) {
  body:is([data-page="about"], [data-page="technology"],
          [data-page="solutions"], [data-page="performance"],
          [data-page="institutional-access"], [data-page="market-insights"])
  .section-head {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: clamp(10px, 2.8vw, 18px);
    margin-bottom: clamp(18px, 4.5vw, 28px);
  }
  body:is([data-page="about"], [data-page="technology"],
          [data-page="solutions"], [data-page="performance"],
          [data-page="institutional-access"], [data-page="market-insights"])
  .section-head > div,
  body:is([data-page="about"], [data-page="technology"],
          [data-page="solutions"], [data-page="performance"],
          [data-page="institutional-access"], [data-page="market-insights"])
  .section-head > .lead {
    width: 100%; max-width: 72ch; min-width: 0;
    flex: 0 1 auto;
    margin-inline: 0;
  }
  /* An older institution-specific desktop grid declaration had more
     specificity than the base .split mobile rule. */
  body[data-page="institutional-access"] .institutional-intro .split {
    grid-template-columns: minmax(0, 1fr);
    gap: 24px;
  }
}

/* Phase 15: hovering or tabbing across the news ribbon must not stop the tape.
   Pause only while its article-detail dialog is open. Keep reduced-motion rules. */
.market-news-ribbon.ready .market-news-track,
.market-news-ribbon:hover .market-news-track,
.market-news-ribbon .market-news-viewport:hover .market-news-track,
.market-news-ribbon:focus-within .market-news-track{animation-play-state:running}
.market-news-ribbon.detail-open .market-news-track{animation-play-state:paused}

/* v035 Pass 8: footer links must wrap before they force the entire document
   wider than a tablet/laptop viewport (confirmed at 768px and 1024px). */
@media (min-width:641px) and (max-width:1180px) {
  .site-footer .footer-shell {
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:18px 24px;
  }
  .site-footer .footer-links {
    flex:1 0 100%;
    width:100%;
    min-width:0;
    flex-wrap:wrap;
    gap:12px 20px;
  }
  .site-footer .footer-line {
    flex:1 0 100%;
    width:100%;
    min-width:0;
  }
}


/* v035 Pass 11 — owned semantic materials and controls for Market Intelligence.
   Preserves each tool's layout and the homepage's compact Radar geometry. */
body[data-page="radar"],body[data-page="market-weather"],body[data-page="personal-dashboard"],body[data-page="market-explainer"],body[data-page="strategy-lab"]{
  --ep-intelligence-night:#0c2422;
  --ep-intelligence-panel:#14332f;
  --ep-intelligence-panel-deep:#102b29;
  --ep-intelligence-ivory:#f5f1e8;
  --ep-intelligence-muted:#bdd0c8;
  --ep-intelligence-gold:#d4b779;
  --ep-intelligence-border:rgba(212,183,121,.29);
  --ep-intelligence-paper:#f5f3ed;
  --ep-intelligence-stone:#e4dfd5;
  --ep-intelligence-ink:#26362f;
  --ep-intelligence-focus:#e9ca8c;
}
/* Radar previously retained a blue-gray v033 backdrop even after homepage Radar correction.
   Its canvas, markers, orbital controls and three-column geometry are untouched. */
body[data-page="radar"] .radar-page{
  background:radial-gradient(ellipse at 82% 7%,rgba(44,110,95,.19),transparent 42%),linear-gradient(165deg,#102c29,#0b211f 72%,#091b1a)!important;
}
body[data-page="radar"] .radar-frame{background:var(--ep-intelligence-night);border-color:rgba(212,183,121,.43)}
body[data-page="radar"] .radar-frame-top{background:linear-gradient(105deg,#193a34,#12302d 63%,#102825)}
body[data-page="radar"] .radar-story{background:#102b28}
body[data-page="radar"] .radar-explainer{background:linear-gradient(150deg,#183a34,#112c29)}
body[data-page="radar"] .radar-globe-column{
  background:radial-gradient(circle at 50% 47%,rgba(65,150,125,.24),transparent 66%),linear-gradient(150deg,#173c35,#102a27 76%,#0b211f)!important;
}
body[data-page="radar"] .radar-market-band{background:linear-gradient(105deg,#17352f,#102824)}
/* Two control tiers: compact filters vs full-size actions. Keep functional distinctions. */
body[data-page="radar"] .radar-filters button,
body[data-page="market-weather"] .weather-filters button,
body[data-page="market-explainer"] .explain-levels button{font-size:12px;line-height:1.3;min-height:34px}
body[data-page="radar"] .radar-globe-tools button,
body[data-page="radar"] .radar-more-news,
body[data-page="market-weather"] .weather-refresh,
body[data-page="personal-dashboard"] .personal-refresh,
body[data-page="personal-dashboard"] .personal-add,
body[data-page="strategy-lab"] .lab-controls button{font-size:12px;line-height:1.3;min-height:36px}
body[data-page="radar"] .radar-news-meta,body[data-page="radar"] .radar-news-item small,
body[data-page="radar"] .radar-globe-foot{font-size:11px;line-height:1.35}
body[data-page="radar"] .radar-story-detail p,body[data-page="radar"] .radar-story-summary{font-size:12px;line-height:1.55}
/* Shared keyboard-visible focus ring, without global recoloring of market charts. */
body:is([data-page="radar"],[data-page="market-weather"],[data-page="personal-dashboard"],[data-page="market-explainer"],[data-page="strategy-lab"]) :is(button,input,select,textarea,a):focus-visible{outline:2px solid var(--ep-intelligence-focus);outline-offset:3px}
@media(max-width:620px){body[data-page="radar"] .radar-globe-tools button{min-height:36px}body[data-page="radar"] .radar-filters button{min-height:36px}}

/* LF-SITE-001B final chrome QA — reserve the fixed universal header on app pages. */
:root{--ep-tool-subnav-height:38px}
body[data-page="radar"] .radar-page,
body[data-page="market-weather"] .mw21-site,
body[data-page="strategy-lab"] .sl-app,
body[data-page="personal-dashboard"] .app-shell,
body[data-page="market-explainer"] .app{
  padding-top:calc(var(--ep-news-height) + var(--ep-nav-height) + var(--ep-tool-subnav-height));
}
body[data-page="market-explainer"] .explainer-tools{
  justify-content:flex-end;
  padding-inline:clamp(18px,2.6vw,44px);
}
body[data-page="market-explainer"] .explainer-tools .search{margin-left:0;width:min(420px,55vw)}
@media(max-width:760px){
  :root{--ep-tool-subnav-height:42px}
  body[data-page="radar"] .radar-page,
  body[data-page="market-weather"] .mw21-site,
  body[data-page="strategy-lab"] .sl-app,
  body[data-page="personal-dashboard"] .app-shell,
  body[data-page="market-explainer"] .app{
    padding-top:calc(27px + 68px + var(--ep-tool-subnav-height));
  }
  body[data-page="market-explainer"] .explainer-tools{padding-inline:16px}
  body[data-page="market-explainer"] .explainer-tools .search{width:auto;min-width:0;flex:1}
}

/* ========================================================================== 
   LF-SITE-001B — PHASE A / UNIFIED VISUAL SYSTEM FOUNDATION
   Scope: shared visual tokens + global rhythm only. No page-content redesign.
   ========================================================================== */
:root{
  /* Core brand palette */
  --ep-color-green-950:#061f1b;
  --ep-color-green-900:#082923;
  --ep-color-green-800:#0f3b31;
  --ep-color-green-700:#145442;
  --ep-color-gold-500:#caa35c;
  --ep-color-gold-400:#d8ba7a;
  --ep-color-gold-200:#ead8ad;
  --ep-color-ivory-100:#f7f3e9;
  --ep-color-ivory-50:#fbf9f3;
  --ep-color-stone-200:#e9e1d3;
  --ep-color-stone-300:#d9cfbe;
  --ep-color-ink-900:#15201b;
  --ep-color-ink-700:#435149;
  --ep-color-ink-600:#5b6861;

  /* Geometry */
  --ep-content-max:1420px;
  --ep-editorial-max:760px;
  --ep-app-max:1780px;
  --ep-gutter:clamp(20px,4.2vw,72px);
  --ep-section-compact:clamp(42px,4.2vw,64px);
  --ep-section-standard:clamp(58px,5.8vw,86px);
  --ep-section-feature:clamp(72px,7vw,106px);
  --ep-space-1:8px;
  --ep-space-2:12px;
  --ep-space-3:16px;
  --ep-space-4:24px;
  --ep-space-5:32px;
  --ep-space-6:44px;

  /* Shape + depth */
  --ep-radius-sm:8px;
  --ep-radius-md:14px;
  --ep-radius-lg:20px;
  --ep-shadow-soft:0 12px 34px rgba(18,42,34,.065);
  --ep-shadow-raised:0 18px 48px rgba(18,42,34,.09);
  --ep-border-soft:1px solid rgba(118,100,66,.16);
  --ep-border-gold:1px solid rgba(202,163,92,.34);

  /* Typography */
  --ep-body-size:16px;
  --ep-body-line:1.62;
  --ep-small-size:13px;
  --ep-micro-size:11px;
  --ep-section-title:clamp(36px,3.1vw,52px);
  --ep-card-title:clamp(22px,1.75vw,29px);

  /* Compatibility mappings for historic styles */
  --green:var(--ep-color-green-950);
  --green2:var(--ep-color-green-800);
  --ivory:var(--ep-color-ivory-100);
  --paper:var(--ep-color-ivory-50);
  --gold:var(--ep-color-gold-500);
  --gold2:var(--ep-color-gold-200);
  --ink:var(--ep-color-ink-900);
  --muted:var(--ep-color-ink-600);
  --line:rgba(202,163,92,.34);
  --page-pad:var(--ep-gutter);
  --section-pad:var(--ep-section-standard);
}

/* Shared document legibility and spacing. */
html{scroll-padding-top:calc(var(--ep-news-height) + var(--ep-nav-height) + 16px)}
body{color:var(--ep-color-ink-900);background:var(--ep-color-ivory-50);text-rendering:optimizeLegibility}
.section{padding:var(--ep-section-standard) var(--ep-gutter)}
.section-inner{width:100%;max-width:var(--ep-content-max);margin-inline:auto}
.section-head{gap:clamp(22px,3vw,48px);margin-bottom:clamp(26px,3vw,42px)}
.section h2{font-size:var(--ep-section-title);line-height:1.06;letter-spacing:-.028em;text-wrap:balance}
.section p.lead{font-size:clamp(15px,1vw,17px);line-height:var(--ep-body-line);color:var(--ep-color-ink-700)}
.kicker,.eyebrow{font-size:var(--ep-micro-size);line-height:1.45;letter-spacing:.20em}

/* Shared editorial copy floor: prevent standard informational pages from drifting into micro type. */
body:is([data-page="about"],[data-page="technology"],[data-page="solutions"],[data-page="performance"],[data-page="institutional-access"],[data-page="contact"])
:is(.mini-card,.icon-card,.usecase-card,.step-card,.quiet-panel,.legal-box,.contact-form) p{
  font-size:max(14px,1em);line-height:1.58;
}
body:is([data-page="about"],[data-page="technology"],[data-page="solutions"],[data-page="performance"],[data-page="institutional-access"],[data-page="contact"])
:is(.mini-card,.icon-card,.usecase-card,.step-card,.quiet-panel) h3{
  line-height:1.12;letter-spacing:-.018em;
}

/* Unified card language — modular content only, without changing grid structure. */
.icon-card,.mini-card,.audience-card,.usecase-card,.step-card,.quiet-panel,.contact-option,.contact-form,.legal-box{
  border-radius:var(--ep-radius-md);
  border-color:rgba(129,109,72,.16);
}
.icon-card,.mini-card,.audience-card,.usecase-card,.step-card,.contact-form{
  box-shadow:var(--ep-shadow-soft);
}
.icon-card,.mini-card,.audience-card,.step-card,.contact-form{
  background:linear-gradient(150deg,#fffefa 0%,var(--ep-color-ivory-50) 100%);
}
.mini-card,.icon-card,.step-card,.quiet-panel{padding:clamp(22px,2vw,30px)}
.cards-4,.mini-grid,.audience-grid,.usecase-grid{gap:clamp(14px,1.5vw,22px)}

/* Unified interactive language: filled primary / outline secondary / editorial text links. */
.btn{
  min-height:44px;
  padding:11px 20px;
  border-radius:var(--ep-radius-sm);
  gap:11px;
  font-size:13px;
  line-height:1.2;
  letter-spacing:.01em;
  transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease,border-color .18s ease;
}
.btn.gold{
  background:var(--ep-color-green-900);
  color:#fff;
  border-color:var(--ep-color-green-900);
  box-shadow:0 8px 20px rgba(5,39,32,.12);
}
.btn.ghost{
  background:transparent;
  color:inherit;
  border-color:rgba(202,163,92,.58);
}
.hero .btn.ghost,.dark-band .btn.ghost,.cta-band .btn.ghost{color:#fff;background:rgba(4,37,31,.22)}
.btn:hover{transform:translateY(-1px)}
.btn.gold:hover{background:var(--ep-color-green-800);border-color:var(--ep-color-green-800);box-shadow:0 10px 24px rgba(5,39,32,.16)}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:2px solid var(--ep-color-gold-400);outline-offset:3px}

/* Standard inner-page hero rhythm. Preserve existing imagery and page-specific content. */
body:not([data-page="home"]):not([data-page="radar"]):not([data-page="market-weather"]):not([data-page="personal-dashboard"]):not([data-page="market-explainer"]):not([data-page="strategy-lab"]) .hero.compact,
body:not([data-page="home"]):not([data-page="radar"]):not([data-page="market-weather"]):not([data-page="personal-dashboard"]):not([data-page="market-explainer"]):not([data-page="strategy-lab"]) .hero.compact .hero-grid{
  min-height:clamp(400px,43vh,485px)!important;
}
body:not([data-page="home"]):not([data-page="radar"]):not([data-page="market-weather"]):not([data-page="personal-dashboard"]):not([data-page="market-explainer"]):not([data-page="strategy-lab"]) .hero.compact .hero-grid{
  padding-top:clamp(122px,7vw,140px)!important;
  padding-bottom:clamp(30px,3vw,42px)!important;
}
body:not([data-page="home"]):not([data-page="radar"]):not([data-page="market-weather"]):not([data-page="personal-dashboard"]):not([data-page="market-explainer"]):not([data-page="strategy-lab"]) .hero.compact h1{
  font-size:clamp(40px,3vw,58px)!important;
  line-height:1.05!important;
}

/* Shared form controls: legible, calm, consistent. */
.field{gap:8px;margin-bottom:16px}
.field label{font-size:11px;letter-spacing:.14em;color:var(--ep-color-ink-700)}
.field input,.field select,.field textarea{
  min-height:46px;
  border-radius:var(--ep-radius-sm);
  border:1px solid var(--ep-color-stone-300);
  background:#fffdf8;
  color:var(--ep-color-ink-900);
  font-size:15px;
  line-height:1.4;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.field textarea{min-height:138px}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--ep-color-gold-500);box-shadow:0 0 0 3px rgba(202,163,92,.14)
}
.notice,.legal-box{font-size:12px;line-height:1.6}

/* Feature and CTA bands share one consistent width/rhythm without content changes. */
.feature-strip{padding:clamp(28px,3.2vw,44px) var(--ep-gutter)}
.feature-strip .section-inner,.metric-row,.cta-copy,.footer-shell,.footer-bottom{max-width:var(--ep-content-max)}
.cta-band{min-height:clamp(240px,26vw,315px)}
.cta-copy{padding:clamp(38px,4.4vw,58px) var(--ep-gutter)}
.cta-copy h2{font-size:clamp(36px,3.2vw,50px);line-height:1.06;letter-spacing:-.025em}

/* Tool-family token normalization only — does not alter app geometry or functionality. */
body:is([data-page="radar"],[data-page="market-weather"],[data-page="personal-dashboard"],[data-page="market-explainer"],[data-page="strategy-lab"]){
  --ep-intelligence-night:var(--ep-color-green-950);
  --ep-intelligence-panel:#11332d;
  --ep-intelligence-panel-deep:#0d2a25;
  --ep-intelligence-ivory:var(--ep-color-ivory-100);
  --ep-intelligence-muted:#bfd0c8;
  --ep-intelligence-gold:var(--ep-color-gold-400);
  --ep-intelligence-border:rgba(216,186,122,.27);
  --ep-intelligence-paper:var(--ep-color-ivory-50);
  --ep-intelligence-stone:var(--ep-color-stone-200);
  --ep-intelligence-ink:#263a32;
  --ep-intelligence-focus:#e7c982;
}

/* Critical laptop range: tighten rhythm without collapsing hierarchy. */
@media (min-width:801px) and (max-width:1400px){
  :root{--ep-gutter:clamp(26px,3.6vw,50px);--ep-section-standard:clamp(50px,5vw,68px)}
  .section-head{margin-bottom:clamp(24px,2.5vw,34px)}
  .section h2{font-size:clamp(34px,3.35vw,46px)}
  .icon-card,.mini-card,.step-card,.quiet-panel{padding:clamp(20px,2vw,26px)}
  .cta-band{min-height:240px}
}

@media (max-width:800px){
  :root{--ep-gutter:20px;--ep-section-standard:52px;--ep-section-compact:38px}
  .section{padding:var(--ep-section-standard) var(--ep-gutter)}
  .section-head{gap:14px;margin-bottom:24px}
  .section h2{font-size:clamp(33px,8.2vw,43px)}
  .section p.lead{font-size:15px;line-height:1.6}
  .btn{min-height:44px;padding:11px 16px}
  .cta-copy{padding:40px var(--ep-gutter)}
  .cta-copy h2{font-size:clamp(32px,8vw,42px)}
}

@media (prefers-reduced-motion:reduce){
  .btn{transition:none}
}

/* LF-SITE-LIVE-BANDS-PERSISTENCE-AND-MOTION-RECOVERY
   These two compact data bands are intentionally continuous status tapes. If the
   OS requests reduced motion, keep the tape moving at a slower cadence instead
   of freezing it entirely; no other site motion is affected. */
@media (prefers-reduced-motion:reduce){
  .market-news-ribbon.ready .market-news-track{
    animation-name:marketNewsCrawl!important;
    animation-duration:120s!important;
    animation-timing-function:linear!important;
    animation-iteration-count:infinite!important;
    animation-play-state:running!important;
  }
  .market-news-set[aria-hidden="true"]{display:flex!important}
  .ep-strip-track{
    animation-name:epMarketSnapshotCrawl!important;
    animation-duration:36s!important;
    animation-timing-function:linear!important;
    animation-iteration-count:infinite!important;
    animation-play-state:running!important;
  }
  .ep-strip-set[aria-hidden="true"]{display:flex!important}
}


/* LF-HOME-REVERT-AND-LIVE-BANDS-FINAL-REPAIR
   Motion hardening only: keep the two continuous information tapes running.
   Visual geometry, colors, typography and content remain unchanged. */
.market-news-ribbon.ready .market-news-track,
.market-news-ribbon:hover .market-news-track,
.market-news-ribbon .market-news-viewport:hover .market-news-track,
.market-news-ribbon:focus-within .market-news-track{
  animation-play-state:running!important;
}
.ep-strip-track{
  animation-play-state:running!important;
}
