/* Shared article visuals: cards, bar charts, process flows and step diagrams.
   Motion runs only when article-visuals.js adds html.viz-js and, per element, .is-visible. */
.viz{margin:28px 0;min-width:0}
.viz-title{font-size:13px;font-weight:700;letter-spacing:.04em;color:var(--blue);margin:0 0 14px}
.viz-note{font-size:12px;line-height:1.8;color:#4d5c6d;margin:12px 0 0}

/* Key-point cards */
.viz-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;list-style:none;margin:0;padding:0}
.viz-cards li{background:#fff;border:1px solid var(--line);border-radius:8px;padding:18px 16px 16px;position:relative;min-width:0}
.viz-cards .viz-num{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--blue);color:#fff;font-size:13px;font-weight:900;margin-bottom:10px}
.viz-cards svg{display:block;width:56px;height:56px;margin:0 0 10px}
.viz-cards h3{font-size:15px;line-height:1.5;margin:0 0 6px;color:var(--ink)}
.viz-cards p{font-size:12.5px;line-height:1.8;margin:0;color:#3d4c5e}
.viz-js .viz-cards li{opacity:0;transform:translateY(14px);transition:opacity .6s ease,transform .6s ease}
.viz-js .viz-cards.is-visible li{opacity:1;transform:none}
.viz-js .viz-cards.is-visible li:nth-child(2){transition-delay:.15s}
.viz-js .viz-cards.is-visible li:nth-child(3){transition-delay:.3s}

/* Bar chart with counting numbers */
.viz-bars{background:#fff;border:1px solid var(--line);border-radius:8px;padding:20px 22px 18px}
.viz-bar{display:grid;grid-template-columns:64px 1fr 72px;align-items:center;gap:12px;margin:10px 0}
.viz-bar-label{font-size:14px;font-weight:700;color:var(--ink)}
.viz-bar-rail{height:14px;background:#e6e9ee;border-radius:7px;overflow:hidden}
.viz-bar-fill{display:block;height:100%;background:var(--blue);border-radius:7px;width:var(--w)}
.viz-bar-fill.is-muted{background:#9aa6b8}
.viz-bar-value{font-size:22px;font-weight:900;color:var(--blue);text-align:right;font-variant-numeric:tabular-nums}
.viz-bar-value small{font-size:12px;font-weight:700;margin-left:2px}
.viz-bar.is-muted .viz-bar-value{color:#5b6879;font-size:14px;white-space:nowrap}
.viz-js .viz-bars .viz-bar-fill{width:0;transition:width 1.1s cubic-bezier(.2,.7,.2,1)}
.viz-js .viz-bars.is-visible .viz-bar-fill{width:var(--w)}
.viz-js .viz-bars.is-visible .viz-bar:nth-child(3) .viz-bar-fill{transition-delay:.15s}
.viz-js .viz-bars.is-visible .viz-bar:nth-child(4) .viz-bar-fill{transition-delay:.3s}

/* Process flow with AI / human badges */
.viz-flow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr auto 1fr auto 1fr;align-items:stretch;gap:8px}
.viz-flow li:not(.viz-arrow){background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 12px 12px;min-width:0;position:relative}
.viz-flow li.is-ai{border-color:var(--blue);box-shadow:inset 0 0 0 1px var(--blue)}
.viz-flow .viz-who{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.06em;padding:3px 8px;border-radius:999px;background:#e8edf5;color:var(--ink);margin-bottom:8px}
.viz-flow li.is-ai .viz-who{background:var(--blue);color:#fff}
.viz-flow h3{font-size:15px;margin:0 0 4px;color:var(--ink)}
.viz-flow p{font-size:12.5px;line-height:1.7;margin:0;color:#3d4c5e}
.viz-arrow{display:flex;align-items:center;justify-content:center;color:var(--blue);font-size:22px;font-weight:900;padding:0 2px;background:none;border:0}
.viz-arrow span{display:inline-block;line-height:1}
.viz-js .viz-flow li:not(.viz-arrow){opacity:0;transform:translateX(-10px);transition:opacity .5s ease,transform .5s ease}
.viz-js .viz-flow .viz-arrow{opacity:0;transition:opacity .4s ease}
.viz-js .viz-flow.is-visible li,.viz-js .viz-flow.is-visible .viz-arrow{opacity:1;transform:none}
.viz-js .viz-flow.is-visible>*:nth-child(2){transition-delay:.25s}
.viz-js .viz-flow.is-visible>*:nth-child(3){transition-delay:.4s}
.viz-js .viz-flow.is-visible>*:nth-child(4){transition-delay:.65s}
.viz-js .viz-flow.is-visible>*:nth-child(5){transition-delay:.8s}
@keyframes viz-pulse{0%,100%{box-shadow:inset 0 0 0 1px var(--blue),0 0 0 0 rgba(7,58,197,.35)}50%{box-shadow:inset 0 0 0 1px var(--blue),0 0 0 8px rgba(7,58,197,0)}}
.viz-js .viz-flow.is-visible li.is-ai{animation:viz-pulse 2.4s ease-in-out 1.2s 3}

/* Numbered steps (staircase) */
.viz-steps{list-style:none;margin:0;padding:0;counter-reset:viz}
.viz-steps li{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line);counter-increment:viz;min-width:0}
.viz-steps li:last-child{border-bottom:1px solid var(--line)}
.viz-steps li::before{content:"0" counter(viz);display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;background:var(--blue);color:#fff;font-size:13px;font-weight:900;letter-spacing:.04em}
.viz-steps li.is-free::before{background:#1e8a5a}
.viz-steps h3{font-size:15px;margin:2px 0 4px;color:var(--ink)}
.viz-steps p{font-size:12.5px;line-height:1.8;margin:0;color:#3d4c5e;grid-column:2}
.viz-steps .viz-tag{display:inline-block;font-size:11px;font-weight:900;letter-spacing:.06em;padding:2px 8px;border-radius:999px;background:#e3f3ea;color:#1e8a5a;margin-left:6px;vertical-align:middle}
.viz-js .viz-steps li{opacity:0;transform:translateY(10px);transition:opacity .5s ease,transform .5s ease}
.viz-js .viz-steps.is-visible li{opacity:1;transform:none}
.viz-js .viz-steps.is-visible li:nth-child(2){transition-delay:.12s}
.viz-js .viz-steps.is-visible li:nth-child(3){transition-delay:.24s}
.viz-js .viz-steps.is-visible li:nth-child(4){transition-delay:.36s}
.viz-js .viz-steps.is-visible li:nth-child(5){transition-delay:.48s}

@media(max-width:700px){
 .viz-cards{grid-template-columns:1fr;gap:10px}
 .viz-cards svg{width:44px;height:44px}
 .viz-bars{padding:16px 14px 12px}
 .viz-bar{grid-template-columns:44px 1fr auto;gap:8px}
 .viz-bar-label{font-size:13px}
 .viz-bar-value{font-size:18px}
 .viz-flow{grid-template-columns:1fr}
 .viz-arrow{padding:0;min-height:0}
 .viz-arrow span{transform:rotate(90deg)}
}
@media(prefers-reduced-motion:reduce){
 .viz-js .viz-cards li,.viz-js .viz-flow li,.viz-js .viz-flow .viz-arrow,.viz-js .viz-steps li{opacity:1;transform:none;transition:none}
 .viz-js .viz-bars .viz-bar-fill{width:var(--w);transition:none}
 .viz-js .viz-flow.is-visible li.is-ai{animation:none}
}
