/* ============================================================
   STEM Enterprise page (css/stemapply-ent.css)
   Loaded after stemapply.css on industry.html only. Reuses the
   shared dark/cyan/violet tokens. Without JS or with reduced
   motion the page is fully legible and static.
   ============================================================ */
.ent-page .ent-ln { fill: none; stroke: rgba(130, 165, 255, .5); stroke-width: 1.4; stroke-linecap: round; stroke-linejoin: round; }
.ent-page .ent-ln text { fill: #cfe0ff; stroke: none; font: 500 12px 'JetBrains Mono', monospace; }
.ent-page .ent-ln .sm { font-size: 10.5px; fill: var(--sa-dim); }
.ent-page .ent-ln .lbl { fill: var(--sa-cyan); }

/* hero */
.ent-hero-grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: clamp(24px, 4vw, 64px); align-items: center; }
.ent-hero h1 { max-width: 640px; }
.ent-hero-fig { margin: 0; }
.ent-hero-fig svg { width: 100%; height: auto; display: block; overflow: visible; }
.ent-src rect, .ent-out rect { fill: rgba(12, 19, 38, .7); stroke: rgba(130, 165, 255, .4); }
.ent-core polygon { fill: rgba(91, 75, 255, .14); stroke: var(--sa-cyan); filter: drop-shadow(0 0 10px rgba(45, 226, 255, .45)); }
.ent-core polygon.in { fill: rgba(45, 226, 255, .12); stroke: var(--sa-violet); filter: none; }
.ent-flow { stroke: var(--sa-cyan); stroke-dasharray: 5 7; opacity: .75; animation: entDash 1.6s linear infinite; }
.ent-flow.dim { stroke: var(--sa-violet); }
@keyframes entDash { to { stroke-dashoffset: -24; } }

