/* analysis: three columns. The left reads one source at a time, a tile carries what it found across the
   middle, and the right fills one slot per source, then reorders so the fix sits first.
   Prefix .hero-analysis / .an- */
.hero-analysis .an-stage{position:relative;display:grid;grid-template-columns:minmax(0,.98fr) minmax(0,.72fr) minmax(0,1.08fr);gap:16px;align-items:stretch;padding:clamp(18px,2.2vw,28px) 0 40px}
.hero-analysis .an-col{background:#F5F5F7;border-radius:28px;padding:22px 18px;display:flex;flex-direction:column;gap:12px;min-width:0}
.hero-analysis .an-col-h{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2);margin:0 0 2px}

/* sources */
.hero-analysis .an-src{position:relative;overflow:hidden;display:flex;align-items:center;gap:10px;height:52px;padding:0 12px;border-radius:14px;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));border:1px solid var(--glass-edge);box-shadow:var(--glass-lift-sm);transition:box-shadow .3s var(--ease)}
.hero-analysis .an-src-ic{display:grid;place-items:center;width:26px;height:26px;flex:none;color:var(--text-2);transition:color .3s var(--ease)}
.hero-analysis .an-src-ic svg{width:18px;height:18px}
.hero-analysis .an-src-n{flex:1;min-width:0;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hero-analysis .an-src-st{flex:none;font-size:11px;color:var(--text-2);display:flex;align-items:center;gap:5px}
.hero-analysis .an-src-st::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--text-3);flex:none}
.hero-analysis .an-src.is-done .an-src-ic{color:#1DBF73}
.hero-analysis .an-src.is-done .an-src-st{color:#0B7A4B}
.hero-analysis .an-src.is-done .an-src-st::before{background:#1DBF73}
.hero-analysis .an-src.is-reading{box-shadow:0 0 0 2px rgba(36,87,255,.28),var(--glass-lift-sm)}
.hero-analysis .an-src.is-reading .an-src-ic{color:#2457FF}
/* the bar that sweeps a row while it is being read. Driven by the module, invisible at rest */
.hero-analysis .an-scan{position:absolute;top:0;bottom:0;left:0;width:34%;opacity:0;pointer-events:none;background:linear-gradient(90deg,rgba(36,87,255,0) 0%,rgba(36,87,255,.22) 50%,rgba(36,87,255,0) 100%)}

/* the tile that carries a finding from a row to its slot. One per source, positioned by the module */
.hero-analysis .an-fly{position:absolute;left:0;top:0;width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#fff;border:1px solid var(--glass-edge);box-shadow:0 10px 24px -10px rgba(10,10,20,.45);color:#2457FF;opacity:0;pointer-events:none;z-index:2}
.hero-analysis .an-fly svg{width:18px;height:18px}

/* the mark, static: a signature, not a spinner. The dot lights once, when the plan is ready */
.hero-analysis .an-mid{align-items:center;justify-content:center;gap:16px}
.hero-analysis .an-arc-wrap{position:relative;width:100%;max-width:200px;aspect-ratio:96/76}
.hero-analysis .an-arc-svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.hero-analysis .an-arc-bg{stroke:var(--bg-3)}
.hero-analysis .an-arc-fg{stroke:var(--ink)}
.hero-analysis .an-dot{fill:var(--bg-3);transition:fill .3s var(--ease)}
.hero-analysis .an-dot.is-lit{fill:#2457FF}
.hero-analysis .an-clock{position:absolute;left:0;right:0;bottom:-20px;text-align:center;font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums;min-height:1.2em}
.hero-analysis .an-status{margin:0;font-size:12px;color:var(--ink);text-align:center;min-height:1.3em}

/* found */
.hero-analysis .an-card{min-height:62px;border-radius:16px;padding:12px 14px;background:var(--glass);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));border:1px solid var(--glass-edge);box-shadow:var(--glass-lift-sm)}
/* the waiting slot: an outline that holds the place without printing the answer */
.hero-analysis .an-card.is-slot{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;border:1px solid var(--ink);box-shadow:none}
.hero-analysis .an-card.is-first{box-shadow:0 0 0 1.5px rgba(36,87,255,.38),var(--glass-lift-sm)}
.hero-analysis .an-card.is-slot.is-first{box-shadow:none}
.hero-analysis .an-card-k{display:block;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:#2457FF;margin-bottom:4px}
.hero-analysis .an-card-v{margin:0;font-size:14px;line-height:1.35;color:var(--ink);min-height:1.35em}
.hero-analysis .an-pill{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;margin-top:2px;padding:7px 14px;border-radius:999px;background:#E6F7EF;color:#0B7A4B;font-weight:500;font-size:12px}
.hero-analysis .an-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff}

.hero-analysis .an-ex{margin:14px 0 0;text-align:center;font-size:11px;color:var(--text-3)}

@media (max-width:900px){
  .hero-analysis .an-stage{grid-template-columns:minmax(0,1fr);gap:12px;padding:14px 0 32px}
  .hero-analysis .an-col{padding:18px 16px}
  .hero-analysis .an-mid{order:-1;flex-direction:row;justify-content:center;gap:18px;padding:14px 16px}
  /* the clock hangs 20 px under the mark (absolute); in this one-row card that put it across the card's
     bottom edge, so the row reserves its height and centres mark and clock together */
  .hero-analysis .an-arc-wrap{max-width:110px;margin-bottom:20px}
  .hero-analysis .an-status{text-align:left;max-width:16ch}
}

@media (prefers-reduced-motion:reduce){
  .hero-analysis .an-src-ic svg,.hero-analysis .an-dot,.hero-analysis .an-card,.hero-analysis .an-pill{transition:none}
  .hero-analysis .an-scan,.hero-analysis .an-fly{display:none}
}