/* what can become training: sticky diagram + scrolling themes */
.ent-scope { display: grid; grid-template-columns: .9fr 1.1fr; gap: clamp(24px, 5vw, 80px); align-items: start; }
.ent-stick { margin: 0; position: sticky; top: 110px; padding: 24px; border: 1px solid var(--sa-line); border-radius: 4px; background: radial-gradient(380px 240px at 30% 10%, rgba(139, 107, 255, .18), transparent 70%), rgba(8, 13, 28, .6); }
.ent-stick svg { width: 100%; height: auto; display: block; }
.ent-stick .ent-ln > * { opacity: .4; transition: opacity .4s, stroke .4s, filter .4s; }
.ent-scope[data-zone="body"] .z-body, .ent-scope[data-zone="pipe"] .z-pipe, .ent-scope[data-zone="valve"] .z-valve,
.ent-scope[data-zone="gauge"] .z-gauge, .ent-scope[data-zone="ctrl"] .z-ctrl { opacity: 1; stroke: var(--sa-cyan); filter: drop-shadow(0 0 8px rgba(45, 226, 255, .6)); }
.ent-cap { margin-top: 14px; font: 600 .78rem 'JetBrains Mono', monospace; letter-spacing: .1em; text-transform: uppercase; color: var(--sa-cyan); }
.ent-themes { list-style: none; margin: 0; padding: 0; }
.ent-theme { display: grid; grid-template-columns: 48px 1fr; gap: 16px; padding: clamp(22px, 5vh, 44px) 0; border-top: 1px solid var(--sa-line); opacity: .45; transition: opacity .35s; }
.ent-theme:last-child { border-bottom: 1px solid var(--sa-line); }
.ent-theme.on { opacity: 1; }
.ent-tn, .ent-wn, .ent-sn { font: 500 .8rem 'JetBrains Mono', monospace; color: var(--sa-cyan); }
.ent-tn { padding-top: 6px; }
.ent-theme h3 { color: #fff; font-size: clamp(1.25rem, 2.2vw, 1.7rem); letter-spacing: -.02em; }
.ent-theme p { color: var(--sa-dim); margin-top: 6px; max-width: 460px; }

/* workflow */
.ent-flow-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, 1fr); position: relative; --p: 0; }
.ent-flow-list::before, .ent-flow-list::after { content: ''; position: absolute; left: 0; top: 14px; height: 2px; }
.ent-flow-list::before { right: 0; background: var(--sa-line-2); }
.ent-flow-list::after { width: calc(var(--p) * 100%); background: var(--sa-grad); box-shadow: 0 0 12px rgba(45, 226, 255, .6); }
.ent-stage { position: relative; padding: 44px 18px 0 0; }
.ent-stage::before { content: ''; position: absolute; left: 0; top: 7px; width: 16px; height: 16px; border-radius: 50%; background: var(--sa-void); border: 2px solid var(--sa-line-2); z-index: 1; transition: border-color .3s, box-shadow .3s; }
.ent-stage.on::before { border-color: var(--sa-cyan); box-shadow: 0 0 12px var(--sa-cyan); }
.ent-stage h3 { color: #fff; font-size: 1.25rem; margin: 4px 0 8px; }
.ent-stage p { color: var(--sa-dim); font-size: .93rem; }

/* learn + vr */
.ent-duo { display: grid; grid-template-columns: 1fr 150px 1fr; align-items: center; }
.ent-side small { font: 600 .76rem var(--font-display); letter-spacing: .14em; text-transform: uppercase; color: var(--sa-cyan); }
.ent-side h3 { color: #fff; font-size: clamp(1.4rem, 2.6vw, 2rem); letter-spacing: -.02em; margin: 10px 0; }
.ent-side p { color: var(--sa-dim); max-width: 400px; }
.ent-side a { display: inline-block; margin-top: 14px; color: var(--sa-cyan); font-weight: 600; }
.ent-merge { text-align: center; }
.ent-merge svg { width: 100%; height: auto; display: block; }
.ent-merge circle { fill: var(--sa-cyan); stroke: none; }
.ent-merge span { display: block; font: 500 .74rem 'JetBrains Mono', monospace; color: var(--sa-dim); margin-top: 6px; }
.ent-note, .ent-small { color: var(--sa-dim); font-size: .9rem; max-width: 640px; margin-top: 32px; border-left: 2px solid var(--sa-line-2); padding-left: 14px; }
.ent-small { margin: 24px auto 0; text-align: left; font-size: .82rem; }

/* buyer value cards */
.ent-cards { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ent-cards li { padding: 24px; border: 1px solid var(--sa-line); border-radius: 4px; background: rgba(8, 13, 28, .6); }
.ent-cards h3 { color: #fff; font-size: 1.25rem; letter-spacing: -.015em; margin: 10px 0 6px; }
.ent-cards p { color: var(--sa-dim); }

/* commercial models */
.ent-models { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.ent-models article { padding: 28px; border: 1px solid var(--sa-line-2); border-radius: 4px; background: radial-gradient(320px 200px at 20% 0%, rgba(139, 107, 255, .16), transparent 70%), rgba(8, 13, 28, .6); }
.ent-models small { font: 600 .76rem var(--font-display); letter-spacing: .14em; text-transform: uppercase; color: var(--sa-cyan); }
.ent-models h3 { color: #fff; font-size: clamp(1.3rem, 2.2vw, 1.7rem); letter-spacing: -.02em; margin: 10px 0; }
.ent-models p { color: var(--sa-dim); }
.ent-models a { display: inline-block; margin-top: 14px; color: var(--sa-cyan); font-weight: 600; }

/* outcomes */
.ent-why { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; column-gap: clamp(24px, 5vw, 80px); }
.ent-why li { display: grid; grid-template-columns: 44px 1fr; column-gap: 12px; padding: 28px 0; border-top: 1px solid var(--sa-line); }
.ent-wn { grid-row: span 2; padding-top: 5px; }
.ent-why h3 { color: #fff; font-size: 1.3rem; letter-spacing: -.015em; }
.ent-why p { color: var(--sa-dim); margin-top: 4px; }

/* audiences */
.ent-who { list-style: none; margin: 0; padding: 0; }
.ent-who li { display: grid; grid-template-columns: 1.1fr 1.2fr auto; gap: 24px; align-items: baseline; padding: 26px 0; border-top: 1px solid var(--sa-line); }
.ent-who li:last-child { border-bottom: 1px solid var(--sa-line); }
.ent-who h3 { color: #fff; font-size: 1.3rem; letter-spacing: -.015em; }
.ent-who p { color: var(--sa-dim); }
.ent-who a { color: var(--sa-cyan); font-weight: 600; white-space: nowrap; }

@media (max-width: 960px) {
  .ent-hero-grid, .ent-scope { grid-template-columns: 1fr; }
  .ent-hero-fig { max-width: 520px; }
  .ent-stick { top: 66px; z-index: 2; padding: 10px 14px; background: rgba(5, 8, 18, .94); }
  .ent-stick svg { max-height: 150px; }
  .ent-cap { margin-top: 6px; }
  .ent-flow-list { grid-template-columns: 1fr; padding-left: 34px; }
  .ent-flow-list::before, .ent-flow-list::after { left: 7px; top: 0; right: auto; width: 2px; }
  .ent-flow-list::before { bottom: 0; }
  .ent-flow-list::after { width: 2px; height: calc(var(--p) * 100%); }
  .ent-stage { padding: 0 0 30px; }
  .ent-stage::before { left: -34px; top: 3px; }
  .ent-duo { grid-template-columns: 1fr; gap: 16px; }
  .ent-merge { display: none; }
  .ent-why, .ent-cards, .ent-models { grid-template-columns: 1fr; }
  .ent-who li { grid-template-columns: 1fr; gap: 6px; }
}

/* no JS or reduced motion: everything visible and static */
html:not(.sa-js) .ent-theme, .sa-reduced .ent-theme { opacity: 1; }
html:not(.sa-js) .ent-stick .ent-ln > *, .sa-reduced .ent-stick .ent-ln > * { opacity: 1; }
html:not(.sa-js) .ent-flow-list::after { width: 100%; }
@media (prefers-reduced-motion: reduce) {
  .ent-flow { animation: none; }
  .ent-theme, .ent-stick .ent-ln > *, .ent-stage::before { transition: none; }
}
